V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wniming
V2EX  ›  Linux

Linux 内核在 arm 架构下启动是不是必须要 initramfs?

  •  
  •   wniming · 2023-03-13 09:19:17 +08:00 · 1399 次点击
    这是一个创建于 382 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于我要加快系统的启动速度,所以想省去 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 来启动以加快启动速度。

    7 条回复    2023-03-13 16:20:38 +08:00
    pagxir
        1
    pagxir  
       2023-03-13 09:21:32 +08:00 via Android
    不是。
    podel
        2
    podel  
       2023-03-13 09:29:59 +08:00
    不是。 我最近编译了一个 ARM UEFI 启动的 OPENWRT 系统。
    这个就是 启动的时候单内核。 然后 wait root filesystem 。继续加载启动了。
    huangya
        3
    huangya  
       2023-03-13 10:04:27 +08:00
    b 不是。可以接启动参数 root=
    wniming
        4
    wniming  
    OP
       2023-03-13 10:35:59 +08:00
    应该是我之前哪里设置错了,现在问题解决了
    yanqiyu
        5
    yanqiyu  
       2023-03-13 11:01:40 +08:00
    看起来更像是你的 sda 对应的文件系统驱动没有被编译进内核
    wniming
        6
    wniming  
    OP
       2023-03-13 11:15:41 +08:00
    @yanqiyu 昨天搞了好久没解决,今天不知道改了那里问题没了
    cy18
        7
    cy18  
       2023-03-13 16:20:38 +08:00
    1. 检查启动参数,“root=”配置对不对。
    2. 检查驱动,包括设备驱动,文件系统驱动,是不是编译进内核了。
    3. 不涉及机密的话建议发完整的,包括 uboot 部分的 log 上来。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3386 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:39 · PVG 18:39 · LAX 03:39 · JFK 06:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.