溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

CentOS6 啟動(dòng)流程是怎樣的

發(fā)布時(shí)間:2021-09-28 15:38:19 來(lái)源:億速云 閱讀:115 作者:柒染 欄目:系統(tǒng)運(yùn)維

CentOS6 啟動(dòng)流程是怎樣的,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

我們?cè)谑褂肔inux操作系統(tǒng)的時(shí)候,我們只需按下電源鍵,等待,然后輸入賬戶和密碼就可以使用Linux操作系統(tǒng)了。那么在按下電源到輸入賬號(hào)和密碼之前,操作系統(tǒng)都做了些什么?下面就來(lái)講述在這段時(shí)間發(fā)生的動(dòng)作。


一、Linux啟動(dòng)流程詳解

下圖就是啟動(dòng)流程的大致過(guò)程:

CentOS6 啟動(dòng)流程是怎樣的

二、POST加電自檢

POST(PowerOnSelfTest)首先對(duì)每一個(gè)設(shè)備進(jìn)行檢查。完成后會(huì)尋找存有引導(dǎo)記錄的設(shè)備,找到后讀入操作系統(tǒng)引導(dǎo)記錄,然后將系統(tǒng)控制權(quán)交給引導(dǎo)記錄,并由引導(dǎo)記錄來(lái)完成系統(tǒng)的順利啟動(dòng)。

三、MBR引導(dǎo)

MBR(Master Boot Record) MBR記錄一般是在磁盤 0 磁道 1 扇區(qū),共512個(gè)字節(jié)。前446個(gè)字節(jié)是BootLoder,后 4*16 的 64 個(gè)字節(jié)是存放分區(qū)信息的,*** 2 個(gè)字節(jié)是校驗(yàn)信息,一般是 5***A。

四、GRUB(GRand Unified Bootloader)、加載內(nèi)核

就是MBR中的前 446 個(gè)字節(jié),是BooTLoader的一種,它的作用是要選擇要啟動(dòng)的內(nèi)核。

1、GRUB程序的組成:

CentOS6 啟動(dòng)流程是怎樣的

主要是由device.map,menulst,stage1,stage2,以及一系列的stage1_5組成。對(duì)于這些部分我的理解是這樣:

  • device.map:存放的是內(nèi)核文件的根分區(qū)

  • menu.lis:是grub.conf的鏈接文件,但是這個(gè)名字我覺(jué)得更與它的功能接近,就是菜單列表。里賣弄設(shè)置了可以選擇的內(nèi)核菜單。存放于stage2中。

  • stage:用于grub引導(dǎo)程序過(guò)大,所以分2段引導(dǎo),***段存放在MBR中,第二段存放于內(nèi)核文件系統(tǒng)中,***段引導(dǎo)完成后可以找到第二段。 但是,第二段是存放于內(nèi)核文件系統(tǒng)中的,此時(shí)還沒(méi)有格式化文件系統(tǒng),如何可以訪問(wèn)到第二段的 menu.lst 呢??就需要借助于中間層 stage1_5,有它來(lái)協(xié)助 stage1 段來(lái)訪問(wèn) stage2 段。stage1_5通常位于 stage1 字段后的 63 個(gè)扇區(qū)。 由于stage2 在內(nèi)存中存放可以使用的文件系統(tǒng)不確定,所以這就是有多個(gè) stage1_5 的原因了。

2、grub.conf 文件參數(shù)意義

default=1    # 默認(rèn)啟動(dòng)的內(nèi)核title, 0 表示是***個(gè)  timeout=5    # 默認(rèn)等待時(shí)間  splashimage=(hd0,0)/grub/splash.xpm.gz    # 指定菜單的背景圖片的路徑。為xpm格式,采用gzip壓縮,只能為14bits色  hiddenmenu    # 隱藏菜單  title CentOS (2.6.32-358.el6.x86_64)    # 標(biāo)題名,用戶可自定義      root (hd0,0)    # 指定 grub 的根位置      # 指定 kernel 文件的位置,還要指出 root(系統(tǒng)啟動(dòng)后) 的位置,掛載方式 ro,這項(xiàng)很關(guān)鍵。      # 加載后會(huì)啟動(dòng) init 進(jìn)程。      kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM LANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet      # 在內(nèi)核啟動(dòng)過(guò)程中裝載根文件系統(tǒng)時(shí)有用      initrd /initramfs-2.6.32-358.el6.x86_64.img

