我有一个带处理器AT91SAM9G45的嵌入式ARM系统。
系统包含两个组件:
我使用腻子连接到设备并连接到串口。
当内核启动时,一切正常。内核解压缩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?
答案 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