學習筆記之linux啓動過程

當我們啓動電腦的時候首先要按下電源,然後電腦進入BIOS自檢,自檢完後按照BIOS中設置的啓動順序來啓動引導,如是硬盤的話,會讀取硬盤上的引導扇區中的MBR(引導記錄)引導扇區是每個分區(Partition)的第一扇區,而主引導扇區是硬盤的第一扇區。它由三個部分組成,主引導記錄MBR、硬盤分區表DPT和硬盤有效標誌。在總共512字節的主引導扇區裏MBR佔446個字節,第二部分是Partition table區(分區表),即DPT,佔64個字節,硬盤中分區有多少以及每一分區的大小都記在其中。第三部分是magic

number,佔2個字節,固定爲55AA。一般的引導系統有OS Loader、GRUB、LILO,在windows中用的是OS Loader,GRUB和LILO即可以引導linux也可以引導windows和unix。不過現在LILO已經很少用了,一般都是用的GRUB。此時讀取GRUB後會根據GRUB的配置文件來加載系統的內核,內核主要完成系統環境的初始化、驅動程序、root文件系統。完成以上的工作後內核開始加載init程序,init程序是所有系統進程的起點,通過加載init的配置文件/etc/inittab來決定進行的操作。init中定義了運行的級別,然後執行/etc/rc.d/rc.sysinit來進行系統初始化,然後再執行/etc/rc.d文件夾下的所有服務,其中還有一個xinetd的超級進程,是調用/etc/xinetd.conf配置文件,從配置文件中知道讀/etc/xinetd.d文件,最後打開mingetty定義的終端進行登陸,然後進入終端或桌面。


GRUB:Grand Unified Bootloader
被廣泛地用於替代lilo
支持在啓動時使用命令行模式
支持md5加密保護
可以從ext2/ext3、ReiseFS、JFS、FAT、minix及FFS文件系統上啓動
其配置文件爲/boot/grub/grub.conf,更改grub.conf即可立時生效
如果硬盤上的MBR被更動過,可以用/sbin/grub-install /dev/hda來重安裝grub

現在查看一下GRUB中的內容,我用的是RHEL5.4的版本

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda5
#          initrd /initrd-version.img
#boot=/dev/sda
default=0   
#default=0表示默認啓動第一個系統,如果系統有兩個系統title就是系統的分隔符,第一個title後面就是第一個系統,用0表示。
timeout=5
#timout=5,就是默認在啓動選擇界面停留的時間,單位是秒。等待5秒自動進入默認操作系統
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
#splashp_w_picpath是grub啓動背景畫面,如果是自己寫grub.conf文件,這個可以不用寫。
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
#title後面就是系統在啓動時候顯示的名字
        root (hd0,0)
#root 啓動文件所在位置
        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
#kernel 內核所在位置和名字
        initrd /initrd-2.6.18-164.el5.img
#initrd內核鏡象的名字



如果我們把grub.conf中的後三行刪除或把grub.conf刪除後,系統再次重啓會停留到grub的命令行,這時我們可以利用root命令來查看boot分區的所在位置然後輸入(以rhel5.4爲例)
root(hd0,0)boot分區所在位置
kernel /vmlinuz-2.6.18-168.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-164.el5.img
boot
然後系統就會啓動,進去後還可以再調grub.conf文件

那我們把boot分區下的文件全部刪除
啓動機器,調成啓動順序,放入RHEL5.4的啓動盤或插上製作的U盤啓動,然後按F5或 linux rescue 進入救援模式。進入後首先選擇語言、鍵盤模式,然後會出現是否配置網絡,這裏可以自己選擇,選擇完後會提示是否自動掛載硬盤中的系統,這裏選擇自動掛載,然後就進入了救援模式了。
在救援模式中輸入
chroot /mnt/sysp_w_picpath/  切換到硬盤中的系統,然後去查看boot分區中丟失了哪些文件
然後掛載好光盤,安半kernel內核
mount /dev/cdrom /media/cdrom
cd /media/cdrom/Server
rpm -ivh kernel-2.6.18-164.el5.i686.rpm
安裝好內核後kernel和initrd都有了,這時我們進入grub目錄,touch grub.conf新建一個grub配置文件,在裏面寫入
default=0   
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-164.el5.img

然後保存退出
輸入兩次exit退出

如果boot分區被刪除,我們也是首先進入救援模式,進入後先用fdisk命令分區,然後重新啓動再格式化新的分區,然後按照上面的方法再安裝內核、寫grub引導配置文件保存退出就可以了。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章