initramfs-2.6.32-358.el6.x86_64.img 的本質(zhì)是????

# initramfs 是以 gzip 壓縮的 cpio 格式的文件。內(nèi)核啟動(dòng)時(shí)將他作為一個(gè)臨時(shí)的根文件系統(tǒng)。  # grub 的 stage2 將initrd加載到內(nèi)存里,讓后將其中的內(nèi)容釋放到內(nèi)容中,  # 內(nèi)核便去執(zhí)行init腳本,這時(shí)內(nèi)核將控制權(quán)交給了init文件處理。  # init 它也主要是加載各種存儲(chǔ)介質(zhì)相關(guān)的設(shè)備驅(qū)動(dòng)程序。當(dāng)所需的驅(qū)動(dòng)程序加載完后,  # 會(huì)創(chuàng)建一個(gè)根設(shè)備,然后將根文件系統(tǒng)rootfs以只讀的方式掛載。  # 這一步結(jié)束后,釋放未使用的內(nèi)存,轉(zhuǎn)換到真正的根文件系統(tǒng)上面去,同時(shí)運(yùn)行/sbin/init程序,  # 執(zhí)行系統(tǒng)的1號(hào)進(jìn)程。此后系統(tǒng)的控制權(quán)就全權(quán)交給/sbin/init進(jìn)程了。

CentOS6 啟動(dòng)流程是怎樣的

如何制作 initramfs 呢?

# 可以使用 dircut 命令,用法如下:  # 只有在 initramfs 文件損毀的時(shí)候會(huì)使用到  [root@server ~]# dracut /mnt/initramfs-`uname -r`.img `uname -r`  [root@server ~]# du -sh /mnt/initramfs-2.6.32-358.el6.x86_64.img   16M /mnt/initramfs-2.6.32-358.el6.x86_64.img  [root@server ~]# du -sh /boot/initramfs-2.6.32-358.el6.x86_64.img   16M /boot/initramfs-2.6.32-358.el6.x86_64.img  # 詳細(xì)介紹,可使用這個(gè)鏈接:https://zh.opensuse.org/index.php?title=SDB:Dracut&variant=zh-cn#.E5.90.AF.E7.94.A8_dracut_.E7.94.9F.E6.88.90.E7.9A.84_initramfs

3、grub的功能

1)提供菜單,并提供交互式接口

e: 進(jìn)入編輯模式

CentOS6 啟動(dòng)流程是怎樣的

2)選擇要啟動(dòng)的內(nèi)核或系統(tǒng)

允許傳遞引導(dǎo)參數(shù)給內(nèi)核

選擇界面可隱藏

# 可以自啟動(dòng)是通過(guò) grub 像內(nèi)核傳遞參數(shù)。  # 應(yīng)用之一是:修改 root 密碼(忘記密碼),使用 e 選項(xiàng),傳遞單用戶指令。

3)為編輯功能提供保護(hù)機(jī)制

啟用內(nèi)核文件

選擇運(yùn)行指定的內(nèi)核得先輸入密碼

傳遞參數(shù)

使用e命令得先輸入密碼

[root@server root]# grub-md5-crypt   Password:   Retype password:   $1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0  # 上面是生成的加密字符串  # 然后將信息加入到 grub.conf 文件中,格式如下:  password --md5 $1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0  # 當(dāng)然加入 grub.conf 文件的位置不同,加密效果也不一樣。  # 加入到 title 之前的話,會(huì)加密整個(gè)菜單。  # 加入到 title 指內(nèi)的話,會(huì)加密對(duì)應(yīng)的操作系統(tǒng)的入口。

