web-dev-qa-db-fra.com

"Impossible de trouver le périphérique racine" sur une nouvelle installation ArchLinux

J'ai installé la dernière version d'ArchLinux (2014.06.01) sur un MacBook Pro 8,1 (15 ", si cela importe pour le matériel), double amorçage avec OSX en suivant les instructions du document officiel . guide d'installation . Toutefois, lorsque vous essayez de redémarrer le système nouvellement installé, il me renvoie à un shell de récupération:

ERROR: device 'UUID=<snip>' not found. Skipping fsck.
ERROR: Unable to find root device 'UUID=<snip>'.
You are being dropped to a recovery Shell
    Type 'exit' to try and continue booting
sh: can't access tty: job control turned off
[rootfs /]# 

(J'ai supprimé l'UUID car je ne voulais pas le taper, mais c'est le même que celui qui m'a été donné par blkid (à partir du disque d'installation) pour la partition sur laquelle ArchLinux est installé)

Autresen lignesources suggère que cela est dû à un paquet pacman, udev, filesystem ou linux obsolète. Cependant, ils ne décrivent ce problème qu'après une mise à jour du noyau depuis un système en fonctionnement, pas une nouvelle installation. J'ai forcé à réinstaller ces paquets à partir de l'environnement Arch-chroot au démarrage du disque d'installation, mais cela n'a pas changé la situation.

Au lieu de cela, un peu d'expérimentation avec mon grub.cfg montre que quoi que l'on se plaint soit le paramètre root de la commande linux sélectionnant le fichier vmlinuz à utiliser. En effet, changer root=UUID=<snip> en root=LABEL=ArchLinux ou root=/dev/sda8 (les deux décrivent l’emplacement où ArchLinux est installé et j’ai certainement utilisé la deuxième version avec succès auparavant avec une autre distribution) donne respectivement Unable to find root device 'LABEL=ArchLinux' et Unable to find root device '/dev/sda8'. En outre, GRUB semble être capable de trouver la partition par UUID, seul le noyau Linux se plaint de son absence, car le disque mémoire initial est correctement chargé (c'est-à-dire que ce n'est pas un GRUB erreur comme décrit ici mais plutôt une erreur linux).

Remarque secondaire: le shell de récupération est extrêmement limité et la sortie standard ne semble pas fonctionner correctement. Néanmoins, ls fonctionne et la liste des fichiers montre un système de fichiers de base (temporaire), mais tous les périphériques de disque semblent être absents de /dev. Cependant, je ne sais pas si cela fait partie de l'erreur ou non.

Ceci est similaire, mais pas identique à . Linux ne trouve pas le système de fichiers racine lors du démarrage , car la partition était ext4 Depuis le début. Ce n’est pas non plus exactement la même chose, mais peut-être est-il pertinent Impossible de démarrer ArchLinux sur Macbook Pro 7.1 - échec dans le shell de récupération ; ramfs Shell au lieu d'un rootfs Shell et les messages d'erreur diffèrent.

36
hlt

Au lieu de démarrer avec l'image normale, j'ai utilisé la version de secours et j'ai réussi à démarrer dans le système. En fin de compte, Linux n’a détecté aucun lecteur en raison du crochet blockmkinitcpio (responsable des périphériques en mode bloc) dans l’image par défaut. Cela était dû au fait qu’il était placé après autodetect dans /etc/mkinitcpio.conf. Pour résoudre ce problème, la ligne HOOKS=... de ce fichier doit être modifiée afin que block vienne avant autodetect

Avant le correctif:

HOOKS="base udev autodetect block modconf filesystems keyboard fsck"

Après le correctif:

HOOKS="base udev block autodetect modconf filesystems keyboard fsck"

Exécuter mkinitcpio -p linux pour régénérer la initramfsthen a résolu le problème de façon permanente.

33
hlt

J'ai rencontré un problème similaire mais avec une configuration différente. J'utilise ArchLinux sur une machine virtuelle et mon chargeur de démarrage est syslinux. J'ai utilisé votre astuce pour changer l'ordre des crochets du noyau mais je me suis quand même retrouvé dans un rootfs-Shell.

Ce qui a résolu le problème pour moi, c’était de changer la ligne APPEND dans mon syslinux.cfg de

APPEND root=UUID=<snip>

à

APPEND root=PARTUUID=<snip>

Vous pouvez facilement ajouter la PARTUUID au syslinux.cfg en utilisant une commande telle que blkid | grep sda1 | awk '{ print $7 }' >> /boot/syslinux/syslinux.cfg en supposant que votre partition racine est /dev/sda1.

Ensuite, vous pouvez utiliser votre éditeur de texte favori pour déplacer la ligne dans l'espace approprié.

EDIT: Je viens de reconnaître que le numéro de colonne dans le petit script awk peut varier, il est donc préférable d’examiner le résultat avant de le transférer dans syslinux.cfg

1
IlikePepsi