ПРИМЕЧАНИЕ: Да, я знаю, что мне следовало сделать снимок bpool. Это решило бы всю эту проблему, но я забыл это сделать.
Я установил Ubuntu 19.10 как чистую установку с ZFS на весь жесткий диск.
Я немного изменил / etc / default / grub
:
GRUB_TIMEOUT_STYLE=menu
GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi=off splash"
Я запустил:
sudo update-grub
sudo grub-install
Затем я перезагрузился.
В этот момент я попал в командную строку grub. В меню не было записей, и моя система не загружается.
Я действительно не хотел бы переустанавливать систему, так как я уже настроил свою систему и переместил на нее много личных данных.
Я запустил аварийный диск Ubuntu, чтобы исправить это. Мне удалось смонтировать в них разделы rpool
и bpool
и chroot
, но update-grub
и grub-install
не нашел мой текущий корень Ubuntu и не заполнил grub.cfg
.
Я читал, что os-prober
был проблемой:
https://github.com/zfsonlinux/pkg-zfs/issues/193
sudo os-prober
Выдает следующее:
device-mapper: reload ioctl on osprober-linux-sdb5
failed: Device or resource busy
Command failed.
Также , щуп-зонд
не работает. Запуск:
sudo grub-probe /
Результат:
grub-probe: error: unknown filesystem.
Таким образом, это может объяснить, почему grub не работает. Вот версия:
grub-probe (GRUB) 2.04-1ubuntu12.1
Есть идеи, как снова сделать эту систему загрузочной, кроме переустановки?
chroot
,вы должны сделать следующее (после того, как вы загрузились с аварийного диска и все смонтировали):
mv $target_root/dev $target_root/dev.save && mkdir $target_root/dev
mount --bind /dev $target_root/dev
(возможно, вам придется сделать то же самое для вашего /sys
)ТОЛЬКО ТОГДА вы можете перейти в $target_root/
и ожидать, что все будет работать. После выхода из chroot не забудьте размонтировать $target_root/dev && rmdir $target_root/dev && mv $target_root/dev.save $target_root/dev
(и сделать то же самое для / sys
, если вы его использовали). В противном случае вы не сможете загрузиться, потому что ваш /dev
не будет на месте.
вы должны иметь возможность установить GRUB без всего этого chroot.
Просто проверьте /etc/fstab
и узнайте, какие у вас разделы. Получите корневое (/) устройство оттуда.
Скорее всего, вместо имен устройств /dev/sd* вы найдете UUID. Без проблем!! Получите имя устройства из ls -l /dev/disk/by-uuid
, где вы найдете свои UUID и устройства, с которыми они связаны.
Узнайте, где находится ваш /boot/grub
— скорее всего, он находится в корне, поэтому ls /boot/grub
достаточно, чтобы убедиться.
Стандартная команда grub-install
НЕ НАЙДЕТ НИЧЕГО, вам нужно указать целевое установочное (корневое) устройство:
grub-install /dev/sda
(вместо из /dev/sda
укажите ваше корневое устройство, которое вы нашли в /etc/fstab
).
grub-probe
, чтобы получить от него осмысленный ответ:grub-probe --target=disk /
(или любой другой --target)