최근에 저는 건물을 짓고 있어요.LFS [처음부터 리눅스]나를 위한 시스템라즈베리 파이 싱글 보드 컴퓨터, 저는 현재 마지막 단계에 있습니다. 컴파일하려고하는데공식 kernel.org 저장소의 Linux 5.19.2, 하지만 커널을 설치하고 재부팅할 때마다 다음과 같은 일이 발생합니다.
- 레인보우 스플래시 화면이 나타납니다. [READING FAT32 PARTITION]
- Raspberry Pi 로고가 나타납니다. [UEFI 펌웨어 로드됨]
- GRUB2 부팅 메뉴가 나타납니다
- 다음과 같은 커널 패닉이 발생합니다.
그게 다야. 시작 프로세스가 중단되고 영원히 멈추게 됩니다. 내가 생각할 수 있는 가장 가능성 있는 문제는 내 커널 구성에서 특정 파일 시스템이 활성화되지 않는다는 것입니다. 어떤 도움이라도 대단히 감사하겠습니다.
다음으로 연결 /boot/config-5.19.2
:/boot/config-5.19.2
고쳐 쓰다 다음 가이드를 사용하여 initramfs를 생성했습니다.이 BLFS 페이지, 재부팅했을 때 처음에는 놀랍다고 생각했던 initramfs 셸이 나타났습니다. 이제 이해가된다:
The device /dev/sda2, which is supposed to contain the
root file system, does not exist.
Please fix this problem and exit this shell.
Encountered a problem!
Dropping you to a shell.
sh: cannot set terminal process group (-1): Innapropriate ioctl for device
sh: no job control in this shell
sh-5.1# _
거기에서 내 시스템을 디버깅할 수 있으면 좋겠지만 어떤 이유에서인지 입력할 수 없습니다. 그래서 ls -a /dev
내 커널이 어떤 장치를 감지하는지 확인할 수 있도록 initramfs init 스크립트를 추가하기로 결정했습니다 . 그러나 결과는 매우 충격적입니다.
. core full mem ptmx snapshot tty tty11 tty15 tty19 tty22 tty26 tty3 tty33 tty37 tty40 tty44 tty48 tty51 tty55 tty59 tty62 tty9 ttyS2 vcs1 vcsu1
.. cpu_dma_latency input null random stderr tty0 tty12 tty16 tty19 tty23 tty27 tty30 tty34 tty38 tty41 tty45 tty49 tty52 tty56 tty6 tty63 ttyAMA0 ttyS3 vcsa vga_arbiter
char fb0 kmsg port rtc stdin tty1 tty13 tty17 tty20 tty24 tty28 tty31 tty35 tty39 tty42 tty46 tty5 tty53 tty57 tty60 tty7 ttyS0 urandom vcsa1 zero
console fd kvm psaux rtc0 stdout tty10 tty14 tty18 tty21 tty25 tty29 tty32 tty36 tty4 tty43 tty47 tty50 tty54 tty58 tty61 tty8 ttyS1 vcs vcsu
sd
또는 mmcblk
! 로 시작하는 파일이 없습니다 . 이제 커널 구성에 물리적 장치를 감지하지 못하게 하는 문제가 있는 것이 분명합니다.
고쳐 쓰다- 커널 버전을 Linux 6.0.5로 업데이트하고 initramfs를 다시 컴파일했지만 차이는 없습니다.
고쳐 쓰다- Raspberry Pi 운영 체제는 UEFI 변수를 사용하지 않는다는 것을 알고 시스템에서 UEFI 변수 지원으로 GRUB를 컴파일하면 문제가 해결될 것이라고 생각했습니다. 그래서 어떻게든 내 Raspberry Pi에 arm64용 Debian GNU/Linux 11을 설치했고 [실행을 통해] UEFI 변수가 지원된다는 것을 발견했습니다 efivar -l
. UEFI 변수를 지원하여 GRUB를 다시 컴파일했지만 문제도 해결되지 않았습니다.
고쳐 쓰다- 문제는 내 커널 컴파일에 있는 것 같지 않습니다. 데비안 설치(arm64용)에서 커널 구성 파일을 복사하여 붙여넣고 커널을 다시 컴파일해도 여전히 동일한 결과가 나오기 때문입니다. 물리적 장치를 감지하기 위해 설치하지 않은 패키지가 있는 것 같습니다.
고쳐 쓰다- 실제로 시스템을 부팅하는 대략적인 방법을 알아냈지만 문제가 해결되지 않았습니다. Debian 설치의 GRUB 명령줄로 안내하고 다음 명령을 입력했습니다.
grub> linux (hd0,1)/vmlinuz-5.10.0-19-arm64 root=/dev/sdb2 rootfstype=ext4 init=/bin/bash
grub> initrd (hd0,1)/initrd.img-5.10.0-19-arm64
grub> boot
시스템을 부팅하기 위해 항상 외부 설치를 사용하고 싶지 않으며, 이는 문제를 찾는 데에도 도움이 되지 않습니다. 데비안 설치의 커널 프로필을 사용하여 LFS 커널을 컴파일하면 커널도 같은 일을 해야 하지 않나요? 또 다른 예상치 못한 발견도 했습니다. initramfs를 로드하지 않고 데비안 설치를 부팅하려고 하면 커널 패닉이 발생합니다.거의 동일위에 표시된 것과 같습니다. 파티션을 찾는 데 initramfs는 어떤 역할을 합니까? 나는 이전보다 지금 더 혼란스러워요.
답변1
내 문제를 해결하기 위해 단순히 복사하여 붙여넣는 /boot/modules/
대신 내 커널이 커널 모듈을 설치하고 있었던 것으로 나타났습니다 ./usr/lib/modules/
/boot/modules
/usr/lib/modules