Linux-CentOS6.9啓動流程排錯

  1. CentOS6.9啓動流程linux

    • POST 加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串並行接口、鍵盤、CD-ROM光驅等硬件狀況的檢測。
    • Boot Sequence(BIOS) 加載BIOS的硬件信息,獲取第一個啓動設備
    • Boot Loader MBR ,引導加載器,引導程序
    • Kernel(ramdisk) 加載核心操做系統的核心,加載硬件驅動
    • rootfs 只讀
    • switchroot 主根(init | systemd)
    • /sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 設定默認運行級別
    • 系統初始化腳本 rc.sysinit,完成系統初始化 --> 關閉或啓動對應級別的服務
    • 啓動終端
  2. /boot/中ramdisk文件恢復shell

    • rm -rf initramfs-2.6.32-696.el6.x86_64.img
      #意外刪除ramdisk文件機器未重啓時,恢復ramdisk文件方法:vim

      • mkinitrd /boot/initramfs- $(uname -r).img $(uname -r)
        爲當前正在使用的內核從新制做ramdisk文件,基於內核的,因此參數要給定當前內核版本號。容納後語句會自動生成文件 [initramfs-2.6.32-696.el6.x86_64.img]
      • dracut /boot/initramfs-$(uname -r).img $(uname -r)
        效果同 mkinitrd 同樣
    • #意外丟失ramdisk文件後,重啓機器,恢復方法:
      • 使用光盤引導,進入救援模式。
        最後使用 shell start shell 進入光盤系統。
        • df 查看 系統根目錄爲:/dev/sda2 /mnt/sysimage
        • chroot /mnt/sysimage/ 將根從光盤系統的根切換到主機系統的根,從而去修復主機系統。
          使用沒重啓前的恢復方法。
          -->#--> mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
          -->#--> dracut /boot/initramfs-$(uname -r).img $(uname -r)
          完成後從新啓動便可【SElinux啓用狀態時,開機時,給主機所有文件打上標籤,最好重啓前關閉SElinux】
          Linux-CentOS6.9啓動流程排錯
  3. 核心文件/boot/vmlinuz- VERSION -release,意外丟失後恢復方法。
    重啓後的狀態:
    Linux-CentOS6.9啓動流程排錯centos

    • 修復方法:
      • 進入救援模式,若是不須要網絡功能能夠先不配,一直跳過便可
      • 建立一個空文件 /mnt/cdrom,而且將光盤/dev/sr0掛載到空文件上
      • 使用rpm -ivh /mnt/cdrom/Packages/kernel-VERSION.rpm --force【強制從新安裝】--root=/mnt/sysimage【指明主機根目錄】
      • 安裝完成後,等待內存寫入磁盤,sync 同步數據,重啓便可。
  4. 在啓動第一階段錯誤,MBR引導的第一個扇區中446字節,丟失或損壞時。
    重啓後狀態直接進入光盤引導頁面,由於主機硬盤沒有MBR啓動引導,機器BIOS會自動尋找有啓動引導的東西來啓動。安全

    • 修復方法1: bash

      • 進入bash shell後,切到主機的根`chroot /mnt/sysimage/`
        • 運行 grub-install /dev/sda 命令【給主機硬盤修復grub全部啓動操做】
    • 修復方法2:
      • 使用交互式命令 grub
      • 交互輸入 root(hd#,#)【描述boot所在的硬盤編號,和硬盤裏第幾個扇區】
      • setup(hd#) 安裝便可
        【grub 交互式命令來修復,依賴/boot/grub/stage1文件】
  5. 破環grub啓動中 1.5階段 mbr以後的27個扇區,讓1階段中bootloader能識別2階段所在的分區上的文件系統
    重啓後提示【沒有了文件系統驅動,沒法識別2階段,因此涼了】
    Linux-CentOS6.9啓動流程排錯網絡

    • 修復方法:
      • 進入光盤引導,救援模式
      • 切到主機的根 chroot /mnt/sysimage/
      • 使用grub-install /dev/sda 命令修復便可
      • 命令執行完後,建議sync同步數據,將數據從內存寫入硬盤後,重啓便可
        【grub-install命令能夠一鍵修復1階段,1.5階段,2階段,很是強大。可是grub.conf文件沒法修復,只能手寫grub.conf配置文件】
  6. 啓動第二階段,grub.conf文件丟失或這損壞,第二階段就沒法啓動。ide

    • grub.conf文件的格式
      #boot=/dev/sda
      default=0 #默認啓動那一個系統
      timeout=5 #倒計時5秒後,使用默認系統啓動
      splashimage=(hd0,0)/grub/splash.xpm.gz
      hiddenmenu
      title CentOS (2.6.32-696.el6.x86_64)  #開啓內核列表
      root (hd0,0)  #系統默認的根,就是/boot 目錄,定義根的位置 在哪一個磁盤,哪一個扇區
      kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=93131fa4-d1bc-4442-b42f-215a7bb7a273
      【rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet】【這些內容不寫,也能夠正常啓動,只是一些屬性配置設置】
      initrd /initramfs-2.6.32-696.el6.x86_64.img
    • 修復方法:ui

      • 進入光盤掛載救援模式
        • 切根 chroot /mnt/sysimage
        • 進入/boot/grub裏建立 grub.conf文件
      default=0
      timeout=5
      title centos6
      kernel /vmlinuz-VERSION.img ro【只讀的意思,爲了安全要加,加不加均可以】root=UUID=..【主機根目錄】....
      initrd /initramfs-VERSION.img
  7. 當/boot 整個文件夾被清空,恢復系統操做
    重啓後錯誤提示:
    Linux-CentOS6.9啓動流程排錯操作系統

    • 修復方法:
      • 光盤引導,進入救援模式
      • 切根chroot /mnt/sysimage 切入主機根
      • 主機上掛載光盤 mount /dev/cdrom /mnt
      • 從新強制安裝內核 rpm -ivh /mnt/Packages/kernel-VERSION.rpm --force 【sync命令,同步數據】
      • grub-install /dev/sda 修復 第1 第1.5 第2 階段
      • /boot/grub/目錄下缺乏 grub.conf文件,手動寫入
      • UUID地址能夠用 vim指令讀入 blkid /dev/sda2命令顯示內容,或者直接寫root=/dev/sda2 也能夠
        Linux-CentOS6.9啓動流程排錯
    • 第二種狀況,/boot/下全部文件丟失、/etc/fstab文件也丟失,根都掛載不上去,首先須要修復 fstab 文件
      • blkid 命令 和 fdisk -l 命令 ,查看磁盤分區和UUID ,嘗試找到 根 分區和 boot/ 分區,手動寫 fstab 文件 。【看分區大小,或者 將分區掛載到文件目錄,查看分區中的內容,判斷分區是否爲根】
      • 簡單寫一下 fstab文件
        Linux-CentOS6.9啓動流程排錯
      • 重啓啓動,進入救援模式,能夠掛載上根了。
      • 後續恢復方法,同/boot 被清空的 修復方式同樣便可。
  8. 系統主進程丟失 ,/sbin/init 丟失,錯誤提示:
    Linux-CentOS6.9啓動流程排錯
    • 恢復方法:
      • 在開機,進入系統內核選擇菜單,按 e 鍵 ,在選中內核 按e鍵, 在最後,添加 init=/bin/bash ,用 bash替代init,而後保存 繼續啓動。
      • 這時候,進入的是根的 只讀掛載模式 使用 mount -o remount,rw / 從新掛載根,讀寫權限。
      • 將光盤掛載,而後使用 rpm -ivh /mnt/Packages/upstart-xxxxxxx.rpm --force 強制安裝 init 進程程序的包。便可[可tab 補全]
相關文章
相關標籤/搜索