啟動流程 上電開機-- BOIS實現硬件自檢初始化-- 找到啟動設備的編號 -- 找到MBR(主引導記錄,在硬盤的0磁道的0扇區) -- 啟動grub程序 -- 通過grub設置找到vmlinuz并加裁到內存里運行 -- 啟動內核會加載initrd(隨機內存盤,小型文件系統,作用:能夠讓內核認出系統所在的哪個設備上,臨時驅動) -- 運行產生第一個進程init -- init進程會讀取/etc/inittab根據配置文件,判斷系統進去運行在哪個級別并進入相對應級別啟動相應服務 -- /etc/rc.sysinit 系統環境初始化,獲取主機網絡環境,測試或者載入設備,設置時間... -- /etc/rc.local開機后要運行的腳本 /etc/inittab 0 關機 1 單用戶模式 2 沒有網絡的文本模式 3 有網絡的文本模式 4 保留 5 圖形模式 6 重啟 id:5:initdefault: 默認開機后進入的系統級別 l0:0:wait:/etc/rc.d/rc 0 ....... l6:6:wait:/etc/rc.d/rc 6 定義六個級別啟動的服務腳本 ca::ctrlaltdel:/sbin/shutdown -t3 -r now 定義ctrl+alt+del三鍵重啟功能,在tty模式有效,在圖形模式下無效,這個還會受到內核參數的影響 1:2345:respawn:/sbin/mingetty tty1 ..... 6:2345:respawn:/sbin/mingetty tty6 定義了6個虛擬終端 x:5:respawn:/etc/X11/prefdm -nodaemon 啟動圖形 x:5 ![]() respawn 代表什么時候終止都重新啟動命令 once 代表運行這個命令一次 /etc/rc.local linux啟動最后階段,系統會執行/etc/rc.local腳本 /etc/X11/xinit/xinitrc.d/ 此目錄里可以放置圖形界面開啟自動運行的腳本 =============================================================================== 三、GRUB啟動加載器 cd /boot/grub stage1 MBR中的bootloader備份文件 stage2 grub的核心文件 device.map grub與linux的硬盤符號映射表 splash.xmp.gz grub的背景圖片 grub.conf grub的配置 ------------------------------------------------------------------------------- vim /boot/grub/grub.conf 配置文件 default=0 默認啟動的操作系統(0代表第一個title....) timeout=5 5秒后自動啟動default操作系統 splashimage= 指定背景圖片的路徑 hiddenmenu 隱藏開機選項 password --md5 設置啟動參數密碼,grub-md5-crypt產生 title 操作系統名稱 password --md5 設置啟動操作系統密碼 root 指定kernel和initrd所在的分區,(hd0,0),表示第一塊硬盤,第一個分區 kernel 指定kernel路徑,內核啟動參數 initrd 指定initrd路徑 rootnoverify 指定其它操作系統(windows) chainloader +1 鏈接加載到第一扇區(windows) -------------------------------------------------------------------------------- grub背景圖片制作 convert 源圖片 -resize 640x480! -colors 14 test.xpm 修改顏色數和分辯率 convert沒有此命令: imagemagick 找此關鍵字安裝 ------------------------------------------------------------------------------- grub命令 help 列出命令 quit 退出 root(hd0,1) 指定第一個硬盤第二個分區為grub文件所在的分區 setup(hd0) 安裝grub到第一個硬盤上 把grub安裝到硬盤第一扇區: grub-install /dev/sda boot 啟動系統 grub.conf中title下的命令都一樣 ------------------------------------------------------------------------------- kernel 啟動參數 ro 以只讀的方式加載內核,默認rw root=LABEL=/ 指定卷標是/的分區為根分區,也可以直接指定設備文件 rhgb 圖形啟動時以圖形方式顯示啟動信息 quiet 啟動時不顯示檢查硬件的信息 [0-6] 1啟動單用戶模式.... vga=792 指定終端的分辯率為1024x768 panic=n 內核崩潰n秒后重新啟動 iso-scan/filename=/0.91.iso 指定根分區為iso鏡像 boot=casper 啟動iso默認訪問的文件夾 ------------------------------------------------------------------------------- initrd作用 Kernel網啟動沒有任何文件系統的目錄,這時會先以initrd提供的目錄當作kernel的暫時目錄,該文件系統主要提供內核啟動時需要的驅動,ext3文件系統驅動,如果沒有該驅動就不能掛載根分區,沒有掛載根分區就不能讀取根分區中的ext3驅動,所以要有一個臨時的initrd提供驅動 ------------------------------------------------------------------------------- 打開initrd file initrd-* 檢查到該文件為gzip文件,不要相信擴展名 mv initrd initrd.gz 改變擴展名 gzip -d initrd.gz 解壓gz文件 file initrd 檢查到該文件為cpio文件 cpio -im < initrd 解壓cpio文件 打包initrd find | cpio -co | gzip -9 > initrd-new.img ------------------------------------------------------------------------------- grub 排錯引導例子 如果grub丟失,或者grub寫的有錯誤等情況,進系統時有可能會直接到一個grub>的界面(也就是黑屏幕上就一個grub >的提示符) grub> root (hd0,0) --進入到/boot分區 grub> kernel /vmlinuz-xxxxxx ro root=LABEL=/ --根分區可以用label,也可以用/dev/sdax來代替 grub> initrd /initrd-xxxxxx grub> boot --boot代表啟動 如果能啟動,就修改好你的grub 如果啟動出現kernel panic 的錯誤,表示是上面寫錯了,再試試,不行就用linux rescue去修復 |