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 14:05
下一篇 2016-09-21 16:26

相關推薦

  • 2018近期it運維大會合集,這五場值得關注!

    17年,我們不僅看到Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb等互聯網巨頭在與DevOps親密接觸,傳統軟件公司如Adobe、IBM、Microsoft、SAP等,亦或是網絡業務非核心的蘋果、沃爾瑪、索尼影視娛樂、星巴克等都在采用DevOps,更看到了國內一大片企業開始鐘情于此。

    2018-03-01
  • N21-第二周博客

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理命令有復制、刪除與移動:cp,mv,rm cp(復制檔案或目錄) [root@study ~]# cp [-adfilprsu] 源(source) 目標(destination) [root@study ~]# cp [options] source1 source2 s…

    Linux干貨 2016-07-16
  • 【原創】RHEL7-PPTP-VPN-Server排錯

    第一次寫博客,明顯不知道如何下筆。     昨天6月21日,突然發現往日運行一切正常的pptpvpn服務器怎么也連不上了,錯誤代碼是619。這個錯誤代碼以前并沒有見過,于是上google查了一下資料,據說有幾種可能: 1,路由器或防火墻干掉了tcp1723; 2,電腦協議棧問題; 3,撥號連接的認證選項有問題; &nb…

    Linux干貨 2016-06-23
  • 永遠不要讓自己停下

    曾幾何時,我還是剛出象牙塔的小男孩。想想現在,經過4年的洗禮,我不再是小男孩了??墒?,我卻發現自己變得越來越懶,守著那丁點的知識。 我早已坐吃山空而不自知,早已落后于時代的趨勢而不自知。時代需要一個勤奮而專注的我,需要一個不懈怠的我。 如果,我不繼續前進,等待我的只有墮落。逆水行舟不進則退,不逼自己一把,永遠不知道自己的潛力有多大。 我希望說,再見,懈怠而懶…

    Linux干貨 2016-10-07
  • Because LVM so cattle(Logical Volume Manager)

    LVM: Logical Volume Manager         LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。 …

    Linux干貨 2016-08-29

評論列表(1條)

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

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

欧美性久久久久