首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查/init是否启动/etc/inittab

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

Stack Overflow用户
提问于 2019-01-23 06:08:17
回答 2查看 1.8K关注 0票数 0

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

该系统由两个部分组成:

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

我使用putty连接到设备,并连接到串口。

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

代码语言:javascript
复制
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的符号链接。我试图将/init替换为/sbin/init、/bin/busybox、/linuxrc,但结果是相同的。

/etc/inittab文件:

代码语言:javascript
复制
# 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文件(允许执行此文件):

代码语言:javascript
复制
#!/bin/busybox sh
echo "Hello world!"

我不知道/init进程是否开始解析/etc/inittab,还是在获得/etc/inittab之前,由于一些原因我无法找到。可能在我的/etc/inittab和/etc/init.d/rcS文件中有一些错误。可能终端有一些错误(/etc/init.d/rcS不能写入stdout,因为它被阻塞、挂起、被其他进程使用等等)。

如何确定,/etc/inittab已经启动?

EN

回答 2

Stack Overflow用户

发布于 2019-01-23 11:26:26

欢迎来到StackOverflow。我看到rc和S si::sysinit:/etc/init.d/rc S之间有空位

将其更改为

si::sysinit:/etc/init.d/rcS

如果有用的话请告诉我。

票数 0
EN

Stack Overflow用户

发布于 2019-01-25 01:24:22

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

集成Busybox的Buildroot构建的initramfs中典型的/init文件是一个七行的脚本:

代码语言:javascript
复制
#!/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挂载命令。

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

如果没有正确设置/dev目录,userland就没有I/O能力。

只有在devtmpfs被挂载后,才能执行init程序在Busybox中,然后访问

请参阅有办法让Linux将initramfs作为最终的根文件系统处理吗?

安装应用于initramfs/initmpfs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54320960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档