我有一个旧的 Debian 系统,多年来我一直能够升级它。我安装了一个旧内核,是我从源代码编译的。
在我上次进行 dist 升级(使用测试发行版)后,我在启动时遇到了内核恐慌。我的旧内核和新 libc 无法再一起工作(我猜)。
甚至设备名称也发生了变化:在我最新的工作内核中,我有/dev/hda
和/dev/hdb
,现在这些设备被识别为/dev/sda
和/dev/sdb
。
另外,两个分区(/dev/hda2
和/dev/hdb2
)被加入到一个 raid 阵列中,其名称是/dev/md0
(以 root 身份安装),现在是/dev/md127
。分区/dev/hda1
安装为/boot
,并且/dev/hdb1
是交换分区。
我使用 lilo 作为启动管理器。
现在一切都坏了,我尝试使用 Debian 救援模式,但没有成功。我删除了 lilo 并安装了 grub2,仍然不起作用。
因此,我决定在旧的交换分区(/dev/hdb1
现在/dev/sdb1
)中安装一个新的最小 debian 系统,并从那里尝试挽救该系统。
仍然没有:我无法在旧分区中安装工作内核(这次是预编译的内核)。我尝试重建我的旧 raid 阵列,挂载我的引导分区,chroot-ed ant apt-get 安装了一个新内核:grub 什么也看不到。
我不知道我还能尝试什么...
答案1
内核中的新 ATA 驱动程序使用 /dev/sda,仍然支持旧驱动程序,但您必须使用 livecd chroot 到系统来编辑内核。
Device drivers --->
<*> ATA/ATAPI/MFM/TLL support (deprecated)
<*> Serial ATA and Parallel ATA drivers --->
对于 chrooting 我总是使用gentoo 最小安装光盘以及如何 chroot 进入您的系统,您可以阅读gentoo手册,它也应该适用于您的系统。对于 Debian 用户来说可能还有其他方法,但这种方法应该适合你们两个。
我希望这能解决您的问题。
答案2
正如德罗伯特所指出的,hda -> sda
这是长期以来的预期变化。
RAID阵列名称的更改很奇怪,但最终它自己解决了。
我尝试从 live CD 发行版启动,安装 raid 阵列,安装启动分区,然后安装apt-get install
新内核。这个过程产生了一个错误,因为我不知道我应该安装/boot
,/proc
和/sys
。
所以具体的流程是:
从实时发行版启动(救援模式下的 debian CD 1 就可以)
挂载根分区(例如,在 /chroot 中),最后挂载引导分区(如果与根分区不同)
绑定挂载特殊设备:
mount --bind /sys /chroot/sys
mount --bind /proc /chroot/proc
mount --bind /dev /chroot/dev
chroot 到根分区
安装新内核
重启