Linux系統啟動流程
POST(加電自檢)——>BIOS(啟動次序)——>MBR(bootloader)——>kernel(硬體層)——>initrd——>init(使用者層)
核心設計風格
單核心:Linux
微核心:Windows(線程)
核心:動态加載核心子產品
核心:/lib/modules/“核心版本号命名的目錄”
核心的命名
例如vmlinuz-2.6.32
/lib/modules/2.6.32
在核心與應用程式之間會有一個提供程式的驅動
一個應用程式的運作需要依賴很多的庫檔案
ldd:顯示共享庫依賴關系
ldd /path/to/二進制檔案
chroot:chroot/path/to/temproot
ramdisk——将記憶體模拟成磁盤來使用
運作級别——啟動的服務不同
0:關機
1:單使用者模式,直接以管理者登入,不需要密碼
2:多使用者模式,不啟用NFS(網絡檔案系統)
3:正常多使用者模式,文本模式
4:預留模式
5:多使用者模式,圖形模式
6:重新開機
在/etc/inittab中定義了啟動的運作級别
詳解啟動過程
bootloader
不想讓别人随便通路grub可以給它加密碼,還可以将密碼進行加密
檢視運作級别
runlevel
who –r
檢視核心相關資訊
uname–r
模拟練習,安裝grub,先将bootloader破壞掉
破壞bootloader(即安裝盤的錢446扇區)
安裝grub第一步
#grub
grub>(要指定核心所在的磁盤,判斷那個磁盤是安裝了核心)
安裝grub的第二種方法
#grub-install --root-directory=/path/to/boot‘s_parent_dir /path/to/device(這裡添加的是核心分區所挂載到了哪個檔案系統下,例如使用mount檢視/dev/sda挂載到了/boot下,于是在=後添加/boot/)
若是grub檔案不存在了,進行主機啟動的拯救
此時不可以使用root進行判斷哪個磁盤是含有核心檔案的,要使用find指令查找核心檔案
grub配置檔案丢失
grub>find
grub>root(hd#,N)
grub>kernel /path/to/kernel_file
grub>initrd /path/to/initrd_file
grub>boot
kernel初始化過程
裝置探測
驅動初始化(可能從initrd檔案中裝載驅動子產品)
以隻讀方式挂載根檔案系統
裝載第一個程序init
init——>(/etc/inittab)
init下的字段
id:runlevel:action:process
action
initdefault:設定預設運作級别
sysinit:系統初始化
wait:等待級别切換至此級别時執行
respawn:一旦程式終止會重新啟動
将/etc/rc.d/rc.sysinit腳本讀懂
激活udev和selinux
根據/etc/sysctl.conf檔案設定核心參數
設定時鐘
裝載鍵盤映射
啟用交換分區
設定主機名
根檔案系統檢測,并以讀寫方式重新挂載
激活raid和LVM裝置
啟用磁盤配額
根據/etc/fstab檢查并挂載其他檔案系統
清理過期的鎖和PID檔案
chkconfig
chkconfig:runlevel ss kk當chconfig指令來為此腳本在rc.#d目錄建立連接配接時runlevels建立預設為s開頭的的連接配接,除此之外的級别預設建立為k開頭的連接配接s後面的啟動優先級為ss表示的數字,k後面為關閉優先級順序kk所表示的數字
description:用于說明此腳本的簡單功能
chkconfig
–list:檢視所有獨立服務的啟動設定
--add:建立連接配接檔案
--del:删除連接配接檔案
--level runlevels 服務名稱(on|off)
樣例腳本
/etc/rc.d/rc.local:系統最後啟動的一個服務,一個應該執行的腳本
/etc/inittab:
設定預設運作級别
運作系統初始化腳本
運作指定運作級别對應的目錄下的腳本
設定Ctrl+Alt+Del組合鍵的操作
定義UPS電源在電源故障/恢複時執行的操作
啟動虛拟終端
啟動圖形終端
守護程序的類型
獨立守護程序