カスタムNvidia TK1ベースのボードでLinuxを実行しようとしています。 SDカードからボードを起動しようとすると、次のエラーが発生します。
VFS: Cannot open root device "mmcblk1p1" or unknown-block(179,33): error -30
Please append a correct "root=" boot option; here are the available partitions:
b300 30539776 mmcblk0 driver: mmcblk
b301 14680064 mmcblk0p1 7369c667-ff51-ec4a-29cd-baaba3cee346
b302 4096 mmcblk0p2 f854c27c-e81b-8de7-765a-2e9442bfc99a
b303 65536 mmcblk0p3 b70d3266-5831-5aa3-255d-051742ea5ed4
b304 4096 mmcblk0p4 c6cdb2ab-b49b-1154-0e82-7441842bdc87
b305 4096 mmcblk0p5 a13ee970-e141-67fc-3e01-7e97dcea6b96
b306 4096 mmcblk0p6 2a5c388f-b0ec-fb3b-32af-3c554123db5c
b307 4096 mmcblk0p7 43fe1a02-fafb-3aaa-fb29-d1e85fa37c94
b308 2048 mmcblk0p8 61bed875-f989-bb5c-a899-0f9573eff1b3
b309 571392 mmcblk0p9 00f7ef05-a1e9-e53a-ca0b-cbd3493164bd
b310 4096 mmcblk0rpmb (driver?)
b320 15558144 mmcblk1 driver: mmcblk
b321 15557103 mmcblk1p1 5d52e9ff-6261-41c9-9816-73affe28b267
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,33)
私は正しいルート変数がカーネルに提供されていることを確認しましたroot=/dev/mmcblk1p1 rw
。つまり、 。また、カードが読み取り専用ではなく正しい形式であることを確認しました。
カーネルのソースコードを見ましたが、このエラーを返す関数定義がerror -30
見つかりませんでした。sys_mount()
誰かがこのようなことが起こる理由を指摘できますか?ありがとうございます。
ベストアンサー1
これは本当にフルサイズのSDカードですか?カードに「読み取り専用」の位置にあるRWスイッチがありますか?
RWスイッチはカードではなくカードリーダーによって強制的に切り替えられるため、ハードウェア(またはドライバ?)の問題かもしれません。
mountシステムコールから返されたエラーは値でなければなりませんerrno
。マイナス記号は単なる慣例であると仮定します。
#define EROFS 30 /* Read-only file system */
https://elixir.bootlin.com/linux/v4.20/source/include/uapi/asm-generic/errno-base.h#L34
sys_mount()
このエラーを返す関数定義が見つかりません。
はい、痛いです。この定義は次には表示されません。エリクサー検索誰でも。システムコールはマクロを使用して定義されます。
SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,
char __user *, type, unsigned long, flags, void __user *, data)
{
return ksys_mount(dev_name, dir_name, type, flags, data);
}
https://elixir.bootlin.com/linux/v4.20/source/fs/namespace.c#L3028