КАК «ОБНОВИТЬ GRUB» ИЗ CHROOT

КАК «ОБНОВИТЬ GRUB» ИЗ CHROOT

У меня двойная загрузка Windows 10 и Ubuntu 18.04. Недавно я обновил Windows 10 и с тех пор не могу загрузить Linux. Иногда обновление портит загрузку раздела Linux, но мне всегда удавалось исправить это через командную строку grub. Похоже, это совсем другая проблема.

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

Я могу успешно начать процесс загрузки из grub, но после этого я не могу достичь экрана входа в Ubuntu. После входа в grub (2.02) я перехожу либо к "Ubuntu", либо к "Дополнительным параметрам Ubuntu", и там у меня есть четыре варианта:

Ubuntu, with Linux  4.18.0-21-generic
Ubuntu, with Linux  4.18.0-21-generic (recovery mode)
Ubuntu, with Linux  4.18.0-20-generic
Ubuntu, with Linux  4.18.0-20-generic (recovery mode)

Запуск любого из четырех успешно завершает grub и запускает каскад экранного вывода. Однако я никогда не дохожу до графического окна входа, приглашения на вход или чего-либо интерактивного. Я наберу здесь то, что обычно является последними пятью строками:

[   OK   ] Reached target Local Encrypted Volumes.
[   OK   ] Reached target Local File Systems (Pre).
[   OK   ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch
[   OK   ] Reached target Sound Card.
[   OK   ] Found device WDC_WDBNCE5000PNC SSD.

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

Если кто-то хочет узнать более ранние строки, я с радостью перепишу их здесь. Я благодарен за любую помощь, которую смогу получить.

EDIT: Вот что произошло, когда я последовал совету @K9spud. fsckвернулся чистым, так что это облегчение. Я использовал chrootустановку Linux в качестве корневого каталога и обнаружил, что /var/boot.log продвинулся намного дальше, чем изначально было указано. Я заметил, что устройство в конце журнала, когда я его опубликовал, не монтировалось, вероятно, из-за /etc/fstabнеправильной настройки. Последнее сообщение в журнале:

[  OK   ] Started Show Plymouth Boot Screen

После удаления проблемной строки из /etc/fstab система загружается нормально.

TL;DR: Неправильная настройка /etc/fstabне позволяет отобразить экран входа в систему.

решение1

На этот вопрос может быть сложно ответить. Самый простой ответ — установить новую версию, но это отстой, если у вас уже много данных/настроек, вложенных в старую установку.

Если бы это был мой компьютер, я бы загрузил Ubuntu в режиме Live с моего установочного USB-накопителя Ubuntu и начал бы ковыряться в жестком диске, пытаясь выяснить, что пошло не так, и попытаться это исправить.

Первое, что вы можете сделать, это создать резервную копию всего, так как вы можете сделать только хуже, когда попытаетесь что-то исправить в первый раз.

Далее я бы запустил fsck на разделе Linux, чтобы убедиться, что раздел не поврежден. Если fsck вернул чистый, отлично, все ваши данные все еще там и могут быть восстановлены тем или иным способом, если это необходимо. Если fsck вернул кучу ошибок, я бы сказал, что установка капут, раздел поврежден и не стоит его спасать, за исключением любых пользовательских данных, которые вы могли бы получить перед выполнением новой установки.

После прохождения fsck я бы, вероятно, смонтировал раздел Linux и использовал "chroot", чтобы начать работать из установки Linux, как будто я был загружен из установки Linux. Вам придется повозиться с монтированием dev, sys, proc и т. д. в среде chroot, затем вы можете запустить "update-grub", чтобы попытаться переустановить grub. Запуск "update-grub" может выявить некоторые ошибки, которые могут объяснить, почему вы не можете загрузиться.

Если «update-grub» сработал, но ничего важного не обнаружил, попробуйте заглянуть в /var/log и посмотреть, нет ли в файлах журнала ошибок, которые могли бы указать на причину, по которой система не загрузилась.

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

Очень раздражает, что Windows так мало заботится об установках Linux, что иногда вырубает загрузку Linux — мне хочется вообще избегать системы с двойной загрузкой с Windows. Надеюсь, Microsoft исправится и станет более осторожным в отношении того, чтобы в будущем не портить установки Linux.

решение2

КАК «ОБНОВИТЬ GRUB» ИЗ CHROOT

  1. Загрузитесь с вашего Ubuntu USB Thumb drive в режиме Linux Live. Убедитесь, что ваш BIOS загружает USB drive в правильном режиме (UEFI или Legacy/MBR) для вашей системы, иначе у вас будут серьезные проблемы с запуском update-grub.

  2. После загрузки Linux откройте терминал и начните работать со следующими командами:

mkdir linux

sudo mount /dev/sdXX linux

(замените «/dev/sdXX» на любой правильный номер устройства/раздела для раздела Linux на вашем жестком диске. Возможно, вам придется запустить «gparted», чтобы просмотреть таблицы разделов и выяснить, что есть что)

sudo chroot linux /bin/bash

mount -t devtmpfs udev /dev

mount -t proc proc /proc

mount -t sysfs sysfs /sys

update-grub

(некоторым системам могут потребоваться несколько дополнительных команд «монтирования» для /boot и/или /boot/efi — при необходимости обратитесь к файлу /etc/fstab вашей системы, чтобы узнать, как их смонтировать)

Если все работает правильно, «update-grub» должен выдать что-то вроде:

Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-48-generic
Found initrd image: /boot/initrd.img-4.15.0-48-generic
Adding boot menu entry for EFI firmware configuration
done

Мне для возобновления загрузки системы достаточно было update-grub, но некоторым людям, если grub полностью удален из MBR или того, что использует UEFI, может потребоваться также использовать «grub-install».

Как только все это будет сделано без ошибок, вам придется размонтировать все, что мы ранее смонтировали из среды chroot, прежде чем выходить. В противном случае Ubuntu будет трудно размонтировать раздел Linux чисто, когда вы завершите работу.

umount /sys

umount /proc

umount /dev

exit

sudo umount linux

sync

Связанный контент