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 //执行相关程序
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下的设备,需要绿色部分的配置