linux 系统启动过程:
•打开PC的电源
•BIOS开机自检
•按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备装的引导程序lilo或grub开始引导Linux
•内核的引导
•执行init程序
•启动getty,打开了终端供用户登录系统
•用户登录成功后进入了Shell
•硬盘的第一扇区称为主引导记录(MBR, MASTER BOOT RECORD)
•MBR 的长度为512字节。
�C第一部分为引导(PRE-BOOT)区,占了446个字节
�C第二部分为分区表(PARTITION PABLE),共有64个字节,记录硬盘的分区信息。
•init的进程号是1,从这一点就能看出,init进程是系统所有进程
起点,Linux在完成核内引导以后,就开始运行init程序。
•init程序需要读取配置文件/etc/inittab
•inittab是一个不可执行的文本文件,它有若干行指令所组成。
/etc/inittab文件内容:
•# The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do
not havenetworking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
•#表示当前缺省运行级别为5(initdefault)id:5:initdefault:
#启动时自动执行/etc/rc.d/rc.sysinit脚本
# System initialization si::sysinit:/etc/rc.d/rc.sysinit
•rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初
始化的工作,rc.sysinit每一个运行级别都要首先运行的重要脚
本。
•它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块
及其它一些需要优先执行任务。
•rc.sysinit约有850多行,但是每个单一的功能还是比较简单,
且带有注释,建议大家阅读自己机器上的该文件,以了解系统初
始化所详细情况。
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
#当运行级别为5时,以5为参数运行/etc/rc.d/rc脚本,init将等
其返回(wait)
•/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执
行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本
•/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些链接
件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是
在/etc/rc.d/init.d/目录下。
•rc执行完毕后,返回init。这时基本系统环境已经设置好了,各
种守护进程也已经启动了。
•init接下来会打开6个终端,以便用户登录系统。通
按Alt+Fn(n对应1-6)可以在这6个终端中切换。
•在inittab中的以下6行就是定义了6个终端:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6