Estoy tratando de aprender cosas sobre initrd. Seguí este tutorial para construir mi propio initrd desde cero, e instalé busybox en él. Luego hice un .iso con isolinux, para poder probarlo en virtualbox. ¡Funciona muy bien!
Tengo los comandos básicos de busybox, por lo que quería montar un sistema de archivos. Pero el directorio / dev está casi vacío (sin sda), a excepción de algunos archivos que creé mientras seguía el tutorial. Aprendí sobre udev y creo que esto es lo que necesito. Sin embargo, no estoy seguro de cómo hacerlo.
¿Debo tomar el último código fuente de udev, compilarlo y agregarlo a mi initrd? ¿Y luego llamar / bin / udev o algo así en mi script de inicio? ¿O hay otra / mejor manera de poblar el directorio / dev?
Editar: información adicional y actualizaciones sobre lo que ya he hecho.
- Pruebo todo en caja virtual. Acabo de instalar ubuntu minimal en virtual box, hice un .iso desde mi initrd, y luego arranqué desde la iso en virtualbox.
- Usé el vmlinuz y
/lib/modules
estaba presente en un debian-businesscard.iso y los copié en mi initrd que creé siguiendo el tutorial que vinculé anteriormente. - Kernel tiene
CONFIG_DEVTMPFS=y
- Algunos dispositivos aparecen
/dev
, como tty0-tty63 y otros, pero no sda / hda. - Ejecuté
lspci -k
en mi sistema operativo actualmente en ejecución y en una caja virtual para verificar qué módulos están en uso.SATA Controller
dice que lo usaahci
como módulo. - Cuando lo ejecuto
modprobe -v ahci
se queja mucho de "símbolo desconocido: ata_some_stuff", pero después de eso devuelve algo comoSCSI Subsystem initialized
,ATA-6: VBOX HARDDISK
yDirect-Access ATA VBOX HARDDISK
. Sin embargo, todavía no se encontraron dispositivos de disco duro en/dev
.
Mi /init/
script actual es el siguiente:
#!/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
¿Alguien tiene alguna idea de lo que estoy haciendo mal y de lo que debería hacer?