새로운 ArchLinux 설치에서“루트 장치를 찾을 수 없습니다” 문제를 설명합니다. arch-chroot설치 디스크로 부팅하는 동안

공식 설치 안내서 의 지침에 따라 OSX로 듀얼 부팅하는 MacBook Pro 8,1 (15.15, 하드웨어와 관련이있는 경우 15)에 최신 버전의 ArchLinux (2014.06.01)를 설치했습니다 . 새로 설치된 시스템에서 복구 쉘로 이동합니다.

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 /]#

(UUID를 입력하고 싶지 않기 때문에 UUID를 제거했지만 blkidArchLinux가 설치된 파티션에 대해 (설치 디스크에서) 나에게 주어진 것과 동일 합니다)

다른 온라인 소스는 이 오래된 때문이다 제안 pacman, udev, filesystem또는 linux패키지로 제공된다. 그러나 새로 설치하지 않고 작업 시스템에서 커널을 업데이트 한 후에 만이 문제를 설명합니다. arch-chroot설치 디스크로 부팅하는 동안 환경 에서 이러한 패키지를 강제로 다시 설치했지만 상황이 바뀌지 않았습니다.

대신 내 실험에 대해 약간의 실험을 통해 grub.cfg불만이있는 것은 사용할 파일을 선택 root하는 linux명령 의 매개 변수 라는 것을 보여줍니다 vmlinuz. 실제로, 변화 root=UUID=<snip>root=LABEL=ArchLinux또는 root=/dev/sda8(아치 리눅스가 설치된 위치를 모두 설명하고 내가 확실히 다른 분포를 성공적으로하기 전에 두 번째 버전을 사용한 것은) 제공 Unable to find root device 'LABEL=ArchLinux'Unable to find root device '/dev/sda8'각각. 또한 GRUB은 UUID로 파티션을 찾을 수있는 것으로 보입니다. 초기 램 디스크가 올바르게로드되어 Linux 커널만이 발견되지 않는다고 불평합니다 (즉, 여기에 설명 된 GRUB 오류가 아니라 Linux 오류입니다) .

참고로 : 복구 셸이 심각하게 제한되어 있고 표준 출력이 제대로 작동하지 않는 것 같습니다. 그럼에도 불구하고, ls작동 하고 파일을 나열하면 기본 (임시) 파일 시스템이 표시되지만 모든 디스크 장치가에서 누락 된 것으로 보입니다 /dev. 그러나 이것이 오류의 일부인지 아닌지는 모르겠습니다.

이것은 파티션이 처음부터 ext4 이므로 부팅 할 때 Linux가 루트 파일 시스템을 찾지 못하는 것과 유사하지만 동일 하지 않습니다 . 또한 정확히 동일하지는 않지만 Macbook Pro 7.1에서 ArchLinux를 부팅 할 수 없습니다-복구 쉘로 삭제 하지만 쉘 대신 쉘로 떨어지고 오류 메시지가 다릅니다.ramfsrootfs



답변

일반적인 이미지로 부팅하는 대신 폴백 버전을 사용하여 시스템으로 부팅했습니다. 결과적으로 Linux block mkinitcpio는 기본 이미지에서 누락 된 후크 (블록 장치에 대한 책임) 로 인해 드라이브를 감지 할 수 없습니다 . 이는에 배치 된 후에 발생 autodetect했습니다 /etc/mkinitcpio.conf. 이 문제를 해결하려면 HOOKS=...해당 파일의 라인은 그 있도록 변경할 필요가 block전에 온다autodetect

수정하기 전에 :

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

수정 후 :

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

mkinitcpio -p linux재생성 initramfs후 실행 하면 문제가 영구적으로 해결되었습니다.


답변

비슷한 문제가 발생했지만 설정이 다릅니다. 가상 머신에서 ArchLinux를 사용하고 있으며 부트 로더는 syslinux입니다. 커널 후크 순서를 전환하는 데 트릭을 사용했지만 여전히 rootfs-shell로 끝났습니다.

무엇 나를 위해 문제를 해결하는 것은 변화되었다 APPEND내에서 라인 syslinux.cfg에서

APPEND root=UUID=<snip>

APPEND root=PARTUUID=<snip>

당신은 쉽게 추가 할 수 있습니다 PARTUUID받는 사람을 syslinux.cfg같은 명령을 사용하여 blkid | grep sda1 | awk '{ print $7 }' >> /boot/syslinux/syslinux.cfg루트 파티션은 가정/dev/sda1

그런 다음 자주 사용하는 텍스트 편집기를 사용하여 선을 적절한 공간으로 이동할 수 있습니다.

편집 : 방금 작은 awk 스크립트의 열 번호가 다를 수 있음을 알았으므로 출력하기 전에 출력을 더 잘 살펴보십시오. syslinux.cfg


답변