(转)CentOS 7系统详细开机启动流程和关机流程
生活随笔
收集整理的這篇文章主要介紹了
(转)CentOS 7系统详细开机启动流程和关机流程
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
CentOS 7系統(tǒng)詳細(xì)開(kāi)機(jī)啟動(dòng)流程和關(guān)機(jī)流程
原文:http://blog.csdn.net/yuesichiu/article/details/51350654
名稱
bootup - 系統(tǒng)啟動(dòng)流程描述
在系統(tǒng)啟動(dòng)過(guò)程中要涉及多個(gè)不同的組件。按下開(kāi)機(jī)按鈕后,首先BIOS/UEFI做最基本的硬件自檢與初始化,然后加載預(yù)設(shè)/手動(dòng)選擇的磁盤(pán)/網(wǎng)絡(luò)上的引導(dǎo)加載器(例如GRUB2),引導(dǎo)加載器進(jìn)一步從磁盤(pán)/網(wǎng)絡(luò)上加載操作系統(tǒng)內(nèi)核(例如Linux)。對(duì)于Linux來(lái)說(shuō),內(nèi)核將會(huì)(可選的)解壓一個(gè)initrd(initial RAM disk)鏡像(可以用dracut類的工具生成),并執(zhí)行由"rdinit="內(nèi)核引導(dǎo)參數(shù)指定的init程序(例如systemd)以尋找并掛載根文件系統(tǒng)。 完成根文件系統(tǒng)的掛載之后,內(nèi)核啟動(dòng)由"init="內(nèi)核引導(dǎo)參數(shù)指定的init程序(例如systemd)以接管系統(tǒng)的控制權(quán)。該init程序?qū)?huì)負(fù)責(zé)檢測(cè)所有其他的硬件設(shè)備、掛載必要的文件系統(tǒng)、啟動(dòng)所有必要的服務(wù),等等。關(guān)機(jī)時(shí),init程序?qū)?huì)停止所有服務(wù)、卸載所有文件系統(tǒng)、(可選的)返回initrd環(huán)境卸載根文件系統(tǒng),最后關(guān)閉電源。常規(guī)啟動(dòng)流程
當(dāng)成功掛載了"root="內(nèi)核引導(dǎo)參數(shù)指定的根文件系統(tǒng)之后,內(nèi)核將啟動(dòng)由"init="內(nèi)核引導(dǎo)參數(shù)指定的init程序,從這個(gè)時(shí)間點(diǎn)開(kāi)始,即進(jìn)入了"常規(guī)啟動(dòng)流程":檢測(cè)硬件設(shè)備并加載驅(qū)動(dòng)、掛載必要的文件系統(tǒng)、啟動(dòng)所有必要的服務(wù),等等。對(duì)于systemd系統(tǒng)來(lái)說(shuō),上述"init程序"就是systemd進(jìn)程,而整個(gè)"常規(guī)啟動(dòng)流程"也以幾個(gè)特殊的 target 單元(詳見(jiàn) )作為節(jié)點(diǎn),被劃分為幾個(gè)階段性步驟。在每個(gè)階段性步驟內(nèi)部,任務(wù)是高度并行的,所以無(wú)法準(zhǔn)確預(yù)測(cè)其中的單元的順序,但是不同階段之間的先后順序總是固定的。當(dāng)啟動(dòng)系統(tǒng)時(shí),systemd 將會(huì)以 default.target 為啟動(dòng)目標(biāo),借助單元之間環(huán)環(huán)相扣的依賴關(guān)系,即可完成"常規(guī)啟動(dòng)流程"。通常,default.target 只是一個(gè)指向 graphical.target(圖形界面) 或 multi-user.target(文本控制臺(tái)) 的軟連接。為了強(qiáng)制啟動(dòng)流程的規(guī)范性以及提高單元的并行性,預(yù)先定義了一些具有特定含義的 target 單元。下面的圖表解釋了這些具有特定含義的 target 單元之間的依賴關(guān)系以及各自在啟動(dòng)流程中的位置。圖中的箭頭表示了單元之間的依賴關(guān)系與先后順序,整個(gè)圖表按照自上而下的時(shí)間順序執(zhí)行。local-fs-pre.target|v(各個(gè) mounts 與 (各個(gè) swap (各個(gè)加密塊設(shè)備fsck services) devices) devices) (各個(gè)底層服務(wù) (各個(gè)底層API虛擬| | | services: udevd, 文件系統(tǒng) mounts:v v v tmpfiles, random mqueue, configfs,local-fs.target swap.target cryptsetup.target seed, sysctl ...) debugfs ...)| | | | |\__________________|_________________ | ___________________|____________________/\|/vsysinit.target|____________________________________/|\________________________________________/ | | | \| | | | |v v | v v(各個(gè) timers) (各個(gè) paths) | (各個(gè) sockets) rescue.service| | | | |v v | v vtimers.target paths.target | sockets.target rescue.target| | | |v \_________________ | ___________________/. \|/. . . . . . . . . . . . . . . . . . . vbasic.target|____________________________________/| emergency.service/ | | || | | vv v v emergency.targetdisplay- (圖形界面所必須 (各個(gè)系統(tǒng)服務(wù))manager.service 的各個(gè)系統(tǒng)服務(wù)) || | v| | multi-user.target| | |\_________________ | _________________/\|/vgraphical.target用粗體下劃線標(biāo)識(shí)的目標(biāo)單元經(jīng)常被用作啟動(dòng)目標(biāo)。有兩種方法可以指定啟動(dòng)目標(biāo):(1)使用 systemd.unit= 內(nèi)核命令行參數(shù)(參見(jiàn)systemd手冊(cè));(2)使用 default.target 軟連接。因?yàn)?timers.target 以異步方式包含在 basic.target 中,所以 timer 單元可以依賴于在 basic.target 之后才啟動(dòng)的服務(wù)。initrd 啟動(dòng)流程
在initrd內(nèi)部,也可以將 systemd 用作init程序(由"rdinit="內(nèi)核引導(dǎo)參數(shù)指定),此時(shí) initrd.target 將是默認(rèn)目標(biāo)。initrd內(nèi)部啟動(dòng)流程的上半部分與前一小節(jié) basic.target 之前的部分完全相同,隨后的啟動(dòng)流程將如下圖所示。如果成功的將根文件系統(tǒng)掛載到 /sysroot 目錄,那么 sysroot.mount 單元將被激活,然后進(jìn)一步激活 initrd-root-fs.target 目標(biāo)。initrd-parse-etc.service 將會(huì)分析 /sysroot/etc/fstab 文件以掛載 /usr (若需要)與帶有 x-initrd.mount 標(biāo)記的掛載點(diǎn)。這些掛載點(diǎn)都將被掛載到 /sysroot 之下,然后流程到達(dá) initrd-fs.target 目標(biāo)。再接下來(lái) initrd-cleanup.service 將會(huì)使用/usr/bin/systemctl --no-block isolate initrd-switch-root.target命令啟動(dòng) initrd-switch-root.target 目標(biāo)。因?yàn)?isolate 表示立即停止所有在新的目標(biāo)單元中不需要的進(jìn)程,所以此動(dòng)作實(shí)際上是為接下來(lái)切換根目錄做預(yù)先的準(zhǔn)備(也就是清理環(huán)境)。最后,激活 initrd-switch-root.service 服務(wù),將系統(tǒng)的根目錄切換至 /sysroot 目錄。(之前的流程與上一小節(jié)完全相同):vbasic.target| emergency.service______________________/| |/ | v| sysroot.mount emergency.target| || v| initrd-root-fs.target| || vv initrd-parse-etc.service(各個(gè)自定義的 |initrd services) v| (sysroot-usr.mount 以及| fstab 中帶有 x-initrd.mount| 標(biāo)記的各個(gè)掛載點(diǎn))| || v| initrd-fs.target\______________________ |\|vinitrd.target|vinitrd-cleanup.service(使用 isolates 啟動(dòng) initrd-switch-root.target)|v______________________/|/ v| initrd-udevadm-cleanup-db.servicev |(各個(gè)自定義的 |initrd services) |\______________________ |\|vinitrd-switch-root.target|vinitrd-switch-root.service|v切換到主機(jī)上的操作系統(tǒng)關(guān)機(jī)流程
systemd 系統(tǒng)在關(guān)機(jī)時(shí)同樣遵循固定的流程,具體如下圖所示:(與所有系統(tǒng)服務(wù)互斥) (與所有文件系統(tǒng) mounts, swaps, cryptsetup devices 互斥)| |v vshutdown.target umount.target| |\______________________ _____________/\ /v(各個(gè)底層 services)|vfinal.target|_____________________________________/ \_________________________________/ | | \| | | |v v v vsystemd-reboot.service systemd-poweroff.service systemd-halt.service systemd-kexec.service| | | |v v v vreboot.target poweroff.target halt.target kexec.target用粗體下劃線標(biāo)識(shí)的目標(biāo)單元經(jīng)常被用作關(guān)機(jī)目標(biāo)。轉(zhuǎn)載于:https://www.cnblogs.com/liujiacai/p/8306784.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的(转)CentOS 7系统详细开机启动流程和关机流程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 查询数据库表名,数据表信息,MySQL
- 下一篇: java信息管理系统总结_java实现科