-
linux系統啟動流程
CentOS(5、6)系統啟動流程
具體流程:
-
加載BIOS的硬件信息與進行自我測試,并依據設置取得第一個可啟動的設備;
-
讀取并執行第一個啟動設備內MBR的boot Loader
-
依據boot Loader的設置加載Kernel,Kernel會開始檢測硬件與加載驅動程序
-
硬件驅動成功后,Kernel會主動調用init進程,而init會取得run-level信息;
-
init執行/etc/rc.d/rc.sysinit文件來準備軟件執行的操作環境。
-
init執行run-level的每個服務啟動;
-
init執行/etc/rc.d/rc.local文件;
-
init執行終端模擬程序啟動login程序,等待用戶登錄
-
Linux內核特點:
-
支持模塊化:.ko(內核對象)
-
如:文件系統,硬件驅動,網絡協議等
-
支持內核模塊的動態裝載和卸載
-
組成部分:
-
核心文件:/boot/vmlinuz-VERSION-release
-
ramdisk:輔助的偽根系統
-
CentOS 5: /boot/initrd-VERSION-release.img
-
CentOS6,7: /boot/initramfs-VERSION-release.img
-
模塊文件:/lib/modules/VERSION-release
-
POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接口、鍵盤、CD-ROM光驅等硬件情況的檢測。
-
ROM:BIOS,Basic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和 系統啟動自舉程序等。
-
RAM:CMOS互補金屬氧化物半導體,保存各項參數的設定 按次序查找引導設備,第一個有引導程序的設備為本次啟動設備
-
bootloader: 引導加載器,引導程序
-
功能:
-
提供菜單:用戶可以選擇不同的啟動選項。
-
加載內核文件:直接向可啟動的程序區段來開始操作系統。
-
轉交其他loader:將引導裝載功能轉交給其他loder負責。
-
加載內核檢測硬件與initrd功能
-
內核會以自己的功能重新檢測硬件。
config-2.6.32-642.el6.x86_64←內核被編譯時選擇的功能與模塊配置文件
grub←引導裝載程序grub相關數據目錄
initrd-2.6.32-642.el6.x86_64kdump.img←虛擬文件系統文件
System.map-2.6.32-642.el6.x86_64←內核功能放置到內存地址的對應表
vmlinuz-2.6.32-642.el6.x86_64←內核文件
-
init程序的類型:
-
SysV: init, CentOS 5之前
-
配置文件:/etc/inittab
-
Upstart: init,CentOS 6
-
配置文件:/etc/inittab, /etc/init/*.conf
-
Systemd:systemd, CentOS 7
-
配置文件:/usr/lib/systemd/system /etc/systemd/system
-
第一個進程與配置文件/etc/inittab
-
/sbin/init CentOS 5
-
運行級別:為系統運行或維護等目的而設定;0-6:7個級別
-
默認級別: 3, 5
-
切換級別:init #
-
查看級別:runlevel ; who -r
-
init啟動后所做的事情:
-
讀取/etc/inittab來讀取默認級別
-
執行初始化系統腳本 /etc/rc.d/rc.sysinit 來初始化腳本
-
然后執行 /etc/rc.d/rc 腳本
-
/etc/inittab的內容與用法
-
0:關機
-
1:單用戶模式(root自動登錄), single, 維護模式
-
2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式
-
3:多用戶模式,正常模式;文本界面
-
4:預留級別;可同3級別
-
5:多用戶模式,正常模式;圖形界面
-
6:重啟
-
格式如id:5:initdefault:
-
執行初始化系統腳本 /etc/rc.d/rc.sysinit 來初始化腳本
-
/etc/rc.d/rc.sysinit: 系統初始化腳本
-
設置主機名
-
設置歡迎信息
-
激活udev和selinux
-
掛載/etc/fstab文件中定義的文件系統
-
檢測根文件系統,并以讀寫方式重新掛載根文件系統
-
設置系統時鐘
-
激活swap設備
-
根據/etc/sysctl.conf文件設置內核參數
-
激活lvm及software raid設備
-
加載額外設備的驅動程序
-
清理操作
-
說明:rc N –> 意味著讀取/etc/rc.d/rcN.d/
-
K*: K##*:##運行次序;數字越小,越先運行;數字 越小的服務,通常為依賴到別的服務
-
S*: S##*:##運行次序;數字越小,越先運行;數字 越小的服務,通常為被依賴到的服務
-
for srv in /etc/rc.d/rcN.d/K*; do
$srv stop
done
for srv in /etc/rc.d/rcN.d/S*; do
$srv start
done
-
執行/etc/rc.d/rc.local腳本,此腳本是啟動過程中最后啟動的一個腳本。最后會執行 /bin/login 登錄用戶。至此系統啟動過程完成。
-
總結:/sbin/init –> (/etc/inittab) –> 設置默認運行級 別 –> 運行系統初始腳本、完成系統初始化 –> (關閉對應 下需要關閉的服務)啟動需要啟動服務 –> 設置登錄終端
-
CentOS 6 init程序為: upstart, 其配置文件: /etc/inittab, /etc/init/*.conf,配置文件的語法遵循upstart配置文件語法格式,和CentOS5不同。
-
根據系統啟動原理破解密碼
-
CentOS6
1重啟
2敲任意鍵
3按a鍵,修改內核參數
4輸入1 | S | s | single 進入單用戶模式
5進入系統后修改密碼
-
計劃任務練習
1 、每周2, 4, 7備份/var/log/messages文件至/logs目錄中,文件名形如“messages-yyyymmdd”
10 0 * * 0,2,4 root /bin/cp /log/message /logs/messages-`date %F`
2 、每兩小時取出當前系統/proc/meminfo文件中以S或M開頭的信息追加至/tmp/meminfo.txt文件中
0 2 * * * root /bin/cat /proc/meminfo | /bin/grep '^[S|M].*' >> /tmp/meminfo.txt
原創文章,作者:502795641,如若轉載,請注明出處:http://www.www58058.com/45436