내장 커널을 설치하고 재부팅을 시도한 후 오류가 발생합니다.
설치: /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 커널용으로 설치된 모듈이 포함되어 있습니다 . 그런 다음 커널은 모듈 로드 -> 디스크 읽기 -> 필요한 디스크에서 부팅할 수 있습니다.