だから私は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.gz
gzipで圧縮されているので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