Filesystems
自定義建構 - 無法掛載文件系統
因此,我正在建構一個基於 Linux 的定制作業系統,並選擇將其作為 RAM 磁碟 (initramfs) 執行。不幸的是,我在啟動過程中不斷出現核心恐慌。
RAMDISK: gzip image found at block 0 using deprecated initrd support, will be removed in 2021. exFAT-fs (ram0): invalid boot record signature exFAT-fs (ram0): failed to read boot sector exFAT-fs (ram0): failed to recognize exfat type exFAT-fs (ram0): invalid boot record signature exFAT-fs (ram0): failed to read boot sector exFAT-fs (ram0): failed to recognize exfat type List of all partitions: 0100 4096 ram0 (driver?) 0101 4096 ram1 (driver?) 0102 4096 ram2 (driver?) 0103 4096 ram3 (driver?) 0104 4096 ram4 (driver?) 0105 4096 ram5 (driver?) 0106 4096 ram6 (driver?) 0107 4096 ram7 (driver?) 0108 4096 ram8 (driver?) 0109 4096 ram9 (driver?) 010a 4096 ram10 (driver?) 010b 4096 ram11 (driver?) 010c 4096 ram12 (driver?) 010d 4096 ram13 (driver?) 010e 4096 ram14 (driver?) 010f 4096 ram15 (driver?) No filesystem could mount root, tried: vfat msdos exfat ntfs ntfs3 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
我的核心建構中是否有可能缺少這些東西?
以下是我設計作業系統的方式:
注意:我一次嘗試了每個文件系統,並且都提供了相同的響應,這讓我相信這不是文件系統本身的問題。出於測試目的,我還嘗試了 syslinux 和 extlinux。
這是我建構磁碟的方式:
/media/vfloppy └── [ 512 Jan 3 08:06] boot ├── [ 36896 Jan 3 08:06] initramfs.cpio.gz ├── [ 512 Jan 3 08:06] syslinux │ ├── [ 283 Jan 3 08:06] boot.msg │ ├── [ 120912 Jan 3 08:06] ldlinux.c32 │ ├── [ 60928 Jan 3 08:06] ldlinux.sys │ └── [ 173 Jan 3 08:06] syslinux.cfg └── [ 939968 Jan 3 08:06] vmlinux
這是我的
syslinux.cfg
:DISPLAY boot.msg DEFAULT linux label linux KERNEL /boot/vmlinux INITRD /boot/initramfs.cpio.gz APPEND root=/dev/ram0 init=/init loglevel=3 PROMPT 1 TIMEOUT 10 F1 boot.msg
我還在核心
.config
文件中啟用了以下文件系統選項:CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_FS_IOMAP=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_FS_MBCACHE=y CONFIG_EXPORTFS_BLOCK_OPS=y CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_PROC_FS=y CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_HAVE_KERNEL_GZIP=y CONFIG_RD_GZIP=y CONFIG_DECOMPRESS_GZIP=y
此實例中的問題與我創建的 CPIO 存檔直接相關。儘管我使用了正確的
cpio
和gzip
命令,但由於TinyCore book中的拼寫錯誤,我的管道不正確。使用以下命令,我能夠創建一個可讀的 cpio 文件:cd fs_folder sudo find | sudo cpio -o -H newc > ../fs.cpio gzip -2 ../fs.cpio advdef -z4 ../fs.cpio.gz
CONFIG_BLK_DEV_INITRD
期權的狀態是什麼?它應該在 之前CONFIG_INITRAMFS_SOURCE
,我相信它應該被啟用。
CONFIG_BLK_DEV_RAM
是通用 RAM 磁碟,而CONFIG_BLK_DEV_INITRD
具體是 initramfs/initrd。由於您
initramfs.cpio.gz
是 gzip 壓縮的,因此您還需要CONFIG_RD_GZIP=y
.