一、 啟動關機的流程與載入程式
1. Linux啟動流程
a) 載入BIOS的硬體資訊,並擷取第一個啟動裝置的代號
b) 讀取第一個啟動裝置的MBR的引導載入程式的啟動資訊
c) 載入核心作業系統的核心資訊,核心開始解壓縮,並且嘗試驅動所有硬體裝置
d) 核心執行init程式並擷取運行資訊(/etc/inittab)
e) init執行/etc/rc.d/rc.sysinit檔案(各個版本都不相同,如/etc/init.d/boot和/etc/init.d/rc)
f) 啟動核心的外掛模組(/etc/modprobe.conf)
g) init執行啟動並執行各個批次檔
h) init執行/etc/rc.d/rc.local檔案
i) 執行/bin/login程式,等待使用者登入
j) 登陸之後開始以Shell控制主機
2. 使用者自訂引導啟動程式(/etc/rc.d/rc.local)
3. 關於模組的配置/etc/modprobe.conf啟動過程中,讀取的服務相關設定檔案都記錄在/etc/sysconfig目錄下
核心放在/lib/modules/`uname-r`/kernel中,/etc/modules/`uname -r`/modules.dep檔案記錄了在核心支援的模組的各項依賴性,可以使用depmod命令建立該檔案。
核心模組的觀察:lsmod、modinfo
核心模組的載入與刪除:modprobe(先解決模組的依賴性,推薦)、insmod、rmmod
4. 引導載入程式(例如Grub)有兩種載入方式:
直接指定並取用核心檔案,載入到主儲存空間中
將載入程式的控制權移交給下一個載入程式,鏈式載入程式(chain loader)的方式
5. 解決啟動過程中的問題可能用到chroot,比如先啟動一個Linux系統,然後再chroot到另外一個不能正常啟動的Linux系統進行修複。
二、 函數庫管理
1. ldconfig與/etc/ld.so.conf,將動態函數庫載入到記憶體(快取,cache)中,這樣就可以提高動態函數庫的讀取速度。將動態函數庫載入到快取(cache)中的過程如下:
a) 在/etc/ld.so.conf中寫下“想要讀入快取中的動態函數庫所在的目錄”
b)利用ldconfig將/etc/ld.so.conf的資料讀入到快取中
c) 同時在/etc/ld.so.cache檔案中記錄資料
2. ldd可以判斷某個可執行檔二進位檔案有什麼動態函數庫
ldd [-vdr] [filename]
三、 系統精靈
1. 根據精靈的啟動與管理方式,可以將精靈分為可獨立啟動的獨立啟動精靈,以及通過統一安全機制管理的超級精靈。
superdeamon(超級精靈)通過統一的精靈(xinet)來負責喚起服務。Xinet的啟動指令碼寫在/etc/init.d/xinet.d裡,掛在這個精靈裡面的服務設定項目寫在/etc/xinet.d.conf與/etc/xinet.d/*目錄的任何檔案中。
2. 整個服務開機就能啟動的地方有兩處,一處是在精靈啟動(/etc/rc.d/rc[0-6].d/*)目錄下,另一處是/etc/rc.d/rc.local。
使用chkconfig管理開機啟動的相關服務。文法:
chkconfig --list
chkconfig [--add|--del][service_name]
chkconfig --level [0123456][service_name] [on|off]
3. 如何將自己建立的服務加入chkconfig的管理中呢?只要將該服務加入init可管理的指令碼中,即/etc/init.d中。