Linux-Kernel
uCLinux(linux 4.9 nommu)VFS:無法打開根設備“(空)”
我被這種核心恐慌所困擾。
我想要的是在核心 xip 映像中嵌入一個 initramfs,但是 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)需要創建它!!!發生了什麼?
問題是雙重的:
- 我不知道為什麼,但預設的 .cpio 不起作用。
- 我在網上找到的“stm32 minimum blablabla”cpio 不起作用。
我嘗試使用 buildroot 執行整個系統建構,它可以開箱即用,並嘗試在那裡使用 rootfs.cpio,它可以工作!!
如果我找到原因,我會在這裡發布。
現在我調查一下,因為對我來說,這塊板的外部 RAM 從 0xD0000000 開始,但是 buildroot 創建了一個從 0x90000000 開始的系統。兩個系統都在工作……不知道如何大聲笑。