J'essaie d'apprendre des choses sur initrd. J'ai suivi ce tutoriel pour créer mon propre initrd à partir de zéro, et j'ai installé busybox dessus. Ensuite, j'en ai fait un .iso avec isolinux, afin de pouvoir le tester dans virtualbox. Ça marche super!
J'ai les commandes de base de busybox, donc je voulais monter un système de fichiers. Mais le répertoire / dev est presque vide (pas de sda), à l'exception de certains fichiers que j'ai créés en suivant le tutoriel. J'ai appris sur udev et je pense que c'est ce dont j'ai besoin. Cependant, je ne sais pas trop comment procéder.
Dois-je simplement récupérer le dernier code source d'udev, le compiler et l'ajouter à mon initrd? Et puis appelez / bin / udev ou quelque chose comme ça dans mon script init? Ou existe-t-il une autre / meilleure façon de remplir le répertoire / dev?
Edit: Quelques informations supplémentaires et mises à jour sur ce que j'ai déjà fait.
- Je teste tout en boîte virtuelle. J'ai juste installé ubuntu minimal dans une boîte virtuelle, créé un .iso à partir de mon initrd, puis démarré à partir de l'iso dans virtualbox.
- J'ai utilisé le vmlinuz et
/lib/modules
qui étaient présents sur un debian-businesscard.iso et les ai copiés sur mon initrd que j'ai créé en suivant le tutoriel que j'ai lié plus tôt. - Le noyau a
CONFIG_DEVTMPFS=y
- Certains appareils apparaissent
/dev
, comme tty0-tty63 et d'autres, mais pas de sda / hda. - J'ai couru
lspci -k
dans mon système d'exploitation en cours d'exécution et dans une boîte virtuelle pour vérifier quels modules sont utilisés.SATA Controller
dit qu'il utiliseahci
comme module. - Quand je l'exécute,
modprobe -v ahci
il se plaint beaucoup de "symbole inconnu: ata_some_stuff", mais après cela, il renvoie quelque chose commeSCSI Subsystem initialized
,ATA-6: VBOX HARDDISK
etDirect-Access ATA VBOX HARDDISK
. Cependant, aucun périphérique de disque dur n'a encore été trouvé/dev
.
Mon /init/
script actuel est le suivant:
#!/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
Quelqu'un a-t-il une idée de ce que je fais mal et de ce que je devrais faire à la place?