如何创建在 ramdisk(initrd)中运行 busybox 的 linux(RHEL)启动盘?

如何创建在 ramdisk(initrd)中运行 busybox 的 linux(RHEL)启动盘?

我一直在尝试创建一个启动盘(类似于 live-cd),它只加载到内存中而无需安装磁盘。我的步骤如下,但当我使用 cd 启动时,我得到:

Kernel Panic - not syncing: VFS: unable to mount root fs on unknown-block (9,1)

以下是我创建启动盘的步骤:

  1. 使用mkinitrd工具创建ramdisk,然后解压:

    mkinitrd myrd $(uname -r)
    mkdir myrdroot && cd myrdroot
    dd if=../myrd bs=1k | gunzip | cpio -id

  2. Git 摆脱了 nash、init(nash 脚本)和 modprobe(nash 的符号链接)

    rm -f 初始化 bin/nash bin/modprobe

  3. 安装 busybox(Busybox 是默认配置,除了它是静态链接的)。Busybox 将在 myrd 中创建一个 linuxrc 和一个 sbin/init。

    pushd〜/ busybox
    make CONFIG_ROOT = / path / to / myrd安装
    popd

  4. 重新捆绑 inird:

    查找 . | cpio -n -o | gzip -9 > ../myrd.img

然后将此 ramdisk 与 CD 上的 ISOLINUX 一起使用。我复制与 $(uname -r) 匹配的内核,并配置 ISOLINUX 以使用 ramdisk 启动内核。

答案1

问题似乎与 CPIO 存档格式有关。当我使用 ext2/gzip 格式创建 ramdisk 时,它可以正常工作。

相关内容