日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Linux操作系統(tǒng)引導過程及服務控制

作者:韓xuu 更新時間: 2022-08-13 編程語言

目錄

一、引導過程總覽

1.開機自檢

2.MBR引導

3.GRUB菜單

4.加載Linux內(nèi)核

5.init進程初始化

?二、Systemd服務控制

1.systemd服務控制的優(yōu)勢

2.systemd的核心與配置

3.service運行級別

4.設(shè)置service運行級別

?三、Systemctl 服務常用命令


一、引導過程總覽

1.開機自檢

????????檢測出第一個能夠引導系統(tǒng)的設(shè)備,比如硬盤或光驅(qū)。

????????服務器主機開機以后,將根據(jù)主板 BIOS 中的設(shè)置對 CPU(Central Processing Unit,中央處理器)、內(nèi)存、顯卡、鍵盤等設(shè)備進行初步檢測,檢測成功后根據(jù)預設(shè)的啟動順序移交系統(tǒng)控制權(quán),大多時候會移交給本機硬盤。?

2.MBR引導

????????運行放在MBR扇區(qū)里的啟動GRUB引導程序

????????當從本機硬盤中啟動系統(tǒng)時,首先根據(jù)硬盤第一個扇區(qū)中 MBR(Master Boot Record,主引導記錄)的設(shè)置,將系統(tǒng)控制權(quán)傳遞給包含操作系統(tǒng)引導文件的分區(qū);或者直接根據(jù)MBR 記錄中的引導信息調(diào)用啟動菜單(如 GRUB)。?

3.GRUB菜單

????????GRUB引導程序通過讀取GRUB配置文件 /boot/grub2/grub.cfg,來獲取內(nèi)核和鏡像文件系統(tǒng)的設(shè)置和路徑位置

????????對于 Linux 操作系統(tǒng)來說,GRUB(GRand Unified Bootloader,統(tǒng)一啟動加載器)是使用最為廣泛的多系統(tǒng)引導器程序。系統(tǒng)控制權(quán)傳遞給 GRUB 以后,將會顯示啟動菜單給用戶選擇,并根據(jù)所選項(或采用默認值)加載 Linux 內(nèi)核文件,然后將系統(tǒng)控制權(quán)轉(zhuǎn)交給內(nèi)核。

需要注意的是,CentOS 7 采用的是 GRUB2 啟動引導器。?

4.加載Linux內(nèi)核

????????把內(nèi)核和鏡像文件系統(tǒng)加載到內(nèi)存中

????????Linux 內(nèi)核是一個預先編譯好的特殊二進制文件,介于各種硬件資源與系統(tǒng)程序之間,負責資源分配與調(diào)度。內(nèi)核接過系統(tǒng)控制權(quán)以后,將完全掌控整個 Linux 操作系統(tǒng)的運行過程。在 CentOS 系統(tǒng)中,默認的內(nèi)核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。?

5.init進程初始化

????????加載硬件驅(qū)動程序,內(nèi)核把init進程加載到內(nèi)存中運行

????????為了完成進一步的系統(tǒng)引導過程,Linux內(nèi)核首先將系統(tǒng)中的“ /sbin/init ”程序加載到內(nèi)存中運行(運行中的程序稱為進程),init 進程負責完成一系列的系統(tǒng)初始化過程,最后等待用戶登錄。

?

?二、Systemd服務控制

1.systemd服務控制的優(yōu)勢

????????傳統(tǒng)sysv init 依賴于串行執(zhí)行 Shell 腳本啟動服務,導致效率低下,系統(tǒng)啟動速度較慢。

