init进程分析

uboot传递启动参数:

root=/dev/mtdblock3  init=/linuxrc console=ttySAC0

kernel启动第一个程序:

1、函数mount_root挂载分区root=/dev/mtdblock3

2、打开设备/dev/console

3、启动第一个程序run_init_process("/linuxrc") //linuxrc与/sbin/init相同

    ----init_main    //init进程入口函数

    --------parse_inittab    //解析配置文件/etc/inittab,放入init_action_list链表

    ------------run_actions    //执行相关程序

扫描二维码关注公众号,回复: 56924 查看本文章

inittab格式:

<id>:<runlevels>:<action>:<process>

id => /dev/id,用作终端:stdin,stdout,stderr:printf,scanf,err

runlevels:忽略

action   :执行时机

process  :应用程序或脚本

(1)./etc/inittab

::sysinit:/etc/init.d/rcS                  //启动时执行

console::askfirst:-/bin/sh             //启动前询问用户

::ctrlaltdel:/sbin/reboot               //ctrl+alt+del时执行

::shutdown:/bin/umount -a –r    //关闭系统时执行

(2). /etc/init.d/rcS

mount –a                     //挂载文件系统,需要配置文件/etc/fstab

mkdir /dev/pts

mount -t devpts devpts /dev/pts

echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev –s

ifconfig eth0 192.168.1.100

telnetd

inetd

(3)./etc/fstab

# device    mount-point    type  options        dump fsck order

proc          /proc        proc  defaults        0    0

tmpfs         /tmp         tmpfs defaults        0    0

sysfs         /sys         sysfs defaults        0    0

tmpfs         /dev         tmpfs defaults        0    0

注:

a.mount –a挂载/etc/fstab中配置的文件系统

b.proc虚拟文件系统

c.mdev机制自动创建/dev下的设备,需要绿色部分的配置

猜你喜欢

转载自blog.csdn.net/hfutyyj/article/details/80063473