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

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

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

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

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

시스템 정보

  • Alpine Linux 3.12_alpha20200319(edge) – Alpine Linux 가상 에디션
  • kernel5.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로 전환해 보십시오.

도움이 될 수 있습니다:

extlinux.conf에 지정된 오류와 UUID를 확인했습니다. 이는 /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 wap이고 빌드 중인 버전은 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 커널용으로 설치된 모듈이 포함되어 있습니다 . 그런 다음 커널은 모듈 로드 -> 디스크 읽기 -> 필요한 디스크에서 부팅할 수 있습니다.

관련 정보