Debian

debootstrap 安裝核心不匹配

  • October 14, 2020

我嘗試使用 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

相反,我使用新核心啟動到新系統。

任何想法可能來自哪裡,以及如何解決?

非常感謝。

您使用的 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。

引用自:https://unix.stackexchange.com/questions/614438