Linux引导流程解析 

 1、系统引导流程 

 固件firmware (CMOS/BIOS) 
 POST加电自检 

 自举程序BootLoader (GRUB) 
 载入内核 

 载入内核Kernel 
 驱动硬件 

 启动进程init 

 读取执行配置文件/etc/inittab 





 常用的固件设置 

 安全设置 

 可引导介质列表 

 可引导介质搜索顺序 

 电源管理 

 启动细节显示 



 Linux中如果一个进程的父进程结束,而该进程由于某种原因没有结束,则被系统发现后自动将该进程指向init进程。所以理论上init进程是所有进程的父进程。 

 如果子进程结束,而父进程不知。则该子进程编程僵尸进程。 



 id:run-levels:action:process 

 grep -v 表示排除文件中包含何种字符 

 例如grep -v "^#" /etc/inittab |  more 

 分页显示,inittab中行首有#的不显示 



 id:标识符,一般为两位字母或数字 
 可理解为行为的编号 

 run-levels:指定运行级别,可指定多个 
 可理解为方式 

 action:指定运行状态 
 可理解为在哪里 

 process:指定要运行的脚本/命令 
 可理解为行为 

 前面三项都是为process做设定 



 脚本/etc/rc.d/rc.sysinit 

 环境变量的加载,生成日志信息等都是通过这个脚本来进行 

 如果希望某个命令每次开机都执行,可以把它加到/etc/rc.d/rc/sysinit文件的末尾,每个运行级别都会执行 



 脚本/etc/rc.d/rc 

 对应每个运行级别需要启动的服务。完成后续的启动。 

 由initdefault决定 



 目录/erc/rc.d/rcn.d 

 [root@lovelock frost]# ls -l /etc/rc.d/rc3.d 

 total 0 

 lrwxrwxrwx. 1 root root 16 Aug  2 22:17 K01smartd -> ../init.d/smartd 

 lrwxrwxrwx. 1 root root 17 Aug  2 22:12 K02oddjobd -> ../init.d/oddjobd 

 lrwxrwxrwx. 1 root root 17 Aug  2 22:19 K05wdaemon -> ../init.d/wdaemon 

 lrwxrwxrwx. 1 root root 16 Aug  2 23:04 K10psacct -> ../init.d/psacct 

 lrwxrwxrwx. 1 root root 19 Aug  2 22:13 K10saslauthd -> ../init.d/saslauthd 

 lrwxrwxrwx. 1 root root 15 Aug  2 22:12 K15httpd -> ../init.d/httpd 

 lrwxrwxrwx. 1 root root 24 Aug  2 22:17 K30spice-vdagentd -> ../init.d/spice-vdagentd 

 例如:K15httpd 

 S-start 
 启动项 

 K-kill 
 非启动项 

 数字代表优先顺序,小的先启动 

 脚本名称httpd 





 复习: 

 firmware物理硬件加电自检 

| 

  Bootloader——grub 

| 

        载入内核kernel 

| 

               init 

| 

          /etc/inittab 

| 

           initdefault 
 判断系统缺省的运行级别 

| 

      /etc/rc.d/rc.sysinit 

| 

         /etc/rc.d/rc 

| 

      /etc/rc.d/rcN.d 
 N=0~6 

| 

          username 

| 

          password 

 两个action,一个wait表示这个命令启动完之后才继续开启其他命令 

 如果一个命令是开机自启的,那么它的action就是wait 

 powerfail:当出现电源错误时执行process指定的命令,不等待其结束 

 powerokwait:当店员恢复时执行process指定的命令 

 respawn:一旦process指定的命令终止,便重新运行该命令 







 本地终端tty在运行级别2345都可以用到,可以用来切换 

 设置自启动程序: 

 ln -s 

 chkconfig 

 ntsysv 
 只能更改系统默认安装的命令 



 dmesg查看硬件有没有被内核识别 

 grep sshd /var/log/messages 



 menu.lst 

 default=0 
 双系统启动时默认进入的系统 

 timeout=5 
 进入系统前等待时间,5s,没有太大意义 

 splashimage=(hd0,0)/grub/splash.xpm.gz 
 (hd0,0)代表第一个硬盘,是grub的特殊的表示方法,分辨率是640*480,色深14 

 title可以随便改 

 root定义所有的启动文件所在目录,即/boot 

 kernel后面是内核所在位置 ro表示内核载入时是只读的 

 initrd 载入镜像文件,系统引导过程中必要的镜像文件设置 





 案例:root密码忘记 

 进入单用户模式重新设置root密码,开机进入grub界面,按e进入编辑模式,选中kernel行,再次按e键,在新的界面的最后一行输入1或s即可进入单用户模式 

 e:编辑当前的启动项菜单 
 edit 

 c:进入grub的命令行方式 
 command 

 b:启动当前的菜单项 
 boot 

 d:删除当前行 
 delete 



 任何的操作系统如果能让人坐在电脑前都是不安全的,都可以破解。所以服务器是放在机房的。 

 grub引导流程其实很简单,如果能很系统的学习一下网上的那些问题就都不会存在。 

 grub设置密码,加密 

 #grub-md5-crypt 

 或者grub 

 grub>md5crypt 

 如果重要的系统文件丢失就可以用光盘进入修复模式