Ubuntu – 18.04.2 charger initrd dans ramdisk

J’essaie de créer un noyau de démarrage PXE pour CloneDeploy. J’ai une carte réseau qui a besoin de pilotes qui ne fonctionnent pas, mais qui fonctionnent bien sur une installation Ubuntu, donc je pensais que je ferais simplement un démarrage PXE en utilisant le noyau et initrd à partir duquel je démarre mon Ubuntu (étant pas très Linux -savvy Je ne peux pas penser à une bien meilleure façon de faire les choses, les tentatives de construction de mon propre noyau n’ont pas réussi à produire une carte réseau fonctionnelle).

J’exécute une installation 18.04.2 à jour. J’ai donc copié les fichiers:
 vmlinuz-4.18.0-20-generic et initrd.img-4.18.0-20-generic 
aux bons endroits de mon système PXE, et essayez de démarrer à partir d’eux.

Il s’agit de la ligne de commande de démarrage (ipxe) (avec des emplacements d’images raccourcis pour que les choses soient lisibles):

 kernel http://.../IpxeBoot?filename=vmlinuz-4.18.0-20-generic&type=kernel initrd=initrd.img-4.18.0-20-generic root=/dev/ram0 rw ramdisk_size=1560000  web=http://.../ USER_TOKEN= task=debug consoleblank=0 
imgfetch --name initrd.img-4.18.0-20-generic http://.../IpxeBoot?filename=initrd.img-4.18.0-20-generic&type=bootimage
boot
 

Lors du démarrage, un tas de périphériques pertinents sont initialisés (y compris ma carte réseau!), Mais je rencontre l’erreur suivante:

 gave up waiting for root file system device
ALERT! /dev/ram0 does not exist. Dropping to a shell!
 

J’ai trouvé cette question, ce qui suggère que je dois faire une étape supplémentaire pendant le démarrage quelque part pour que le module brd se charge et que l’initrd soit transformé en un véritable disque ram utilisable. Il a été suggéré de add "brd rd_size=16777216" to /etc/initramfs/modules , mais quand je décompresse le fichier générique initrd.img-4.18.0-20 (en utilisant unmkinitramfs ), il n’y a pas / etc / initramfs. (Je note également que je devrais probablement utiliser rd_nr=1 rd_size=1048576 avoir uniquement ram0 créé au lieu de ram0 à ram15).

Comment surmonter l’erreur de démarrage. Et si cela implique le chargement de brd, comment dois-je procéder pour cette version du noyau?

Meilleure réponse

  • Ramdisk initial (dans votre cas, c’est initrd.img-4.18.0-20-generic ) est généré par update-initramfs automatiquement lors de l’installation du noyau dans votre système.

     update-initramfs vérifie votre système et ajoute les modules requis dans initrd pour le charger au démarrage.

    Il existe deux emplacements où vous pouvez placer vos scripts pour initial ramdisk :

     /usr/share/initramfs-tools
     

    et

     /etc/initramfs-tools 
     

    Dans votre cas, vous devez insérer cette ligne dans /etc/initramfs-tools/modules et courir

     update-initramfs -u
     

    pour votre noyau actuel.

    Découvrez ensuite le résultat:

     mkdir myinitramfs

    cd myinitramfs

    zcat /boot/initrd.img-4.18.0-20-generic | cpio --extract

    cat conf/modules