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/modulesqui é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 -kdans 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 Controllerdit qu'il utiliseahcicomme module. - Quand je l'exécute,
modprobe -v ahciil se plaint beaucoup de "symbole inconnu: ata_some_stuff", mais après cela, il renvoie quelque chose commeSCSI Subsystem initialized,ATA-6: VBOX HARDDISKetDirect-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?