前言
最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪實作環境
RunLevel 啟動模式等級
談到 CentOS Linux 的 RunLevel 啟動模式等級,便要先了解一下整個 CentOS 開機過程。透過下列的開機流程說明,便會了解到在 RunLevel 啟動模式,為何能夠掌控系統後半段開機階段的相關服務啟動及關閉。下列開機流程是以安裝於 x86 硬體上的 CentOS 系統進行說明:- 硬體伺服器 BIOS(INT 13H / EFI) 開機時會檢查連接於伺服器上的儲存裝置,並且讀取 BIOS 設定中開機順序中,第一顆主硬碟的 MBR(Master Boot Record) 開機磁區中最前面的 512 byte 的磁碟空間來載入開機管理程式,例如 GRUB、LILO…等。
- 初始階段開機管理程式會載入記憶體並從 /boot 掛載點內啟動下一階段開機管理程式,舉例來說 GRUB 開機管理程式便是載入 /boot/efi/EFI/redhat/grub.conf 設定檔內容中的 initramfs-2.6.32-642.el6.x86_64.img 映像檔。
- 這個階段中會將系統核心(Kernel),以及必需的系統模組(Module) 載入至記憶體內並且掛載於 root 分割區,此時也同步釋放未使用到的記憶體。請注意此時 root 分割區為唯讀狀態。
- 當核心載入完畢,執行完硬體偵測及相關驅動程式載入後,接著便會將開機過程的控制權轉交給系統第一隻執行程式 /sbin/init 來準備設定使用者環境。
- /sbin/init 程式將透過 /etc/inittab 設定檔來為系統載入適當的 RunLevel 啟動等級及相關設定,例如設定為 RunLevel 5 則會載入 /etc/rc.d/rc5.d 下所有以 「S」開頭(S 表示 Start、K 表示 Kill)的服務如 S08iptables 載入 IPTables 防火牆設定、S10network 載入網路設定。
- 接著將 /etc/fstab 系統分割區設定檔內所條列的掛載點一一掛載至檔案系統,最後則是執行登入管理準備作業例如 載入 tty 1 ~ 6,至此系統開機程序完畢。
RunLevel(SysV init)啟動模式等級可以分為 7 種等級分別是 0 ~ 6,而這 7 個數字所分別代表的意義如下:
- 0(halt):系統關機,若您將 RunLevel 設為此模式,則會發現當開機程式完成後系統就直接關機。
- 1(Single user mode):單人模式,通常在系統發生問題需要維護時才會進入此一模式。
- 2(Multiuser without NFS):多人模式但沒有支援 NFS 網路功能,通常用於多人多工但不需要網路功能時,才會進入此模式。
- 3(Full multiuser mode):多人文字模式,此模式為不需要進入視窗模式,並且具備完整網路功能的管理者所使用的模式。
- 4(unused):尚未使用,使用者可以自行定義。
- 5(X11):多人圖形模式,此模式為習慣使用視窗模式,並且具備完整網路功能的管理者所使用的模式。
- 6(reboot):重新啟動,若您將 RunLevel 設為此模式則會發現當開機程式完成後,系統就直接重新啟動。
本文實作環境,我們採用「Minimal Install」,因此系統預設使用的 RunLevel 便為 3 也就是文字模式(Text mode),倘若採用 Minimal Desktop的話預設便會採用 RunLevel 5 也就是圖形模式(GUI mode),可以透過修改 「/etc/inittab」設定檔內容來達成。
# grep id: /etc/inittab
id:3:initdefault:
那要如何得知目前所在的 RunLevel 啟動模式等級中,哪些服務是啟用的哪些是關閉的呢? 並且又該如何啟用某個服務或關閉某個服務呢? 要達成上述目的有三個指令可以達成分別是 chkconfig、ntsysv、system-config-services詳細差異及說明如下:
- chkconfig:此指令可以條列出指定的服務在每個 RunLevel 中的啟用或關閉狀態,您可以使用此指令將服務在某個 RunLevel 進行啟用及關閉的狀態,或者搭配參數 on / off 來一次將該服務在 RunLevel 2 ~ 5 進行啟用及關閉的狀態。
- ntsysv:此指令會開啟互動視窗,您只要將該服務「勾選」或取消勾選便是將該服務進行啟用或關閉,而該服務的啟用及關閉只會影響您目前所處的 RunLevel 啟動模式等級,例如 您在文字模式(RunLevel 3) 將 smartd 服務關閉則表示該服務只在 RunLevel 3 時不啟動,但在圖形模式(RunLevel 5) 時該服務仍然會啟動。
- system-config-services:請注意此指令僅能在圖形模式下執行,透過圖形管理介面您可以輕鬆對該服務進行 啟動(Start)、停止(Stop)、重新啟動(Restart) 等動作,若是勾選該服務則表示該服務在 RunLevel 5 為啟用狀態。
下列操作為透過 chkconfig 指令,當系統啟動於 RunLevel 3啟動模式,查詢系統將會自動啟動哪些服務。同時,如何透過 chkconfig 指令查詢及針對單一服務進行 RunLevel 啟動模式等級的啟用及關閉。
# chkconfig --list |grep 3:on
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
hv_fcopy_daemon 0:off 1:off 2:off 3:on 4:off 5:on 6:off
hv_kvp_daemon 0:off 1:off 2:off 3:on 4:off 5:on 6:off
hv_vss_daemon 0:off 1:off 2:off 3:on 4:off 5:on 6:off
ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off
iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off
lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off
mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
# chkconfig mdmonitor --list
mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# chkconfig mdmonitor off
# chkconfig mdmonitor --list
mdmonitor 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig mdmonitor on
# chkconfig mdmonitor --list
mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off
圖、查詢系統服務的 RunLevel 啟動模式資訊