Forum Linux.général [ordinosaure] Disque dur non trouvé au boot

Posté par  . Licence CC By‑SA.
Étiquettes :
3
28
oct.
2018

Salut.

Je garde depuis quelques années une vieille carte mère (designed for windows ME, vous voyez le genre?) sur laquelle Debian tourne sans soucis (hormis la lenteur et le manque de RAM, certes). Du moins, tous les périphériques auxquels j'ai essayé d'accéder fonctionnent.

Récemment j'ai trouvé une CM de la même génération (ports PCI, AGP, P-ATA et non SATA…) mais avec plus de ports (notamment 1 de plus pour la RAM, ce qui n'est pas une mauvaise chose) et un CPU "plus musclé": ça ferait passer ce système de 700MHz à 1800MHz (oui, je sais… et, non, je ne peux pas inverser les CPUs, le socket n'est pas le même).

Bref. Je me suis dit que ça ne devrait pas poser de problème, et ai donc passer mon disque d'une machine à l'autre, lancé le bestiau, noté la différence notable de vitesse jusqu'à ce que ce bon vieux LILO me lance mon initrd et la… raté. Linux ne semble pas détecter le disque dur!

Alors, je n'ai pas vraiment réussi à trouver la doc de la carte mère elle-même, mais celle-ci semble proche, et le point intéressant est le petit commentaire en dessous de la liste des 3 modes d'utilisation de disque dur supportés:

To support LBA or LARGE mode of HDDs, there must be some softwares involved which are located in Award HDD Service Routine(INT13h). It may fail to access a HDD with LBA(LARGE) mode selected if you are running under an Operating System which replaces the whole INT 13h.

Traduit en gros, ça donne un truc du genre:

Pour supporter les modes LBA et LARGE des disques durs, certains logiciels présents dans l'interruption 0x13 sont nécessaire. Il peut être impossible d'accéder à un disque dur avec ces modes si vous utilisez un système d'exploitation qui remplace l'interruption 13h en entière.

Je ne serais pas surpris que ça soit le cas de Linux (et en fait, de pas mal d'OS même de l'époque, hormis MS-DOS)… mais je suis quand même surpris que ça aille jusqu'à empêcher toute détection.
Le plus logique serait plutôt qu'il me manque un module dans l'image initiale pour supporter le contrôleur, peut-être qu'il y à une merde dans une des tables du BIOS ou je-ne-sais-quoi…
S'il faut ajouter un module à l'initramfs, je devrais y arriver, mais je ne sais pas comment déterminer le module qui serait nécessaire?

Des idées?

Et pour l'éventuelle question de pourquoi s'acharner à garder du matos de cette époque révolue: pour les connecteurs plus ou moins obsolètes qu'on y trouve (série, parallèle, joystick, ISA…), parce que ça suffit parfois à dépanner les gens qui ont un PC qui lâche, et puis tout simplement que ça m'amuse (c'est pas comme si je le gardais démarré tout le temps ou m'en servais pour de vrai).

  • # Ma solutions dans ce genre de soucis

    Posté par  . Évalué à 3.

    C'est de prendre un live CD d'une distro la plus légère possible (style antix ) et voir ce que cela donne comme module chargé.

    • [^] # Re: Ma solutions dans ce genre de soucis

      Posté par  . Évalué à 4. Dernière modification le 29/10/18 à 08:41.

      Le disque est reconnu puisque grub se lance, il lance bien le kernel mais peut-être l'ordre des disques ou l'UUID n'est pas le même. L'initrd contient bien les bons modules pour le système de fichier puisqu'il démarre sur l'ancien PC.

      Par exemple si la nappe IDE est branchée sur un port différent entre les deux PC, linux cherchera la partition sur sda1 alors qu'elle est sur sdc1, ou grub est configuré via les UUID qui sont différents d'une machine à l'autre.

      A l'invite grub éditer l'entrée et changer la fin de ligne après linux /boot/le-noyau root=UUID….
      par linux /boot/le-noyau root=/dev/sda1 (ou la partition que l'on veut démarrer), virer aussi tous les autres arguments quiet etc…
      S'en suivra un kernel panic si on a pas indiqué la bonne partition mais avec une liste de choix, tried to mount …

      Il est possible avec grub de démarrer avec l'auto-complétion.
      Pour la première partition du premier disque (hd0,1) avec grub2, c'est légèrement différent avec grub1 :
      ls doit renvoyer une liste de choix des partitions vues par grub.

      set root=(hd0,1)
      linux /boot et là la touche tab doit afficher une liste de choix possibles.
      initrd /boot idem doit renvoyer une liste de choix.

      Sinon comme dit plus haut avec un cd en éditant la commmande de démarrage pour indiquer root=/dev/sda1

      • [^] # Re: Ma solutions dans ce genre de soucis

        Posté par  (site Web personnel) . Évalué à 3.

        Le monsieur utilise LILO qu'il a dit ;)

        bon en même temps si en plus d'utiliser des ordinosaures il utilise des bootloader de la préhistoire c'es sur que ça aide pas.

        En tout cas pour moi le symptome est plus probablement un pilote de chipset spécifique non compilé / pre-chargé dans l'initrd utilisé actuellement.

        la problèmatique du nom de partition est envisageable aussi, surtout avec lilo … mais s'il utilise bien les UUID c'est justement fait pour ne pas avoir de problème du genre.

        dans tout les cas un dump des messages kernel va être nécessaire pour aller plus avant.
        Et/ou un boot avec livecd et une inspection des devices pci et autre modules a charger

        • [^] # Re: Ma solutions dans ce genre de soucis

          Posté par  . Évalué à 2. Dernière modification le 29/10/18 à 19:27.

          bon en même temps si en plus d'utiliser des ordinosaures il utilise des bootloader de la préhistoire c'es sur que ça aide pas.

          Je préfère utiliser un bootloader de la pré-histoire plutôt qu'une usine à gaz telle que GRUB2 :)

          En pratique, j'utilise sur mes systèmes normaux syslinux, hein. Je devrais p'tet tester, sauf que, bah, de ce que je vois, le problème n'est pas lié au bootloader: après tout, LILO charge bel et bien l'initrd, c'est juste l'initrd qui n'arrive pas à trouver la partoche maîtresse…

          En tout cas pour moi le symptome est plus probablement un pilote de chipset spécifique non compilé / pre-chargé dans l'initrd utilisé actuellement.

          C'est aussi ma conclusion, je cherche à savoir comment identifier un tel pilote.

          surtout avec lilo … mais s'il utilise bien les UUID c'est justement fait pour ne pas avoir de problème du genre.

          Si c'était ça, j'aurai réglé le problème en 2 lignes de bash, vraiment. Enfin, pas forcément bash, mais… bref.
          Sauf que, UUID ou LABEL (ce que j'utilise en pratique sur mes systèmes normaux, parce que sérieux, les UUID c'est illisible!) au final, ce ne sont que des liens symboliques créés par udev vers les /dev/sdXY je crois? Hors, justement, ces fameux fichiers sont absents…

          [edit]
          fourchage de doigts, j'avais écrit gnome au lieu de grub…

          • [^] # Re: Ma solutions dans ce genre de soucis

            Posté par  . Évalué à 1.

            C'est aussi ma conclusion, je cherche à savoir comment identifier un tel pilote.

            Sans trop te prendre la tête, tu peux essayer de démarrer sur un LiveCD, de sauvegarder l'ancien /boot, puis de refaire l'initrd et installation de LILO en utilisant les outils de la distribution.

            • [^] # Re: Ma solutions dans ce genre de soucis

              Posté par  . Évalué à 2.

              Du coup, une suggestion supplémentaire de distro réputée pour supporter du vieux matos? J'avoue ne pas avoir fait d'essais ce soir…

              • [^] # Re: Ma solutions dans ce genre de soucis

                Posté par  . Évalué à 2.

                Je crois que Puppy Linux, ainsi que sa version francisée Toutou Linux sont souvent citées comme étant adaptées à du matériel hors d'âge, mais je ne les ai jamais testées.

                Vu ton penchant pour LILO, je me dis que tu aimes peut-être les vieilleries. Si c'est le cas, il me semble que Slackware propose encore LILO par défaut, mais aussi d'autres programmes comme Xv ou sc.

                Cela dit, si tu es satisfait de ta Debian, tu dois pouvoir la conserver. Je pense que tu dois pouvoir tester un boot sur un LiveCD ou LiveUSB, puis après les mount et chroot qui vont bien, un mkinitramfs et lilo pour avoir les pilotes nécessaires pour le démarrage. Au cas où, vérifie aussi la cohérence de lsblk avec /etc/fstab.

      • [^] # Re: Ma solutions dans ce genre de soucis

        Posté par  . Évalué à 2.

        Le disque est reconnu puisque grub se lance, il lance bien le kernel mais peut-être l'ordre des disques ou l'UUID n'est pas le même. L'initrd contient bien les bons modules pour le système de fichier puisqu'il démarre sur l'ancien PC.

        Je n'utilise pas grub, mais LILO sur ce disque.
        L'UUID n'est pas utilisé (enfin, j'ai mis à jour LILO pour ne plus l'utiliser, au cas ou, et me baser sur le schéma sdXY, mais ça n'a rien changé..).
        À savoir qu'il semble qu'aucun disque ne soit détecté par linux, mais que le BIOS lui ne vois aucun souci?
        Je le sais parce qu'en finissant sur le busybox, ls /dev/ ne liste aucun périphérique de disque, que ce soit les anciens (hdXY) ou les «nouveaux» (sdXY). Je pense que le problème est la, mais… rien n'est sûr.

        Effectivement, je peux essayer de passer par un live cela dit… mais vu que la tendance actuelle est plutôt à lâcher les anciennes archis, j'ai un doute… en tout cas, sur Debian, je m'expose à des problèmes. D'autres en effet sont des pistes à creuser, merci pour le nom, je vais voir ça.

        • [^] # Re: Ma solutions dans ce genre de soucis

          Posté par  . Évalué à 1.

          Avec lilo aussi on peut avoir une liste de choix avec la touche tab si lilo est configuré pour être interactif ou en tenant la touche maj ou Alt avant le lancement de lilo.

          Si le choix est linux il faut compléter la ligne :
          linux root=/dev/sdaXY

          Sur les anciens CD de Slackware, il y a des options pour forcer la détection avec le nombre de cylindre,head secteurs mais je n'ai jamais testé, les seules fois où le disque n'était pas détecté c'est qu'il ne l'était pas non plus par le bios = disque HS. Le bios normalement réglé sur auto ou user en utilisant la détection du bios, il y avait une limite à 4Go je crois suivant l'accès LBA ou … je ne sais plus.

          Il y a surement une option qui va permettre au kernel de détecter le disque, même avec un mauvais réglage du bios ou bios buggé un lien vers les options actuelles:

          https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt

          Peut-être avec :
          hd= cyl,head,sect (c'est écrit sur le disque dur les différents nombres)

          J'ai un ancien Pentium III 800 Mhz que j'ai eu du mal à booter, j'avais plusieurs CD d'installation mais une seule distribution à réussi à le faire démarrer avec en bout de commande mca-pentium no-hlt, du coup toutes les autres distributions démarraient avec cet ajout. C'est le plus simple de trouver un CD d'installation qui veuille bien démarrer, encore faut-il qu'il y ait un lecteur de cd …

  • # Vieille Linux

    Posté par  . Évalué à 3.

    Salut,

    Si c'est un problème de pilote que tu envisages, tu peux peut-être essayé d'installer une veille distribution de l'époque de ce PC. Si tu dis que ça date des années 2000 (Windows Me), tu peux tenter d'installer une Red Hat Linux 6.x ou 7.x par exemple.

  • # Nouvelle install

    Posté par  (site Web personnel) . Évalué à 1.

    Peut être qu'en faisant une nouvelle install ça résoudrait le problème (sur un autre disque, si tu veux tester). Ça éviterait déjà les soucis de nommage de partition (sda qui debient sdb, etc…). Peut être aussi qu'un autre noyau serait utilisé: par exemple je crois bien que Debian installe un noyau non PAE quand c'est nécessaire, qui serait peut être mieux adapté aux vieilles machines.

    Un LUG en Lorraine : https://enunclic-cappel.fr

  • # vieux linux et disque dur

    Posté par  . Évalué à 3.

    sur les vieilles machines avec des connecteurs PATA, les disques s'appellait /dev/hdXY
    c'est seulement sur les noyaux recents que cela avait changé

    ton linux est peut-etre trop vieux, le bootloader cherche peut-etre encore /dev/hdXY
    et comme ce nom depend de la position du cable sur le carte mere (controleur primaire/secondaire) et de la position du disque sur le cable (maitre, esclave)

Suivre le flux des commentaires

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