/sysroot에 UUID=xxx 마운트 실패: 해당 장치 없음 - Linux 커널 설치 후 발생

/sysroot에 UUID=xxx 마운트 실패: 해당 장치 없음 - Linux 커널 설치 후 발생

빌드된 커널을 설치하고 재부팅을 시도한 후 오류가 발생합니다.

마운트: /sysroot에 UUID=59c56381-e5ec-4a8b-8c2e-f9c6a66d524c 마운트 실패: 해당 장치 없음

왜 이런 일이 발생합니까? 올바르게 부팅하려면 이 문제를 어떻게 해결해야 합니까?

시스템 정보

  • Alpine Linux 3.12_alpha20200319(edge) -- Alpine Linux 가상
  • 커널 5.4.31-0-virt
  • VirtualBox 내에서 실행

커널 빌드 단계

wget https://mirrors.edge.kernel/pub/linux/kernel/v5.x/linux-5.4.30.tar.xz
tar -xf linux-5.4.30.tar.xz
cp /boot/config-virt /home/name/build/.config
make -C /home/name/linux-5.4.30 O=/home/name/build listnewconfig
make -j4 -C /home/name/linux-5.4.30 O=/home/name/build
cd /home/name/build
make modules_install

다음 단계는 확실하지 않습니다.

cp System.map /boot/System.map-virt
cp arch/x86_64/boot/bzImage /boot/vmlinuz-virt
cp .config /boot/config-virt

make install나는 Arch/x86/boot/bzImage를 통과하기 때문에 실행하지 않습니다 . 이로 인해 32비트와 64비트를 설치하는 것으로 추측됩니다. 그래서 수동으로 설치하려고 합니다.

내 extlinux.conf 파일:

DEFAULT menu.c32
PROMPT 0
MENU TITLE Alpine/Linux Boot Menu
MENU HIDDEN
MENU AUTOBOOT Alpine will be booted automatically in # seconds
TIMEOUT 30
LABEL virt
  MENU LABEL linux virt
  LINUX vmlinuz-virt
  INITRD initramfs-virt
  APPEND root=UUID=59c56381-e5ec-4a8b-8c2e-f9c6a66d524c moudles=sd-mod,usb-storage,ext4 quiet rootfstype=ext4

MENU SEPARATOR

수정 시도

(아래 모두 여전히 동일한 오류가 발생합니다)

  • 재부팅하기 전에 디렉터리 mkinitfs에서 실행 중/
  • 달리기extlinux --install /boot
  • 대신 빌드 디렉터리에서 실행 make install하고 extlinux.conf 줄을 LINUX vmlinuz-virt다음으로 변경합니다.LINUX vmlinuz
  • VirtualBox 스토리지 컨트롤러를 AHCI, virtio-scsi 및 PIIX4로 전환해 보았습니다.

도움이 될 수 있습니다:

오류에 명시된 UUID와 extlinux.conf를 확인했습니다. 이는 /dev/sda3을 식별합니다. 그러나 부팅 실패 후 응급 복구 셸에 들어가서 /dev 디렉터리를 확인하면 해당 디렉터리가 없습니다. 이유는 전혀 없습니다.

lsmod는 로드된 모듈이 없음을 표시합니다. 나는 이런 일이 일어나서는 안 된다고 생각한다.

다음을 입력하여 부팅을 계속하면 exit커널 패닉이 발생합니다.커널 패닉 스크린샷

파일

.config -https://github.com/alpinelinux/aports/blob/master/main/linux-lts/config-virt.x86_64

extlinux.conf -https://pastebin.com/QMkePsqS

mkinitfs.conf -https://pastebin.com/rksn7GcN

답변1

포스팅에서 언급했듯이,

lsmod는 로드된 모듈이 없음을 표시합니다. 이런 일이 일어나서는 안 될 것 같아요

문제는 모듈이 커널에 로드되지 않았기 때문이었습니다. 실행 중인 커널의 현재 버전은 5.4.31-0-virt였으며 빌드 중인 버전은 5.4.30이었습니다. 설치 중인 모듈이 디렉토리에 배치되었습니다 /lib/modules/5.4.30. 이로 인해 초기 램 디스크(initramfs)가 커널에 대한 올바른 모듈 없이 구축되어 부팅 시 로드되지 않았습니다.

이 문제를 해결하려면 initramfs를 빌드할 때 커널 모듈을 설치한 후 다음 명령을 대신 사용해야 합니다.

mkinitfs -o /boot/initramfs-virt 5.4.30

uname -r이 명령에는 기본 버전(이 경우 5.4.31-0-virt) 대신 initramfs에 설치된 5.4.30 커널용 모듈이 포함됩니다 . 그런 다음 커널은 모듈 로드 -> 디스크 읽기 -> 필요한 디스크에서 부팅할 수 있습니다.

관련 정보