【发布时间】:2017-07-23 18:45:06
【问题描述】:
问题
我的问题是,linuxrc 是做什么的?我的rootfs 需要它吗?这与使用systemd 和initd 有什么关系吗?
背景
我目前正在尝试使用 Yocto 为 ARM 7 处理器构建rootfs。我对原始 BSP 项目所做的唯一修改是我指定我想使用 systemd 作为我的初始化管理器(在 local.conf 中完成)。 rootfs 构建 (bitbake core-image-minimal) 并使用 Mgftool2 我将其加载到板上。当我尝试启动映像时,出现以下错误:
VFS: Mounted root (ext3 filesystem) readonly on device 179:2.
devtmpfs: mounted
Freeing unused kernel memory: 272K (80816000 - 8085a000)
Kernel panic - not syncing: Requested init /linuxrc failed (error -2).
CPU: 0 PID: 1 Comm: swapper/0 Tainted: G W 4.4.15-v4.4.15+g017b90c #1
Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[<80015d9c>] (unwind_backtrace) from [<80012c14>] (show_stack+0x10/0x14)
这很有意义,因为在我检查了我生成的rootfs 之后,我发现没有名为linuxrc 的可执行文件。我将 u-boot 的 default_bootargs 更改为不包含 init=/linurc 并再次启动映像。 然后我收到此错误:(更新 #1)
更新 #1
次要错误是由 systemd 需要某些 kernel parameters enabled 引起的。使用这些参数重建内核后,linux 映像就会启动。我仍然有兴趣知道 linuxrc 到底做了什么,以及为什么它至少看起来我不需要它。
【问题讨论】:
标签: embedded-linux yocto