CentOS系統啟動流程是什麼?
當我們按下開機鍵後,系統背後的秘密我們是否了解呢?這裡,我帶大家去探索一下linux系統開機背後的秘密。
1.加電自我檢測
主機板接上電源後,系統首先由POST程式對內部各個設備進行檢查,自檢中如發現有錯誤,將按兩種情況處理:對於嚴重故障(致命性故障)則停機,此時由於各種初始化操作還沒完成,不能給出任何提示或信號;對於非嚴重故障則給予提示或聲音警報訊號,等待使用者處理。
2.BIOS啟動開機階段
自我檢測通過之後,依序找出各引導設備,第一個有引導程式的設備即為本次啟動要用到的設備。一般電腦是按"F2"或"Del"鍵等等進入BIOS,在裡面我們可以調整硬碟的啟動順序。
找到第一個有開機程式的裝置後,BIOS會找到裝置中的MBR,讀取其中的Bootloader
3.GRUP開機階段
這時候就可以看到我們的Centos系統了,但一般都不需要操作,會自動啟動系統。其實我們也可以自己手動啟動系統的
3.1 手動在grub命令列介面啟動系統:
grub> root (hd#,#) grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE grub> initrd /initramfs-VERSION-RELEASE.img grub> boot
3.2 grub的命令列介面:
e: 编辑模式,用于编辑菜单; c: 命令模式,交互式接口; help: 获取帮助列表 help KEYWORD: 详细帮助信息 find (hd#,#)/PATH/TO/SOMEFILE: root (hd#,#) 设定grup的根设备 kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数; 例如:init=/path/to/init, selinux=0 initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk; boot: 引导启动选定的内核;
3.3 設定檔: /boot/grub/grub.conf
default=#: 设定默认启动的菜单项;落单项(title)编号从0开始; timeout=#:指定菜单项等待选项选择的时长; splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径; hiddenmenu:隐藏菜单; password [--md5] STRING: 菜单编辑认证; title TITLE:定义菜单项“标题”, 可出现多次;用来引导多个内核或者操作系统 root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”; kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核 initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件; password [--md5] STRING: 启动选定的内核或操作系统时进行认证
4.載入核心階段
核心會自身初始化:探測可識別到的所有硬體設備;載入硬體驅動程式;(有可能會藉助ramdisk載入驅動程式)以唯讀方式掛載根檔案系統;執行使用者空間的第一個應用程式:/sbin/init
1.执行系统初始化脚本(/etc/rc.d/rc.sysinit),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,到此系统基本算运行起来了,后面需要进行运行级别的确定及相应服务的启动; 2.确定启动后进入的运行级别; 3.执行/etc/rc.d/rc,该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rcn.d(n=0~6)目录下,所有的文件均链接至/etc/init.d下的相应文件。 4.有关key sequence的设置 5.有关UPS的脚本定义 6.启动虚拟终端/sbin/mingetty 7.在运行级别5上运行X設定檔:
/etc/inittab
id:runlevels:action:process id:一个任务的标识符; runlevels:在哪些级别启动此任务;#,###,可以为空,表示所有级别; action:在什么条件下启动此任务; process:任务;(脚本或程序)
action: wait:等待切换至此任务所在的级别时执行一次; respawn:一旦此任务终止,就自动重新启动之; initdefault:设定默认运行级别;此时,process省略; sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本;K*:要停止的服務;K##*,優先級,數字越小,越是優先關閉;依賴的服務先關閉,而後關閉被依賴的;S*:要啟動的服務;S##*,優先級,數字越小,越是優先啟動;被依賴的服務先啟動,而依賴的服務後啟動;chkconfig指令:管控/etc/init .d/每個服務腳本在各層級下的啟動或關閉狀態;
查看:chkconfig --list [name] 添加:chkconfig --add name 删除:chkconfig --del name修改指定的連結類型:
chkconfig [--level LEVELS] name <on|off|reset> --level LEVELS:指定要控制的级别;默认为2345; init命令: 级别切换:init # 级别查看:who -r相關參考:
以上是CentOS系統啟動流程是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!