我面临着一个非常严重的问题。我正在将我的笔记本电脑从 Debian 7.0 更新到当前的测试发行版。一个 package( veusz.helper
) 依赖项丢失,升级过程无法继续。但已经有近 1000 个软件包被卸载。并且系统卡住了。
所以我必须重新启动,但问题是系统也卸载了vmlinuz
,initrd.gz
所以 grub 无法识别 Linux 卷。而且新下载的包还在/var/apt/cache/archives
。
有什么方法可以继续升级过程并找出依赖性问题吗?
答案1
如果您的 grub 菜单有其他可用内核,请尝试引导其中之一。您应该能够通过重复运行dpkg --configure --pending
、apt-get -f install
、 和apt-get dist-upgrade
直到没有错误来修复您的系统。
如果没有,您将必须启动救援 CD 或 USB 记忆棒。我最喜欢的是 Clonezilla,因为它有 64 位和 32 位版本 - 大多数其他版本只有 32 位,这使得无法 chroot 到 64 位系统。
如果您启动救援 CD,则需要安装笔记本电脑的根文件系统(例如 /mnt),并在 /mnt 下绑定安装 /proc、/sys 和 /dev。如果您有单独的 /boot 分区,则还需要将 /boot 挂载为 /mnt/boot。然后你可以chroot到/mnt
例如,如果您的 rootfs 是 /dev/sda1 并且 /boot 是 /dev/sda2,您将启动救援 CD,获取 root shell,并执行类似以下操作:
mount /dev/sda1 /mnt
mount /dev/sda2 /mnt/boot
for i in proc dev sys dev/pts ; do mount -o bind /$i /mnt/$i ; done
chroot /mnt
您现在应该能够如上所述修复系统(通过重复运行dpkg --configure --pending
等,直到没有错误)。
完成后,检查内核是否已安装并且 initramfs 是否存在,卸载文件系统(以与安装它们相反的顺序)并重新启动。
例如
exit # exit from the chroot.
for i in dev/pts sys dev proc /boot / ; do umount /mnt/$i ; done
sync
shutdown -r now
这sync
并不是真正必要的。由于神秘的历史原因,它只是让我感觉更好 - 这是对像 yog sothoth 和 sco unix 这样的可怕恐怖事物的神秘防御。