Ubuntu 19.10 попадает в командную строку Grub2 после update-grub в ZFS Rootfs

ПРИМЕЧАНИЕ: Да, я знаю, что мне следовало сделать снимок 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

Есть идеи, как снова сделать эту систему загрузочной, кроме переустановки?

1
задан 27 December 2019 в 10:42

1 ответ

  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 не будет на месте.

  1. Но на самом деле

вы должны иметь возможность установить 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).

  1. О, и вы можете проверить, как вызвать grub-probe, чтобы получить от него осмысленный ответ:

grub-probe --target=disk / (или любой другой --target)

0
ответ дан 24 October 2020 в 20:09

Другие вопросы по тегам:

Похожие вопросы: