首頁 >運維 >CentOS >CentOS系統啟動流程是什麼

CentOS系統啟動流程是什麼

WJ
WJ原創
2020-06-03 15:29:491899瀏覽

CentOS系統啟動流程是什麼

CentOS系統啟動流程是什麼?

當我們按下開機鍵後,系統背後的秘密我們是否了解呢?這裡,我帶大家去探索一下linux系統開機背後的秘密。

CentOS系統啟動流程是什麼

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

5.init初始化階段

                                   ,會運行init程序,init進程起來後,系統啟動的控制權移交給init進程

/sbin/init進程是所有進程的父進程,當init起來之後,它首先會讀取配置文件/etc/inittab,進行以下工作:

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 

    每行定義一個action以及與之對應的process

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教學

以上是CentOS系統啟動流程是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn