Linux啟動和內核管理

                                    Linux啟動和內核管理

本章內容:

centos5centos6的啟動流程

服務管理

grub管理

自制Linux

啟動排錯

編譯安裝內核

 

Linux的組成:

Linuxkernel+rootfs(根文件系統)

kernel:進程管理、內存管理、網絡管理、驅動管理、文件系統、安全功能。

rootfs:程序和glibc

庫:函數集合,function,調用接頭,過程調用,函數調用。

程序:二進制執行文件。

 

內核設計流派:

單內核:Linux  把所有功能集成于同一個程序。

微內核:Windows  每種功能使用一個單獨的子系統實現。

 

Linux內核特點:

支持模塊化:.ko(內核對象)例如:文件系統、硬件驅動、網絡協議等。

支持內核模塊的動態裝載和卸載。

 

內核組成部分:

核心文件:/boot/vmlinuz-VERSION-release

臨時系統鏡像文件:(偽根系統)

     centos5 /boot/inird-VERSION-release.img

     centos7 /boot/initramfs-VERSION-release.img

 

模塊文件:/lib/modules/VERSION-release

 

centos6啟動流程:

post加電自檢—->MBR引導—->GRUB菜單—->加載內核—->運行init進程—->讀取/etc/inittab配置文件—->執行/etc/rc.d/rc.sysinit腳本—->執行/etc/rc.d/rcX.d*—–>執行/etc/rc.d/rc.local腳本——>執行/bin/login程序,進入登錄狀態。

 