????????systemd 能夠?qū)⒏嗟姆者M程并行啟動,并且具有提供按需啟動服務的能力,使得啟動更少進程,從而提高系統(tǒng)啟動速度。

  • 系統(tǒng)引導時實現(xiàn)服務并行啟動
  • 按需啟動守護進程
  • 自動化的服務依賴關(guān)系管理
  • 同時采用socket式與D-Bus總線式激活服務
  • socket與服務程序分離
  • 向后兼容sysv init腳本使用systemctl 命令管理,systemctl命令固定不變,
  • 不可擴展,非由systemd啟動的服務,
  • systemctl無法與之通信和控制
  • 系統(tǒng)狀態(tài)快照

2.systemd的核心與配置

systemd 核心概念:unit

  • unit 表示不同類型的systemd對象,通過配置文件進行標識和配置;文件中主要包含了系統(tǒng)服務、監(jiān)聽 socket、保存的系統(tǒng)快照以及其它與init相關(guān)的信息。
  • systemd單元文件最初默認存放在/usr/lib/systemd/system目錄中,每當安裝新的軟件都會自動在這個目錄中添加一個配置文件。
  • systemctl 命令用于管理各種類型的systemd單元。

?各種類型的 unit

unit 配置文件存放位置

[root@localhost system]#ls /usr/lib/systemd/system
abrt-ccpp.service                        dev-hugepages.mount                    iscsiuio.socket                     plymouth-quit.service              selinux-policy-migrate-local-changes@.service  systemd-kexec.service
abrtd.service                            dev-mqueue.mount                       kdump.service                       plymouth-quit-wait.service         serial-getty@.service                          systemd-localed.service
abrt-oops.service                        dm-event.service                       kexec.target                        plymouth-read-write.service        shutdown.target                                systemd-logind.service
abrt-pstoreoops.service                  dm-event.socket                        kexec.target.wants                  plymouth-reboot.service            shutdown.target.wants                          systemd-machined.service
abrt-vmcore.service                      dmraid-activation.service              kmod-static-nodes.service           plymouth-start.service             sigpwr.target                                  systemd-machine-id-commit.service
abrt-xorg.service                        dnsmasq.service                        kpatch.service                      plymouth-switch-root.service       sleep.target                                   systemd-modules-load.service
accounts-daemon.service                  dracut-cmdline.service                 ksm.service                         polkit.service                     -.slice                                        systemd-nspawn@.service
alsa-restore.service                     dracut-initqueue.service               ksmtuned.service                    postfix.service                    slices.target                                  systemd-poweroff.service
alsa-state.service                       dracut-mount.service                   libstoragemgmt.service              poweroff.target                    smartcard.target                               systemd-quotacheck.service
anaconda-direct.service                  dracut-pre-mount.service               libvirtd.service                    poweroff.target.wants              smartd.service                                 systemd-random-se

?解讀 unit 配置文件

????????服務控制一般需要編寫 service 配置文件(這里以 httpd.service 文件為例)

//定義與Unit類型無關(guān)的通用選項;用于提 供unit的描述信息、unit行為及依賴關(guān)系等
[Unit]
Description=The Apache HTTP Server                          
After=network.target remote-fs.target nss-lookup.target                            
Documentation=man:httpd(8)
Documentation=man:apachectl(8)

//與特定類型相關(guān)的專用選項;此處為 Service類型
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
# We want systemd to give httpd some time to finish gracefully, but still want
# it to kill httpd after TimeoutStopSec if something went wrong during the
# graceful stop. Normally, Systemd sends SIGTERM signal right after the
# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
# httpd time to finish.
KillSignal=SIGCONT
PrivateTmp=true

//定義由“systemctl enable”以及“systemctl disable”命令在實現(xiàn)服務啟用或禁用時用到的一些選項
[Install]
WantedBy=multi-user.target

Unit段的常用選項:

Description:描述信息

After:定義unit的啟動次序,表示當前unit應該晚于哪些unit啟動,其功能與Before相反

Requires:依賴到的其它units,強依賴,被依賴的units無法激活時,當前unit也無法激活

Wants:依賴到的其它units,弱依賴

Conflicts:定義units間的沖突關(guān)系

Service段的常用選項:

