Forum Linux.général Boot sur clef USB - Détection de clef USB

Posté par  .
Étiquettes : aucune
0
21
août
2007
Bonjour a tous !
Nous sommes en possession d'un adaptateur Multicard USB nous permettant de connecter une carte Compact Flash sur le port USB.
Le BIOS de notre carte mère reconnait cet adaptateur de sorte que nous pouvons booter dessus, au meme titre qu'une clef usb standard (la compact flash est reconnue comme une clef USB : /dev/sdb).
Nous avons également un adpatateur Compact Flash -> IDE nous permettant de faire reconnaitre la carte compact flash comme un disque dur IDE.
Nous avons installé une distribution Red Hat 7.1 sur la compact Flash à l'aide de l'adaptateur IDE (/dev/hda) et nous avons utilisé un noyau 2.4.30 complet (AUCUN MODULE : support USB-EHCI, USB Storage, SCSI, ... COMPILES DIRECTEMENT DANS LE NOYAU).
Notre noyau a été patché avec le patch classique USBboot-2422.patch (dont nous n'avons normalement pas besoin puisque sont but est de laisser le temps au systeme de charger les modules USB lorsqu'il essaie de monter le systeme de fichier root). Ce patch joue le même role que le initrd qui est recommandé sur beaucoup de sites web pour charger les modules necessaires à la reconnaissance des clefs usb au boot.
Nous avons configuré lilo pour qu'il présente la possibilité de démarrer un noyau sur /dev/sdb1 (boot via l'adaptateur USB) ou sur /dev/hda1 (boot via l'adaptateur IDE).

Le problème que nous rencontrons est le suivant :
Si l'on démarre le système avec une clef usb connectée sur un port USB, elle n'est pas reconnue (/dev/sdb n'existe pas). Il faut la débrancher puis la rebrancher pour que le noyau la détecte (trace dans dmesg).
Du coup, lorsqu'on boote via l'adaptateur USB, il faut débrancher la clef lorsque le kernel affiche en boucle le message "VFS : cannot open root device ..., retrying in 1 second." (message du au patch, sans ce patch USB-boot, on obtient un beau kernel panic !). On rebranche alors la clef, le noyau la reconnait, lui affecte le device /dev/sdb et le démarrage du système se poursuit sans erreurs.

Ma question est la suivante : y a-t-il moyen de forcer le noyau a rescanner le bus scsi pour forcer l'énumération des péréphiques USB déjà connectés lors du boot du système ? Ainsi, cela supprimerait le débranchement/rebranchement de la clef que nous sommes obligés d'effectuer aujourd'hui lors du boot.
  • # Arg....

    Posté par  . Évalué à 1.

    Je suis en train d'écrire un journal là-dessus (déjà écrit sous vim).

    Ça m'énerve un peu de me spoiler tout seul mon journal (presque dans son intégrité en plus), mais je vais te copier tout ça.
    Juste avant, je dois dire que là, je suis sur un système sur un HDD USB alors que ma carte mère ne supporte pas le boot USB (et j'ai pas besoin de le débrancher et le rebrancher pour que ça marche).
    ----------
    Pour les vieux ordi n'acceptant pas de booter en USB, voici la solution :


    https://linuxfr.org//forums/34/16462.html

    Là, on remarque que le chemin du fichier de configuration de mkinitramfs a changé :

    c'est /etc/modules
    et pas /etc/mkinitramfs/modules

    Sinon, c'est le même fichier.

    À part ce petit changement de chemin du fichier, Thomas Debay est très clair sur son message "J'ai réussi" mais j'apporterai quelques précisions.

    Tout d'abord, l'utilisation d'un CD Live est inutile. En revanche, il faut savoir que le kernel utilisé par la machine qui fait mkinitramfs (et qui fournit donc le vmlinuz et le fichier image) sera en conséquence le kernel utilisé par le disque USB. Donc si le linux du disque USB n'a pas le même kernel, on a droit à un "/lib/machin/kernel_2.6.21.machin introuvable" et plein de trucs ne marcheront pas.

    Donc, pour résumer, on est sur un système qui marche, on remplit le fichier /etc/modules comme il faut.
    uname -a retourne par exemple
    Linux debian 2.6.21-2-686 #1 SMP

    Alors le disque dur USB doit aussi avoir ce noyau (si c'est sur un Debian-like c'est apt-get install linux-image-2.6.21-2-686 ou un truc du genre pour l'installer)

    après le reste est identique que dans le lien : copier le vmlinuz puis créer l'image avec mkinitramfs et indiquer leur chemin dans /boot/grub/menu.lst


    Fin du copier coller d'un journal qui n'est pas encore sorti ;)
    D'ailleurs, si je dis nawak ou si y'a des précisions à apporter (même une faute d'orthographe, j'ai pas vérifié, y'en a peut-être), je suis preneur, on va passer ça en pré_journal version 0.1.
  • # Rootdelay ?

    Posté par  . Évalué à 2.

    À part le fait qu'utiliser un noyau 2.4 fait un tout petit peu "vieux", l'option que tu cherches doit être "rootdelay=xx" sur la ligne de commande du kernel : ça dit au kernel d'attendre quelques secondes, le temps que les périphs USB soient détectés, avant de monter le FS racine.

    Par contre, je pense que cette option n'est dispo que dans un 2.6.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.