所以我正在创建自己的 Linux initramfs 副本(用于学习目的)。一切似乎都很好。我正确地安装了共享库,我可以从 initramfs 中运行一些二进制文件。我也安装并运行了 busybox 工具,没有任何问题。然而,当尝试挂载 /dev/sr0 时,mount
报告没有这样的设备或地址被发现。串行日志(由 Virtualbox 报告到文本文件中)显示内核可以检测到 SATA 硬盘驱动器但不能检测到 IDE cdrom 控制器。当我使用主机的系统原始 initramfs 时,它确实检测并成功安装了 cdrom 驱动器,但 lsmod 显示了很多已加载的模块,我无法全部尝试。所以我想通过加载正确的内核模块来用我的 initramfs 检测 IDE cdrom 驱动器,但我不确定哪些模块可以完成虚拟化 IDE 接口的工作。
顺便说一下,我的 initramfs 加载了以下模块:
load_modules()
{
modules="ahci sd_mod sr_mod virtio_blk virtio_pci"
modules="$modules ohci_pci ehci_pci loop ext4 isofs squashfs"
for mod in $modules;
do
echo "Loading $mod ..."
modprobe $mod
done
}
以下是显示检测到 SATA 磁盘的串行日志的一部分:
[ 5.988202] SCSI subsystem initialized
[ 6.074669] libata version 3.00 loaded.
[ 6.212811] tsc: Refined TSC clocksource calibration: 2594.307 MHz
[ 6.213805] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x25653a78b6d, max_idle_ns: 440795319419 ns
[ 6.216298] ahci 0000:00:0d.0: version 3.0
[ 6.217563] ahci 0000:00:0d.0: SSS flag set, parallel bus scan disabled
[ 6.393125] ahci 0000:00:0d.0: AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
[ 6.394486] ahci 0000:00:0d.0: flags: 64bit ncq stag only ccc
[ 6.396023] scsi host0: ahci
[ 6.396708] ata1: SATA max UDMA/133 abar m8192@0xf0806000 port 0xf0806100 irq 21
[ 6.713317] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 6.729072] ata1.00: ATA-6: VBOX HARDDISK, 1.0, max UDMA/133
[ 6.753066] ata1.00: 4194304 sectors, multi 128: LBA48 NCQ (depth 31/32)
[ 6.812916] ata1.00: configured for UDMA/133
[ 6.863148] scsi 0:0:0:0: Direct-Access ATA VBOX HARDDISK 1.0 PQ: 0 ANSI: 5
[ 6.871504] sd 0:0:0:0: [sda] 4194304 512-byte logical blocks: (2.15 GB/2.00 GiB)