Обновление Windows 10 привело к grub rescue

75

У меня была двойная загрузка Windows 7 и Linux Ubuntu на моем рабочем столе, и сегодня это день, когда они выпустили бесплатные обновления Windows 10. Как здорово! Я получил обновление, и оно устанавливалось, и я ушел, чтобы пойти вздремнуть 30 минут. Однако, когда я вернулся к своему компьютеру, это привело меня к подсказке по спасению.

error: no such partition.
Entering rescue mode...
grub rescue>

Когда я печатаю, я получаю следующее ls:

grub rescue> ls
(hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

После быстрого просмотра людей, которые столкнулись с подсказкой grub rescue, я набрал setи получил следующее

grub rescue> set
cmdpath=(hd0)
prefix=(hd0,msdos6)/boot/grub
root=hd0,msdos6

Я все еще был немного растерян, когда обнаружил, что некоторые команды, такие как normalне работают, а затем я нашел видеоурок, где вы загружаетесь с компакт-диска с образом Linux и запускаете некоторые команды на терминале. К счастью, у меня был свой компакт-диск, и я загрузился оттуда. Когда я набрал sudo fdisk -lв терминале, вот что я получил:

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc03ede74

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848  1547022335   773407744    7  HPFS/NTFS/exFAT
/dev/sda3      1547022336  1547943935      460800   27  Hidden NTFS WinRE
/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Здесь говорится, что ни в одном из моих устройств нет системы Linux! И я больше не мог следить за видеоуроком ...

Я немного дразнил свой мозг и решил, что sda2 содержит мою систему Windows (так как я помню, что мой диск C: имеет около 700 ГБ места). Подумав немного больше, я помню, как выделил около 200 ГБ места на жестком диске чему-то, что связано с Ubuntu при установке Ubuntu. Я точно не помню, какой именно, но я думаю, что это было в основном Ubuntu «место на жестком диске», и в нем не было никаких загрузочных файлов. Я назначил две другие вещи для Linux, но они были очень маленькими по размеру (пока не побили отметку в 1 ГБ).

Итак, кто-нибудь может помочь мне вернуть мой апгрейд в нормальное русло? Я не буду возражать, если мне придется полностью удалить разделы с Linux.

LChaos2
источник
1
Если раздел LInux является логическим, Windows не переписывает с ним таблицу разделов. Используйте тестдиск. Некоторые использовали testdisk, чтобы восстановить его и переустановили grub в MBR, и все вернулось на круги своя. Но вы должны правильно включить все разделы как первичные и логичные, чтобы они работали. cgsecurity.org/wiki/TestDisk_Step_By_Step
oldfred
В приведенном выше макете, похоже, что в конце диска после нового раздела /dev/sda5или (hd0,msdos5)раздела осталось только 3505 секторов , что составляет всего 1,7 МБ, поэтому раздел Linux вряд ли может там прятаться. Моим лучшим предположением будет то, что запись раздела Linux каким-то образом сместилась в это место (# 5 вместо # 6) и что ее тип был необъяснимым образом изменен. Первое, что нужно попробовать, - ls (hd0,msdos5)/это запрос GRUB о спасении.
Иосип Роден
1
Еще одна причина не использовать Windows, такая невежественная ОС
Айдын К.

Ответы:

64

Мой компьютер поставлялся с предустановленной Windows 8, поэтому я сократил раздел Windows, чтобы освободить место для Ubuntu. Вот как это работало в прошлом году. После второй перезагрузки в Windows 10 компьютер больше не загружался. GRUB отображал только grub rescueкомандную строку. Позже я узнал, что проблема возникла из-за того, что Windows как-то изменила схему разделов. Загрузочный раздел (содержащий обычные данные GRUB) больше не был там, где ожидал GRUB. Я не знаю, как и почему это произошло.

Первое, что вы можете сделать в режиме восстановления, это просмотреть разделы с помощью lsкоманды. Мои были:

  • (Hd0, gpt1),
  • (Hd0, gpt2),
  • и т.п.

Попробуйте выяснить, какой раздел является вашим загрузочным разделом. Там нет Tabзавершения, вы должны напечатать его полностью. Я пробовал следующие команды, пока не нашел нужный раздел:

ls (hd0,gpt1)/
ls (hd0,gpt1)/boot
ls (hd0,gpt2)/

и т.п.

Затем введите setту же подсказку. Он покажет, где GRUB ищет свои файлы. В моем случае (hd0, gpt6) переместился в (hd0, gpt7). Команда set отображает:

prefix=(hd0,gpt6)/boot/grub
root=hd0,gpt6

Чтобы вернуться в обычный GRUB, начните с изменения prefixнастройки, указывающей на правильный раздел. В моем случае команда была:

set prefix=(hd0,gpt7)/boot/grub

Затем вы можете переключиться из режима спасения в обычный режим:

insmod normal
normal

Можно также исправить rootнастройку с помощью:

set root=(hd0,gpt7)

Но это не является строго необходимым, так как это не имеет значения для записей цепной загрузки Windows. В обычном меню GRUB вы можете загрузить Windows и завершить обновление Windows. Проблема в том, что вы должны сообщать grub rescue о правильных разделах при каждой перезагрузке. Вот как я это сделал. Я оставил проблему GRUB на потом, потому что я не был уверен, что Windows сделает еще какие-то изменения в разделах или загрузке.

Когда Windows закончила, я начал решать проблемы GRUB. Нажмите, eчтобы редактировать параметры загрузки для Ubuntu. Я изменил все (hd0,gpt6)на (hd0,gpt7)и Ubuntu загрузился.

Тем не менее, я использую зашифрованный раздел и cryptswap. При загрузке Ubuntu попросил у меня пароль. К счастью, я сохранил его при установке Ubuntu и ввел его при загрузке. Ubuntu загрузился без проблем.

Затем я исправил /boot/grub/grub.cfgфайл , в котором я заменил (hd0,gpt6)с (hd0,gpt7)и выполнил:

sudo grub-install

На тот момент единственной оставшейся проблемой было шифрование. Поскольку номер корневого раздела Ubuntu был увеличен на один (7 вместо 6), раздел подкачки подвергся аналогичному изменению. Мне пришлось изменить /etc/crypttabфайл, чтобы указать /dev/sda8вместо /dev/sda7.

Я использую только два раздела для Ubuntu (root и swap). Если другие операционные системы, сосуществующие с Windows, используют больше разделов, может потребоваться больше изменений. Особенно, если разделы смонтированы в соответствии с их номерами, а не по их UUID. Взгляни на свою /etc/fstab. Если разделы идентифицируются по UUID, проблем быть не должно. Но если есть /dev/...строки, число должно быть исправлено, если эти разделы были перенумерованы.

никто
источник
2
Это был отличный ответ для меня. У меня не было диска с Ubuntu, я обновлял Windows с 8.1 до 10 и имел ту же проблему. Таким образом, этот ответ получает дополнительную оценку от меня, поскольку я смог просто ввести его и продолжить до тех пор, пока обновление не будет сделано. Спасибо за спасение моего бекона.
Чт
2
Это решение отлично сработало для меня, когда Win 10 решила обновить себя и испортила загрузочные записи (мое обновление с 7 до 10 прошло без
проблем
9
Пробовал ls (hd0,msdos1)/ ls (hd0,msdos1)/boot ls (hd0,msdos2)/ etc.для всех записей из lsкоманды, и каждый раз, когда это придумано error: unkown filesystem.
Жак МАЛАПРАЙД
2
Спасибо, что помогло. Одна вещь, которая мне не была ясна (потому что я новичок и в Ubuntu, и в Grub), заключалась в том, что редактирование конфигурации grub необходимо было выполнить после загрузки в Ubuntu (а не в мини-Emacs, который не поддерживает сохранение файл, по-видимому.) Таким образом, я загрузился, затем отредактировал конфигурацию sudo nano /boot/grub/grub.cfgи затем запустился sudo grub-install /dev/sda(по некоторым причинам, вызов без параметра для меня не удался). И только тогда сработали постоянные изменения.
Никита Григорьевич,
1
Пробовал ls (hdo, msdos1) и т. Д. Для всех записей. Получить ошибку неизвестной файловой системы
Эшли Дж
13

Установка Windows (или ее обновление) вместе с Linux может быть проблематичной.

Попробуйте это: https://help.ubuntu.com/community/Boot-Repair



Я использовал это, чтобы исправить проблему после того, как я установил предварительный просмотр Windows 10, и это работало. По сути, он переустанавливает grub для работы со всеми установленными в данный момент операционными системами. Убедитесь, что сказали установить grub на ваш раздел linux (sd #).

Удачи!

Патрик
источник
Здравствуй! Спасибо, что нашли время, чтобы помочь! Я на самом деле не слишком уверен, что это за раздел! Но я немного поиграюсь, чтобы посмотреть, сработает ли это.
LChaos2
Нет проблем! Всегда рад помочь.
Патрик
Здравствуй! Поэтому я загрузил boot-repair-disk и использовал рекомендуемый метод восстановления. Я сделал это и перезагрузил компьютер, но он переходит в диспетчер загрузки Windows и сообщает, что в результате недавнего изменения оборудования или программного обеспечения мог быть установлен файл, подписанный неправильно или поврежденный. Файл \ Windows \ system32 \ winload.exe, статус 0xc0000428. Нажатие клавиши ввода приводит меня в диспетчер загрузки, чтобы выбрать, какую ОС запускать, показывая только Windows 7. Нажатие клавиши ввода в Windows 7 возвращает меня к тому же экрану ошибок, что приводит к зацикливанию.
LChaos2
После некоторых исследований кажется, что код ошибки (0xc000428) связан с тем, что winload.exe не проверяется цифровой подписью. Это что-нибудь говорит об этом?
Патрик
1
Любое обновление ситуации @ LChaos2?
hg8
10

Прежде чем менять разделы, сделайте резервную копию и сохраните на другое устройство. Если нет, смените на правильный диск. Затем вы можете начать сначала, если вы восстановите неправильный набор с помощью testdisk. Вы просто хотите, чтобы все текущие плюс отсутствовали логические при восстановлении с testdisk.

sudo sfdisk -d /dev/sda > parts.txt

Ваш отсутствующий раздел находится здесь или между началом расширенного раздела в 1547 ... и первым разделом, показанным в 1915 ...:

/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Вы можете использовать testdisk, но он использует CHS. Вы должны выбрать все существующие разделы и отсутствующий раздел как логические. Может отображаться много версий в зависимости от того, сколько раз вы меняли разделы вокруг. Поэтому выберите размер, соответствующий отсутствующему, не перекрывая другие текущие разделы. Некоторые, которые правильно восстановили, просто смогли загрузиться, другие должны переустановить grub. И некоторые не смогли исправить восстановление раздела.

http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step

Другим инструментом восстановления является разделенное спасение. Он использует сектора, но диапазон, который вы задаете, должен находиться за пределами отсутствующего раздела, без перекрытия с текущими разделами. Лучше всего, если вы знаете точное начало и конец. Смотри расстался

http://www.gnu.org/software/parted/manual/html_node/rescue.html

Пользователь, который использовал разделенное спасение:

http://ubuntuforums.org/showthread.php?t=1775331&p=10905969#post10905969

oldfred
источник
3
Я встретил точно такую ​​же проблему и расстался, показывает "свободное место" там, где был Linux. Запустите команду rescue из / в «свободного пространства», и ext4 вернется!
спидогу
3
Просто хочу вмешаться, чтобы сказать, что gparted показал свободное место, где раньше был ext4. Запустил parted, установил секторы, распечатал разделы, спас с помощью / из «свободного пространства» (не забудьте добавить s для секторов к вашим значениям), и ext4 вернулся, точно так же, как @speedogoo. Нет необходимости возиться с грязью.
Амеди Ван Гассе
2
Поскольку все больше людей пропускают разделы, что делает Windows 10 с таблицей разделов? В моем случае ext4 был в логическом разделе.
Амеди Ван Гассе
Спасибо за эту крошку. Я смог восстановить потерянный раздел Linux моей жены с помощью parted rescue. Чуть позже, мы вернулись в действие.
bheeshmar
7

Это неприятная ошибка в разделителе Windows, а не специфичная для Linux. По иронии судьбы он удалил раздел NTFS в моем случае.

Установщик Windows 10 создает новый раздел (ваш /dev/sda3), вырезанный в конце основного раздела Windows, sda2если загрузочный раздел Windows sda1слишком мал, чтобы содержать среду восстановления Windows 10.

Когда он переписывает таблицу разделов, чтобы сделать это, для каждого логического раздела в расширенной таблице разделов sda4, если он находится на диске до номера предыдущего раздела, он сдается.

В вашем случае ваши разделы Linux были расположены на вашем диске до вашего нового sda5, но имели более высокие номера разделов, чем sda5до переразделения.

Если вы посмотрите огромные журналы обновления до Windows 10, вы увидите что-то вроде «6 до 5, ничего не делать», а также старые и новые таблицы разделов.

Windows не перезаписывает содержимое удаляемых разделов, поэтому их можно восстановить, если вы сможете найти, где они находятся. В моем случае у меня были резервные копии таблицы разделов, но использование testdisk, как объяснено в ответе oldfred, имеет отличный шанс найти их все. Раздельное спасение будет сложно использовать, поскольку в вашем случае было удалено более одного раздела.

Чтобы использовать testdisk с вашего Ubuntu Live CD, в терминале введите sudo apt-get install testdiskего и sudo testdiskзапустите.

После восстановления таблицы разделов раздел Linux, содержащий GRUB, может теперь иметь другое число, чем прежде, так что вы все равно можете оказаться в строке восстановления GRUB. Если это так, Boot Repair теперь сможет исправить GRUB.

Опять же, используя ваш Ubuntu Live CD, введите:

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

установить и запустить его.

Теперь Windows может завершить обновление.

Мартин Торнтон
источник
Спасибо за ясное объяснение, в чем проблема, это мне очень помогло. Я был в той же ситуации, как описано в вопросе. Однако testdisk не смог найти удаленный раздел Linux. Для меня Parted спасение сделал трюк , и я смог продолжить окна 10 обновления позже
Toby
«Windows не перезаписывает содержимое удаляемых разделов». Как это может быть? Новый раздел, который он сделал для меня (после убийства моих разделов linux), занял весь диск. Так не значит ли это, что запись может пойти куда угодно.
Грег Белл
Я не могу выразить, как сильно я тебя люблю
aviggiano
1

Для использования boot-repair вам необходимо установить в BIOS:

  • Включить UEFI (в моем BIOS это так :)

    Устаревшая поддержка DISABLE

  • Отключить безопасную загрузку

Возможно, у вас включена безопасная загрузка, поэтому вы получаете ошибку «неправильно подписанный файл».

iacobus
источник