讲init进程的启动过程从/etc/inittab出发。

内核启动init进程时已经打开/dev/console设备作为控制台,一般情况下Busybox init程序就使用/dev/console,

如果内核启动init进程的同时设置了环境变量CONSOLE或console,则使用环境变量所指定的设备。

1、/etc/inittab文件的相关文档和示例代码都在Busybox 的examples/inittab文件中。

vi examples/inittab

内容如下(红色字为格式重要部分):

# /etc/inittab init(8) configuration for BusyBox
#
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
#
#
# Note, BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use sysvinit.
#
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# <id>: WARNING: This field has a non-traditional meaning for BusyBox init!
#
# The id field is used by BusyBox init to specify the controlling tty for
# the specified process to run on. The contents of this field are
# appended to "/dev/" and used as-is. There is no need for this field to
# be unique, although if it isn't you may have strange results. If this
# field is left blank, it is completely ignored. Also note that if
# BusyBox detects that a serial console is in use, then all entries
# containing non-empty id fields will be ignored. BusyBox init does
# nothing with utmp. We don't need no stinkin' utmp.
<runlevels>: The runlevels field is completely ignored.
#
# <action>: Valid actions include: sysinit, respawn, askfirst, wait, once,
# restart, ctrlaltdel, and shutdown.
#
# Note: askfirst acts just like respawn, but before running the specified
# process it displays the line "Please press Enter to activate this
# console." and then waits for the user to press enter before starting
# the specified process.
#
# Note: unrecognised actions (like initdefault) will cause init to emit
# an error message, and then go along with its business.
#
# <process>: Specifies the process to be executed and it's command line.
#
# Note: BusyBox init works just fine without an inittab. If no inittab is
# found, it has the following default behavior:
# ::sysinit:/etc/init.d/rcS
# ::askfirst:/bin/sh
# ::ctrlaltdel:/sbin/reboot
# ::shutdown:/sbin/swapoff -a
# ::shutdown:/bin/umount -a -r
# ::restart:/sbin/init
#
# if it detects that /dev/console is _not_ a serial console, it will
# also run:
# tty2::askfirst:/bin/sh
# tty3::askfirst:/bin/sh
# tty4::askfirst:/bin/sh
#
# Boot-time system configuration/initialization script.
# This is run first except when booting in single-user mode.
#
::sysinit:/etc/init.d/rcS
# /bin/sh invocations on selected ttys
#
# Note below that we prefix the shell commands with a "-" to indicate to the
# shell that it is supposed to be a login shell. Normally this is handled by
# login, but since we are bypassing login in this case, BusyBox lets you do
# this yourself...
#
# Start an "askfirst" shell on the console (whatever that may be)
::askfirst:-/bin/sh
# Start an "askfirst" shell on /dev/tty2-4
tty2::askfirst:-/bin/sh
tty3::askfirst:-/bin/sh
tty4::askfirst:-/bin/sh

# /sbin/getty invocations for selected ttys
tty4::respawn:/sbin/getty 38400 tty5
tty5::respawn:/sbin/getty 38400 tty6

# Example of how to put a getty on a serial line (for a terminal)
#::respawn:/sbin/getty -L ttyS0 9600 vt100
#::respawn:/sbin/getty -L ttyS1 9600 vt100
#
# Example how to put a getty on a modem line.
#::respawn:/sbin/getty 57600 ttyS2

# Stuff to do when restarting the init process
::restart:/sbin/init

# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
2、仿照Busybox 的examples/inittab 文件,创建一个inittab文件,内容如下:

#/etc/inittab

#init进程启动的第一个子进程,它是一个脚本,可以在里面指定用户想执行的操作

#比较挂接其他文件系统、配置网络等

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

#启动shell,以/dev/ttySAC0作为控制台

ttySAC0::askfirst:-/bin/sh

#按下Ctrl+Alt+Del之后执行的程序,不过在串口控制台中无法输入Ctrl+Alt+Del组合键

::ctrlaltdel:/sbin/reboot

#重启、关机前执行的程序

::shutdown:/bin/umount -a -r

构建根文件系统(2)Busybox init 进程相关推荐

  1. 构建根文件系统之busybox(四)完善

    目录 busybox(四)完善 proc挂载 手动挂载 proc解析 使用脚本自动挂载 使用mount-a挂载 udev/mdev 挂载 使用jffs2 文件系统格式 安装zlib 安装jffs2 生 ...

  2. 构建根文件系统之busybox(三)最小根文件系统

    目录 busybox(三)最小根文件系统 引入 构建终端 构造inittab 配置应用程序 构建C库 制作映像文件yaffs busybox(三)最小根文件系统 引入 在busybox(一)浅析中,得 ...

  3. 构建根文件系统之busybox(一)浅析

    目录 busybox(一)浅析 引入 读取inittab 创建执行脚本链表 执行脚本 小结 busybox(一)浅析 源码包在busybox-1.7.0.tar.bz2,一个命令对应着一个c文件,执行 ...

  4. 韦东山衔接班——4.3_构建根文件系统之busybox

    作者:GWD 时间:2019.8.26 注:Linux中交叉编译用CROSS开头 配置编译busybox 1.解压busybox 2.make menuconfig出现配置菜单 在readme或者in ...

  5. 构建根文件系统之busybox(二)编译

    目录 busybox(二)编译 busybox(二)编译 1.解压,源码包在busybox-1.7.0.tar.bz2, tar xjf busybox-1.7.0.tar.bz2 cd busybo ...

  6. 【ARM】使用Busybox构建根文件系统

    Busybox构建根文件系统 介绍 下载 配置busybox 配置交叉编译器 取消静态库编译 添加vi命令的支持 取消简化模块 支持mdev 中文支持 编译 完善根文件系统 创建必要文件夹 复制库 启 ...

  7. 2.3【Linux系统移植之三】:使用BusyBox构建根文件系统(rootfs)

    文章目录 一.搭建NFS服务器 二.使用BusyBox构建跟文件系统 2.1 修改顶层Makefile 2.2 busybox中文支持 2.3 配置busybox 2.4 编译busybox 2.5 ...

  8. 构建根文件系统(一)

    接着前边内核移植的文章,记录根文件系统的构建. 这里要用到强大的busybox,我选择的版本是busybox-1.18.5.tar.bz2 ,1.17的也可以:之所以选择这个版本是因为基于现在的交叉编 ...

  9. 野火i.MX6ULL Pro开发板构建根文件系统

    眼瞅着2020年马上就要到头了,承诺给大家的Linux移植三部曲还差最后一篇,这个拖延癌晚期恐怕今年是治不好了,不到最后的DL绝不妥协-- (这句话是年前写的,写了个开头就疫情了,封城,电脑丢在了公司 ...

最新文章

  1. 分享一个电视节目API接口PHP调用代码
  2. linux 切换用户_Linux 用户态切换到内核态的 3 种方式
  3. 【大白话系列】带你进入网络的世界【都说计网难,一篇即可激发你的兴趣】
  4. 为什么我们不要 .NET 程序员
  5. Appium——api常用函数
  6. Jmeter读取Excel,BeanShell取样器调用rt.jar和jxl.jar
  7. Codeforces Round #661-C Boats Competition
  8. 面试题10:斐波那契数列
  9. Java基础---数组
  10. 微信扫码登录注册实现
  11. 【Luogu】P1972HH的项链(链表+树状数组)
  12. 在搭建tesseract-OCR环境中遇到问题和反省
  13. python+pyecharts实现中国省份地图可视化
  14. Android版微信跳一跳小游戏如何利用技术手段达到高分!
  15. VMware14安装windows7的详细过程
  16. 不看遗憾啊,韩版《大长今》中文音译,天才之作!
  17. 记一次IBM面试经历
  18. 洞悉物联网发展1000问之软银孙正义的最新三大投资秘诀是什么?
  19. 2020年中华人民共和国县以上行政区划代码
  20. 将后缀名为DAT的数据文件转换为EXCEL表格形式的文件

热门文章

  1. AD-查找符合指定条件的用户Get-User
  2. C#------如何判断输入的是否为纯数字
  3. .net知识和学习方法系列(十四)TraceListener的应用
  4. logcat崩溃_使用logcat抓取Android崩溃日志
  5. mysql8用户管理
  6. cookies和session区别
  7. 对eventloop的研究
  8. 2017年初随想——几个小目标
  9. 论DATASNAP远程方法支持自定义对象作参数
  10. 【NOIp 2015】【DFS】斗地主