web-dev-qa-db-fra.com

Panique du noyau avec l'erreur "Impossible d'ouvrir le périphérique racine", où dois-je 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 à niveau), je reçois une erreur Kernel Panic:

VFS: impossible d'ouvrir le périphérique racine "sda1" ou un 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 ça? Où devrais-je ajouter le root= option correct? Si je ne parviens pas à faire fonctionner ce noyau, comment puis-je le supprimer par défaut et m'en tenir à l'ancien?

8
lucacerone

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

Voici 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 jamais):

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 peuvent être différents dans votre cas - il s'agit du périphérique auquel le noyau tente d'accéder (et qui échoue). D'une manière générale, on peut dire que si le premier chiffre est 0, le noyau est incapable d'identifier le matériel. S'il s'agit d'un autre chiffre (comme 8), il est impossible d'identifier le système de fichiers (mais il est possible d'accéder au matériel).

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

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

Résoudre le problème est facile si vous connaissez la raison. Ce n'est probablement pas le cas, alors voici un rapide bilan.

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

  • Vérifiez si vous avez intégré (et non sous forme de module) la prise en charge du bus/protocole utilisé par votre contrôleur de disque dur.
  • Il s’agit très probablement du support PCI, du support SATA (sous le support des périphériques SCSI), ...
  • Vérifiez si vous avez intégré (et non sous forme de module) la prise en charge du contrôleur de disque dur que vous utilisez. Un des cas les plus fréquents: vous avez sélectionné le support du protocole de votre contrôleur de disque dur (IDE, SATA, SCSI, ...) mais vous avez oublié de le faire.
    sélectionnez le pilote du contrôleur de disque dur lui-même (comme Intel PIIX). Essayer
    en exécutant la commande lscpi suivante et collez son résultat 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 taper le pilote
    nom pour savoir où il réside. # lspci -n
  • Vérifiez si vous avez un support intégré (et non sous forme de 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 vous ne l’avez pas sélectionné ou choisi de le construire en tant que
    module , vous obtiendrez alors l’erreur que vous voyez. Assurez-vous que le système de fichiers
    le support est construit dans le noyau.
  • Vérifiez si le paramètre de noyau pour root= pointe vers la partition correcte.

    Ce n'est pas aussi stupide que cela puisse paraître. Lorsque vous démarrez avec un noyau, il peut indiquer que vos disques sont/dev/sda alors que votre noyau (configuré) s’attend à ce qu'il soit/dev/hda. Ce n'est pas parce que les noyaux sont incompatibles les uns avec les autres, mais à cause des pilotes utilisés: les anciens pilotes utilisent la syntaxe hda, newer 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. Si tel est le cas, cela pourrait 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 été chargé de démarrer la troisième). Si ce n'est pas le cas, c'est probablement parce que le noyau ne sait pas par quel périphérique il doit commencer (il ne peut donc pas essayer d'afficher des partitions).

  • Vérifiez si le noyau en cours de démarrage par le chargeur de démarrage est le bon noyau. J'ai vu des personnes qui, après avoir construit un premier noyau (qui ne démarre pas), oublient qu'elles doivent monter /boot avant d'écraser le noyau par un nouveau. En conséquence, ils copient le noyau dans le système de fichiers racine (/) alors que le chargeur de démarrage s'attend toujours à ce que l'image du noyau se trouve sur la partition /boot.

11
Nitin Venkatesh

Après avoir lu cette réponse qui explique ce qui se passe, essayez d’utiliser le [CD Boot-Reapir] [1] [1]: https://help.ubuntu.com/community/Boot-Repair

A bien travaillé à réparer "le périphérique est mal identifié dans votre racine = paramètre (cas 2, 3)".

0
madcap66