USB 记忆棒安装中的内核更新失败,出现 grub-probe 错误

USB 记忆棒安装中的内核更新失败,出现 grub-probe 错误

我正在使用 USB 记忆棒安装的 Ubuntu 11.10 诊断一些硬件问题。

根据 Ubuntu 网站的建议,使用 11.10 映像和 pendrivelinux.com 方法设置了 USB 棒。USB 棒为 8 GB。

我的笔记本允许我直接从 USB 启动,因此 HDD 仍然具有 Micro$oft 风格的启动结构(Windows 7)。

在玩了一下操作系统后(并了解到我的硬盘有 15000 个重新分配的扇区),更新管理器提示我安装一些更新。除了内核更新(3.0.0.14)外,所有内容都正确更新。

似乎有一个 grub 错误:

ubuntu@ubuntu:/dev$ sudo apt-get install
Reading package lists... Done  
Building dependency tree   
Reading state information... Done  
0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded.  
3 not fully installed or removed.  
After this operation, 0 B of additional disk space will be used.  
Setting up linux-image-3.0.0-14-generic (3.0.0-14.23) ...  
Running depmod.  
update-initramfs: deferring update (hook will be called later)  
Examining /etc/kernel/postinst.d.  
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
update-initramfs: Generating /boot/initrd.img-3.0.0-14-generic  
cryptsetup: WARNING: failed to detect canonical device of overlayfs  
cryptsetup: WARNING: could not determine root device from /etc/fstab  
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
/usr/sbin/grub-probe: error: cannot find a device for / (is /dev mounted?).  
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1

每次我尝试重新安装时,这个问题都会持续存在。幸运的是,尽管出现故障,系统始终处于可启动状态。

我是否需要采取一些特殊步骤来更新内核?我是否遇到了一些微妙的安装问题,需要手动解决才能解决?

至少还有一人同样的问题在旧版本的操作系统上。mount当我再次访问笔记本电脑时,我将提供输出(如上一个问题中所要求的)。

编辑:结果mount

/cow on / type overlayfs (rw)   
proc on /proc type proc (rw,noexec,nosuid,nodev  
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)  
fusectl on /sys/fs/fuse/connections type fusectl (rw)  
udev on /dev type devtmpfs (rw,mode=0755)  
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)  
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)  
/dev/sdb1 on /cdrom type vfat  (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)  
/dev/loop0 on /rofs type squashfs (ro,noatime)  
none on /sys/kernel/debug type debugfs (rw)  
none on /sys/kernel/security type securityfs (rw)  
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)  
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)  
none on /run/shm type tmpfs (rw,nosuid,nodev)  
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)  
gvfs-fuse-daemon on /home/ubuntu/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=ubuntu)

编辑 #2:我确定 pendrivelinux.com 闪存驱动器实用程序可能在其中发挥了作用。包含我的 Ubuntu 发行版的 USB 棒被格式化为 FAT32,并且根据 boot_info_script 脚本,正在安装的引导加载程序实际上不是 GRUB 而是 SYSLINUX。

考虑到 grub 在启动过程中根本不参与,因此 grub-probe 无法弄清楚该做什么是有道理的。

(这让我想知道为什么 apt-get 在尝试内核更新之前不检查 grub 引导加载程序是否作为依赖项?)

我想下一步是尝试用 GRUB 覆盖 SYSLINUX,并尝试通过这种方式使硬盘可启动,然后看看更新是否有效。

我第一次尝试这个导致系统无法启动 - grub 正在加载,我可以正常加载内核,但无法弄清楚以 root 身份安装什么。我不得不擦除并重新安装闪存驱动器才能再次运行。

答案1

我看到您已经解决了问题(使用 Windows 7... 不是真正的解决方案,但无论如何)。我找到了解决方案。我将其发布在这里,以便其他可能遇到此问题的用户使用。

我找到了修复此问题的方法。导致安装失败的行是:

run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.0.0-15-generic /boot/vmlinuz-3.0.0-15-generic

(您的安装的内核版本可能不同)

编辑有问题的文件以注释更新 Grub 的行。这是一个非常小的文件,因此并不太难。

笔记:如果您想先备份文件(这通常是一个明智的想法),请将其复制到其他目录中(这/root是一个好主意,/tmp但不是,因为它在重新启动后将无法恢复)。如果您在同一个文件夹中进行备份(/etc/kernel/postinst.d/),它也会被调用,并且会失败。

编辑/etc/kernel/postinst.d/zz-update-grub以注释掉第 15 行。

前:

    */postinst.d/*:|*/postinst.d/*:configure|*/postrm.d/*:|*/postrm.d/*:remove)
        exec update-grub
        ;;

后:

    */postinst.d/*:|*/postinst.d/*:configure|*/postrm.d/*:|*/postrm.d/*:remove)
#       exec update-grub
        ;;

运行配置脚本:

sudo dpkg --configure -a

您应该会看到很多调试,而不是最后的错误行。

为确保万无一失,请重新运行配置。它应该立即结束,并且没有任何日志:

sudo dpkg --configure -a

现在,您可以恢复该zz-update-grub文件,以防您稍后想要安装其他内核并grub开始使用overlayfs

答案2

你解决问题了吗?我这里也遇到了同样的错误。我真的不需要修复它,我可以轻松地在 USB 上重新安装系统,但我喜欢挑战 :)

解决这个问题的聪明方法是指示 Grub 如何理解 overlayfs,但我不知道我必须为此安装哪个包(如果有的话)。由于我的 USB 记忆棒仍然可以启动,我想强制 apt-get 忽略此警告。即,将此包视为已安装,即使它不完全正确。好吧,从技术上讲,它已正确安装,只有 Grub 无法更新 MBR。这不是什么大问题,因为它正在启动最新版本的内核。

每次尝试都需要一段时间,因为它尝试配置包但 Grub 失败,然后它尝试回滚并且 Grub 再次失败......

我尝试了以下操作但没有成功:

(apt-get -f is for fixing problems)
sudo apt-get -f install
sudo apt-get -f --force-yes install
sudo apt-get --force-yes install linux-image-3.0.0-15-generic
sudo apt-get install --force-yes linux-image-3.0.0-15-generic
sudo dpkg --force-all -i linux-image-3.0.0-15-generic
sudo apt-mark manual linux-image-3.0.0-15-generic
(the following command is the one that trigger the bug)
sudo dpkg --configure -a
sudo dpkg --configure --force-all -a
(I think the next one need the .deb file)
sudo dpkg --force-confmiss -i linux-image-3.0.0-15-generic
sudo dpkg --force-confold -i linux-image-3.0.0-15-generic
sudo dpkg --no-triggers -i linux-image-3.0.0-15-generic

... 还有很多...

相关内容