4、安裝grub的方式

1)使用grub-install命令

# grub-install [--root-directory=/path/to/somewhere] DEVICE

2)grub交互是命令

CentOS6 啟動(dòng)流程是怎樣的

在這里我們自制一個(gè)精簡(jiǎn)grub,當(dāng)然啟動(dòng)的時(shí)候只啟動(dòng)一個(gè)bash就可以。示例是在 VMware 虛擬機(jī)下完成的。

***步:準(zhǔn)備好塊新磁盤,分 2 個(gè)區(qū)出來(lái)

CentOS6 啟動(dòng)流程是怎樣的

第二步:模擬啟動(dòng)時(shí)的boot目錄,和根目錄,并掛載。如下

[root@server ~]# df -H | tail -n 2  /dev/sdd1              518M    11M   481M   3% /mnt/boot  /dev/sdd2              2.2G    71M   2.0G   4% /mnt/sysroot

第三步:制作 grub,并生成 grub 的配置文件

制作grub

CentOS6 啟動(dòng)流程是怎樣的

拷貝內(nèi)核文件和 initramfs 文件到 /mnt/boot 目錄下,并生成 grub.conf 文件

[root@server ~]# cp /boot/vmlinuz-2.6.32-358.el6.x86_64 /mnt/boot/vmlinuz  [root@server ~]# cp /boot/initramfs-2.6.32-358.el6.x86_64.img /mnt/boot/initramfs.img  [root@server ~]# ll /mnt/boot/  total 20106  drwxr-xr-x 2 root root     1024 Jul 24 20:58 grub  -rw-r--r-- 1 root root 16542269 Jul 24 21:06 initramfs.img  -rwxr-xr-x 1 root root  4043888 Jul 24 21:05 vmlinuz  # 生成的 grub.conf 文件  [root@server ~]# cat /mnt/boot/grub/grub.conf  default=0 timeout=10 title Mini Linux      root (hd0,0)       kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash      initrd /initramfs.img

第四步: 生成根文件系統(tǒng)

CentOS6 啟動(dòng)流程是怎樣的

第五步:拷貝使用命令和庫(kù)到對(duì)應(yīng)根目錄下

CentOS6 啟動(dòng)流程是怎樣的

將剛才的磁盤鏡像作為另一個(gè)虛擬機(jī)的啟動(dòng)盤。

CentOS6 啟動(dòng)流程是怎樣的

CentOS6 啟動(dòng)流程是怎樣的

五、啟動(dòng) init 進(jìn)程

init 進(jìn)程是系統(tǒng)啟動(dòng)的***個(gè)進(jìn)程。其他進(jìn)程都是有此進(jìn)程控制fork出來(lái)的,也就是說(shuō),init是其他進(jìn)程的“祖先”,PID=1。當(dāng)然,PID=0進(jìn)程我們稱為空閑進(jìn)程是屬于內(nèi)核的。

init啟動(dòng)后所做的事情:

1、讀取/etc/inittab來(lái)讀取默認(rèn)級(jí)別 假設(shè):讀取到的默認(rèn)級(jí)別是 3

