procd

本文详细介绍了Linux系统的启动顺序,从bootloader加载内核开始,逐步解析了/sbin/init的执行流程,包括早期初始化、watchdog的设置、内核模块加载、预初始化操作等。重点讨论了procd进程的STATE_EARLY、STATE_INIT和STATE_RUNNING三个状态,以及其在系统启动和运行中的角色。此外,还涵盖了触发任务队列、服务管理和shell调用接口等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统启动顺序

  • bootloader加载内核
  • 内核开动,同时扫描mtd文件系统分区
  • 内核执行/etc/preinit脚本
  • /etc/preinit执行/sbin/init二进制程序
  • /sbin/init根据/etc/inittab定义执行启动过程
  • /etc/inittab首先执行/etc/init.d/rcS,此脚本将顺序启动/etc/rc.d/目录以S开关的脚本

/sbin/init

early()

  • mount /proc /sys /tmp /dev /dev/pts目录(early_mount)
  • 创建设备节点和/dev/null文件结点(early_dev)
  • 设置PATH环境变量(early_env)
  • 初始化/dev/console

cmdline()

  • 根据/proc/cmdline内容init_debug=([0-9]+)判断debug级别

watchdog_init()

  • 初始化内核watchdog(/dev/watchdog)

加载内核模块

  • 创建子进程/sbin/kmodloader加载/etc/modules-boot.d/目录中的内核模块

preinit()

  • 创建子进程执行/etc/preinit脚本,此时PREINIT环境变量被设置为1,主进程同时使用uloop_process_add()把/etc/preinit子进程加入uloop进行监控,当/etc/preinit执行结束时回调plugd_proc_cb()函数把监控/etc/prein

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值