GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Panique du noyau avec l'erreur "Impossible d'ouvrir le périphérique racine", où ajouter l'option "root=" ?

chaque fois que j'essaie de démarrer avec le noyau Linux 3.0.0.13 (celui installé par les mises à jour), j'obtiens une erreur Kernel Panic :

VFS :Impossible d'ouvrir le périphérique racine "sda1" ou bloc inconnu (0,0)
Veuillez ajouter une option de démarrage "root=" correcte ;

Heureusement, si je démarre avec la version précédente, je n'ai aucun problème.
Comment puis-je résoudre ce problème ? Où dois-je ajouter la bonne option root= option ? Si je ne fais pas fonctionner ce noyau, comment puis-je le supprimer par défaut et m'en tenir à l'ancien ?

Réponse acceptée :

Vous n'avez pas fourni beaucoup d'informations avec les journaux et autres pour continuer, mais je suppose que cette erreur que vous rencontrez est probablement due au fait que le noyau est confus par un lecteur IDE/SATA. Une recherche rapide sur Google m'a conduit au lien 1, lien 2, lien 3

Ce qui suit est l'extrait d'un lien référencé par l'un des liens ci-dessus :

Probablement l'un des problèmes les plus fréquents (mais une fois résolu,
vous ne le reverrez probablement plus) :

Unable to mount root fs on unknown-block(0,0)

ou

VFS: Cannot open root device "sda3" or unknown-block(8,3)
Please append a correct "root=" boot option; here are the available partitions:
  sda driver: sd
    sda1 sda2

Les chiffres 0,0 ou 8,3 peut être différent dans votre cas - il fait référence au
périphérique auquel le noyau tente d'accéder (et qui échoue).
De manière générale, on peut dire que, si le premier chiffre est 0, alors le
/> le noyau est incapable d'identifier le matériel. S'il s'agit d'un autre chiffre
(comme 8), il est incapable d'identifier le système de fichiers (mais peut
accéder au matériel).

Le problème ici est que le noyau que vous démarrez ne peut pas
traduire le root=/dev/... paramètre que vous lui avez donné (dans la configuration du chargeur de démarrage) dans un système de fichiers réel et accessible. Plusieurs
raisons peuvent entraîner un tel échec :

  • il manque des pilotes dans la configuration du noyau pour votre contrôleur de disque dur (cas 1, 4, 5)
  • la configuration du noyau manque de pilotes pour le bus utilisé par votre contrôleur de disque dur
  • il manque des pilotes dans la configuration du noyau pour le système de fichiers que vous utilisez
  • l'appareil est mal identifié dans votre paramètre root=(cas 2, 3)

Résoudre le problème est facile si vous savez quelle en est la raison. Ce n'est probablement pas le cas
 ; voici donc un examen rapide.

Ouvrez l'assistant de configuration du noyau (le make menuconfig partie) afin
que vous puissiez mettre à jour la configuration du noyau en conséquence.

  • Vérifiez si vous avez intégré (et non en tant que module) la prise en charge du bus/protocole utilisé par votre contrôleur de disque dur.
  • Il s'agit très probablement de la prise en charge PCI, de la prise en charge SATA (qui se trouve sous la prise en charge des périphériques SCSI), …
  • Vérifiez si vous disposez d'une prise en charge intégrée (et non en tant que module) du contrôleur de disque dur que vous utilisez.
    L'un des cas les plus fréquents :vous avez sélectionné la prise en charge du protocole de votre contrôleur de disque dur (IDE, SATA, SCSI, …) mais j'ai oublié de
    sélectionner le pilote du contrôleur HDD lui-même (comme Intel PIIX). Essayez
    d'exécuter la commande lscpi suivante et collez sa sortie sur
    http://kmuto.jp/debian/hcl/. Le site vous montrera quels pilotes de noyau
    vous devez sélectionner pour votre système. Dans le menuconfig,
    vous pouvez taper "/" pour ouvrir la fonction de recherche, et tapez le nom du pilote
    pour savoir où il réside. # lspci -n
  • Vérifiez si vous disposez d'une prise en charge intégrée (et non en tant que module) pour le(s) système(s) de fichiers que vous utilisez.
  • Supposons que votre système de fichiers racine utilise btrfs (ce que je ne recommande absolument pas) mais que vous ne l'avez pas sélectionné, ou que vous l'avez sélectionné pour être construit en tant que
    module, vous obtiendrez l'erreur que vous voyez . Assurez-vous que la prise en charge du système de fichiers
    est intégrée au noyau.
  • Vérifiez si le paramètre du noyau pour root= option pointe vers la bonne partition.

    Ce n'est pas aussi stupide que ça en a l'air. Lorsque vous démarrez avec un
    noyau, il peut lister vos disques comme étant /dev/sda alors que votre
    noyau (configuré) s'attend à ce qu'il soit /dev/hda. Ce n'est pas
    parce que les noyaux sont incohérents les uns avec les autres, mais à cause des
    pilotes utilisés :les anciens pilotes utilisent la syntaxe hda, les nouveaux sda.

    Essayez de changer hda avec sda (et hdb avec sdb, et …).

    De plus, les noyaux récents donnent un aperçu des partitions qu'ils ont trouvées
    sur le périphérique indiqué. Si c'est le cas, cela peut vous aider à identifier si vous
    avez mal sélectionné une partition (dans l'exemple donné au début de cette
    section, seules deux partitions sont trouvées alors que le noyau a reçu
    l'instruction de démarrer le troisième). Si ce n'est pas le cas, c'est très probablement
    parce que le noyau ne connaît pas le périphérique au départ (il ne peut donc pas
    essayer d'afficher les partitions).

  • Vérifiez si le noyau qui est démarré par le chargeur de démarrage est le bon noyau.
    J'ai vu des gens qui, après avoir construit un premier noyau (qui ne démarre pas), oublient qu'ils doivent monter /boot avant le
    écraser le noyau avec un nouveau. En conséquence, ils copient le
    noyau dans le système de fichiers racine (/ ) tandis que le chargeur de démarrage attend toujours
    que l'image du noyau soit sur le /boot partitionner.


Ubuntu
  1. Analyser le noyau Linux avec ftrace

  2. Comment rester automatiquement à jour avec le dernier noyau principal ?

  3. Où est le fichier Inittab ?

  4. Comment faire face aux logiciels malveillants sur l'ordinateur portable ?

  5. Où puis-je trouver la version d'une arborescence des sources du noyau Linux ?

Comment résoudre l'erreur "impossible de se connecter au démon Docker"

Comment ajouter une application dans la liste des applications ouvertes avec Ubuntu

Comment ajouter une application à la liste des applications ouvertes avec ?

Comment résoudre « le disque dur semble trop petit » avec l'option de recherche approfondie de Testdisk ?

Comment un noyau monte-t-il la partition racine ?

Où va la mémoire restante de vm.overcommit_ratio ?