Как мне настроить grub для загрузки рабочей версии Ubuntu (btrfs !)

Вопрос или проблема

Я установил вторую Ubuntu на ноутбук, на котором уже стояла MSFT Windows и рабочая версия Ubuntu 18.04.
После перезагрузки я заметил, что grub не показывает две, а одну Ubuntu. Эта новая версия не позволяла мне зайти в систему.
Загрузка происходит в режиме EFI, и, после того как я изучил вопрос, кажется, что проблема в том, что в разделе EFI создается только один каталог /ubuntu. В результате файл grub.cfg перезаписывается.
Я хотел бы в качестве первого шага попытаться восстановить свою стандартную ОС Ubuntu.
Я попробовал несколько вещей для этой цели:
1- Я установил rEFInd. Указано, что rEFInd найдет все ОС, независимо от того, загрузочные они по EFI или нет. rEFInd сейчас мой загрузчик, но запись, которую он создаёт, не восстанавливает нужный мне раздел каким-либо образом.

2- Я использовал стандартные и расширенные опции восстановления загрузки, но без результата.

3- Я попытался выполнить chroot
Как я могу переустановить GRUB в раздел EFI?
Следуя всем инструкциям с живого диска boot-repair, я получал окончательную ошибку, которую не смог преодолеть после попытки grub-install: /boot/grub нет такого устройства (вы смонтировали /dev? –что я и сделал, согласно инструкциям).

Теперь я пытаюсь напрямую отредактировать grub.cfg, чтобы указать на старый раздел. Там есть инструкции с fs UUID с root hd0,gpt3,
которые я хотел бы поправить, но не совсем понимаю, как это сделать.

Буду признателен за любую помощь.

С уважением

Огромное спасибо Педро де Пауле за то, что неоднократно указывал мне правильное направление.

Мне удалось восстановить свою потерянную ОС, используя chroot. Причина, по которой это не удалось при предыдущей попытке, заключалась в том, что файловая система btrfs и она немного отличается от extxxx.

Всё это очень хорошо объясняется здесь:

http://logan.tw/posts/2015/05/17/grub-install-and-btrfs-root-file-system/
Я строго следовал этим инструкциям, и это сработало.

Надеюсь, это поможет.

Когда вы загружаетесь с живой USB, запускаете cfdisk, показываются 2 раздела или 1?

Перезагрузите

Запустите с usb или cd

Выберите открыть вместо установки.

Затем сделайте:

sudo apt install cfdisk

Проверьте, есть ли 2 ext* раздела

После того как вы увидите имя раздела, вы можете перезагрузиться и войти в безопасный режим.

Этот пост объясняет, что вам нужно делать дальше:

Загрузка переходит к (initramfs) запросам/busybox

В общем, попав в (initramfs), выполните exit
Это покажет, в чем проблема с загрузкой

Теперь выполните

fsck /dev/sda* -y

Обычно это будет sda1 или 2, проверьте в initramfs, чтобы узнать, что это.

Наберите перезагрузку, и это должно сработать

ИЗМЕНЕНИЕ:

Для тех, кто столкнулся с подобными проблемами:

во-первых, если вы загрузились в grub>, попробуйте выполнить ls

это даст вам нечто похожее на grub> ls (hd0) (hd0,msdos2) (hd0,msdos1)

Теперь вам нужно знать кое-что: во-первых, что является вашей загрузкой Linux, вы будете искать устройства, отформатированные в EXT2, EXT3 и EXT4. Они будут называться от sda1 и далее, например, ext4 /dev/sda1.

С этой информацией есть несколько вещей, которые вы можете сделать:

Если вы загрузитесь из (initramfs) – вам придется ждать долгие минуты, чтобы добраться до этого запроса после ошибки загрузки, вы можете выполнить приведенные выше шаги в не отредактированной версии этого ответа, в противном случае, если это не сработает, следуйте далее:

