我正在使用 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
... 还有很多...