我正在尝试学习有关initrd的知识。我已按照本教程从头开始构建自己的initrd,并在其上安装了busybox。然后我用isolinux从中制作了一个.iso,因此可以在virtualbox中对其进行测试。效果很好!
我有来自busybox的基本命令,所以我想挂载文件系统。但是/ dev目录几乎是空的(没有sda),除了我在按照教程学习时创建的某些文件之外。我了解了udev,我认为这是我所需要的。但是,我不确定该如何进行。
我应该只是从udev中获取最新的源代码,对其进行编译并将其添加到initrd吗?然后在我的初始化脚本中调用/ bin / udev或类似的内容?还是有其他/更好的方法来填充/ dev目录?
编辑:一些其他信息和有关我已经做的更新。
- 我在虚拟框中测试所有内容。我只是在虚拟盒子中安装了ubuntu minimal,从initrd中创建了一个.iso,然后从virtualbox中的iso中启动。
- 我使用了vmlinuz,并将
/lib/modules
其存在于debian-businesscard.iso上,然后将其复制到我的initrd中,该initrd是按照前面链接的教程创建的。 - 内核有
CONFIG_DEVTMPFS=y
- 有些设备显示在中
/dev
,如tty0-tty63和其他一些设备,但没有sda / hda。 - 然
lspci -k
在我当前正在运行的操作系统和虚拟框来检查哪些模块使用。SATA Controller
说它ahci
用作模块。 - 当我执行
modprobe -v ahci
它抱怨了很多关于“未知符号:ata_some_stuff”,但之后它返回像SCSI Subsystem initialized
,ATA-6: VBOX HARDDISK
和Direct-Access ATA VBOX HARDDISK
。但是,仍然没有找到硬盘驱动器设备/dev
。
我当前的/init/
脚本如下:
#!/bin/ash
mount -t devtmpfs none /dev
mount -t proc /proc /proc
mount -t sysfs none /sys
modprobe -v ahci
echo "Hello world"
exec /bin/ash --login
有谁知道我在做什么错,我应该怎么做?