東坡下載:內容最豐富最安全的下載站!

首頁IT技術服務器 → Rhel6服務器系統(tǒng)啟動過程淺談

Rhel6服務器系統(tǒng)啟動過程淺談

相關文章發(fā)表評論 來源:本站原創(chuàng)時間:2013/9/5 22:03:43字體大小:A-A+

更多

作者:不詳點擊:217次評論:0次標簽: Rhel6

1、首先我們先來了解一下系統(tǒng)在從按下電源開關到我們看到畫面這個過程究竟干了些什么事情:

(1)按下電源開機-->bios(配置主板的程序,basic input and output system,加電自檢,找到啟動設備的編號)-->找到mbr(master bootloader record,它是屬于硬盤的0磁盤0扇區(qū))-->grub-->通過grub找到vmlinuz和initrd(驅動硬件)--> 內核啟動,產生init進程-->/etc/inittab(確定系統(tǒng)的啟動級別)-->/etc/rc.sysinit(獲取主機的網絡環(huán)境和主機類型,測試與載入設備,是否啟動selinux,模塊的加載,設置系統(tǒng)時間.................)--讀取/etc/fstab-->按照啟動的級別按順序啟動對應的服務-->/etc/rc.local----> 登錄界面

(2)開機---> bios 硬件自檢--->把MRB 加載內存,bois 完成了任務,把控制全轉交給Bootloader(Grub) ----> 讀取grub.conf配置文件,加載相應的內核,初始化鏡像文件到內存,初始化鏡像文件會加載一系列硬件驅動,把必要的硬件先驅動起來,最終內核理解這些硬件-->產生第一個進程init--->init 讀取配置文件/etc/inittab,獲取系統(tǒng)將要運行在哪個級別--->init 運行rc.sysinit腳本,對系統(tǒng)進行初始化(配置主機名,生成/dev/下所有設備文件,讀取/etc/fstab進行分區(qū)掛載等)---> init 根據(jù)運行解別,運行級別對應的目錄下的所有服務啟動腳本-->運行rc.local---> init 根據(jù)配置文件 產生多個終端/sbin/mingetty ---> 各個終端分別運行l(wèi)ogin----> gdm ---> 圖形界面的登錄程序

以上兩種是系統(tǒng)啟動過程所干的事情,寫法都是差不多,個人看第一種比較好理解,當然每個人的想法和看法都不一樣,所以我就把兩種情況都寫了出來。

2、MBR

MBR=512byte=446byte啟動設備的信息+64byte分區(qū)表信息+2byte結束位

3、GRUB系統(tǒng)引導程序

grub的全稱是:Grand Unified Boot Loader ,通過翻譯過來的中文意思:引導加載程序大統(tǒng)一。從這個字面就可以知道要想加載系統(tǒng)、引導系統(tǒng)都得靠它。

(1)我們把它托出來看看是什么高級東東:

[root@rootbug ~]# rpm -qa |grep grub
grubby-7.0.15-3.el6.x86_64
grub-0.97-77.el6.x86_64

(2)查看此軟件的詳細信息

[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)是一個軟鏈接文件
lrwxrwxrwx. 1 root root 22 Aug 27 18:42 /etc/grub.conf -> ../boot/grub/grub.conf

(4)打開它看看究竟是什么樣的內容:

[root@rootbug ~]# vim /boot/grub/grub.conf


解釋:

(1)default=0                --默認進入第一個系統(tǒng)

(2)timeout=5              --5秒鐘不選擇,則進入默認default指定的系統(tǒng);如果改為-1表示等待時間無限

(2)splashimage=(hd0,0)/grub/splash.xpm.gz        

----------指定grub背景圖的路徑;(hd0,0)表示的就是/dev/sda1,所以這個路徑其實就是指/boot/grub/splash.xpm.gzhiddenmenu,如果你更改成其他圖片也可以,主要將圖片的格式轉換成xpm格式就行了,然后放在此目錄下,開機之后自動加載。不過不知道是什么原因,我修改了我的圖片之后發(fā)現(xiàn)不行,可能是轉換格式方法不對,要是哪位大哥弄成功過記得留名告訴我方法。


(3)password --encrypted $6$xXZ403WJap4tfw2n$i5JiyJ3pjcCbDCVX/ZXPvX1zHv6BKAimZVe6uB2amuRl2Ye/gztvK7xxZZxpxFxnOmhK8eV1ie3Pv8NwCBrLv0    

--------此加密密碼是我怕別人通過單用戶破解我的服務器密碼所以就把grub加密了。所以此處就有一行密鑰,如果沒有加密的那么就不會存在。


(4)hiddenmenu

title Red Hat Enterprise Linux (2.6.32-279.el6.x86_64)  

----------此標題是在開機的時候隱藏的,你需要在開機的時候按下“e”鍵,那么它才會出來。當然你也可以修改成你自己的標題。

(5)root (hd0,0)      ---------表示/dev/sda1,也就是/boot ,但是我們如何知道是(hd0)呢?我們可以通過如下命令可以查看:

[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ū)下的,名字不能錯;root=UUID=a7f245f7-9537-4fc1-ace8-48f48faa987c此處用的ID表示跟/分區(qū);有些系統(tǒng)可能還有root=LABEL=/;也有些系統(tǒng)是root=/dev/sdax。其結果都是一樣的,都是啟動時要知道根/分區(qū)是誰。


(7)initrd /initramfs-2.6.32-279.el6.x86_64.img  -----initrd的路徑

4、如果我的/boot沒有劃分獨立分區(qū),那我的grub.conf又是如何的呢?結果如下,需要額為添加/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加密碼 (作用是鎖住不讓別人進入單用戶改你的ROOT密碼)
[root@rootbug ~]# grub-md5-crypt                       -----用此命令產生一個密碼加密串
Password:                                                     -----輸入你想要的密碼
Retype password:                                         -----再次輸入你的密碼
$1$JWQIX/$tYXWeDn3HPj9LYZezTuTI/         -----輸兩次密碼就可以產生加密串

[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、手動引導grub
手動mv  grub.conf
grub>root (hd0,0)                      --------進到/boot分區(qū)  
grub>kernel /vmlinuz-xxxxxxx ro root=/dev/sda1        ----在輸入kernel之后利用TAB鍵進行補齊命令,/dev/sda1表示root分區(qū),寫錯是無法啟動的,如果出現(xiàn)錯誤可以再重新輸入另外一個分區(qū),直到正確為止。
grub>initrd /initrd-xxxxxxxx       ---------可以利用TAB進行補齊
grub>boot         -----boot代表啟動

如果全部正確,啟動之后將會進入到系統(tǒng),然后再進行將grub.conf重新編寫回來即可。

擴展知識

相關評論

閱讀本文后您有什么感想? 已有 人給出評價!

  • 2791 喜歡喜歡
  • 2101 頂
  • 800 難過難過
  • 1219 囧
  • 4049 圍觀圍觀
  • 5602 無聊無聊
熱門評論
最新評論
發(fā)表評論 查看所有評論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數(shù): 0/500 (您的評論需要經過審核才能顯示)