由于我要加快系统的启动速度,所以想省去 initramfs ,在 x86 上是可以让内核直接挂载根文件系统的,但在 arm 架构下这么做会报这样一个错误:
[ 3.212932] VFS: Cannot open root device "sda3" or unknown-block(0,0): error -6
[ 3.220360] Please append a correct "root=" boot option; here are the available partitions:
我看了一下内核代码 init/do_mounts.c 的 mount_root 函数,我发现在 x86 上这个函数用到的 ROOT_DEV 是在 arch/x86/kernel/setup.c 这里被赋值的,而 arm 上这个值是 0 ,arm 体系结构相关的代码没有赋值 ROOT_DEV ,所以我怀疑 linux 在 arm 架构上是必须要有 initramfs 才能启动,而我想找到一个方法可以不使用 initramfs 来启动以加快启动速度。
1
pagxir 2023-03-13 09:21:32 +08:00 via Android
不是。
|
2
podel 2023-03-13 09:29:59 +08:00
不是。 我最近编译了一个 ARM UEFI 启动的 OPENWRT 系统。
这个就是 启动的时候单内核。 然后 wait root filesystem 。继续加载启动了。 |
3
huangya 2023-03-13 10:04:27 +08:00
b 不是。可以接启动参数 root=
|
4
wniming OP 应该是我之前哪里设置错了,现在问题解决了
|
5
yanqiyu 2023-03-13 11:01:40 +08:00
看起来更像是你的 sda 对应的文件系统驱动没有被编译进内核
|
7
cy18 2023-03-13 16:20:38 +08:00
1. 检查启动参数,“root=”配置对不对。
2. 检查驱动,包括设备驱动,文件系统驱动,是不是编译进内核了。 3. 不涉及机密的话建议发完整的,包括 uboot 部分的 log 上来。 |