カスタムビルド - ファイルシステムをマウントできません。

カスタムビルド - ファイルシステムをマウントできません。

だから私は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)

私のカーネルビルドでこれが欠けている可能性はありますか?

オペレーティングシステムを設計する方法は次のとおりです。

要素 私の選択
デーモンプロセスの初期化 初期化プログラム
注文する ビジーボックス1.35.0
コア Linux 5.15.12
ファイルシステム msdos、fat、exfat、ext2、ext3、またはext4
ブートローダー syslinuxまたはextlinux

注:各ファイルシステムを一度試してみたところ、すべて同じ応答を受け取ったので、これはファイルシステム自体の問題ではないと思います。また、テストのために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

答え1

オプションの状態はどうですかCONFIG_BLK_DEV_INITRD?直前になければならず、CONFIG_INITRAMFS_SOURCE活性化されるべきだと思います。

CONFIG_BLK_DEV_RAM一般的なRAMディスク、CONFIG_BLK_DEV_INITRD特にinitramfs / initrdです。

ファイルがinitramfs.cpio.gzgzipで圧縮されているのでCONFIG_RD_GZIP=y

答え2

この場合の問題は、私が作成したCPIOアーカイブと直接関連しています。正しいcpioコマンドgzipを使用していますが、タイプミスのためパイプラインが正しくありません。小さなコアブック。次のコマンドを使用して、読み取り可能なcpioファイルを作成できました。

cd fs_folder
sudo find | sudo cpio -o -H newc > ../fs.cpio
gzip -2 ../fs.cpio
advdef -z4 ../fs.cpio.gz

関連情報