centos啟動流程的三個階段:

     系統啟動的stage 1為:MBR中的前446個字節。

     系統啟動的stage1.5為:mbr之后的扇區,讓stage1中的bootloader能識別stage2所在分區的文件系統。

     系統啟動的stage 2 為:/boot/grub。

     kernel: 通過/boot/grub/grub.conf配置文件中kernel行指定的內核路徑去加載內核,根據initrd行指定的ramdisk偽根系統路徑去加載系統根文件系統驅動,以只讀方式掛載根文件系統,運行用戶空間的第一個init進程。讀取/etc/inittab/etc/init/*.conf配置文件執行系統的登錄運行級別(runlevel)執行/etc/rc.d/rc.sysinit初始化腳本,執行定義的登錄模式執行/etc/rc.d/rcX.d腳本啟動或終止那些服務服務,執行/etc/rc.d/rc.local腳本,最后運行終端程序/sbin/mingetty,終端程序會自動調用/etc/login用戶登錄系統。

      

ramdiskinitramfs-2.6.32-642.el6.x86_64.img

內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問。

ramdisk——>ramfs提高速度

centos5initrd,工具程序:mkinitrd

centos6initramfs,工具程序:mkinitrd  dracut

 

實驗測試:

光盤急救模式下修復誤刪除/boot下的偽根文件系統initramfs-2.6.32-642.el6.x86_64.img

 

    1) 誤刪除centos6系統中的偽根系統

        [root@centos6 boot]# rm -rf initramfs-2.6.32-642.el6.x86_64.img

        [root@centos6 boot]# ls

        config-2.6.32-642.el6.x86_64  efi  grub vmlinuz-2.6.32-642.el6.x86_64

        lost+found   symvers-2.6.32-642.el6.x86_64.gz  System.map-2.6.32-642.el6.x86_64  

        [root@centos6 boot]#

    2)掛載光盤, 執行reboot重啟系統

        [root@centos6 boot]# reboot

3)啟動時按ESC鍵,在彈出的Boot Menu中選擇CD-ROM Drive回車。

       

4)進入光盤引導界面,選擇Rescue installed system 回車。

   

5)進入到光盤急救模式后,執行 chroot  /mnt/sysimage切換到系統的根目錄下。

        bash-4.1# chroot  /mnt/sysimage

        sh-4.1# cd  /boot

        sh-4.1#mkinitrd  initramfs-`uname -r`.img  `uname -r`

    6)執行兩次exit,選擇reboot重啟。

 

init初始化:

   runlevel系統的運行級別:

   運行級別:為系統運行或維護等目的而設定:0-6級別。

   各運行級別含義如下(runlevel):

   0:關機,使用該級別會關閉主機。

   1:單用戶模式,不需要密碼驗證即可登錄系統,多用于維護。

   2:字符界面的多用戶模式,啟動網絡功能,但不會啟動nfs,多用于維護。

   3:字符界面的完整多用戶模式,大多數服務器運行在此級別。

   4:未分配使用。

   5:圖形界面的多用戶模式,提供了圖形桌面操作環境。

   6:重新啟動,使用該級別將會重啟主機。

    默認級別:3   5

    命令行切換級別:init  #

    查看當前系統運行級別:runlevelwho   -r

 

init讀取/etc/inittab配置文件

   初始化運行級別runlevelid:5:initdefault:

   系統初始化腳本:si::sysinit:/etc/rc.d/rc.sysinit

   對應運行級別的腳本目錄:l3:3:wait:/etc/rc.d/rc 3 (根據S*順序啟動服務)

   定義關機快捷鍵:ca::ctrlaltdel:/sbin/shutdown -t3 -r now

   定義UPS電源終端斷電:pf::powerfail:/sbin/shutdown -f -h +2

   定義UPS電源終端恢復供電:pr:12345:powerokwait:/sbin/shutdown -c

   對應運行級別運行終端程序:3:2345:respawn:/sbin/mingetty tty3

   在運行級別5中初始化X服務:x:5:respawn:/etc/X11/prefdm -nodaemon

  

action–動作類型:

      initdefault:設置初始化系統后默認進入的運行級別。

      sysinit:設置系統初始化的操作腳本。

      waitinit進程將等待該行配置所對應的腳本操作完成后,在繼續執行其他操作。

      ctrlaltdel:設置當用戶按下ctrl+alt+delete組合鍵后的操作。

      powerfail:設置當系統收到斷電信號時采取何種動作。

      powerokwait:設置當系統收到回復供電信號時采取何種動作。

      respawn:一旦該行配置所對應的進程被終止,則重新啟動該進程。

 

系統初始化腳本:/etc/rc.d/rc.sysinit腳本定義的功能:

       1)設置主機名

       2)設置歡迎詞

       3)激活udevselinux

       4)掛載/etc/fstab文件中定義的文件系統

       5)檢測根文件系統,并以讀寫方式重新掛載根文件系統

       6)設置系統時鐘

       7)激活swap設置

       8)根據/etc/sysctl.conf文件設置內核參數

       9)激活lvmsoftware raid設備

       10)加載額外設備的啟動程序

       11)清理操作  

 

/etc/rc.d/rcX.d腳本:

        rcX.dX根據id:5:initdefault:執行相對應的腳本。

        /etc/rc.d/rc0.d ~ /etc/rc.d/rc6.d

        /etc/rc.d/rcX.d目錄中的鏈接文件具有共同的規律:文件名以KS開頭,中間是數字序號,最后是系統中的服務腳本名。如:K95firstboot、S10network等,所鏈接的原始服務腳本位于/etc/rc.d/init.d/目錄中,其中以S開頭的文件表示啟動對應的服務,以K開頭的表示終止對應的服務,中間的數字表示在啟動時或終止服務時的執行順序。

     S*S##運行次序,數字越小,越先運行,數字越小的服務,通常會被別的服務所依賴。

     K*K##運行次序,數字越小,越先運行,數字越小的服務,通常會依賴別的服務。

 

/etc/rc.d/rc.local腳本:

        rc.local腳本是一個額外的啟動控制文件,由/etc/rc.d/rcX.d/中的S99local鏈接至位于/etc/rc.d/rc/local。rc.local腳本通常有rc腳本在最后進行加載,其作用主要是為管理員自行設置啟動命令提供一種途徑,需要在開機后自動執行的一些命令操作都可以添加到該文件中。

     注:rc.local腳本要寫命令的絕對路徑。

 

centos5、6設置系統服務在不同運行級別中的狀態:

      需要調整各種服務在不同運行級別中的自啟動狀態時,可以使用chkconfig或者ntsysv圖形化命令工具。

使用ntsysv圖形化配置工具,使用空格鍵啟動或關閉服務。

  [root@centos6 rc5.d]# ntsysv

  

 使用chkconfig配置工具

   chkconfig命令與–list選項配合使用,可以查看特定服務在不同運行級別中的啟動狀態。

     示例:

      [root@centos6 rc5.d]# chkconfig –list network

      network         0:off 1:off 2:on 3:on 4:on 5:on 6:off

      [root@centos6 rc5.d]#

   

查看系統中所有服務在個運行級別中的啟動狀態。

  [root@centos6 rc5.d]# chkconfig –list

 

   chkconfig命令與–level選項配合使用,設置指定服務在指定運行級別中的啟動狀態

   [root@centos6 rc5.d]# chkconfig –level 235  network  off

   [root@centos6 rc5.d]# chkconfig –level 235  network  on

 

chkconfig也可以使用不帶–level選項,設置服務的啟動狀態。

   [root@centos6 rc5.d]# chkconfig network on

   [root@centos6 rc5.d]# chkconfig  –list network

   network         0:off 1:off 2:on 3:on 4:on 5:on 6:off

   [root@centos6 rc5.d]#

 

破解centos56root密碼:

      通過單用戶模式破解root密碼

      1)重啟主機之后,在出現grub菜單時按任意鍵取消倒計時,并定位到title行,按e鍵進入編輯模式。

      2)定位到以kernel開頭的行并按e鍵,在行尾添加“single”或“S”或“s”或數字“1”,都可以進入到單用戶模式。

      3)回車后,按b鍵將系統引導進入當用戶模式,進入shell環境。

      4)在單用戶模式shell環境中,直接執行“passwd root”重新設置root用戶密碼。

 

grubGrand  Unified  Bootloader

      centos6:使用grub版本grub-0.97-94.el6_7.1.x86_64

      centos7:使用grub版本grub2-2.02-0.16.el7.centos.x86_64

 

grub啟動三個階段:

   stage1mbr扇區前446個字節。

  stage1.5mbr之后的扇區,讓stage1中的bootloader能識別stage2所在分區的文件系統。

   stage2:磁盤分區/boot/grub。

 

grub配置文件:

/etc/grub/grub.conf ———–>軟鏈接/etc/grub.conf

一般stage2放置在/boot/grub目錄下,內核文件放置在/boot目錄下。

      1grub提供啟動菜單,并提供交互式接口。

          選項:

             a:修改內核參數;

             e:編輯模式,用于編輯菜單內容;

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

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

         允許傳遞參數給內核

         可隱藏啟動菜單

  3)為grub菜單提供保護機制

         為編輯啟動菜單進行認證

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

 

grub的命令行接口:

     手動在grub命令行接口啟動系統:

      grub> root hd0,0)  //第一塊硬盤的第一個分區,這里的root表示根。

      grub>kernel  /vmlinuz-3.10.0-229.el7.x86_64  ro root=/dev/sda5 //啟動的內核

      grub>initrd  /initramfs-3.10.0-229.el7.x86_64.img //偽根系統

      grub>boot  //重新引導

   注意:如果/boot分區和 / 分區都在一個分區里,那么上例中的kernel initrd 的路徑都要在前面加上 /boot/vmlinuz-3.10.0-229.el7.x86_64  ro root=/dev/sda5 /initrd  /boot/initramfs-3.10.0-229.el7.x86_64.img。

 

內核kernel參數:

     max_loop=100   selinux=0   init=/bin/bash

     內核參數文檔:/usr/share/doc/kernel-doc-2.6.32/Documentation/kernel-parameters.txt

 

查看內核參數:

cat  /proc/cmdline

 

grub引導菜單配置文件:

       [root@centos6 Desktop]# vim /boot/grub/grub.conf

       default=0    //默認從#個內核啟動;

       timeout=5   //啟動菜單項等待選擇的時長,默認為5秒;

       splashimage=(hd0,0)/grub/splash.xpm.gz    //菜單背景圖片路徑;

       hiddenmenu      //隱藏菜單

       title CentOS 6 (2.6.32-642.el6.x86_64)      //定義菜單項標題;

       root (hd0,0) grub查找stage2kernel      //文件所在設備分區,為grub根;

            kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda5 rhgb quie//啟動的內核

            initrd /initramfs-2.6.32-642.el6.x86_64.img    //偽根系統

 

grub引導菜單加密:

     MD5 :密文加密命令:

         grub-md5-crypt

         openssl  passwd -1

      grub.conf配置文件中,grub密碼配置行若添加在第一個“title”行之前,則僅在需要變更grub引導參數的時候才需要提供密碼;若添加在“root(hd0,0)”之前,則在進入該系統的時候即需要提供密碼。

    示例:需要編輯grub引導參數時提供的密碼,例如:進單用戶模式,添加內核參數等。

  default=0

  timeout=5

  hiddenmenu

  password  –md5 $1$u/gGz$sK5b73aj6gQwFn6ATHzie0

  title CentOS 6 (2.6.32-642.el6.x86_64)

         root (hd0,0)

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

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

注:在vim末行模式下執行:r!grub-md5-crypt,敲擊兩次密碼。

 

示例:進系統需要提供grub密碼

  default=0

  timeout=5

  hiddenmenu

  title CentOS 6 (2.6.32-642.el6.x86_64)

  password  –md5 $1$u/gGz$sK5b73aj6gQwFn6ATHzie0

         root (hd0,0)

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

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

注:在vim末行模式下執行:r!grub-md5-crypt,敲擊兩次密碼。

 

grub修復命令:

1grub-install:

     可以修復stage 1 stage1.5 stage2,但是在stage2階段中的grub.conf配置文件修復不了。

     安裝grub stage1 stage1.5/dev/DISK磁盤上,并復制grub相關文件到DIR/boot目錄。

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

 

(2) grub

      grub>root hd#,#

      grub>setup hd#

      可以修復stage1 stage1.5,但修復時需要依賴/boot/grub目錄下的文件。

 

示例:破壞centos6 stage1 mbr446個字節),光盤急救模式下修復。

    1)破壞stage1 mbr446個字節)

         [root@centos6 Desktop]# dd if=/dev/zero of=/dev/sda bs=446 count=1

      

    2)使用hexdump命令查看確認是否破壞:

         [root@centos6 Desktop]# hexdump -C -n 512 -v /dev/sda

 

         3)掛載光盤, 執行reboot重啟系統

             [root@centos6 boot]# reboot

     4)啟動時按ESC鍵,在彈出的Boot Menu中選擇CD-ROM Drive回車。

     

     5)進入光盤引導界面,選擇Rescue installed system 回車。

 

         6)進入到光盤急救模式后,執行 chroot  /mnt/sysimage切換到系統的根目錄下。

            bash-4.1# chroot  /mnt/sysimage

        sh-4.1#grub-install   /dev/sda

 

     7)執行兩次exit,選擇reboot重啟。  

 

示例:破壞centos6 stage1.5 mbr引導扇區之后的521個字節)光盤急救模式下修復。

     1破壞centos6 stage1.5 mbr引導扇區之后的521個字節)

          [root@centos6 boot]# dd if=/dev/zero of=/dev/sda  bs=512 count=2 seek=1

 

     2)使用hexdump命令查看確認是否破壞:

          [root@centos6 Desktop]# hexdump  -C -n 1024 -v /dev/sda

          000001d0  1f 3f 83 fe ff ff 00 a8  0f 00 00 80 38 01 00 fe |?……….8……|

          000001e0  ff ff 82 fe ff ff 00 28  48 01 00 40 1f 00 00 fe  |…….(H..@….|

          000001f0  ff ff 05 fe ff ff 00 68  67 01 00 98 98 0d 55 aa  |…….hg…..U.|

          00000200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 |……………….|

          00000210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 |………………..|

 

         3)掛載光盤, 執行reboot重啟系統

             [root@centos6 boot]# reboot

     4)啟動時按ESC鍵,在彈出的Boot Menu中選擇CD-ROM Drive回車。

     

     5)進入光盤引導界面,選擇Rescue installed system 回車。

 

         6)進入到光盤急救模式后,執行 chroot  /mnt/sysimage切換到系統的根目錄下。

            bash-4.1# chroot  /mnt/sysimage

        sh-4.1#grub

        grub>root hd0,0

        grub>setup hd0

        grub>quit

        sh-4.1#

 

     7)執行兩次exit,選擇reboot重啟。

 

 示例:破壞centos6 stage2 (刪除/boot/grub目錄)

     1)刪除/boot/grub目錄

            [root@centos6 boot]# rm -rf /boot/grub/

 

         2)使用ls命令查看grub目錄是否存在

            [root@centos6 boot]# ls

        config-2.6.32-642.el6.x86_64         symvers-2.6.32-642.el6.x86_64.gz

        efi                                  System.map-2.6.32-642.el6.x86_64

        initramfs-2.6.32-642.el6.x86_64.img  vmlinuz-2.6.32-642.el6.x86_64

        lost+found

        [root@centos6 boot]#

 

        3)掛載光盤, 執行reboot重啟系統

             [root@centos6 boot]# reboot

  

        4)啟動時按ESC鍵,在彈出的Boot Menu中選擇CD-ROM Drive回車。

 

        5進入光盤引導界面,選擇Rescue installed system 回車。

  

        6)進入到光盤急救模式后,執行 chroot  /mnt/sysimage切換到系統的根目錄下。

            bash-4.1# chroot  /mnt/sysimage

            sh-4.1#grub-install   /dev/sda

        sh-4.1#cd  /boot/grub

        sh-4.1#vim grub.conf

        default=0

        timeout=5

        title=centos6.8

        kernel     /vmlinuz-2.6.32-642.el6.x86_64  ro root=/dev/sda5  rhgb quiet

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

        sh-4.1#   

    7執行兩次exit,選擇reboot重啟。

 

誤刪除/sbin/init命令和/etc/inittab配置文件:

          示例:刪除/sbin/init命令和/etc/inittab配置文件

           1)刪除/sbin/init命令和/etc/inittab配置文件

                [root@centos6 Desktop]# rm -rf /sbin/ini

                [root@centos6 Desktop]# rm -rf /etc/inittab

            

           2)檢查/sbin/init/etc/inittab是否存在

                [root@centos6 etc]# ls | grep "inittab"

                [root@centos6 etc]# ls /sbin  | grep "\<init\>"

                [root@centos6 etc]#

 

           3掛載光盤, 執行reboot重啟系統

                 [root@centos6 boot]# reboot

 

          4)啟動時按ESC鍵,在彈出的Boot Menu中選擇CD-ROM Drive回車。

 

          5進入光盤引導界面,選擇Rescue installed system 回車。

 

          6)進入到光盤急救模式后,執行 chroot  /mnt/sysimage切換到系統的根目錄下。

            bash-4.1# chroot  /mnt/sysimage

            sh-4.1#mount /dev/sr0  /mmt

            sh-4.1#cd /mnt/Packages

            sh-4.1#rm -qf  /sbin/init

            upstart-0.6.5-16.el6.x86_64

            sh-4.1#rm -qf  /etc/inittab

            initscripts-9.03.53-1.el6.centos.x86_64

            sh-4.1#rpm -ivh –force  initscripts-9.03.53-1.el6.centos.x86_64.rpm

            sh-4.1#rpm -ivh –force  upstart-0.6.5-16.el6.x86_64.rpm

        sh-4.1#

     7執行兩次exit,選擇reboot重啟。

 

服務器啟動故障:

     當重啟或開機時,有時會被一些服務卡住,半天過不去,如何解決?

        1)這時我們需要記住被卡住的服務名;

        2)重啟主機進入單用戶模式;

        3)單用戶模式中使用chkconfig命令先禁用被卡住的服務啟動;

        4)待主機啟動起來之后在排查被卡服務故障原因;

        5)如果還是不行可以在啟動主機時,添加內核參數(selinux=0)禁用內核參數;

    

實驗測試:

實驗環境:

 破壞mbr446個字節;

 破壞stage1_5階段;

 刪除/boot目錄,刪除/etc/fstab文件,刪除/etc/inittab文件,刪除/etc/rc.d/rc.sysinit系統初始化腳本文件。

 

1) 開始破壞grub、刪除目錄及文件:

 [root@centos6 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1

  1+0 records in

  1+0 records out

  446 bytes (446 B) copied, 0.000372593 s, 1.2 MB/s

 [root@centos6 ~]# dd if=/dev/zero of=/dev/sda  bs=512 count=2 seek=1

  2+0 records in

  2+0 records out

  1024 bytes (1.0 kB) copied, 0.000450367 s, 2.3 MB/s

 [root@centos6 ~]# rm -rf /boot/*

 [root@centos6 ~]# rm -rf /etc/fstab

 [root@centos6 ~]# rm -rf /etc/inittab

 [root@centos6 ~]# rm -rf /etc/rc.d/rc.sysinit

 [root@centos6 ~]#

 

2)檢查是否破壞grub、刪除目錄及文件:

      [root@centos6 ~]# hexdump -C -n 1024 -v /dev/sda

      [root@centos6 ~]# ls /boot/

      [root@centos6 ~]# ls /etc | grep "fstab"

      [root@centos6 ~]# ls /etc | grep "inittab"

      [root@centos6 ~]# ls /etc/rc.d | grep "rc.sysinit"

      [root@centos6 ~]#

 

3)掛載光盤, 執行reboot重啟系統

      [root@centos6 boot]# reboot

 

4)啟動時按ESC鍵,在彈出的Boot Menu中選擇CD-ROM Drive回車。

 

5)進入光盤引導界面,選擇Rescue installed system 回車。

 

6)進入到光盤急救模式后,執行fdisk -l查看一下磁盤分區情況。

 

     bash-4.1#fdisk -l /dev/sda

     Disk /dev/sda: 128.8 GB, 128849018880 bytes

     255 heads, 63 sectors/track, 15665 cylinders

     Units = cylinders of 16065 * 512 = 8225280 bytes

     Sector size (logical/physical): 512 bytes / 512 bytes

     I/O size (minimum/optimal): 512 bytes / 512 bytes

     Disk identifier: 0x00000000

 

        Device Boot      Start         End      Blocks   Id  System

     /dev/sda1   *           1          64      512000   83  Linux

     Partition 1 does not end on cylinder boundary.

     /dev/sda2              64        1339    10240000   83  Linux

     /dev/sda3            1339        1467     1024000   82  Linux swap / Solaris

     /dev/sda4            1467       15666   114052096    5  Extended

     /dev/sda5            1467       15666   114051072   83  Linux

 

7)查看到/dev/sda磁盤的分區情況后,就要找系統根分區了,如果事先知道“/”在哪個分區上,就可以直接掛在根到指定的目錄,如果不知道只能一個一個的掛載看。

   ?修復/etc/fstab文件:

   1)創建一個目錄掛載根分區;

   2cd切換到根分區中重建/etc/fstab文件;

   3)執行exit退出,選擇reboot重啟,讓系統重新自動掛載分區到指定目錄;

        bash-4.1#mkdir  /bo

        bash-4.1#mount /dev/sda5  /bo

        bash-4.1#cd /bo

        bash-4.1#vi  etc/fstab

        /dev/sda1    /boot      ext4   defaults  1 1

        /dev/sda5    /          ext4   defaults  1 2

        bash-4.1# exit

  ?如果此處分區為邏輯卷:

        bash-4.1#lvscan         //此時看到的邏輯卷應該是inaction的,不活動的。

           inaction     /dev/vg0/root  [20GiB]

           inaction     /dev/vg0/swap  [2GiB]

           inaction     /dev/vg0/usr  [10GiB]

           inaction     /dev/vg0/var  [20GiB]

        bash-4.1#vgscan         //此時可以看到卷組,不活動的。

          Found volume group vg0

        bash-4.1#vgchange  -ay  /dev/vg0  //激活vg0卷組上所有邏輯卷。

        bash-4.1#ls /dev/vg0/*        //查看vg0卷組下所有的邏輯卷。

         /dev/vg0/root  /dev/vg0/swap  /dev/vg0/usr  /dev/vg0/var

        bash-4.1#mkdir  /bo       //創建一個根目錄bo。

        bash-4.1# mount  /dev/vg0/root   /bo    //掛載根分區到/bo目錄下。

        bash-4.1#vi /bo/etc/fstab                //編輯/etc/fstab文件。

        /dev/sda1     /boot     ext4   defaults  1 1

        /dev/vg0/root   /        ext4   defaults  1 2

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

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

        bash-4.1#exit

       注: 執行exit退出,選擇reboot重啟,讓系統重新自動掛載分區到指定目錄;

 

8)重新進入到急救模式shell環境時可以看到chroot  /mnt/sysimage,表示/etc/fstab文件沒有問題。

   chroot  /mnt/sysimage :表示系統目錄已經掛載到光盤上的根目錄下了。

 

9)進入到光盤急救模式后,執行 chroot  /mnt/sysimage切換到待修復系統的根目錄下。

  1)修復/boot目錄下的文件,恢復內核文件。

      bash-4.1#chroot  /mnt/sysimage

      sh-4.1#mount /dev/sr0  /mnt

      sh-4.1#cd /mnt/Packages

      sh-4.1#rpm -ivh  -force kernel-2.6.32-642.el6.x86_64.rpm

      sh-4.1#cd /boot

      sh-4.1#grub-install  /dev/sda

      sh-4.1#vim  /boot/grub/grub.conf

  default=0

  timeout=5

  title=centos6.8

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

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

      sh-4.1#  

 

 10)修復/etc/inittab配置文件和/etc/rc.d/rc.sysinit系統初始化腳本:

      sh-4.1# rpm  -df  /etc/inittab

      initscripts-9.03.53-1.el6.centos.x86_64

      sh-4.1#rpm  -df  /etc/rc.d/rc.sysinit

  initscripts-9.03.53-1.el6.centos.x86_64

  sh-4.1# cd /mnt/Packages

  sh-4.1#rpm -ivh –force  initscripts-9.03.53-1.el6.centos.x86_64.rpm

 11)執行兩次exit,選擇reboot重啟。

 

 

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

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

相關推薦

  • lvs 基本概念

    LVS(linux virtual machine) 的簡寫,是一個虛擬的服務器集群系統,主要用于4層負載均衡。 宗旨: 使用集群技術和Linux操作系統實現一個高性能、高可用的服務器. 很好的可伸縮性(Scalability) 很好的可靠性(Reliability),應該還是高可用吧 很好的可管理性(Manageability…

    Linux干貨 2015-09-14
  • httpd服務歸納:httpd基本配置(https原理以及配置 )

    一 https介紹以及實現機制   1. https協議:      在傳統的http協議中,文檔是明文傳送的,網頁涉及敏感信息是,將變得很不安全。為了保證敏感信息的安全,httpd結合加密庫openssl或openssh 產生了https 協議。這就好比兩個黑社會團伙交易,都怕出事被抓,…

    Linux干貨 2015-05-23
  • MySQL系列之一鍵安裝腳本—-單實例/多實例

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1440414       最近在搞MySQL,由于經常測試一些東西。因此,就寫了一個一鍵安裝腳本。 腳本用途: 用于在…

    Linux干貨 2016-08-15
  • openvpn安裝配置過程

    前言     之前為了方便遠程辦公時訪問公司的內部系統,如:svn、OA、wiki、禪道等等;通通在防火墻上做了端口映射。然后有個內部系統被黑了,各種弱口令沒辦法。果斷關閉端口映射,看來還是得搭建個VPN服務器,vpn設備感覺大材小用。馬上就想到了開源的openvpn,下面就來介紹openvpn的安裝配置過程。 ope…

    Linux干貨 2015-05-11
  • keepalived +LVS DR 雙主互備模型實驗

    keepalived +LVS DR 雙主互備模型實驗  實驗環境介紹     操作系統:DR:centos 7.2 兩個節點,都安裝keepalived             &nbsp…

    Linux干貨 2016-03-09
  • 基礎指令使用篇 Linux版

    回顯,回聲 echo echo hello > /dve/pts/1 打開圖形界面 init 5   關閉圖形界面 init 3 ctrl+alt+F1-6字符,F7圖形界面 chvt 改變虛擬終端 chvt +數字 startx  圖形的軟件打開 poweroff centOS 6.8與7.2都正常關閉斷電 hostname 顯示…

    系統運維 2016-08-04
欧美性久久久久