在旧的、损坏的 Debian 系统上安装 grub 和工作内核

在旧的、损坏的 Debian 系统上安装 grub 和工作内核

我有一个旧的 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 到根分区

  • 安装新内核

  • 重启

相关内容