После ряда казусов с Secure Boot (попытка подписать модули ядра VMWare Player), GRUB перестал показывать записи, соответствующие Ubuntu 19.10, установленной как ZFS root (опции установщика по умолчанию 19.10), загружаясь в System Setup по умолчанию.
Я смог загрузиться в свою систему, сделав следующее (по памяти; некоторые детали ниже могут быть неточными).
В оболочке GRUB я ввел
set root=(hd0,gptXXX)
linux /BOOT/ubuntu_YYY/@/vmlinuz root=ZFS=rpool/ROOT/ubuntu_YYY boot=zfs
initrd /BOOT/ubuntu_YYY/@/initrd.img
boot
Чтобы найти раздел gptXXX
, я запустил ls
, а затем ls (hd0,gptXXX)/
, пока не нашел загрузочные файлы.
ubuntu_YYY
- это уникальный идентификатор системы Ubuntu. Я нашел его, ls
-ища вокруг (hd0,gptXXX)/BOOT
.
При ls
-обходе из GRUB я получил несколько ошибок, касающихся алгоритма сжатия 115 не поддерживается
.
У меня не установлена никакая другая операционная система, и я пока отключил Secure Boot.
Теперь я думаю, какие шаги предпринять, чтобы восстановить корректную работу загрузчика GRUB. Если я не смогу исправить это, я могу просто закончить установкой свежей копии 20.04 LTS. Но, по крайней мере, вышесказанное может помочь любому, кто окажется в такой же ситуации.
Edit: У меня compression=lz4
установлено на rpool
(но нет на bpool
), это может быть связано.
Поскольку приведенные выше команды заставляют его загружаться, первый и простой способ — вставить их в ваш /boot/grub/grub.cfg (стандартное расположение) следующим образом:
Menuentry 'my Ubuntu installation' {
insmod zfs
insmod part_gpt
insmod (whatever)
... here go your commands (without "boot")...
}
Скорее всего , если редактирования grub.cfg достаточно, то многие из них даже не нужны insmod
. В любом случае, не помешает взглянуть на уже существующие записи (созданные при установке системы).
ИЛИ вы можете полностью переустановить grub с помощью команды grub-install, предполагая, что ваш (hd0) — это /dev/sda: grub-install /dev/sda.