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/modules
che 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 -k
nel mio sistema operativo attualmente in esecuzione e in un box virtuale per verificare quali moduli sono in uso.SATA Controller
dice che usaahci
come modulo. - Quando eseguo
modprobe -v ahci
si lamenta molto di "simbolo sconosciuto: ata_some_stuff", ma dopo che restituisca qualcosa di simileSCSI Subsystem initialized
,ATA-6: VBOX HARDDISK
eDirect-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?