Sto cercando di imparare cose su initrd. Ho seguito questo tutorial per creare il mio initrd da zero e ho installato busybox su di esso. Quindi ho creato un .iso da esso con isolinux, così ho potuto testarlo in virtualbox. Funziona benissimo!
Ho i comandi di base di busybox, quindi volevo montare un filesystem. Ma la directory / dev è quasi vuota (no sda), ad eccezione di alcuni file che ho creato seguendo il tutorial. Ho saputo di udev e penso che questo sia ciò di cui ho bisogno. Tuttavia, non sono sicuro di come procedere.
Dovrei semplicemente prendere l'ultimo codice sorgente da udev, compilarlo e aggiungerlo al mio initrd? E poi chiama / bin / udev o qualcosa del genere nel mio script init? O c'è un altro / modo migliore per popolare la directory / dev?
Modifica: alcune informazioni aggiuntive e aggiornamenti su ciò che ho già fatto.
- Metto alla prova tutto in una scatola virtuale. Ho appena installato Ubuntu Minimal in Virtual Box, ho creato un file .iso dal mio initrd e poi ho fatto il boot dall'ISO in Virtualbox.
- Ho usato il vmlinuz e
/lib/modulesche erano presenti su debian-businesscard.iso e li ho copiati sul mio initrd che ho creato seguendo il tutorial che ho collegato in precedenza. - Kernel ha
CONFIG_DEVTMPFS=y - Alcuni dispositivi vengono visualizzati
/dev, come tty0-tty63 e altri, ma non sda / hda. - Ran
lspci -knel mio sistema operativo attualmente in esecuzione e in un box virtuale per verificare quali moduli sono in uso.SATA Controllerdice che usaahcicome modulo. - Quando eseguo
modprobe -v ahcisi lamenta molto di "simbolo sconosciuto: ata_some_stuff", ma dopo che restituisca qualcosa di simileSCSI Subsystem initialized,ATA-6: VBOX HARDDISKeDirect-Access ATA VBOX HARDDISK. Tuttavia, ancora nessun dispositivo hard disk trovato/dev.
La mia /init/sceneggiatura attuale è la seguente:
#!/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
Qualcuno ha idea di cosa sto facendo di sbagliato e cosa dovrei fare invece?