2. 關於etc/rc.d/rc.sysyinit 和 /etc/rc.d/rc.Nd
在inittab檔案中,我們瞭解到rc.sysinit是系統啟動並執行第一個指令碼,那麼它的作用都有哪些呢?如果有shell指令碼基礎的話可以用vim開啟這個檔案來看看,它有900多行...是linux裡最牛的指令碼,總結下它的作用,有如下幾點:(一定要牢記,必要時我們要重寫它!)
1. 啟用udev和selinux
2. 通過讀取/etc/sysct1.conf來設定核心參數
3. 設定系統時鐘
4. 設定鍵盤對應
5. 啟動交換分區。
6. 設定主機名稱
7. 檢查跟檔案系統,並且如果沒有錯誤,以讀寫的方式來重新掛載檔案系統 (重要)
8. 啟用raid和lvm裝置
9. 啟動磁碟限額
10 掛載其他/etc/fstab裡定義的尚未被掛載的裝置
11. 清理過時的檔案鎖和PID檔案
12. 啟動服務/etc/rc.d/rcN.d
/etc/rc.d/rcN.d 是一個存放了系統啟動是載入的服務的檔案夾,通過inittab,我們知道了,它的編號對應相應的啟動運行層級。
需要說明的是,它裡面的檔案,以我的為例 以K開頭的代表stop,以S開頭的代表啟動start,數字越小,有限層級越高
[root@server69 rc.d]# cd rc3.d[root@server69 rc3.d]# lsK01dnsmasq K74nscd S08ip6tables S25bluetooth S85gpmK02avahi-dnsconfd K85mdmpd S08iptables S25netfs S90crondK02NetworkManager K87multipathd S08mcstrans S25pcscd S90xfsK05conman K88wpa_supplicant S10network S26acpid S95anacronK05saslauthd K89dund S11auditd S26apmd S95atdK10psacct K89netplugd S12restorecond S26haldaemon S97rhnsdK20nfs K89pand S12syslog S26hidd S97yum-updatesdK24irda K89rdisc S13irqbalance S28autofs S98avahi-daemonK35vncserver K99readahead_later S13portmap S50hplip S99firstbootK35winbind S00microcode_ctl S14nfslock S55sshd S99localK50ibmasm S02lvm2-monitor S15mdmonitor S56cups S99smartdK50netconsole S04readahead_early S18rpcidmapd S56rawdevicesK69rpcsvcgssd S05kudzu S19rpcgssd S58ntpdK73ypbind S06cpuspeed S22messagebus S80sendmail
3./etc/fstab檔案
它定義了系統初始化掛載的裝置,對系統的啟動至關重要,rc.sysinit通過讀取它來實現系統磁碟分割的掛載
它的內容如何呢?我們一起來看下
要掛載的裝置 掛載點 檔案系統類型 掛載選項 轉儲頻率 檔案自檢次序
/dev/sda2 / ext3 defaults 0 0/dev/sda1 /boot ext3 defaults 0 0sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0
我截取了4個系統啟動時必須掛載的裝置
/ 根檔案目錄,由它你才可以進入linux的世界,它在/dev/sda2裡
/boot 啟動目錄,在/下,裡面有grub,initrd和系統核心,它在/dev/sda1
sysfs 一個虛擬檔案系統,產生包含所有硬體層次視圖,和/proc類似
proc 這是一個虛擬目錄,它映射記憶體裡的資訊對應進程資訊,也就是說它對應的是記憶體而不是硬碟