我跟着本指南用于构建基于 Gentoo 的自定义 Live CD,但我无法完成完整的启动。内核从 initrd 启动并开始扫描模块。之后,它显示“无法在 中找到根块设备。”并建议我转到 shell。当我尝试进入 shell 模式并执行时,cat /dev/loop0
我什么也没得到。似乎内核没有将 squashfs 映像绑定到循环设备。我的 menu.lst:
default 0
timeout 7
splashimage=/boot/grub/splash.xpm.gz
title=LiveCD
kernel /boot/kernel-genkernel-x86_64-3.7.10-gentoo-r1 real_root=/dev/loop0 looptype=squashfs loop=/livecd.squashfs vga=ask initrd udev nodevfs cdroot dodmraid rootfstype=squashfs
initrd /boot/initramfs-genkernel-x86_64-3.7.10-gentoo-r1
title=LiveCD NO-FB
kernel /boot/kernel-genkernel-x86_64-3.7.10-gentoo-r1 real_root=/dev/loop0 looptype=squashfs loop=/livecd.squashfs initrd udev nodevfs cdroot dodmraid rootfstype=squashfs
initrd /boot/initramfs-genkernel-x86_64-3.7.10-gentoo-r1
title=Memtest86+
kernel /boot/memtest86plus/memtest.bin
fstab:
/dev/loop0 / squashfs defaults 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
答案1
似乎使用make allmodconfig
已配置并启用以下变量:
CONFIG_CMDLINE_BOOL
CONFIG_CMDLINE_OVERRIDE
这导致内核用空命令行覆盖 grub 配置中给出的命令行参数,从而导致 init 脚本失败。