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
ou8,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 leroot=/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.