1、首先我們先來(lái)了解一下系統(tǒng)在從按下電源開(kāi)關(guān)到我們看到畫(huà)面這個(gè)過(guò)程究竟干了些什么事情:
(1)按下電源開(kāi)機(jī)-->bios(配置主板的程序,basic input and output system,加電自檢,找到啟動(dòng)設(shè)備的編號(hào))-->找到mbr(master bootloader record,它是屬于硬盤(pán)的0磁盤(pán)0扇區(qū))-->grub-->通過(guò)grub找到vmlinuz和initrd(驅(qū)動(dòng)硬件)--> 內(nèi)核啟動(dòng),產(chǎn)生init進(jìn)程-->/etc/inittab(確定系統(tǒng)的啟動(dòng)級(jí)別)-->/etc/rc.sysinit(獲取主機(jī)的網(wǎng)絡(luò)環(huán)境和主機(jī)類(lèi)型,測(cè)試與載入設(shè)備,是否啟動(dòng)selinux,模塊的加載,設(shè)置系統(tǒng)時(shí)間.................)--讀取/etc/fstab-->按照啟動(dòng)的級(jí)別按順序啟動(dòng)對(duì)應(yīng)的服務(wù)-->/etc/rc.local----> 登錄界面
(2)開(kāi)機(jī)---> bios 硬件自檢--->把MRB 加載內(nèi)存,bois 完成了任務(wù),把控制全轉(zhuǎn)交給Bootloader(Grub) ----> 讀取grub.conf配置文件,加載相應(yīng)的內(nèi)核,初始化鏡像文件到內(nèi)存,初始化鏡像文件會(huì)加載一系列硬件驅(qū)動(dòng),把必要的硬件先驅(qū)動(dòng)起來(lái),最終內(nèi)核理解這些硬件-->產(chǎn)生第一個(gè)進(jìn)程init--->init 讀取配置文件/etc/inittab,獲取系統(tǒng)將要運(yùn)行在哪個(gè)級(jí)別--->init 運(yùn)行rc.sysinit腳本,對(duì)系統(tǒng)進(jìn)行初始化(配置主機(jī)名,生成/dev/下所有設(shè)備文件,讀取/etc/fstab進(jìn)行分區(qū)掛載等)---> init 根據(jù)運(yùn)行解別,運(yùn)行級(jí)別對(duì)應(yīng)的目錄下的所有服務(wù)啟動(dòng)腳本-->運(yùn)行rc.local---> init 根據(jù)配置文件 產(chǎn)生多個(gè)終端/sbin/mingetty ---> 各個(gè)終端分別運(yùn)行l(wèi)ogin----> gdm ---> 圖形界面的登錄程序
以上兩種是系統(tǒng)啟動(dòng)過(guò)程所干的事情,寫(xiě)法都是差不多,個(gè)人看第一種比較好理解,當(dāng)然每個(gè)人的想法和看法都不一樣,所以我就把兩種情況都寫(xiě)了出來(lái)。
2、MBR
MBR=512byte=446byte啟動(dòng)設(shè)備的信息+64byte分區(qū)表信息+2byte結(jié)束位
3、GRUB系統(tǒng)引導(dǎo)程序
grub的全稱(chēng)是:Grand Unified Boot Loader ,通過(guò)翻譯過(guò)來(lái)的中文意思:引導(dǎo)加載程序大統(tǒng)一。從這個(gè)字面就可以知道要想加載系統(tǒng)、引導(dǎo)系統(tǒng)都得靠它。
(1)我們把它托出來(lái)看看是什么高級(jí)東東:
[root@rootbug ~]# rpm -qa |grep grub
grubby-7.0.15-3.el6.x86_64
grub-0.97-77.el6.x86_64
(2)查看此軟件的詳細(xì)信息
[root@rootbug ~]# rpm -qi grub-0.97-77.el6.x86_64
Name : grub Relocations: (not relocatable)
Version : 0.97 Vendor: Red Hat, Inc.
Release : 77.el6 Build Date: Thu 01 Mar 2012 12:14:36 AM CST
Install Date: Tue 27 Aug 2013 06:37:52 PM CST Build Host: x86-004.build.bos.redhat.com
Group : System Environment/Base Source RPM: grub-0.97-77.el6.src.rpm
Size : 2396735 License: GPLv2+
Signature : RSA/8, Fri 18 May 2012 08:07:02 PM CST, Key ID 199e2f91fd431d51
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL : http://www.gnu.org/software/grub/
Summary : Grand Unified Boot Loader.
Description :
GRUB (Grand Unified Boot Loader) is an experimental boot loader
capable of booting into most free operating systems - Linux, FreeBSD,
NetBSD, GNU Mach, and others as well as most commercial operating
systems.
(3)查看一下它的配置文件放在哪里:
[root@www ~]# ll /etc/grub.conf --發(fā)現(xiàn)是一個(gè)軟鏈接文件
lrwxrwxrwx. 1 root root 22 Aug 27 18:42 /etc/grub.conf -> ../boot/grub/grub.conf
(4)打開(kāi)它看看究竟是什么樣的內(nèi)容:
[root@rootbug ~]# vim /boot/grub/grub.conf
解釋?zhuān)?/p>
(1)default=0 --默認(rèn)進(jìn)入第一個(gè)系統(tǒng)
(2)timeout=5 --5秒鐘不選擇,則進(jìn)入默認(rèn)default指定的系統(tǒng);如果改為-1表示等待時(shí)間無(wú)限
(2)splashimage=(hd0,0)/grub/splash.xpm.gz
----------指定grub背景圖的路徑;(hd0,0)表示的就是/dev/sda1,所以這個(gè)路徑其實(shí)就是指/boot/grub/splash.xpm.gzhiddenmenu,如果你更改成其他圖片也可以,主要將圖片的格式轉(zhuǎn)換成xpm格式就行了,然后放在此目錄下,開(kāi)機(jī)之后自動(dòng)加載。不過(guò)不知道是什么原因,我修改了我的圖片之后發(fā)現(xiàn)不行,可能是轉(zhuǎn)換格式方法不對(duì),要是哪位大哥弄成功過(guò)記得留名告訴我方法。
(3)password --encrypted $6$xXZ403WJap4tfw2n$i5JiyJ3pjcCbDCVX/ZXPvX1zHv6BKAimZVe6uB2amuRl2Ye/gztvK7xxZZxpxFxnOmhK8eV1ie3Pv8NwCBrLv0
--------此加密密碼是我怕別人通過(guò)單用戶(hù)破解我的服務(wù)器密碼所以就把grub加密了。所以此處就有一行密鑰,如果沒(méi)有加密的那么就不會(huì)存在。
(4)hiddenmenu
title Red Hat Enterprise Linux (2.6.32-279.el6.x86_64)
----------此標(biāo)題是在開(kāi)機(jī)的時(shí)候隱藏的,你需要在開(kāi)機(jī)的時(shí)候按下“e”鍵,那么它才會(huì)出來(lái)。當(dāng)然你也可以修改成你自己的標(biāo)題。
(5)root (hd0,0) ---------表示/dev/sda1,也就是/boot ,但是我們?nèi)绾沃朗牵╤d0)呢?我們可以通過(guò)如下命令可以查看:
[root@rootbug ~]# cat /boot/grub/device.map
# this device map was generated by anaconda
(hd0) /dev/sda
(6) kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=a7f245f7-9537-4fc1-ace8-48f48faa987c nomodeset rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M rd_NO_LVM rd_NO_DM rhgb quiet
-------vmlinuz是/boot分區(qū)下的,名字不能錯(cuò);root=UUID=a7f245f7-9537-4fc1-ace8-48f48faa987c此處用的ID表示跟/分區(qū);有些系統(tǒng)可能還有root=LABEL=/;也有些系統(tǒng)是root=/dev/sdax。其結(jié)果都是一樣的,都是啟動(dòng)時(shí)要知道根/分區(qū)是誰(shuí)。
(7)initrd /initramfs-2.6.32-279.el6.x86_64.img -----initrd的路徑
4、如果我的/boot沒(méi)有劃分獨(dú)立分區(qū),那我的grub.conf又是如何的呢?結(jié)果如下,需要額為添加/boot
[root@rootbug ~]#vim /boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz ------加/boot
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet ------加boot
initrd /boot/initrd-2.6.18-164.el5.img -------加boot
5、給grub加密碼 (作用是鎖住不讓別人進(jìn)入單用戶(hù)改你的ROOT密碼)
[root@rootbug ~]# grub-md5-crypt -----用此命令產(chǎn)生一個(gè)密碼加密串
Password: -----輸入你想要的密碼
Retype password: -----再次輸入你的密碼
$1$JWQIX/$tYXWeDn3HPj9LYZezTuTI/ -----輸兩次密碼就可以產(chǎn)生加密串
[root@rootbug ~]#vim /boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz ------在下面加上加密信息
password --md5 $1$JWQIX/$tYXWeDn3HPj9LYZezTuTI/
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/1 rhgb quiet
initrd /initrd-2.6.18-164.el5.img
6、手動(dòng)引導(dǎo)grub
手動(dòng)mv grub.conf
grub>root (hd0,0) --------進(jìn)到/boot分區(qū)
grub>kernel /vmlinuz-xxxxxxx ro root=/dev/sda1 ----在輸入kernel之后利用TAB鍵進(jìn)行補(bǔ)齊命令,/dev/sda1表示root分區(qū),寫(xiě)錯(cuò)是無(wú)法啟動(dòng)的,如果出現(xiàn)錯(cuò)誤可以再重新輸入另外一個(gè)分區(qū),直到正確為止。
grub>initrd /initrd-xxxxxxxx ---------可以利用TAB進(jìn)行補(bǔ)齊
grub>boot -----boot代表啟動(dòng)
如果全部正確,啟動(dòng)之后將會(huì)進(jìn)入到系統(tǒng),然后再進(jìn)行將grub.conf重新編寫(xiě)回來(lái)即可。