grub2: update-grub не удалось получить канонический путь `none'

$ sudo update-grub
/usr/sbin/grub-probe: error: failed to get canonical path of `none'.

Это ситуация, в которой я нахожусь после прерванного перехода от яркого к коварному

[редактировать]

Далее, углубившись в исходный код grub, вторая команда, вероятно, является ошибочной:

$ grub-probe --target=device /
/dev/md2
$ grub-probe --target=device /boot
grub-probe: error: failed to get canonical path of `none'.

Следующее также дает ошибку:

$ sudo grub-probe -t device /boot/grub
grub-probe: error: failed to get canonical path of `none'.
$ sudo grub-probe -t fs_uuid /boot/grub
grub-probe: error: failed to get canonical path of `none'.

[/редактировать]

У меня нет /boot/grub/grub.cfg присутствует (или старше /boot/grub/menu.lst)

Невозможно установить загрузчик во время настройки grub:

https://imgur.com/a/LqPa8

Grub не удалось установить на доступные опции (/dev/sda/dev/sdb или же /dev/md2)

md1 не был задан как опция, хотя в настоящее время он монтируется в /boot:

$ cat /etc/fstab
proc /proc proc defaults 0 0
/dev/md/0 none swap sw 0 0
/dev/md/1 /boot ext3 defaults 0 0
/dev/md/2 / ext4 defaults 0 0

В любом случае, у меня есть настройки raid с / dev / sda и / dev / sdb:

$ sudo fdisk -l
Disk /dev/sda: 447.1 GiB, 480103981056 bytes, 937703088 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00032e61

Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1          2048   8390656   8388609     4G fd Linux raid autodetect
/dev/sda2       8392704   9441280   1048577   512M fd Linux raid autodetect
/dev/sda3       9443328 937701040 928257713 442.6G fd Linux raid autodetect


Disk /dev/sdb: 447.1 GiB, 480103981056 bytes, 937703088 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00074c3d

Device     Boot   Start       End   Sectors   Size Id Type
/dev/sdb1          2048   8390656   8388609     4G fd Linux raid autodetect
/dev/sdb2       8392704   9441280   1048577   512M fd Linux raid autodetect
/dev/sdb3       9443328 937701040 928257713 442.6G fd Linux raid autodetect


Disk /dev/md2: 442.5 GiB, 475133575168 bytes, 927995264 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/md0: 4 GiB, 4292804608 bytes, 8384384 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/md1: 511.7 MiB, 536543232 bytes, 1047936 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Grub, кажется, установлен (обнаружение из другого ответа на сервере):

$ sudo dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings
ZRr=
`|f 
\|f1
GRUB 
Geom
Hard Disk
Read
 Error

Когда я запускаю grub-emu, я получаю пустое приглашение:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.10
Release:        15.10
Codename:       wily

Это на сервере только с ssh-доступом, поэтому у меня нет доступа к live CD, если grub не работает!

[редактировать] вывод df -h:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             63G     0   63G   0% /dev
tmpfs            13G  714M   12G   6% /run
/dev/md2        436G  178G  236G  44% /
tmpfs            63G  8.0K   63G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            63G     0   63G   0% /sys/fs/cgroup
none            436G  178G  236G  44% /boot
tmpfs            13G     0   13G   0% /run/user/0
tmpfs            13G     0   13G   0% /run/user/1002
/dev/md2        436G  178G  236G  44% /var/cache/apt/archives
none            436G  178G  236G  44% /bin
none            436G  178G  236G  44% /etc
none            436G  178G  236G  44% /initrd
none            436G  178G  236G  44% /lib
none            436G  178G  236G  44% /lib32
none            436G  178G  236G  44% /lib64
none            436G  178G  236G  44% /sbin
none            436G  178G  236G  44% /usr
none            436G  178G  236G  44% /var

[дальнейшее редактирование] вышеуказанная команда, кажется, сообщает, что / boot смонтирован none, Я думаю, что это может быть none жуткий зонд жалуется. Вот вывод mount -l который показывает два отдельных монтирования 'entry'; расследуя, как удалить второй сейчас.

mount -l |grep boot
/dev/md1 on /boot type ext3 (rw,relatime,data=ordered)
none on /boot type aufs (rw,relatime,si=6ea5aad590be877d)

5 ответов

Решение

