Linux 启动过程
1,内核引导
bios开机自检,按照其上设置的启动设备来启动,启动设备上的grub程序开始引导linux.linux接管了cpu,cpu开始执行linux的核心映像代码,开始了linux的开启过程,即内核引导。最后,内核加载了init程序,至此,内核引导已完成。将进行init进程。
2,运行init
init进程是linux所有进程的起点。init首先读取配置文件/etc/inittab。接下来就inittab对init进程进行详细介绍:
初始化,
si::sysinit:/etc/rc.d/rc.sysinit,调用/etc/rc.d/rc.sysinit,此脚本主要完成一些系统初始化的工作,比如激活交换分区,检查磁盘,加载硬件模块等等。
具体级别对应的初始化
l5:5:wait:/etc/rc.d/rc 5,
表示以5为参数运行/etc/rc.d/rc5.d/目录下的所有rc启动脚本。这些文件实际都是一些连接文件,实际的rc启动脚本都在/etc/rc.d/init.d/目录下。/etc/rc.d/rc5.d/目录下的rc启动脚本通常是由K或S打头,由K打头的连接,则首先以stop为参数停止这些守护进程,然后在重新运行。这样就保证了init进程执行后,所有的相关守护进程都将重启。(用户可以通过chkconfig或setup中的"System Services"来自行设定每个运行级别中将运行那些守护进程)
建立终端
rc执行完后,基本系统环境设置好了,相关的守护进程也启动了。init接下来打开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
可见,2345都是以respawn来运行mingetty。
用户登录
Linux的账号验证程序是login,login接受从mingetty传来的用户名,进行分析。如果不是root,且有/etc/nologin文件,login将输出/etc/nologin文件中的内容,然后退出。
只有/etc/securetty中登记了的终端才允许root用户登录,若没有这个文件,root可以在任意终端上登录。
/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。
在分析完后,login将搜索/etc/passwd以及/etc/shadow来验证密码以及设置账户的其它信息。
login程序成功后,会向对应的终端在输出最近一次登录的信息(在/var/log/lastlog中有记录)。对于bash来说,系统首先寻找/etc/profile脚本文件,并执行它;然后如果用户的主目录中存在.bash_profile文件,就执行它。所有配置文件执行完毕后,各种环境变量也设置好了后,就会出现命令提示符。到此,整个启动过程就结束了。
3,正确关机
sysnc》shutdown》reboot》halt
sysnc:将内存里的内容写入磁盘。
shutdown -h 10 :十分钟后关机
shutdown -r 10:十分钟后重启