Восстановление загрузки Grub2 + UEFI на томе BetterFS

версия для печати
Преамбула

Есть SSD с рабочим Linux Mint 19-че-то-там. Системный том размечен в BetterFS (btrfs). Конфиг Grub на нем же. До кучи, винт разбит в GPT и еще тут UEFI с какого-то бока, о сути которого я до сих пор не имею четкого представления.

Поскольку меня конкретно заколебал Cinnamon да и весь Mint в целом, я захотел вернуться к KDE, на которой провел 5 лет до Минта.

Обновление линухи для меня задача непростая и чтобы оставить себе пути отхода, я решил ставить KUbuntu на отдельный винт. Ну и я хочу, чтобы обе Линухи можно было загрузить.

Как все сломать?

Легко!

В процессе установки я неправильно понял, о чем меня спросил установщик про "Device for boot loader installation". Тут до сих пор какая-то хрень творится. Вроде бы речь про Grub2, но на форумах читал, что UEFI и сам способен осуществить загрузку ОС без посредников. Установщик же видит мой раздел с UEFI при этом не уточняет, о каком именно загрузчике он говорит. Выбрать девайс нужно обязательно, нет возможности пропустить эту настройку. Ну и я еще сам тупанул конечно. В результате я указал для загрузчика диск, где размещен Mint. Установка завершилась, загрузчик - Grub, в списке только новый KDE, Минта нет.. Мило.

Теперь к делу..

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

Все что я находил, не работало. Одни решения не учитывали наличие UEFI, другие вообще предполагали, что у меня винт с разметкой времен MS-DOS, когда GPT в природе не было. И еще есть отдельный нюьанс с BetterFS.

Решение нашел тут. Эта статья на английском, к тому же с ошибками в командах. Перепишу по-своему.

Логинимся с LiveCD. У меня их уже две, по одной флешке с каждой линухой. Использовал ту, что с Mint, хотя тут разницы нет.

Все делаем в консоли под рутом, поэтому проще сразу выполнить sudo -s, чтобы в каждой команде не писать.

Выясняем, на каких томах EFI и отвалившаяся система.

$ fdisk -l
...
Device         Start       End   Sectors  Size Type
/dev/sda1       2048   1050623   1048576  512M EFI System
/dev/sda2    1050624 205522943 204472320 97,5G Linux filesystem
/dev/sda3  205522944 809502719 603979776  288G Linux filesystem
/dev/sda4  809502720 877135871  67633152 32,3G Linux swap
...

В моем случае это [/dev/sda1] и [/dev/sda2] соответственно. Восстанавливать загрузчик буду в тот же винт - [/dev/sda].

По шагам:

  • Смонтировать нужные тома в пространстве LiveCD.
  • Переключиться в пространство потерянной системы через chroot и выполнить реанимацию загрузчика внутри нее.
  • Все размонтировать.
Монтирование
$ mount -o subvol=@ /dev/dsa2 /mnt
$ mount /dev/sda1 /mnt/boot/efi
$ for i in dev dev/pts sys proc run; do mount --bind /$i /mnt/$i; done

В первой команде важно использование -o subvol=@. Так устроена BetterFS, по умолчанию корневая ФС размещается в покаталоге "@". Я пробовал монтировать том без этого параметра, потому вручную привязывать остальные точки в подкаталог "@" - реанимация не работала.

Точка монтирования во второй комадне тоже важна. Именно так grub сможет найти, куда скопировать нужные файлы для UEFI.

Прим:[/mnt] - это базовый каталог для монтирования носителей и по-хорошему окружение нужно бы собирать в его подкаталоге. Но поскольку мы тут только для одного фикса и сразу уйдем, глушим в себе тягу к порядку.

Ремонт
$ chroot /mnt            
$ grub-install /dev/sda
$ update-grub
$ exit

Все должно бы пройти без ошибок. Но тогда не было бы этой статьи. У меня эта волшебная команда, - grub-install - падала в разных ситуациях с разной руганью. Из найденных рецептов я пробовал разные параметры команды и всегда получал какую-то невнятную хрень. Вот один пример: "grub-install: error: cannot find a device for /boot/grub (is /dev mounted?)" Пользы от подобных сообщений никакой (классика Линухи, ответ всегда "где-то там"). Если даже сейчас будут какие-то ошибки, возможно как-то поможет grub-probe, но пока я не могу что-то конкретное привести в пример.

Прибираемся за собой

Я думаю, это необязательно, т.к. все монтирование было в LiveCD после перезагрузки ничего не останется. Но все же, вот команды:

$ umount /mnt/boot/efi
$ for i in run proc sys dev/pts dev; do umount /mnt/$i; done
$ sudo umount /mnt

Все. Перегружаемся, загрузка потерянной ОС должна работать.

P.S.

Я пробовал для реанимации использовать образ boot-repair, не прокатило из-за GPT. Может я чего не так понял или скачал, может сама софтина невнятные инструкции привела. Короче, мне не помогло. Не рассматривал вариант установки boot-repair в систему, только LiveCD, чтобы было как можно меньше влияния на сложившуюся ситуацию.

[1oo%, EoF]

Понравилась статья? Расскажите о ней друзьям:

Метки: Linux, терапия

Комментарии

Показать/скрыть правила
Имя
[i] [b] [u] [s] [url]
:-) ;-) :D *lol* 8-) :-* :-| :-( *cry* :o :-? *unsure* *oops* :-x *shocked* *zzz* :P *evil*

Осталось 1000 символов.
Код защиты от спама Обновить код
Каждый комментарий проходит ручную модерацию. 100% фильтрация спама.
Для работы модуля комментариев включите javaScript

Продвижение
Время
Метки