linux 引导流程(一)

引导流程

1. 固件 firmware(CMOS/BIOS) -> POST 加电自检

固件时钟和软件时钟的同步

date 查看软件时钟

hwclock 查看固件时钟

hwclock --hctosys 通过硬件时钟去修改软件时钟

hwclock --systohc 通过软件时钟去修改硬件时钟

hwclock --set --date="9/22/96 16:45:05"

date 121511302012.38修改软件时间

2. Master boot record MBR 主引导记录 0柱面0磁头1扇区,载入自启动程序

bootLader 自启动程序

3. GRUB 自举程序 -> 载入内核 

GRUB vi /etc/grub.conf 查看自举配置文件

4. Kernel 内核 -> 驱动硬件 

5. 启动进程init

init启动后,读取inittab文件

init 的PID 永远都是1

PID为0的进程的是内核调度器

linux 运行级别

0 关机 shutdown

1 单用户模式 Single user mode,没有图像界面,只能root登陆

2 没有NFS服务 network file server 字符界面的运行级别,没有图像界面

3 有NFS服务 字符界面的运行级别,没有图像界面

4 自定义运行级别

5 系统缺省的运行级别 X11  图形化的多用户模式

6 重启 reboot

runlevel 查看当前运行级别

init[0123456Ss] 或 telinit[0123456Ss] 去换运行级别 demo: init 1

grep -v '^#' 排除于#开头的行

man 可以查看系统命令帮助和系统配置文件的帮助信息

inittab 文件解析

所有的条目采用的格式都是 id:run-levels:action:process

id: 标示符,一般为2位字母或数字

run-levels:指定运行级别,可以指定多个

action: 指定运行状态

process:指定要运行的脚本/命令

action常用取值

initdefault: 指定系统缺省启动的运行级别

sysinit:系统启动执行process中指定的命令

wait: 执行process中指定的命令,并等其结束在运行其他命令

once: 执行process中指定命令,不等待其结束

ctrlaltdel: 按下Ctrl+Alt+ Del执行process指定的命令

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

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

powerokwait: 当电源恢复时执行process指定的命令

在/etc/rc.d/rc.sysinit下的shell脚本开机就会运行

/etc/rc.d/rc脚本执行相应运行级别目录中的服务程序,完成相应运行级别初始化设置

/etc/rc.d目录下有7个服务启动shell脚本 rc0.d 到 rc6.d,在开机时,系统设置为缺省的运行级别时,它就会运行运行级别对应的服务启动shell脚本来完成系统的后续引导

rc3.d下面有2种类型的文件 

S12syslog

S开头 Start 表示要开启问服务

K开头 Kill 表示要不开启的服务

第二个是数字,数字越小,越优秀启动,数字相同,这安装定义脚本的优先顺序执行

第三个是定义脚本的名称

手动开启和关闭服务

/etc/rc.d/init.d目录下

demo: /etc/rc.d/init.d sshd restart 重启sshd服务

引导流程大致步骤

firmware

  |

BootLoader

  |

Kernel

  |

init进程

  |

/etc/inittab

  |

initdefault

  |

/etc/re.d/rc.sysinit

  |

/etc/rc.d/rc

  |

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

  |

username/password

设置自启动程序

ln -s 设置软连接 ln -s 源文件 软链接目录

chkconfig 查看自启动程序

chkconfig --list name

chkconfig --add name

chkconfig --levels 123 sshd off 把123运行级别的sshd服务关闭

ntsysv 更改当前运行级别的自启动程序

ntsysv --level 3 将显示出指定运行级别的所以自启动程序,并可以修改

dmesg 查看系统启动的所有信息

相关推荐