debootstrap安装内核不匹配

debootstrap安装内核不匹配

我尝试使用 debootstrap 安装新的 Debian 10 系统:

mount /dev/sda5 /mnt/chroot
debootstrap --variant=minbase buster /mnt/chroot ftp.au.debian.org

到目前为止,引导程序看起来不错。现在切换到 chroot

mount --bind /dev /mnt/chroot/dev
mount --bind /proc /mnt/chroot/dev
mount --bind /sys /mnt/chroot/dev 

chroot /mnt/chroot/
apt-get update
apt-get --no-install-recommends install busybox linux-image-amd64 systemd-sysv pciutils usbutils
passwd

这也可以毫无错误地完成。安装的内核位于/vmlinuz -> boot/vmlinuz-4.19.0-11-amd64,内核模块位于/lib/modules/4.19.0-11-amd64.

现在通过 GRUB 重新启动进入新安装,使用

insmod all_video; search --label test; linux /vmlinuz root=LABEL=test; initrd /initrd.img

我明白了

uname -r
4.9.0-13-amd64

这不是debootstrap安装的内核(4.19.0-11)!相反,当我运行 debootstrap 时,它是来自父系统的内核 4.9.0-13。重要的是,新安装没有任何与 4.9.0-13 匹配的内核模块,因此新系统缺少一堆设备驱动程序。

如果我使用

insmod all_video; set root=(hd1,gpt5); linux /vmlinuz root=/dev/sda5; initrd /initrd.img; boot

相反,我启动到带有新内核的新系统。

有什么想法可能是从哪里来的,以及如何解决吗?

非常感谢。

答案1

您使用的 GRUB 命令,

insmod all_video; search --label test; linux /vmlinuz root=LABEL=test; initrd /initrd.img

从默认的 GRUB 根(即您的父系统的根)中获取内核 ( /vmlinuz) 和 initramfs ( )。/initrd.img

这就是为什么指定

insmod all_video; set root=(hd1,gpt5); linux /vmlinuz root=/dev/sda5; initrd /initrd.img

相反,它可以工作:这不是标签问题,而是您已将 GRUB 根设置为使用新系统的分区,并且从那里加载内核和 initramfs。

为了解决这个问题,假设您希望安装/dev/sda5成为新的默认安装,最好的解决方案是引导它(使用上面的第二个 GRUB 命令行),然后从引导的系统安装 GRUB,运行 Debian 10。

相关内容