啟動流程排錯和自建linux系統

一、grub的配置文件/boot/grub/grub.conf

default=0        ###設置默認啟動項0表示第一個
timeout=5        ##設置超時時間,如果超過5s用戶沒有操作,則默認啟動第一個
splashimage=(hd0,0)/grub/splash.xpm.gz        ###設置選擇內核界面的圖片
hiddenmenu
password --md5 $1$mCYby$yvu3YoVDYW9jf4M47YcM4/        ###選擇內核界面,進入"a","e","c"模式需要登錄的密碼
title CentOS 6 (2.6.32-642.el6.x86_64)        ###選擇內核界面處的提示信息
        root (hd0,0)        ###相對于grub的根路徑
        kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=8ecfb3ed-37d8-43cd-a1ec-8a4be6fa5973 nomodeset rd_NO_LUKS  
        KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet  ax_loop=100       
              ###內核的核心文件,如果boot沒有獨立分區則需要寫成/boot/vmlinuz.....ro只讀掛載(系統啟動后會重新掛載rw)
              ###root=***指明根,后面的都是配置的其他額外輔助功能可省略。
             ###ax_loop=100定義最大的loop設備為100個(默認8個)
             ###rhgb(圖形) quiet(隱藏內核啟動過程) 這兩項去掉后會顯示啟動過程(默認不顯示,只有按esc才能看到)
        initrd /initramfs-2.6.32-642.el6.x86_64.img        ###虛擬文件系統,偽根,根的驅動程序
        password --md5 $1$mCYby$yvu3YoVDYW9jf4M47YcM4/        ###啟動該系統時需要輸入的密碼

               2.png   

                        p:輸入密碼,輸入密碼之后會提示"a","e","c"

                        a:在啟動之前修改內核參數

                        e:編輯模式,用于編輯菜單
                        c:命令模式,交互式接口

                        o:在選擇的行后面增加一行

                        O:在選擇的行前面增加一行

                        d:刪除選擇的行

                    上述操作都是屬于臨時修改?。?!

                    注意:輸入c進入命令行模式,此時可以略過選擇內核階段,自己制定內核文件和偽根文件,步驟如下:

            1.png

                注意:kernel處,指明的根是文件系統的根,不是相對于grub的根。

        

                內核選擇界面更換圖片的辦法:

                        more /boot/grub/splash.xpm.gz  可以查到圖片的分辨率

                        根據分辨率的大小,截取或查找對應的圖片

                         linux系統中安裝圖片編輯器yum install ImageMagick -y

                         格式轉換 convert-resize 640×480 -colors 14 win.jpg win.xpm

                         gzip win.xpm

                         更改grub.conf 中配置的圖片名字,重啟即可。

啟動排錯問題:

    1、內核文件,虛擬文件系統文件配置文件中寫錯或者信息不完整導致系統無法啟動。

            1.png

                如果出現上述kernel文件信息不完整或者錯誤,可按下"e"鍵,輸入kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda3,按回車,然后回到上述界面,按"b"鍵,重新啟動即可。

                注意:上述修改屬于臨時修改,啟動完成之后,下次啟動還是存在問題,還要重新修改grub的配置文件。

    2、grub.conf被誤刪除,導致系統無法啟動。

                啟動后直接進入命令行模式:

        1.png

             按如下操作即可,由于是臨時生效,因此后續還要重新編輯grub.conf 配置文件。

        1.png

    3、破壞第一階段MBR 446個字節,dd if=/dev/zero of=/dev/sda bs=1 count=446,hexdump -C -v /dev/sda -n 512 確認。

            重啟后出現如下所示,因為啟動程序被破壞,因此系統認為硬盤不可啟動,直接從光盤引導,選擇第三項進入安全模式。

            1.png

