问题
我有一个工作 chroot 环境(inittab、fstab、init.d/rcS 设置)、一个内核和安装的 grub2。我还需要什么才能让我的系统正常工作?
背景/细节
出于教育目的,我着手构建一个小型 Linux 环境,我可以启动该环境并拥有一个正在运行的 shell。
我使用 Virtualbox 将一台虚拟机连接到两个硬盘驱动器(每个硬盘驱动器只有一个分区)。第一个安装了 Debian,第二个我使用 Busybox 构建了一个小型 chroot 环境,使用本文。我还按照文章中的指示设置了inittab
、fstab
、init.d/rcS
和大多数其他文件系统相关的内容,尽管我在第二页上没有做任何与 和 相关的事情genfromfs
,syslinux
因为我认为我没有制作可启动软盘。
为了弄清楚如何启动我的 chroot 系统,我发现这个帖子,我就跑了grub-install --root-directory=/mnt /dev/sdb
。最后它说它完成了,没有错误。
然后我创建了一个新的虚拟机,这次将第二个硬盘驱动器作为其唯一的硬盘驱动器,并启动它。它给了我一个 grub 提示符,所以我谷歌搜索了更多,然后我输入了
set root=(hd0,msdos1)
linux /vmlinuz
boot
我有了解 initrd/initramfs 是可选的,所以我决定暂时忽略它。我使用make defconfig
and构建了 linux 内核,make
并在构建后将 bzImage 复制到 x86 目录下。
然而,很快我就遇到了一个挂起的屏幕:
[ 0.74.. ] md: autorun ...
[ 0.74.. ] md: ... autorun DONE.
[ 0.74.. ] Root-NFS: no NFS server address
[ 0.74.. ] VFS: Unable to mount root fs via NFS, trying floppy.
[ 0.74.. ] VFS: Cannot open root device "(null)" or unknown-block(2,0)
[ 0.74.. ] Please append a correct "root=" boot option; here are the avaialbe partitions:
[ 0.74.. ] 0800 ... sda driver: sd
[ 0.74.. ] 0801 ... sda1 ...
[ 0.74.. ] 0b00 .. sr0 driver: sr ..
[ 0.74.. ] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[ 0.74.. ] Pid: 1, comm: swapper/0 Not tainted 3.2.6 #1
[ 0.75.. ] Call Trae:
[ 0.75.. ] [<c16..>] panic+0x57/0x157
[ 0.75.. ] [<c18..>] mount_block_root+0x125/0x1a7
[ 0.75.. ] [<c10..>] ? sys_mknod+0x27/0x30
.. a few more lines of call trace ...
我遗漏了一些数字和最后几行,因为我必须手动输入它们,所以如果您需要它们,请告诉我,我会发布它们。
答案1
您需要root=
在 grub 中指定该参数。内核正在寻找错误的根设备,因此您会收到“未知块”错误。我可以看到它正确检测到您的硬盘驱动器,因此在 grub 中您应该使用如下行:
linux /vmlinux root=/dev/sda1