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