После того, как вы распознали свою таблицу загрузки, имя и раздел, (что можно сделать с помощью fdisk или cfdisk), вам нужно будет загрузиться в grub> и выполнить ls, из списка, который он отображает, вам нужно будет выяснить, в каком из разделов находится ваша загрузка, выполнив: например cat (hd0,1)/etc/issue, выполните это для каждого из выводов, которые будут похожи на “(hd0) (hd0,msdos2) (hd0,msdos1)”, здесь вы ищете вывод, который будет похож на вашу версию ubuntu: “Ubuntu 14.04 LTS”.

Как только вы определите, в каком разделе вы находитесь в grub>, вы можете попробовать, например:

set prefix=(hd0,1)*/boot/grub
set root=(hd0,1)*
insmod normal grub 
normal 
insmod linux grub
linux /boot/*
root=/dev/sda1* grub 
initrd /boot/*
boot

Замените * на ваш раздел и путь к загрузке.

Надеюсь, это может помочь. ссылки для полной информации:

Если у вас есть раздел BTRFS:

http://logan.tw/posts/2015/05/17/grub-install-and-btrfs-root-file-system/

https://wiki.archlinux.org/index.php/btrfs#Missing_root

Полное руководство для grub rescue> и grub в общем:

https://www.linux.com/learn/how-rescue-non-booting-grub-2-linux%20%20

Удачи.

Ответ или решение

Для того чтобы восстановить загрузчик GRUB и указать его на работающую версию Ubuntu, установленную на файловой системе Btrfs, необходимо выполнить ряд шагов. Давайте рассмотрим их подробнее.

1. Подготовка к загрузке

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

2. Проверка разделов

После загрузки с Live USB выполните команду для запуска cfdisk, чтобы убедиться, что ваши разделы видны и правильно настроены:

sudo cfdisk

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

3. Установка необходимых пакетов

Убедитесь, что все необходимые инструменты установлены на Live-системе. После загрузки в командной строке выполните:

sudo apt update
sudo apt install btrfs-progs grub2-efi-amd64

4. Монтирование разделов

Теперь вам нужно смонтировать корневой раздел вашей старой установки Ubuntu. Предположим, ваш старый Ubuntu находится на /dev/sda1, выполните:

sudo mount /dev/sda1 /mnt

Если у вас есть отдельные разделы для /boot или других каталогов, смонтируйте их соответственно (например, /dev/sda2 для /boot):

sudo mount /dev/sda2 /mnt/boot

5. Применение Btrfs специфики

Поскольку вы используете файловую систему Btrfs, необходимо учитывать некоторые специфические настройки. Будьте внимательны к тому, что вы должны использовать правильные параметры в GRUB и монтировать точки в соответствии с вашей конфигурацией:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

Если ваша старая система использует snapshotes Btrfs, убедитесь, что вы смонтировали выбранную родительскую и/или сабдата.

6. Вход в chroot

Следующий шаг — переход в chroot окружение:

sudo chroot /mnt

7. Восстановление GRUB

В чруте установите GRUB на ваш EFI-загрузчик:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Ubuntu
update-grub

Команда update-grub должна обнаружить все доступные системы, включая вашу старую установку Ubuntu.

8. Завершение и перезагрузка

Завершив процесс, выйдите из chroot и демонтируйте разделы:

exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt

Теперь перезагрузите систему:

sudo reboot

9. Проверка результата

После перезагрузки вам следует увидеть в меню GRUB вашу старую версию Ubuntu. Если все прошло успешно, вы должны смочь войти в систему.

Заключение

Если у вас возникли проблемы на каком-либо этапе, проверьте вывод команд на наличие ошибок и повторите шаги, учитывая все специфические моменты, связанные с вашей конфигурацией Btrfs. В дальнейшем, подумайте об использовании таких инструментов, как rEFInd, для расширенной конфигурации загрузчиков, если вам нужно управлять несколькими операционными системами.

Оцените материал
Добавить комментарий

Капча загружается...