CentOS6啟動過程總結與GRUB問題修復-創(chuàng)新互聯(lián)

一、CentOS 6 的啟動流程

10年積累的網(wǎng)站設計制作、成都網(wǎng)站制作經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有興海免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
  • 第一步:加電自檢(POST)

    主要檢查硬件設備是否存在并能正常運行,如:CPU、內存、硬盤、風扇、輸入輸出設備等。自檢功能主要是通過BIOS來實現(xiàn)的,BIOS程序是裝載在一個硬件芯片CMOS上的,加電過程就是給CMOS通電,然后啟動BIOS程序,BIOS程序會根據(jù)CMOS上面的一些配置信息區(qū)讀取其他的硬件設備信息并檢測其是否存在并能正常運行,之后進行硬件設備的初始化。

  • 第二步:選擇啟動順序,加載MBR

    按照BIOS中設置的Boot Sequence查找Boot Loader程序所在的設備。Boot Loader是一個程序,它依賴于一個硬件之上,這個硬件就是硬盤,準確的說為第一個可以啟動的硬盤的第一個扇區(qū)內,即MBR(Master Boot Record,主引導記錄)。

    Boot Loader的主要功能就是去識別、加載操作系統(tǒng)中的核心文件,并提交到內存中運行,進而來啟動對應的操作系統(tǒng)。另一個主要功能是提供菜單信息(可以提供不同的啟動項來加載不同的操作系統(tǒng)),并將啟動管理功能轉交給其他的加載程序。

  • 第三步:加載系統(tǒng)內核(Kernel)文件,執(zhí)行系統(tǒng)初始化信息

    Boot Loader程序讀取操作系統(tǒng)的內核文件后,會將其解壓后裝載到內存當中,然后接管BIOS的工作開始測試并加載各個設備(CPU、硬盤、網(wǎng)卡等)。

    因為內核文件(Kernel)通常是存放在系統(tǒng)上的/boot目錄中,并且是以vmlinuz開頭的文件,此時內存程序還沒有加載到硬盤,因此無法讀取系統(tǒng)上的內核文件,而如果先去加載硬盤則必須有硬盤的驅動程序,因此這將會產(chǎn)生一個先后順序的問題,為了解決這個問題,Linux采用GRUB啟動管理程序來識別硬盤信息,RTUB程序的執(zhí)行過程需要三個階段,具體的執(zhí)行過程將在下面的第二章節(jié)介紹。

  • 第四步:啟動第一個執(zhí)行程序/sbin/init

    在內核、硬件及驅動信息加載完畢后,內核會呼叫用戶控件的第一個執(zhí)行程序/sbin/init,init程序主要功能是準備軟件運行環(huán)境,包括系統(tǒng)的主機名稱、網(wǎng)絡配置、文件系統(tǒng)格式等其他服務的啟動管理。而這些所有的操作都是通過init的配置文件來定義的。

    在CentOS 5 中 init 的配置文件為:/etc/inittab

    在CentOS 6 中 init 的配置文件為:/etc/inittab,/etc/init/*.conf

    在init的配置文件中有個一非常重要的配置項目,那就是默認的系統(tǒng)啟動級別。啟動級別是為系統(tǒng)維護的目的而設定的,其實現(xiàn)方式是關閉或啟動對應級別下的服務。以下為init的7個運行級別:

    • 0:halt,關機

    • 1:Single user,單用戶模式,此級別允許以root用戶身份登錄,而無需認證,相當于windows的安全模式

    • 2:Multiuser,多用戶模式,需要用戶認證,會啟動網(wǎng)絡功能,但不會啟動NFS

    • 3:Full multiuser,完全多用戶模式,文本界面

    • 4:unused,預留級別,目前無特別的使用目的

    • 5:X11,正常級別,也是完全多用戶模式,圖形界面

    • 6:reboot,重啟

通常使用較多的默認級別為3或5,服務器上一般默認使用3級別,不同級別之間是可以進行切換的,切換方式為:init [0-6],可以使用 who -r 或 run_leave命令查看運行級別。

CentOS6啟動過程總結與GRUB問題修復

  • 第五步:運行系統(tǒng)初始化腳本

    根據(jù) init 的配置文件,先獲取默認的 runlevel,然后再執(zhí)行 /etc/rc.d/rc.sysinit 腳本完成系統(tǒng)初始化。

    系統(tǒng)初始化腳本所做的事情主要有:

       1、設定主機名(讀取/etc/sysconfig/network文件)

       2、激活 SELinux 和 udev

       3、打印文本歡迎信息

       4、掛載所有定義在/etc/fstab文件中的文件系統(tǒng)

       5、激活 swap 設備

       6、檢測跟文件系統(tǒng),并實現(xiàn)以讀寫方式重新掛載

       7、設置系統(tǒng)時鐘

       8、根據(jù) /etc/sysctl.conf 文件設定內核參數(shù)的值

       9、激活LVM和RAID設備

       10、加載額外的設備驅動程序

       11、清理操作

  • 第六步:啟動系統(tǒng)服務

    按照默認級別的參數(shù)N,執(zhí)行 /etc/rcN.d/ 目錄下設定的關閉和啟動相應的服務。

  • 第七步:打印登錄提示符

二、GRUB程序的三個階段

  • stage1:運行Boot Loader主程序,這個程序必須要被安裝在啟動區(qū)(MBR)。因為MBR空間有限,因此在MBR當中僅安裝Boot Loader的最小主程序,并沒有安裝Boot Loader的相關配置文件。

  • stage1_5:存放在MBR隨后的扇區(qū)中,主要用于與stage2所在分區(qū)的文件系統(tǒng)進行交互。

  • stage2:通過Boot Loader加載所有配置文件及相關的環(huán)境參數(shù)信息,這些配置文件及相關的環(huán)境參數(shù)都存放于磁盤分區(qū)上的/boot目錄下。

grup的配置文件路徑為:/boot/grub/grub.conf,內容如下:

CentOS6啟動過程總結與GRUB問題修復

  • default:設定默認啟動的內核和操作系統(tǒng),如果同時安裝了多個操作系統(tǒng)或內核,0表示定義的第一個title系統(tǒng),1表示定義的第二個title系統(tǒng),依次類推;

  • timeout:設定系統(tǒng)啟動時選擇操作系統(tǒng)菜單的等待時間,單位是秒(s);

  • splashp_w_picpath:設定系統(tǒng)啟動時grub菜單的背景圖片。圖片格式為xpm,14bits顏色,大小為640*480,需要gzip壓縮;

  • hiddenmenu:隱藏選擇菜單,默認情況下是不顯示菜單信息,如果想要顯示菜單,將該配置注釋即可;

  • title:定義一個操作系統(tǒng)或系統(tǒng)內核,且包括下面內容:

        root:指明引導當前操作系統(tǒng)或內核文件所在的分區(qū);

        kernel:指定文件路徑、根文件系統(tǒng)所在設備,以及傳遞給內核的參數(shù)。由于啟動過程中需要掛載跟目錄,因此需要指定根目錄所在的分區(qū)。內核參數(shù) rhgb表示色彩顯示,quiet表示靜默模式加載內核;

        initrd:指定用于輔助內核完成系統(tǒng)啟動的ramdisk文件路徑;

三、關于GRUB的調試

1、破解root用戶密碼

  • 第一步:系統(tǒng)啟動時按任意鍵進入GRUB菜單,動作一定要快,默認是5s的倒計時

CentOS6啟動過程總結與GRUB問題修復

如上圖所示,可以使用上下鍵選擇要啟動的操作系統(tǒng)(這里只用一個);

按“e”可以對選擇的項進行編輯;

按“a”可以對選擇的項進行內核參數(shù)修改;

按“c”可以進入命令行模式;

  • 第二步:根據(jù)提示,選擇相應的菜單,然后按“a”,在原有內核參數(shù)的最后加上“1或s或S或single”的任意一個參數(shù),表示進入單用戶模式,然后按回車鍵啟動系統(tǒng)

    CentOS6啟動過程總結與GRUB問題修復

  • 第三步:以單用戶模式進入系統(tǒng)后,使用passwd命令修改root用戶密碼,修改完之后重啟系統(tǒng)即可使用新的root用戶密碼登錄系統(tǒng)。

2、為GRUB菜單設置保護密碼

默認情況下進入GRUB菜單后不需要任何密碼就可以進行編輯,相對來說是比較危險的,因此可以修改 grub.conf 配置文件為GRUB菜單設置密碼保護,在 grub.conf 文件中的title字段上面新增一行pwssword PASSWD,password支持命令口令和加密口令,具體設置如下圖所示:

CentOS6啟動過程總結與GRUB問題修復

md5加密口令的生成命令為:grub-md5-crypt

CentOS6啟動過程總結與GRUB問題修復

在grub.conf文件中新增password后,再次進入GRUB菜單時如果想要編輯則必須按“p”鍵,然后通過密碼驗證后才能編輯,如下圖所示:

CentOS6啟動過程總結與GRUB問題修復

同理,在grub.conf 配置文件中的title內添加password,可以保護內核,即進入系統(tǒng)時需要輸入密碼驗證后才能啟動。

3、取消圖形界面的啟動,使用文本界面啟動

系統(tǒng)默認的啟動方式是圖形界面啟動,因此看不到系統(tǒng)的啟動過程,可以通過修改 grub.conf 配置文件設置成文本界面啟動,生產(chǎn)環(huán)境下也建議使用文本界面啟動,因為這種啟動方式可以看到整個過程,如果哪個服務在啟動過程中出錯可以及時發(fā)現(xiàn)。修改方法是把kernel參數(shù)中的rhgb和quiet刪除。

CentOS6啟動過程總結與GRUB問題修復

4、如果/boot下的文件損壞或丟失的恢復方法

  • 第一步:使用安裝光盤進入救援模式,進入時需要根據(jù)提示手動選擇語言、鍵盤等

CentOS6啟動過程總結與GRUB問題修復

加載救援模式的過程中會提示硬盤上的系統(tǒng)已經(jīng)被找到并掛載到/mnt/sysp_w_picpath下,因此進入救援模式后可以使用 chroot /mnt/sysp_w_picpath 命令切換到硬盤上操作系統(tǒng)的根目錄下,因為救援模式下提供的命令比較有限,好多命令都不支持。

CentOS6啟動過程總結與GRUB問題修復

如果進入到救援模式后,沒有發(fā)現(xiàn)硬盤上的根文件系統(tǒng),則需要使用相關命令查找并分析根文件系統(tǒng)所在硬盤分區(qū)位置,如果硬盤使用的是普通分區(qū),則可以通過 blkid 命令和 fdisk -l 命令分析出根文件系統(tǒng)的分區(qū)位置,而如果硬盤使用的是LVM分區(qū),則可以使用 lvscan 命令查看分區(qū),并且需要使用 vgchange -ay 命令激活VG卷組。

分析出根文件系統(tǒng)所在分區(qū)后掛載根文件系統(tǒng),然后檢查并修改fstab文件,如果該文件丟失,則手動創(chuàng)建一份,按照相應格式在其中添加掛載根文件系統(tǒng)的條目,然后重啟系統(tǒng),直到能夠自動檢測出硬盤上的系統(tǒng)并掛載到/mnt/sysp_w_picpath下為止。

  • 第二步:進入到硬盤的根文件系統(tǒng)后,使用mount命令掛載光盤,比如將光盤掛載到/mnt/cdrom上:

CentOS6啟動過程總結與GRUB問題修復

  • 第三步:使用rpm命令安裝kernel包,安裝時會提示kernel已安裝,需要使用--force或--replacepkgs選項強制安裝。安裝完之后會在/boot目錄下自動生成initramfs文件和vmlinuz文件

CentOS6啟動過程總結與GRUB問題修復

vmlinuz-2.6.32-642.el6.x86_64 和 initramfs-2.6.32-642.el6.x86_64.img 是系統(tǒng)啟動時必要的兩個文件,缺一不可。

vmlinuz-2.6.32-642.el6.x86_64:內核文件,如果只是該文件丟失,可以從光盤或者相同版本的操作系統(tǒng)上拷貝。

initramfs-2.6.32-642.el6.x86_64.img:虛擬文件系統(tǒng),通過Boot Loader程序能夠將其加載到內存中,然后這個文件會被解壓縮并且在內存中模擬一個跟文件系統(tǒng),這個跟文件系統(tǒng)能夠提供一個可以運行的程序,通過該程序可以加載在啟動過程中所需要的核心模塊(RAID、LVM、SCSI等文件系統(tǒng)與磁盤的驅動程序),加載完成之后,會協(xié)助內核重新呼叫/sbin/init來執(zhí)行后續(xù)的正常啟動。如果只是該文件丟失,可以使用 mkinitrd /boot/initramfs-`uname -r`.img `uname -r` 重新生成 。

CentOS6啟動過程總結與GRUB問題修復

  • 第四步:使用 grub-install 命令修復grub,需要注意的是該命令需要指定/boot目錄的父目錄,如果/boot的父目錄是根目錄(/),則可以省略 --root-directory=DIR 選項。該命令也可以修復/boot/grub下的文件

CentOS6啟動過程總結與GRUB問題修復

  • 第五步:在/boot/grub下創(chuàng)建 grub.conf 配置文件,配置文件內容如下圖所示

CentOS6啟動過程總結與GRUB問題修復

  • 第六步:使用exit命令退出硬盤中的文件系統(tǒng),再使用reboot命令重啟系統(tǒng)

5、grub.conf文件損壞的修復

如果grub.conf文件損壞,則操作系統(tǒng)將不能正常啟動,此時手中如果有安裝光盤的話可以通過救援模式重新創(chuàng)建grub.conf文件,但如果沒有安裝光盤的話,可以通過以下方式修復:

  • 第一步:如果grub.conf文件損壞,則系統(tǒng)系統(tǒng)時會自動進入grub的命令行模式,該模式下可以通過 help 命令查看幫助。使用root命令可以顯示當前grub所在硬盤的分區(qū)位置;

CentOS6啟動過程總結與GRUB問題修復

  • 第二步:使用 root 命令指定內核存放的位置;

CentOS6啟動過程總結與GRUB問題修復

  • 第三步:使用 kernel 命令設置kernel文件路徑及根文件系統(tǒng)所在設備,支持Tab命令補全;

CentOS6啟動過程總結與GRUB問題修復

  • 第四步:使用 initrd 命令設置initramfs路徑,支持Tab命令補全;

CentOS6啟動過程總結與GRUB問題修復

  • 第五步:使用 boot 命令啟動系統(tǒng);

  • 第六步:系統(tǒng)啟動后手工重新編寫 /boot/grub/grub.conf 配置文件。

四、在U盤上自制 Linux 系統(tǒng)

根據(jù) CentOS 6 的啟動過程,可以在U盤上自制一個定制版的Linux系統(tǒng),首先需要劃分出一個/boot分區(qū)和一個根(/)分區(qū),其次需要安裝grub,然后將內核文件和initramfs文件放入到U盤的/boot目錄下,最后創(chuàng)建必要的配置文件,具體步驟如下:

  • 第一步:使用 fdisk 命令為U盤創(chuàng)建/boot分區(qū)和根分區(qū),/boot分區(qū)(/dev/sdb1)大小為100M,根分區(qū)(/dev/sdb2)大小為6G

CentOS6啟動過程總結與GRUB問題修復

  • 第二步:格式化分區(qū),將/boot分區(qū)(/dev/sdb1)和根分區(qū)(/dev/sdb2)都格式化成ext4格式

CentOS6啟動過程總結與GRUB問題修復

  • 第三步:分別將U盤上的boot(/dev/sdb1)分區(qū)和根分區(qū)(/dev/sdb2)掛載到當前系統(tǒng)的/mnt/boot和/mnt/sysroot上

CentOS6啟動過程總結與GRUB問題修復

  • 第四步:使用 grub-install 命令安裝grub,注意需要指定所掛載U盤/boot分區(qū)的父目錄為/mnt

CentOS6啟動過程總結與GRUB問題修復

  • 第五步:在/mnt/boot/grub目錄下創(chuàng)建grub.conf配置文件,該配置文件中需要在kernel參數(shù)配置項中關閉selinux,并指定init程序為/bin/bash

CentOS6啟動過程總結與GRUB問題修復

  • 第六步:復制內核文件和initramfs文件到/mnt/boot目錄下

CentOS6啟動過程總結與GRUB問題修復

  • 第七步:在/mnt/sysroot目錄下創(chuàng)建一級目錄

CentOS6啟動過程總結與GRUB問題修復

  • 第八步:在/mnt/sysroot/bin目錄下創(chuàng)建fstab的自動掛載文件

CentOS6啟動過程總結與GRUB問題修復

  • 第九步:復制bash命令及相關庫文件,注意bash命令和庫文件的路徑一定要放對,可以使用which命令查看bash路徑,使用ldd命令查看bash的依賴庫。

CentOS6啟動過程總結與GRUB問題修復

  • 第十步:參考第九步,根據(jù)需求復制相應的命令及庫文件,可以使用腳本復制命令和庫,腳本內容如下:

[root@localhost ~]# cat copycmd.sh 
#!/bin/bash
 
ch_root="/mnt/sysroot"
[ ! -d $ch_root ] && mkdir $ch_root
bincopy() {
    if which $1 &>/dev/null; then
        local cmd_path=`which --skip-alias $1`
        local bin_dir=`dirname $cmd_path`
        [ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}
        [ -f ${ch_root}${cmd_path} ] || cp -n $cmd_path ${ch_root}${bin_dir}
        return 0
    else
        echo "Command not found."
        return 1
    fi
}
 
libcopy() {
    local lib_list=$(ldd `which --skip-alias $1` | grep -Eo '/[^[:space:]]+')
    for loop in $lib_list;do
        local lib_dir=`dirname $loop`
        [ -d ${ch_root}${lib_dir} ] || mkdir -p  ${ch_root}${lib_dir}
        [ -f ${ch_root}${loop} ] || cp -n $loop ${ch_root}${lib_dir}
    done
}
read -p "Please input a command: " command
while [ "$command" != "quit" ];do
    if bincopy $command ;then
        libcopy $command
    fi
    read -p "Please input a command or quit: " command
done

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

文章名稱:CentOS6啟動過程總結與GRUB問題修復-創(chuàng)新互聯(lián)
標題鏈接:http://bm7419.com/article18/dgopgp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站導航、面包屑導航、網(wǎng)站內鏈、小程序開發(fā)、網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司