Type:定義影響ExecStart及相關(guān)參數(shù)的功能的 unit進程啟動類型

EnvironmentFile:環(huán)境配置文件

ExecStart:指明啟動unit要運行命令或腳本的絕對路徑

ExecStartPreExecStart前運行

ExecStartPostExecStart后運行

ExecStop:指明停止unit要運行的命令或腳本

Restart:當設(shè)定 restart = 1?時,則當次daemon服務意外終止后,會再次自動啟動此服務

RestartSec: 設(shè)置在重啟服務前暫停多長時間,默認值是100毫秒(100ms)。如果未指定時間單位,那么將視為以秒為單位。 例如設(shè)為“20”等價于設(shè)為“20s”。

PrivateTmp:設(shè)定為yes時會再生成/tmp/systemd-private-UUID-NAME.service-XX/tmp/目錄

Install段的常用選項:

Alias:別名,可使用systemctl command Alias.service

RequiredBy:被哪些units所依賴,強依賴

WantedBy:被哪些units所依賴,弱依賴

Also:安裝本服務的時候還要安裝別的相關(guān)服務對于新創(chuàng)建的unit文件,或者修改了的unit文件,要通知systemd重載此配置文件,而后可以選擇重啟systemctl daemon-reload

3.service運行級別

0 系統(tǒng)停機模式——系統(tǒng)默認運行級別不能設(shè)置為0,否則不能正常啟動,機器關(guān)的;

1 單用戶模式——root權(quán)限,用于系統(tǒng)維護,禁止遠程登錄(只能通過實機進去),進入單用戶模式的時候root不需要密碼就可以登錄,所以在此模式下可以修改root密碼;

2 多用戶模式——沒有NFS和網(wǎng)絡(luò)支持;

3 完整的多用戶文本模式——有NFS和網(wǎng)絡(luò),登錄后進入控制臺命令行模式。

4 系統(tǒng)未使用——保留一般不用,在一些特殊情況下可以用它來做一些事情。例如在筆記本電池用盡時,可以切換到這個模式來做一些設(shè)置;

5 圖形化模式,登錄后進入圖形GUI模式,X windows系;

6 重啟模式,默認運行級別不能設(shè)為6,否則不能正常啟動;運行init6機器就會重啟。

各個級別的作用
0(poweroff.target):關(guān)機
1(rescue.target):單用戶模式
2、3、4(mulit-user.target):多用的文本界面
5(graphical.target):多用的圖形界面
6(reboot.target):重啟

4.設(shè)置service運行級別

[root@localhost system]# systemctl [選項] [運行級別unit.target]
??????????????????????????????????????????????????????get-default????????取得當前的target
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? set-default????????設(shè)置指定的target為默認的運行級別
??????????????????????????????????????????????????????isolate? ? ? ? ? ? ? ?在不重啟情況下切換到指定的運行級別?

[root@localhost system]# init [1-6]? ? ? ? ?重啟切換到指定的運行級別?

//查看當前運行級別
[root@localhost ~]#systemctl get-default 
graphical.target

//切換運行級別為3 multi-user.target
[root@localhost ~]#systemctl isolate multi-user.target 

//設(shè)置默認運行級別為5 graphical.target
[root@localhost ~]#systemctl set-default multi-user.target

?三、Systemctl 服務常用命令

效果 命令
啟動服務 systemctl start xxx.service
停止服務 systemctl stop xxx.service
重啟服務 systemctl restart xxx.service
重載服務 systemctl reload xxx.service
使某服務開機自啟 systemctl enable xxx.service
查看服務是否開機自啟 systemctl is-enable xxx.service
使某服務開機不自啟 systemctl disable?xxx.service
檢查服務狀態(tài)(服務詳細信息) systemctl status xxx.service
顯示所有已啟動的服務 systemctl list-units --type=service

原文鏈接:https://blog.csdn.net/weixin_58544496/article/details/126193420

欄目分類
最近更新