Centos 6 –grub legacy及grub修復

一、CentOS 6 grub legacy:

    1.啟動流程:

            POST –> Boot Sequence(BIOS) –> Boot Loader –>Kernel(ramdisk) –> rootfs –> switchroot –>             /sbin/init –>(/etc/inittab, /etc/init/*.conf) –> 設定默認運行級別 –>

            系統初始化腳本rc.sysinit –> 關閉或啟動對應級別的服務 –> 啟動終端

    2.grub legacy

            ? grub: GRand Unified Bootloader

            grub 0.x: grub legacy

            grub 1.x: grub2

            grub legacy:

            stage1: mbr

            stage1_5: mbr之后的扇區,讓stage1中的bootloader

            能識別stage2(/boot)所在的分區上的文件系統

            vmlinuz

            stage2:磁盤分區(/boot/grub/)

            initramfs—->讀取/grub.conf 文件

            grub 各階段備份文件:——–》可以用于修復

Centos 6 --grub legacy及grub修復            1.jpg

    3. grub 功用

            ? stage2及內核等通常放置于一個基本磁盤分區

            ? 功用:

            (1) 提供啟動菜單、并提供交互式接口

                a:內核參數

                e: 編輯模式,用于編輯菜單

                c: 命令模式,交互式接口

            (2) 加載用戶選擇的內核或操作系統

                允許傳遞參數給內核

                可隱藏啟動菜單

            (3) 為菜單提供了保護機制

                為編輯啟動菜單進行認證

                為啟用內核或操作系統進行認證

    4. grub的命令行接口

            help: 獲取幫助列表

            help KEYWORD: 詳細幫助信息

            find (hd#,#)/PATH/TO/SOMEFILE:

            root (hd#,#)        #指定根目錄

            kernel /PATH/TO/KERNEL_FILE: 設定本次啟動時用到的內核文件;

                額外還可添加許多內核支持使用的cmdline參數

                例如: max_loop=100 selinux=0 init=/path/to/init

            initrd /PATH/TO/INITRAMFS_FILE: 設定為選定的內核提供額外文件的ramdisk;

            boot: 引導啟動選定的內核

           

            ? cat /proc/cmdline 內核參數

            ? 內核參數文檔:/usr/share/doc/kernel-doc-

                2.6.32/Documentation/kernel-parameters.txt

            ? 識別硬盤設備:

                (hd#,#)

                hd#: 磁盤編號,用數字表示;從0開始編號

                #: 分區編號,用數字表示; 從0開始編號

                (hd0,0) 第一塊硬盤,第一個分區

                

        

    5. 手動在grub命令行接口啟動系統:(啟動選擇菜單,選擇"e")

            grub> root (hd#,#)                  #指定根目錄分區位置

            一般為 root (hd0,0)

            grub> kernel /vmlinuz-VERSION-RELEASE ro

            root=/dev/DEVICE

            # 指定內核vmlinuz以及根目錄

            grub> initrd /initramfs-VERSION-RELEASE.img

            #指定initramfs

            grub> boot            #引導

    6.grub legacy配置文件

        grub 配置文件: /boot/grub/grub.conf <– /etc/grub.conf(軟鏈接)

      

        文件內容示例:

        —————————————————————————————-

            # 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/mapper/vg0-root

            #          initrd /initrd-[generic-]version.img

            #boot=/dev/sda

            default=0

            timeout=2

            splashimage=(hd0,0)/grub/splash.xpm.gz   #開機啟動畫面背景圖

            hiddenmenu

            title CentOS 6 (2.6.32-642.el6.x86_64)     第0啟動項        

            root (hd0,0)        

            kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM.UTF-8                 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto                         rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us  crashkernel=auto 

            initrd /initramfs-2.6.32-642.el6.x86_64.img

            

            title MaMaDan    第1 啟動項目       

             root (hd0,0)       

             kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM.UTF-8                 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto                         rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us quiet rhgb crashkernel=auto        

             initrd /initramfs-2.6.32-642.el6.x86_64.img

        ——————————————————————————————–

        啟動效果:

            2.jpg    

    

        ——————————————————————————————-

        quiet rhgb 可以刪去,用于美化啟動界面,但是會隱藏錯誤信息,刪除后可以看到詳細錯誤信息,以字符界面顯示

                基本必須項目:

                default=#

                timeout=#

                       title #############

                root ( )

                kernel /############

                initrd /########

        ————————————————————————————

    7.配置文件內容解析:

            default=#: 設定默認啟動的菜單項;落單項(title)編號從0開始

            timeout=#:指定菜單項等待選項選擇的時長

            splashimage=(hd#,#)/PATH/TO/XPM_FILE:菜單背景圖片文件路徑

            hiddenmenu:隱藏菜單

            password [–md5] STRING: 啟動菜單編輯認證

            添加在第一個title 之前時,用于設定全局單用戶模式密碼

            添加在指定title 之內,則用于設定指定title 密碼

            建議使用加密口令

            grub-md5-crypt 生成加密口令

            或  openssl passwd -1  

            Centos 6 --grub legacy及grub修復3.jpg

            title TITLE:定義菜單項“標題” , 可出現多次

            root (hd#,#): grub查找stage2及kernel文件所在設備分區;為grub“根”

            kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:啟動的內核

            initrd /PATH/TO/INITRAMFS_FILE: 內核匹配的ramfs文件

            password [–md5] STRING: 啟動選定的內核或操作系統時進行認證

    8. grub加密

            ? 加密密碼生成工具: grub-md5-crypt

            eg:  生成密碼為“123456”的加密字符

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

            在第一個title前添加password string

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

    9. 破解root口令:

            啟動系統時,設置其運行級別1,進入單用戶模式,即可修改密碼

    10. 進入單用戶模式:

            (1) 編輯grub菜單(選定要編輯的title,而后使用e命令);

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

                 Centos 6 --grub legacy及grub修復

            (2) 在選定的kernel后附加

            1, s, S或single都可以;

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

            Centos 6 --grub legacy及grub修復

            按“回車”確認,并退回到前一界面

            (3) 在kernel所在行,鍵入“ b”命令

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

    

二、grub安裝(修復)

        ? 安裝grub:(救援模式下)

        (1) grub-install   可以修復第一(MBR被破壞)、第二階段

            安裝grub stage1和stage1_5到/dev/DISK磁盤上,并

            復制GRUB相關文件到 DIR/boot目錄下

            grub-install –root-directory=DIR /dev/DISK

            (/boot/grub 整個文件夾丟失,可用此方法修復)

             Centos 6 --grub legacy及grub修復

        修復前,需要先chroot /mnt/sysimage

        grub-install /dev/sda

        注意:修復第一階段時,不可指定分區,指定設備即可

        (2) 手動設定grub配置(注:此步驟不會生成grub.conf配置文件,需后續手動創建)

            grub> root (hd#,#)                     #指定root分區

            grub> setup (hd#)   #修復  1.5 及 2階段

            檢查并修復1.5,2 階段

            注意: /boot/grub 下的stage* 文件,是各階段備份文件,用于修復grub的,若文件,grub setup 依賴于這些文件,

                但是grub install 不依賴這些文件

         

三、grub 模擬損壞與修復

——————————————————————————————————–

        1. 損壞第一階段 stage1: (破壞mbr  (446字節))

        stage1 破壞:

        Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

        修復:

        1 ) 救援模式下:

            chroot /mnt/sysimage

            grub-install /dev/sda

        2) 若/boot/grub 中的各階段備份文件存在,可直接在grub命令行下setup修復

            grub

            grub>root (hd0,0)    # 指定根

            grub>setup (hd0)

    Centos 6 --grub legacy及grub修復      Centos 6 --grub legacy及grub修復

    Centos 6 --grub legacy及grub修復      Centos 6 --grub legacy及grub修復

——————————————————————————————————

           

        2. 損壞 1.5階段 stage 1.5 :

            dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1

        修復:

            1)救援模式下:

            chroot /mnt/sysimage

            grub-install /dev/sda

            2) 若/boot/grub 中的各階段備份文件存在,可直接在grub命令行下setup修復

            grub

            grub>root (hd0,0)    # 指定根

            grub>setup (hd0)

——————————————————————————————————–

        3. 破壞(刪除)/boot/vmlinux  , initramfs

            修復:

            1)救援模式下,掛載iso系統文件

            chroot

            mkinitrd /boot/initramfs-`uname -r`.img `uname -r`

            #修復 initramfs

            從光盤中復制mvlinuz*文件至/boot

            完成后再手動建立grub.conf即可完成

            2)救援模式下,使用網絡獲取vmlinuz文件

            (從其他 主機處獲取缺失文件)

            chroot

            mkinitrd /boot/initramfs-`uname -r`.img `uname -r`

            scp host_ip:/boot/vmlinuz* /boot/

            (從遠程主機中拷貝vmlinuz文件)

            完成后再手動建立grub.conf即可完成

——————————————————————————————————–

       4. 刪除 /boot :(刪除了/boot整個目錄)

           修復:

            救援模式下:

            掛載光盤 mount /dev/cdrom /dir

            重建/boot:

               rpm -ivh /##/cdrom/Packages/kernel-###  –force

            |replacepkgs

            #重建/boot中的各文件,但不包括grub.conf

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

            Centos 6 --grub legacy及grub修復                                                                      

Centos 6 --grub legacy及grub修復

            修復grub:

            chroot /mnt/sysimage

            grub-install /dev/sda

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

            重建grub.conf文件:

            vi  /boot/grub/grub.conf:

            default=0

            timeout=2

            title mamadan

            root (hd0,0)

            kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/vg0/root

            initrd /initramfs-2.6.32-642.el6.x86_64.img

——————————————————————————————————–

        5. 刪除/etc/fstab 以及/boot:

        修復:

        救援模式下:

            此時由于fstab丟失,無法掛載根:

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

            救援模式shell下,使用 blkid  可以查看磁盤情況:

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

            (無法區分哪個是根,需要將每個分區都掛載,以確定哪個是根)

        1) 系統內存在使用lvm時,需要先激活lvm:

            vgchange -ay

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

            掛載各分區,嘗試確定根位置:

            mkdir /mnt/sda1

            mkdir /mnt/sda2

            mkdir /mnt/sdb1

            mkdir /mnt/sdb2

            mount ………………..

            略

        2) 系統內僅使用普通分區時,直接掛載各分區來確認根位置

            mkdir /mnt/sda1

            mkdir /mnt/sda2

            mkdir /mnt/sdb1

            mkdir /mnt/sdb2

            …………..

            進入根對應分區,建立fstab文件,并重啟系統,重新進入救援模式,讓救援系統掛載根目錄

            注意: 需要掛載 root ,usr ,var 三個分區,否則修復/boot目錄文件時,可能會

                 因無依賴文件而已報錯

            掛載分區:

            mkdir /mnt/sysroot

            mount /dev/vg0/root /mnt/sysroot

            修復fstab:

            #     vi /mnt/sysroot/etc/fstab

            /dev/sda1 /boot ext4 defaults 1 1

            /dev/vg0/root / ext4 defaults 1 2

            /dev/vg0/usr /usr ext4 defaults 1 2

            /dev/vg0/var /var ext4 defaults 1 2

            重啟,再次讓救援系統嘗試掛載根目錄:

            Centos 6 --grub legacy及grub修復Centos 6 --grub legacy及grub修復

            根成功被識別并掛載后,按照/boot 修復方法繼續修復即可

——————————————————————————————————–

 

原創文章,作者:ldt195175108,如若轉載,請注明出處:http://www.www58058.com/48234

(0)
ldt195175108ldt195175108
上一篇 2016-09-21
下一篇 2016-09-21

相關推薦

  • linux用戶和組的配置文件

    1./etc/passwd:用戶及其屬性信息(用戶名,密碼,uid,gid,gecos注釋性描述信息,家目錄,登錄shell)在/etc/passwd文件中每個用戶都有一個對應的記錄行,它記錄了這個用戶的一些基本屬性。系統管理員經常會接觸到這個文件的修改以完成對用戶的管理工作。這個文件對所有用戶都是可讀的。      …

    2017-07-22
  • 文件的壓縮與解壓

    文件的壓縮與解壓   常用命令既參數 1, gzip                        …

    Linux干貨 2017-04-16
  • N25_第一周博客作業

    一、計算機組成及其功能      1、CPU:          運算器:計算功能,對數據進行加工處理的部件。          控制器:負責從存儲器讀取指令,控制計算器之間的運行狀態和結果;     &nbs…

    Linux干貨 2016-12-04
  • inotify+rsync同步方案(ubuntu,適用其他發行版)

    系統:Ubuntu 16.04.1  工具:rsync 3.1.1 、inotify -tools 3.14      作者:jevtse    本文除了軟件安裝部分,其他內容同樣適用其他linux系統;同步目標主機:172.16.250.…

    2017-03-05
  • linux 下的文件壓縮與解壓

    文件壓縮 壓縮原理:把文件的二進制代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0 的寫法60,來減少該文件的空間。 目的:時間換空間,cpu時間–>空間 壓縮文件工具:    compress|uncompress 壓縮后的文件.z    gzip|gunzip  …

    Linux干貨 2016-08-21
  • 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。[root@localhost ~]# cp -r /etc/skel/ /home/tuser1[root@localhost /]# chmod -R g=,o= /home/tuser1 2、編輯/etc/group文件…

    Linux干貨 2017-03-04

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-23 11:35

    圖片還有損壞的,怎么不解決?

欧美性久久久久