Хорошо, я, кажется, получил это со следующим (все просто в ретроспективе):

$ umount /boot

Я попробовал это, так как заметил, что для /boot было два "монтирования":

$ mount -l |grep boot
/dev/md1 on /boot type ext3 (rw,relatime,data=ordered)
none on /boot type aufs (rw,relatime,si=6ea5aad590be877d)

И что последний переопределял первый:

$ df -h |grep boot
none            436G  178G  236G  44% /boot

После размонтирования те же команды выглядят так:

$ mount -l |grep boot
/dev/md1 on /boot type ext3 (rw,relatime,data=ordered)
$ df -h |grep boot
/dev/md1        488M   75M  388M  17% /boot

(понятия не имею, как произошло второе крепление)

Затем я смог переустановить grub следующим образом (у меня raid1, поэтому есть две команды для sda и sdb):

$ grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
$ grub-install /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
$ update-grub
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found linux image: /boot/vmlinuz-3.19.0-30-generic
Found initrd image: /boot/initrd.img-3.19.0-30-generic
Found linux image: /boot/vmlinuz-3.19.0-25-generic
Found initrd image: /boot/initrd.img-3.19.0-25-generic
done

постскриптум

После перезагрузки сервер снова заработал (мог пропинговать его), но я обнаружил, что не могу войти в ssh. Это оказалось отдельной проблемой, связанной с /dev/null (возможно, он сломался одновременно). Мне удалось ssh использовать отдельную систему спасения и применить это исправление: http://thesystemadministrator.net/linux-administration/sshd-deamon-failing-to-start

Этого будет достаточно как root в режиме восстановления после включения сети:

sudo apt-get install --reinstall grub *

sudo grub-install / dev / partition

В качестве раздела вы вводите загрузочный раздел, который очень безопасен, например, /dev/sda

Затем сделайте следующее:

Есть ошибка проверки орфографии, но только немного? Вы можете попробовать это:

sudo update-grub2

и не

sudo update-grub

Не пытайтесь исправить это. Используйте boot-repair Подключитесь к Интернету, затем откройте терминал с помощью Ctrl+Alt+t, вставьте следующие команды и выполните их, нажав Enter:

sudo add-apt-repository -y ppa:yannubuntu/boot-repair; \
sudo apt-get update; \
sudo apt-get install -y boot-repair && boot-repair

Следующее (опасное) действие, которое вы можете предпринять, если восстановление с загрузкой не сработало, - попытаться переустановить, что не позволит вам. Так что выбирай что-то другое. Создайте все одинаково и используйте одинаковые пароль и имя пользователя. Это было сказано, чтобы работать в качестве ремонта.

Лучшая альтернатива, если восстановление загрузки не работает, - сделать резервную копию ваших данных и установить их заново. Вы можете сделать резервную копию с живого диска. Я помню, я сделал что-то тривиальное в Lubuntu, которое только испортило некоторые настройки. Было предложено сделать резервную копию и заново установить. Мне сказали, что это займет час, а не тратить часы, пытаясь понять это. В итоге я последовал этому совету, попробовав кое-что еще. Он был прав.

Вы также можете попробовать эту ссылку для восстановления grub с живого usb https://community.linuxmint.com/tutorial/view/245 Я попробовал нечто подобное (но не ту же ссылку), когда неудачное обновление ядра испортило все. Я погуглил "как исправить grub после неудачного обновления linux" и получил множество страниц. Вы можете попробовать поискать "grub repair usb live". Попробуйте это, у которого есть терминальные и графические ответы. http://www.howtogeek.com/114884/how-to-repair-grub2-when-ubuntu-wont-boot/

Вы пробовали grub-install?

Если вы не можете использовать его тогда...

Как я вижу, вы можете запустить терминал в системе:

Делать

apt-get -f install

Как супер пользователь.

Если он не попросил установить что-либо, то ничего не сломалось.

Рассматривать:

apt-get upgrade //To finish upgrading

Прошлой

apt-get install -y aptitude && aptitude reinstall grub

Теперь попробуйте снова с grub-install

Замечания:

Для использования grub-install выполните:

man grub-install

В моем случае я обнаружил, что открытый мной терминал находился в моем «домашнем» каталоге. Изменение каталога с помощью cd .. до тех пор, пока я не добрался до корневого каталога, позволило мне без проблем запустить update-grub.

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