Debian
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
相反,我使用新核心啟動到新系統。
任何想法可能來自哪裡,以及如何解決?
非常感謝。
您使用的 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。