grub2:update-grub 无法获取“无”的规范路径

grub2:update-grub 无法获取“无”的规范路径
$ sudo update-grub
/usr/sbin/grub-probe: error: failed to get canonical path of `none'.

这是我从 Vid 升级到 Wily 后中断的情况

[编辑]

进一步深入研究 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://i.stack.imgur.com/IBEiQ.jpg

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

无论如何,我已经使用 /dev/sda 和 /dev/sdb 建立了 raid 设置:

$ 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 访问权限的服务器上,所以如果 grub 失败,我就无法访问 live CD!

[编辑] 输出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。我认为这可能是nonegrub-probe 抱怨的问题。以下是 的输出mount -l,显示了两个单独的挂载“条目”;现在正在研究如何删除第二个。

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

答案1

好的,我似乎已经明白了以下内容(回想起来一切都很简单):

$ 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

后记

重启后,服务器恢复了(可以 ping 通),但我发现无法 ssh 连接。这原来是与 /dev/null 相关的另一个问题(可能同时出现故障)。我能够使用单独的救援系统 ssh 连接并应用此修复程序: http://thesystemadministrator.net/linux-administration/sshd-deamon-failing-to-start

答案2

你有没有尝试过grub 安装

如果你不能使用它那么...

正如我所见,您可以在系统中运行一个终端:

apt-get -f install

作为超级用户。

如果它没有要求安装任何东西,那么就没有任何东西损坏。

考虑 :

apt-get upgrade //To finish upgrading

最后的

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

现在再试一次grub 安装

笔记:

对于 grub-install 的使用,请执行以下操作:

man grub-install

答案3

不要费心去修复它。使用 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 中做了一些琐碎的事情,只是弄乱了一些设置。有人建议备份并全新安装。我被告知这需要一个小时才能完成,而不必花几个小时来弄清楚。在尝试了一些其他方法后,我最终听从了这个建议。他是对的。

您也可以尝试此链接从实时 USB 修复 grub https://community.linuxmint.com/tutorial/view/245 当内核升级失败导致一切都乱七八糟时,我尝试了类似的方法(但不是同一个链接)。我在 Google 上搜索了“如何在 Linux 升级失败后修复 grub”,得到了各种页面。您可以尝试搜索“grub repair usb live”。试试这个,它有终端和图形答案。 http://www.howtogeek.com/114884/how-to-repair-grub2-when-ubuntu-wont-boot/

答案4

就我而言,我发现我打开的终端位于我的“主”目录中。使用 cd .. 更改目录,直到到达根目录,这样我就可以毫无问题地运行 update-grub。

相关内容