首先/sbin/grub-install 救援模式上不存在該工具,存儲在硬盤上,因此要切根,stage1不屬于任何分區的屬于MBR,關聯硬盤設備,因此要寫/dev/sda。

            具體操作步驟:

                      方法1:

                                    1、chroot /mnt/sysimage/

                                    2、grub-install /dev/sda

                                    3、exit exit

                                    4、選擇reboot

            注意:有些環境中如果想把grub安裝到別的硬盤上根不是boot的上級目錄就要按如下寫法操作:

                                grub-install –root-directory=DIR(boot目錄的父目錄,如果其父目錄是根則可省略) /dev/DISK

                        方法2:

                                    1、grub

                                    2、root (hd0,0)

                                    3、setup (hd0)

                                    4、quit exit

                                    5、選擇reboot

    

    4、破壞1.5階段,dd if=/dev/zero of=/dev/sda bs=512 cxount=2 seek=1.

                    reboot后直接黑屏,重新啟動進入光盤引導,進入救援模式,后續具體操作同第三題破壞MBR的解決辦法相同。

                    注意:用上述第二種方法修復stage1.5要依賴于/boot/grub/*1.5*的文件,如果這個文件不存在則會修復失敗,第一種方法grub-install不依賴/boot/grub/*1.5*文件。

    5、刪除rm -rf /boot/grub  stage 2階段并修復。

        1.png

                重新啟動,光盤啟動進入救援模式,在命令行中操作如下(不能采用問題3中的方法2 ,因為缺失1.5文件):

        q.png

                注意:–root-directory=/ 可以省略,此時進入/boot/grub目錄中,可以看到缺少grub.conf文件

        1.png

                可以在在該目錄下手寫一份,也可以重新啟動,在gurb命令行中重新輸入,同問題2一樣的解決辦法。

        1.png

                    注意:輸入上述操作完后會進行修復,修復完成之后還要在輸入一遍才能啟動,啟動完成后,在/boot/grub/目錄下手寫一份grub。conf文件。

        1.png

    6、刪除/sbin/init程序,并恢復。

                    開機后進入后卡在如下畫面,不支持輸入命令,不能進行任何操作。

        1.png

                重新啟動,進入內核選擇界面,按"a"鍵,進入編輯內核參數,讓bash代替init命令,具體操作如下。

            1.png

                回車后重新啟動,將準備好的init文件還原到/sbin目錄下,重新啟動即可。

            2.png

                    如果啟動過程中,卡在某個程序不能正常啟動,可以在內核選擇界面,輸入"a",進入內核編輯界面輸入1,回車,進入單用戶模式,用chkconfig 某程序 off ,在重新啟動即可。

    

    7、刪除vmlinuz-2.6.32-642.el6.x86_64,initramfs-2.6.32-642.el6.x86_64.img 文件,重啟并恢復

                重啟后出現的畫面

                1.png

                再次從光盤啟動進入救援模式,然后創建一個目錄掛載光盤,在光盤中的isolinux目錄中可以看到vmlinuz文件,將其cp到/mnt/sysimage/boot/目錄下

            3.png

                創建/boot目錄下創建initramfs-2.6.32-642.el6.x86_64.img 文件:

            1.png

                注意:光盤/boot目錄里面vmlinuz 文件名要與/boot/grub/grub.conf配置文件的中文件名保持一致,復制完后還要修改grub.conf中文件名

       方法2、

                假設我們用網絡啟動,用光盤引導,開啟網絡連接,選擇yes。

            1.png

                可以自己配置網絡也可動態獲取,我們選擇動態獲取。

1.png

            進入到命令行模式后,輸入ifconfig 獲取ip地址后,通過scp命令從別的主機拷貝到問題主機上,重新啟動即可。

            1.png

            1.png

    8、dd if=/dev/zero of=/dev/sda bs=446 count=1

            rm -rf /boot

            破壞后重新啟動,光盤引導進入救援模式,安裝kernel包,指明安裝路徑,用–force 或–replacepkgs選項

            2.png

                用grub-install修復mbr第一階段

            2.png

                進入/boot/grub/目錄下,創建grub.conf 文件,重啟即可。

    9、刪除/etc/fstab 、刪除/boot/,重新啟動不恢復。

                進入光盤救援模式,fdisk -l 和 blkid 查看磁盤信息

            1.png

                根據上圖根據磁盤空間大小可以分析出來sda1是boot,sda3是根,但是如果在磁盤大小比較均衡,且數目表多時,就需要將每個磁盤掛載到指定目錄中,然后根據磁盤空間中的內容來確定每個磁盤。

                1.png

                2.png

                   進入根目錄中,創建etc/fstab文件。

            1.png

                    /dev/sda1 /boot ext4 defaults 1 1

                    /dev/sda3 / ext4 defaults 1 2

                    重新啟動系統,重新進入救援模式,讓系統幫我們掛載

                1.png

                1.png

                    在/boot/目錄下可以看到缺失grub目錄,因此需要通過grub-install /dev/sda來安裝

                1.png

                    最后在/boot/grub/目錄下創建grub.conf 的配置文件,重新啟動系統即可。

    

    10、邏輯卷情況下,刪除/etc/fstab,刪除/boot/的修復方法。

                    光盤啟動進入救援模式

                    lvscan 掃描邏輯卷

                    vgchage -ay 激活邏輯卷

                    mount /dev/vg0/root /mnt/sysimage 掛載邏輯卷

                    vi /mnt/sysimage/etc/fstab

                    /dev/sda1     /boot     ext4     defaults     1 1

                    /dev/vg0/root  /     ext4       defaults     1 2

                    /dev/vg0/var    /var      ext4    defaults    0  0

                    /dev/vg0/usr    /usr       ext4    defaults     0 0   

                     reboot

                     光盤啟動進入救援模式,讓系統自動掛載

                     mkdir /mnt/cdrom

                     mount /dev/cdrom /mnt/cdrom

                     chroot /mnt/sysimage

                     rpm -ivh /mnt/cdrom/Packages/kernel-2****.rpm –replace|force

                     grub-install /dev/sda

                     vim /boot/grub/grub.conf

                     default=0

                     timeout=5

                     title linuxkernel

                     root (hd0,0)

                     kernel /vmlinuz。。。。。root=/dev/vg0/root

                     initrd /intramfs……………………..

 

    11、簡易linux制作

          添加一塊硬盤,掃描讓系統識別

                1.png
          分區格式化,創建/boot/  和 /

                1.png

           格式化

                    mkfs.ext4 /dev/sdc1

                    mkfs.ext4 /dev/sdc2

           掛載/dev/sdc1 到/mnt/boot目錄,并將核心文件拷貝到目錄中,安裝grub-intall

                1.png

            創建/boot/grub/grub.conf

                1.png

           掛載根目錄,并創建根目錄中的文件

                1.png

                1.png

           編輯/mnt/sysroot/etc/fstab,注意由于我要把這個硬盤當做系統來啟動,因此在新的主機上面啟動sdc1會變成sda1 

                1.png

            將命令對應的二進制文件和庫文件通過腳本拷貝到對應的目錄中

            關機,新建虛擬機,讓配置好的硬盤,添加到虛擬機中啟動。

                        CentOS 6.8-milinux.vmdk  54M

            

                

                

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

(0)
NarutoNaruto
上一篇 2016-09-18 12:24
下一篇 2016-09-18 12:26

相關推薦

  • Linux文件查找命令詳解

    Linux中在文件系統上查找符合條件的文件,實現工具有locate和find locate: 1.它是依賴于事先索引構建好的數據庫進行查找的。更新它的數據庫有兩種方式,一種是系統定期自動更新,另一種是執行命令updatedb手動更新數據庫。 注意:索引構建過程需要遍歷整個根文件系統,極消耗資源 2.它的工作特性: 1.因為是基于數據庫實現的,所以查找速度快(…

    Linux干貨 2017-04-10
  • 初學Linux文件目錄結構

    /:根目錄 /bin(binary):放置的是二進制文件??蓤绦械拿?;非管理類的命令,通常是系統啟動就需要的文件,供所有用戶使用的基本命令;不能關聯至獨立分區, OS啟動即會用到的程序。 /sbin:管理類的命令,通常只有管理員可以使用。 /lib:存放的是系統級別的庫文件 /lib64:專用于x86_64系統上的輔助共享庫文件存放位置  /ro…

    Linux干貨 2017-07-13
  • 網絡基礎

    網絡小白一個,針對網絡的基礎知識無從下手,因此本文引用了鳥哥私房菜中的眾多概念性知識,在此謝過,本文主要從OSI七層協議,TCP協議和一些網絡中專業詞匯進行解析,并通過子網掩碼的劃分,網絡接口的配置、路由配置等實例來加深對網絡的理解。 一、OSI七層協議:     OSI七層協議的由來:   由于網絡鏈接過程…

    Linux干貨 2016-09-07
  • shell中的位置參數變量

    要了解位置變量,首先要知道什么是變量?  變量就是讓某一個特定的字符串來代表不固定的內容,簡單理解就是用一個簡單的“字眼”來替代另一個比較復雜或者容易變動的數據。 而什么又是位置變量呢?  位置變量就是bash將傳遞給腳本的參數,按照位置不同,保存在不同的位置變量中,以便于腳本調用這些變量。 位置參數變量: $1, $2, ……

    Linux干貨 2016-08-12
  • RAID級別及各個級別特性

    1、什么RAID      RAID是“Redundant Array of Independent Disk”的縮寫,中文意思是獨立冗余磁盤陣列。 2、RAID的級別及各個級別的特性:     (1)RAID-0:無差錯控制的條帶化:   &nbs…

    Linux干貨 2016-04-12
  • SELinux

    軟件的安全性 提高軟件的安全性 選擇安全系數較高的系統 提高現有系統的安全性 計算機的安全等級 D:最低的安全級別,提供最少的安全防護,系統訪問無限制。DOS C:訪問控制的權限,能夠實現可控的安全防護,個人賬戶管理,審計和資源隔離 Unix Linux windowNT B:支持多級安全,通過硬件對安全數據進行保護 A:最高級別,提供驗證設計,要求數據從生…

    Linux干貨 2017-05-21
欧美性久久久久