CetnOS6啟動流程以及LVM下的fstab及boot恢復實驗

centos6啟動流程

  1. 主動讀取BIOS,通過CMOS加載硬件信息 ,并進行POST,指定第一個可啟動的設備

    ROM:BIOS,Basic Input and Output System,保存著計算機系統最重要的基本輸入輸出程序,系統信息設置,開機加電自檢程序
    RAM:保存各項參數的設定

  2. 讀取第一個可啟動設備MBR的引導加載程序(grub)的啟動信息

    • MBR: 446 boot loader 64:分區表 2 :55aa

      • BIOS通過硬件的INT13中斷功能來讀取MBR的
    • Windows:ntloader 僅是啟動OS
      Linux: 提供菜單; 轉交系統控制權; 直接指向內核文件

      1. LILO:LInuxLOader
      2. GRUB: GRandUnified Bootloader

        • primary boot loader:1st stage,1.5stage
        • secondary boot loader:2 stage,分區文件

          bootloader的1stage是在MBR內進行的,1.5stage是再0面0磁道0扇區的后續扇區,2stage是在/boot分區上邊
          1stage是 尋找/boot分區的文件系統驅動
          1.5stage內就是/boot分區文件系統驅動,識別/boot分區
          2stage是/boot分區相關操作
          /boot/grub下的stage類文件(除了stage2)都是備份

    • ramdisk:使用緩存或緩沖來加速對磁盤上文件的訪問

      • centos5:initrd 工具程序:mkinitrd
        centos6:initramfs 工具程序:mkinitrd,dracut\

        自己創建initramfs文件
        mkinitrd [-v] [-with=模塊名稱] initrd文件名 內核版本

        -v 顯示mkinitrd的過程
          --with=[模塊名稱]:模塊名稱指的是模塊的名字,不需填寫文件名
                  如果在救援模式下,需要切根,因為救援模式下好多庫文件不存在
    • 解壓縮內核到內存中,

      加載可識別的所有硬件設備(以自己的功能重新檢查一次硬件,不一定適用BIOS的檢測結果)
      加載硬件驅動
      以只讀方式掛載根系統
      運行用戶空間的第一個程序:/sbin/init

    • 內核內容

  3. 內核執行init程序,獲取默認運行信息

    • init程序類型:

      • SysV: init, CentOS 5之前
        配置文件:/etc/inittab
      • Upstart: init,CentOS6
        配置文件:/etc/inittab, /etc/init/*.conf
      • Systemd:systemd, CentOS 7
        配置文件:/usr/lib/systemd/system;/etc/systemd/system
    • 運行級別,為系統運行或者維護等目的而設定;0-6,7個級別

      0 系統直接關機
      1 單用戶模式下,用在系統出問題時的維護
      2 類似下面的runlevel 3,但無NFS服務
      3 純文本模式;多用戶模式
      4 系統保留功能;與上面的runlevel 3基本沒有差異
      5 圖形界面
      6 重新啟動
      切換等級:init #
      查看等級: runlevel who -r

    • /etc/inittab文件相關知識

      • 每一行定義一種action以及與之對應的process
      • id : runlevel : action : process

        id:代表init的主要工作選項,只是簡單代表說明
        runlevel:在那些等級下運行
        action: initdefault:代表默認的runlevel設置值
        sysinit:代表系統初始化的操作選項
        ctrlaltdel:代表ctrl+alt+del三個按鍵是否可以重新啟動
        wait:代表后面設置的命令項目必須要執行完畢才能繼續下面的其他操作
        respawn:代表后邊字段的命令可以無限制的重新啟動
        process:可以進行的命令

          ca::ctrlaltdel:/sbin/shutdown -t3 -r now
          id:3:initdefault:
          si::sysinit:/etc/rc.d/rc.sysinit
          l0:0:wait:/etc/rc.d/rc0
          l1:1:wait:/etc/rc.d/rc1
          1:2345:respawn:/sbin/mingetty tty
          x:5:resawn:/etc/prefdm -nodaemon  x window 則是這行決定的
      • /etc/init/*.conf

  4. init程序執行/etc/rc.d/rc.sysinit文件

    取得網絡環境與主機類型:/etc/sysconfig/network
    設置顯示與啟動過程中的歡迎界面(textbanner)
    檢查根文件系統,并以讀寫方式重新掛載根文件系統
    掛載/etc/fstab文件中定義的文件系統
    設置系統時間:讀入/etc/sysconfig/clock設置值 修改時區的話,把/user/share/zoneinfo/Asia Shanghai復制到/etc/local下
    激活udev和selinux
    激活swap設備
    初始化軟件磁盤陣列、初始化lvm文件系統、、磁盤配額
    加載內核相關設置:/etc/sysctl.conf
    用戶自定義模塊加載:/etc/sysconfig/modules.conf設置
    清除啟動過程中產生的臨時文件
    將啟動相關信息加載到/var/log/dmesg中

  5. 啟動核心的外掛模塊/etc/modeprobe.conf文件

  6. init執行各個批處理文件

    • 各個運行級別腳本所在目錄:

      /etc/rc.d/rc 0.d
      /etc/rc.d/rc 1.d
      /etc/rc.d/rc 2.d
      /etc/rc.d/rc 3.d
      /etc/rc.d/rc 4.d
      /etc/rc.d/rc 5.d
      /etc/rc.d/rc 6.d

    • 腳本文件運行規則:
      進入到某個運行級別的腳本目錄/etc/rc.d/rcN.d

      k: k##: ##運行次序;數字越小,越先運行;數字越小的服務,通常為依賴到別的服務
      s: S##:##運行次序;數字越小,越先運行;數字越小的服務,通常為被依賴到的服務
      s開頭的文件,運行
      k開頭的文件,關閉

    • chkconfig命令詳解

      1. 查看服務所在級別的啟動或關閉情形
        chkconfig [–list] name
        添加服務給chkconfig管理

      2. SysV的的服務腳本放置于/etc/init.d
        chkconfig –add name

      3. 服務腳本格式信息

        \# chkconfig:   345 95 5    #345表示在3,4,5模式下為開啟,95為S95,5為K5
         \# description:                #描述,在CentOS5必須加上,在CentOS6以及之后的版本可不加
      4. 刪除
        chkconfig –del name

      5. 修改制定的鏈接類型
        chkconfig [–level levels] name 
        –level LLLL:省略是表示2345

    • 圖形化界面ntsysv命令
  7. init執行/etc/rc.d/rc.local

    正常情況下,最后啟動一個服務S99local沒有鏈接至/etc/init.d下的腳本,而是指向了/etc/rc.d/rc.local腳本
    不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置于/etc/rc.d/rc.local文件中

  8. 執行/bin/login程序,等待用戶登錄

    1:2345:respawn:/usr/sbin/mingettytty1
         2:2345:respawn:/usr/sbin/mingettytty2
         ...
         6:2345:respawn:/usr/sbin/mingettytty6
         mingetty會自動調用login程序
         x:5:respawn:/etc/X11/prefdm -nodaemon
  9. 登錄后以shell控制主機

    BIOS加載硬件信息–》post加電自檢–》加載MBR里grub信息–》stage1.5–》stage2–》initramfs–》 rootfs–>init–>/etc/inittab–>設置默認運行級別–>初始化/etc/rc.d/rc.sysinit–>/etc/rc.d/rc#.d–>/etc/rc.local

  10. 補充:

    xinetd管理的服務

    • Linux中,可以將一些不常用的服務先關閉,當有人訪問服務的時候激活這些服務,而沒有人訪問的時候就關閉,這個服務就是 xinetd 服務,也叫做超級守護進程,它是一個獨立服務,必須啟動。而依賴 xinetd 服務的服務,叫做非獨立服務。注意:非獨立服務和運行模式沒有關系。而非獨立服務下,也就是xinetd服務所管理的服務,如果顯示為off狀態,那么xinetd服務無法將其喚醒。而當其顯示為on狀態,這個服務將能被xinetd服務喚醒:

      chkconfig --list #查看xinetd服務
       chkconfig 服務名稱 on #啟動這個服務(這一步相當于修改了它的配置文件,還需要激活才能生效 )
       service xinetd start #激活xinetd服務
    • /etc/xinetd.d/是xinetd的配置文件,它下面存放了依賴于xinetd服務的配置文件,而chkconfig –list所查看到的xinetd中的所有服務都是從這個目錄中的配置文件讀出的:

      拿telnet服務來所:
        vim /etc/xinetd.d/telnet
            disable = no        #表示不禁用,等于yes表示禁用
    • 注意,在CentOS5,6中是區分獨立服務和非獨立服務的,而在CentOS7中全部都是非獨立服務
    • service命令:手動管理服務

      service 服務 start|stop|restart
        service --status-all
    • 瞬態(Transient)服務被xinetd進程所管理
      進入的請求首先被xinetd代理
      配置文件:/etc/xinetd.conf、/etc/xinetd.d/
      與libwrap.so文件鏈接
      用chkconfig控制服務

      chkconfig tftp on

實驗

  • 刪除掛載在邏輯卷的根下的/etc/fstab配置文件以及/boot/目錄下的文件
  • 新手上路,使用mv替代rm,cp備份
  • mv /etc/fstab /root/fstab #fstab文件移動到root家目錄下的fstab中

              mkdir /root/boot && mv /boot/* /root/boot        #將boot下的所有文件移動到家目錄下的boot中(boot需要創建)
              sync*3                                #同步數據到磁盤
              reboot                                #重啟
              進入救援模式
              df                                    #查看掛載,發現并沒有被掛載!
              [](http://i.imgur.com/RMtLBfO.png)
              ls /dev/mapper    &&                    #mapper是所有LVM存放的地方,我們可以查看有沒有邏輯卷存在
              lvdisplay                        #使用lvdisplay命令查看LVM狀態,發現都是不可用狀態,并且很用容易看出根目錄在哪個邏輯卷中
              vgchage -ay                            #激活vg,也就是激活邏輯卷
              lvdisplay                            #再次確認LVM狀態
              ls /dev/mapper                        #查看LVM設備
              mount /dev/mapper/VolGroup-lv_root /mnt/sysimage        #根據查看到的信息將根掛載到/mnt/sysimage(sysimage可以是其他掛載點)下
              cd /mnt/sysimage                    #切換到操作系統根目錄下
              ls                                    #查看是否是操作系統根目錄
              vi etc/fstab                    #在當前目錄下的etc下創建fstab文件,注意是當前目錄而不是/
                  :r! ls /dev/mapper        #在末行模式下使用r!讀取出LVM的名字
                  /dev/sda1  /boot  ext4  defaults 0 0
                  /dev/mapper/VolGroup-lv_root  / ext4 defaults 0 0
                  /dev/mapper/VolGroup-lv_swap swap  swap  defaults 0 0    #注意,所有的LVM信息都需要寫入
                  wq            #保存退出
              sync*3        #同步磁盤,sync輸入三次
              exit        #退出bash,進入菜單reboot重啟,必須退出重啟
              進入救援模式
              chroot    /mnt/sysimage/    #切根
              mount /dev/cdrom /mnt    #掛載光盤到/mnt
              rpm -ivh /mnt/Packages/kernel-2.6.32-642.e16.x886_64.rpm --force    #安裝kernel包
              ls /boot        #查看boot下文件是否恢復
              grub-install /dev/sda    #修復grub
              退出并重啟
              在grub后輸入
              kernel /vmlinuz-2(tab補全) root=/dev/mapper/VoGroup-lv_root selinux=0
              initrd /init(tab補全)
              boot    #啟動
              #注意,修復grub.conf文件時臨時有效,如果想永久修復需要重新編輯/boot/grub/grub.conf
                  default=0
                  timeout=5
                  title CentOS68
                      kernel (hd0,0)/vmlinuz-.... ro root=/dev/vg0/root 
                      initrd /initramfs-...img

原創文章,作者:半斤八兩,如若轉載,請注明出處:http://www.www58058.com/75355

(0)
半斤八兩半斤八兩
上一篇 2017-05-13 17:48
下一篇 2017-05-13 19:37

相關推薦

  • 馬哥教育網絡第21期-第八周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。   網橋從一個局域網接收MAC幀,拆封、校對、校驗之后,按另一個局域網的格式重新組裝,發往它的物理層。由于網橋是鏈路層設備,因此不處理數據鏈路層以上層次協議所加的報頭。   集線器的主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點…

    Linux干貨 2016-10-24
  • Linux 網絡屬性管理

    在介紹Linux網路屬性管理之前,我還要介紹下以太網(Enternet) 以太網的工作原理 以太網才用帶沖突檢測的載波偵聽多路訪問(CSMA/CD)機制。以太網中節點都可以看到在網絡中發送的所有信息,因此,我們說以太網是一種廣播網絡。 以太網的工作過程如下: 當以太網中的一臺主機要傳輸數據時,它將按如下步驟進行: 1.監聽信道上是否有信號在傳輸。如果有的話,…

    Linux干貨 2016-03-20
  • NFS實現(雙httpd + php-fpm + nfs + mysql 搭建discuz論壇)

    NFS相關介紹一、NFS簡介1. NFS(Network File System): NFS是一個文件共享協議, 也是是在類Unix系統中在內核中實現的文件系統。2. 起源: 最早是由SUN公司研發,非常古老,只是實現文件共享,安全控制方面比較簡陋。 版本有, NFSv1, NFSv2,NFSv3,NFSv4. v4版開始支持kerber…

    Linux干貨 2016-10-19
  • 防火墻之iptables使用

    一、防火墻簡介           Firewall:防火墻,隔離工具;工作于主機或網絡邊緣,對于進出本主機或本網絡的報文根據事先定義的檢查規則作匹配檢測,對于能夠被規則匹配到的報文作出相應處理的組件;        軟件防火墻(軟件邏輯):一般寄生在操作系統…

    2017-06-18
  • 阿里巴巴開源項目nginx_concat_module企業部署實例

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1580194        公司的前端開發工程師今天找我,讓我給他搞下淘寶的一個開源項目 nginx_concat_m…

    Linux干貨 2016-08-15
  • 任務計劃配置

             任務計劃:         linux任務計劃,周期任務執行         未來的某個時間點執行一次任務:at,batc…

    Linux干貨 2016-09-12
欧美性久久久久