Portanto, estou criando minha própria cópia do initramfs do Linux (para fins de aprendizado). Tudo parece estar funcionando muito bem. Eu, corretamente, instalei bibliotecas compartilhadas e posso executar alguns binários de dentro do initramfs. Também instalei e executei as ferramentas do busybox sem nenhum problema. No entanto, ao tentar montar /dev/sr0, mount
relata que nenhum dispositivo ou endereçoseja encontrado. Os logs seriais (relatados pelo Virtualbox em um arquivo de texto) mostram que o kernel pode detectar o disco rígido SATA, mas não pode detectar o controlador de cdrom IDE. Quando eu uso o initramfs original do sistema do meu host, ele detecta e monta com sucesso a unidade de cdrom, mas o lsmod mostra muitos módulos carregados e não posso experimentá-los todos. Portanto, quero detectar a unidade de cdrom IDE com meu initramfs carregando os módulos corretos do kernel, mas não tenho certeza de quais farão o trabalho para uma interface IDE virtualizada.
A propósito, meu initramfs carrega os seguintes módulos:
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
}
O seguinte é parte do log serial que mostra que o disco SATA foi detectado:
[ 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)
No mínimo, você precisará do
sr
módulo para a própria unidade. Além disso, você precisa de um driver para o chipset, mas infelizmente não sei exatamente quais seriam os drivers relevantes. Acho que você precisa dos módulosata_generic
epata_acpi
, mas não tenho 100% de certeza.Dito isso, a configuração fornecida por padrão pelo VirtualBox é bastante incomum para os padrões atuais. O raciocínio original para esta configuração é o mesmo que o raciocínio por trás do hardware real que foi construído assim quase uma década atrás, alguns softwares mais antigos que você tinha que inicializar a partir de um CD suportavam apenas o acesso PATA adequado à unidade de CD. Hoje em dia, porém, essas situações são bastante raras (nenhum dos grandes sistemas operacionais precisa mais disso e praticamente qualquer software utilitário inicializável atualizado recentemente também não).
Então, considerando isso, eu o encorajo a remover completamente o controlador IDE na configuração do VirtualBox e apenas adicionar uma unidade óptica ao controlador SATA. Nesse ponto, você deve precisar apenas do
sr
driver para a própria unidade de CD-ROM.