나는 이 커널 패닉에 빠졌습니다.
내가 원하는 것은 initramfs를 커널 xip 이미지에 포함시키는 것입니다. 그러나 Linux는 패닉을 일으키고 유효한 "root=" rootfs 값을 전달하라고 지시합니다. 그런데 Linux는 왜 이 입력을 찾는 걸까요?
(실제 .cpio를 제공하지 않은 유일한 이유는 "#include를 찾을 수 없음"과 같은 오류 때문에 빌드할 수 없기 때문입니다). 하지만 기본 initramfs가 작업을 올바르게 수행해야 할까요?
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_BLOCK=y
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_NULL_BLK is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_BLK_DEV_RAM_SIZE=4096
Linux는 "root=" 매개변수에 신경쓰지 말아야 합니까? ? ? 아니요? ?
linux.config를 완료하세요.http://pastebin.com/gWGCeeCw
완전한 UART 출력:http://pastebin.com/Mk3c9su8
이 기사를 읽어주셔서 감사합니다.
편집: "root=/dev/ram0"을 지정하면 이런 일이 발생합니다.
[ 0.580000] brd: module loaded
[ 0.630000] loop: module loaded
[ 0.650000] F2FS-fs (ram0): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[ 0.650000] F2FS-fs (ram0): Can't find valid F2FS filesystem in 1th superblock
[ 0.650000] F2FS-fs (ram0): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[ 0.670000] F2FS-fs (ram0): Can't find valid F2FS filesystem in 2th superblock
[ 0.680000] F2FS-fs (ram0): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[ 0.680000] F2FS-fs (ram0): Can't find valid F2FS filesystem in 1th superblock
[ 0.690000] F2FS-fs (ram0): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[ 0.690000] F2FS-fs (ram0): Can't find valid F2FS filesystem in 2th superblock
[ 0.700000] List of all partitions:
[ 0.700000] 0100 4096 ram0 [ 0.710000] (driver?)
[ 0.710000] No filesystem could mount root, tried: [ 0.720000] f2fs
[ 0.720000]
[ 0.720000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
[ 0.720000] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
[ 1.520000] random: fast init done
"루트를 마운트할 파일 시스템이 없음"이 무엇을 의미하는지 잘 모르겠습니다. 물론 여러분(Linux)이 루트를 만들어야 합니다! 무슨 일이에요?
답변1
문제는 두 가지입니다.
이유는 모르겠지만 기본 .cpio가 작동하지 않습니다.
온라인에서 찾은 "stm32 Minimal blablabla" cpio가 작동하지 않습니다.
나는 buildroot를 사용하여 전체 시스템 빌드를 실행해 보았고 즉시 작동했으며 rootfs.cpio를 사용해 시도했고 작동했습니다!
이유를 찾으면 여기에 게시하겠습니다.
이제 보드의 외부 RAM은 0xD0000000에서 시작하지만 빌드루팅된 시스템은 0x90000000에서 시작하기 때문에 조사합니다. 두 시스템 모두 작동하고 있습니다. 어떻게 작동하는지 잘 모르겠습니다. 하하.