"Impossible de trouver un 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 concerne le matériel) à double démarrage avec OSX en suivant les instructions du guide d'installation officiel . Toutefois, lors de l'essai et du redémarrage Dans le système nouvellement installé, il me laisse tomber dans 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 parce que 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é)

D'autres sources en ligne suggèrent que cela est dû à un système pacman , udev , filesystem ou linux obsolète. Cependant, ils décrivent ce problème uniquement après une mise à jour du noyau à partir d'un système de travail, et non d'une nouvelle installation. J'ai forcé de réinstaller ces paquets de l'environnement arch-chroot tout en étant démarré sur le 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 tout ce qui est reproché est le paramètre root de la commande linux sélectionnant le fichier vmlinuz à utiliser. En effet, en changeant root=UUID=<snip> sur root=LABEL=ArchLinux ou root=/dev/sda8 (tous deux décrivent où ArchLinux est installé et j'ai certainement utilisé la deuxième version avec succès avec une autre distribution) donne Unable to find root device 'LABEL=ArchLinux' et Unable to find root device '/dev/sda8' respectivement. En outre, GRUB semble être en mesure de trouver la partition par UUID, seul le noyau linux se plaint de ne pas être trouvé, car le disque RAM initial est correctement chargé (c.-à-d. Ceci n'est pas une erreur GRUB telle que décrite ici, mais plutôt une erreur linux) .

Comme note secondaire: le shell de récupération est sévèrement limité et la sortie standard ne semble pas fonctionner correctement. Néanmoins, ls fonctionne, et les fichiers d'inscription montrent un système de fichiers de base (temporaire), mais tous les périphériques de disque semblent manquer de /dev . Cependant, je ne sais pas si cela fait partie de l'erreur ou non.

Ceci est similaire, mais pas le même que Linux ne trouve pas le système de fichiers racine lors du démarrage , car la partition était ext4 depuis le début. Également pas exactement le même, mais peut-être pertinent. Impossible de démarrer ArchLinux sur Macbook Pro 7.1 – gouttes vers le shell de récupération , cependant, il tombe dans un shell de ramfs au lieu d'un shell rootfs et les messages d'erreur diffèrent.

Au lieu de démarrer avec l'image normale, j'ai utilisé la version de recharge et j'ai réussi à démarrer dans le système. Il s'avère que Linux n'a pas pu détecter de disque en raison du block mkinitcpio hook (responsable des périphériques de blocs) manquant de l'image par défaut. Ceci est dû à la mise en place après autodetect dans /etc/mkinitcpio.conf . Pour résoudre ce problème, la ligne HOOKS=... dans ce fichier doit être modifiée afin que le block soit avant la autodetect

Avant la correction:

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

Après la correction:

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

Exécuter mkinitcpio -p linux pour régénérer les initramfs puis réparé le problème en permanence.

J'ai rencontré un problème similaire mais avec une configuration différente. J'utilise ArchLinux dans une machine virtuelle et mon bootloader est syslinux. J'ai utilisé votre astuce pour changer l'ordre des crochets du noyau, mais je finis encore dans un shell racine.

Ce qui a réglé le problème pour moi, c'était la modification de la ligne APPEND dans mon syslinux.cfg de

 APPEND root=UUID=<snip> 

à

 APPEND root=PARTUUID=<snip> 

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

Ensuite, vous pouvez utiliser votre éditeur de texte préféré pour déplacer la ligne vers l'espace approprié.

EDIT: Je viens de reconnaître que le numéro de la colonne dans le petit script awk peut varier, alors il faut mieux regarder la sortie avant de la transmettre dans syslinux.cfg