如何检查/ init是否启动/ etc / inittab

时间:2019-01-23 06:08:18

标签: linux embedded-linux busybox panic inittab

我有一个带处理器AT91SAM9G45的嵌入式ARM系统。

系统包含两个组件:

  1. Linux内核(4.14.79)
  2. Busybox 1.29.3作为initramfs映像。

我使用腻子连接到设备并连接到串口。

当内核启动时,一切正常。内核解压缩initramfs映像,找到并列出所有文件(我通过调试消息看到了它)。但是,当它启动/ init时,日志消息是:

Freeing unused kernel memory: 384K
This architecture does not have kernel memory protection.
run_init_process BEFORE /init
run_init_process AFTER /init, result = 0
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004

/ init是/ bin / busybox的符号链接。我试图用/ sbin / init,/ bin / busybox,/ linuxrc替换/ init,但是结果是相同的。

/ etc / inittab文件:

# Begin /etc/inittab

id::initdefault:

si::sysinit:/etc/init.d/rc S

#l0::wait:/etc/rc.d/init.d/rc 0
#l1::wait:/etc/rc.d/init.d/rc 1
#l2::wait:/etc/rc.d/init.d/rc 2
#l3::wait:/etc/rc.d/init.d/rc 3
#l4::wait:/etc/rc.d/init.d/rc 4
#l5::wait:/etc/rc.d/init.d/rc 5
#l6::wait:/etc/rc.d/init.d/rc 6

ca::ctrlaltdel:/sbin/shutdown -t1 -a -r now

su::once:/sbin/sulogin

1::respawn:/sbin/getty ttyS1 115200
2::respawn:/sbin/getty ttyS2 115200
3::respawn:/sbin/getty ttyS3 115200
4::respawn:/sbin/getty ttyS4 115200
5::respawn:/sbin/getty ttyS5 115200
6::respawn:/sbin/getty ttyS6 115200

# End /etc/inittab

/etc/init.d/rcS文件(允许执行此文件):

#!/bin/busybox sh
echo "Hello world!"

我不知道甚至/ init进程是否也开始解析/ etc / inittab,或者由于某些我无法找到的原因而落入/ etc / inittab之前。也许有 我的/ etc / inittab和/etc/init.d/rcS文件中的一些错误。终端可能存在一些错误(/etc/init.d/rcS无法将其写入stdout,原因是它被阻塞,挂起,被另一个进程使用,依此类推)。

如何确定要启动/ etc / inittab?

2 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow。 我看到rc和S之间有空间 <CheckboxGroupInput source="targets" label="Cibles" choices={targets} onChange={this.handleAll} />

将其更改为

si::sysinit:/etc/init.d/rc S

让我知道它是否有效。

答案 1 :(得分:0)

  

/ init是/ bin / busybox的符号链接。

由Buildroot构建并包含Busybox的initramfs中典型的 / init 文件是包含以下七行的脚本:

#!/bin/sh
# devtmpfs does not get automounted for initramfs
/bin/mount -t devtmpfs devtmpfs /dev
exec 0</dev/console
exec 1>/dev/console
exec 2>/dev/console
exec /sbin/init $*

请注意注释(“ initramfs不会自动安装devtmpfs”)和 / dev mount 命令。

/ bin / busybox 链接的是 / sbin / init (而不是 / init )。

IOW没有正确设置 / dev 目录,userland没有I / O功能。
只有在挂载devtmpfs之后,才执行 Busybox 中的 init 程序,然后该程序将访问 / etc / inittab

请参见Is there a way to get Linux to treat an initramfs as the final root filesystem?

Make CONFIG_DEVTMPFS_MOUNT apply to initramfs/initmpfs