Estou tentando aprender coisas sobre o initrd. Segui este tutorial para criar meu próprio initrd do zero e instalei o busybox nele. Depois fiz um .iso com o isolinux, para testá-lo no virtualbox. Isso funciona muito bem!
Eu tenho os comandos básicos do busybox, então eu queria montar um sistema de arquivos. Mas o diretório / dev está quase vazio (sem sda), exceto por alguns arquivos que eu criei enquanto seguia o tutorial. Eu aprendi sobre o udev e acho que é disso que preciso. No entanto, não tenho certeza de como proceder.
Devo apenas pegar o código-fonte mais recente do udev, compilá-lo e adicioná-lo ao meu initrd? E então chame / bin / udev ou algo parecido no meu script de inicialização? Ou existe uma outra / melhor maneira de preencher o diretório / dev?
Edit: Algumas informações adicionais e atualizações sobre o que eu já fiz.
- Eu testo tudo na caixa virtual. Acabei de instalar o ubuntu minimal na caixa virtual, fiz um .iso do meu initrd e inicializei do iso no virtualbox.
- Eu usei o vmlinuz e
/lib/modules
estava presente em um debian-businesscard.iso e copiei-os para o meu initrd que criei seguindo o tutorial que vinculei anteriormente. - O kernel possui
CONFIG_DEVTMPFS=y
- Alguns dispositivos aparecem
/dev
, como tty0-tty63 e outros, mas não sda / hda. - Corri
lspci -k
no meu sistema operacional atualmente em execução e em uma caixa virtual para verificar quais módulos estão em uso.SATA Controller
diz que usaahci
como módulo. - Quando executo,
modprobe -v ahci
ele reclama muito de "símbolo desconhecido: ata_some_stuff", mas depois disso retorna algo comoSCSI Subsystem initialized
,ATA-6: VBOX HARDDISK
eDirect-Access ATA VBOX HARDDISK
. No entanto, ainda não foram encontrados dispositivos de disco rígido/dev
.
Meu /init/
script atual é o seguinte:
#!/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
Alguém tem alguma idéia do que estou fazendo de errado e do que devo fazer?