/etc/init/*.conf

# 啟動(dòng)級(jí)別:(runlevel)  # 0:關(guān)機(jī)  # 1:?jiǎn)斡脩裟J?nbsp; # 2:多用戶模式,不支持 NFS 功能  # 3:完全多用戶模式,支持文本接口  # 4:預(yù)留模式  # 5:完全多用戶模式,支持圖形模式  # 6:關(guān)機(jī)  # /etc/inittab文件格式如下,這是遵循了CentOS5的風(fēng)格。  id:3:initdefault:

2、執(zhí)行初始化系統(tǒng)腳本 /etc/rc.d/rc.sysinit 來(lái)初始化腳本

這個(gè)大家有機(jī)會(huì)可以讀讀,腳本主要的作用如下:

# 獲取網(wǎng)絡(luò)環(huán)境與主機(jī)類型。首先會(huì)讀取網(wǎng)絡(luò)環(huán)境設(shè)置文件"/etc/sysconfig/network",獲取主機(jī)名稱與默認(rèn)網(wǎng)關(guān)等網(wǎng)絡(luò)環(huán)境。  # 答應(yīng)文本歡迎信息。  # 掛載/etc/fstab文件中定義的其它文件系統(tǒng)。  # 激活swap  # 檢測(cè)根文件系統(tǒng),并以讀寫方式重新掛載  # 決定是否啟動(dòng)SELinux和udev。  # 接口設(shè)備的檢測(cè)與即插即用(pnp)參數(shù)的測(cè)試。  # 用戶自定義模塊的加載。用戶可以再"/etc/sysconfig/modules/*.modules"加入自定義的模塊,此時(shí)會(huì)加載到系統(tǒng)中。  # 加載核心的相關(guān)設(shè)置。按"/etc/sysctl.conf"這個(gè)文件的設(shè)置值配置功能。  # 設(shè)置系統(tǒng)時(shí)間(clock)。  # 設(shè)置終端的控制臺(tái)的字形。  # 設(shè)置raid及LVM等硬盤功能。  # 以方式查看檢驗(yàn)磁盤文件系統(tǒng)。  # 進(jìn)行磁盤配額quota的轉(zhuǎn)換。  # 重新以讀取模式載入系統(tǒng)磁盤。  # 啟動(dòng)quota功能。  # 啟動(dòng)系統(tǒng)隨機(jī)數(shù)設(shè)備(產(chǎn)生隨機(jī)數(shù)功能)。  # 清楚啟動(dòng)過(guò)程中的臨時(shí)文件。  # 將啟動(dòng)信息加載到"/var/log/dmesg"文件中。

3、然后執(zhí)行 /etc/rc.d/rc 腳本

此腳本運(yùn)行的時(shí)候此腳本的時(shí)候,會(huì)讀取/etc/rc.d/rc3.d/下的所有腳本,來(lái)控制系統(tǒng)啟動(dòng)的時(shí)候啟動(dòng)或者關(guān)閉那些服務(wù)

CentOS6 啟動(dòng)流程是怎樣的

# 這里面的腳本大致分為 2 類,以 S 開頭的和以 K 開頭的腳本。  # S 代表開機(jī)時(shí)啟動(dòng)的,K 表示開機(jī)時(shí)不啟動(dòng)。  # 每個(gè)文件的命名格式,例如:S01sysstat S 開機(jī)啟動(dòng) 01 啟動(dòng)次序 sysstat 啟動(dòng)腳本名  # 啟動(dòng)的定義是在每個(gè)腳本中定義的:例如  # # chkconfig: - 85 15  # 默認(rèn)級(jí)別 啟動(dòng)次序 不啟動(dòng)次序

這些腳本是否開機(jī)自啟動(dòng),可由 chkconfig 命令來(lái)管理。

# 常用選項(xiàng):  # chkconfig --add SRV_SCRIPT 可以將自己寫的一些腳本,讓此命令統(tǒng)一管理。例如:chkconfig --add httpd  # chkconfig --del SRV_SCRIPT 將服務(wù)刪除,意思就是服務(wù)不由chkconfig這種機(jī)制來(lái)管理  # chkconfig SRV_SCRIPT {on|off} 設(shè)置服務(wù)開機(jī)是否自啟動(dòng),默認(rèn)管理的級(jí)別是2345.  # --level 2345 等,指定默認(rèn)級(jí)別,可以與其他選項(xiàng)一起使用

4、執(zhí)行/etc/rc.d/rc.local腳本,此腳本是啟動(dòng)過(guò)程中***啟動(dòng)的一個(gè)腳本。

***會(huì)執(zhí)行 /bin/login 登錄用戶。至此系統(tǒng)啟動(dòng)過(guò)程完成。


看完上述內(nèi)容,你們掌握CentOS6 啟動(dòng)流程是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI