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,完成系統初始化 --> 關閉或啓動對應級別的服務
- 啓動終端
/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 同樣
- 使用光盤引導,進入救援模式。
最後使用 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】
核心文件/boot/vmlinuz- VERSION -release,意外丟失後恢復方法。
重啓後的狀態:
centos
- 進入救援模式,若是不須要網絡功能能夠先不配,一直跳過便可
- 建立一個空文件 /mnt/cdrom,而且將光盤/dev/sr0掛載到空文件上
- 使用
rpm -ivh /mnt/cdrom/Packages/kernel-VERSION.rpm --force【強制從新安裝】--root=/mnt/sysimage【指明主機根目錄】
- 安裝完成後,等待內存寫入磁盤,sync 同步數據,重啓便可。
在啓動第一階段錯誤,MBR引導的第一個扇區中446字節,丟失或損壞時。
重啓後狀態直接進入光盤引導頁面,由於主機硬盤沒有MBR啓動引導,機器BIOS會自動尋找有啓動引導的東西來啓動。安全
修復方法1: bash
- 進入bash shell後,切到主機的根`chroot /mnt/sysimage/`
- 運行 grub-install /dev/sda 命令【給主機硬盤修復grub全部啓動操做】
- 使用交互式命令 grub
- 交互輸入 root(hd#,#)【描述boot所在的硬盤編號,和硬盤裏第幾個扇區】
- setup(hd#) 安裝便可
【grub 交互式命令來修復,依賴/boot/grub/stage1文件】
破環grub啓動中 1.5階段 mbr以後的27個扇區,讓1階段中bootloader能識別2階段所在的分區上的文件系統
重啓後提示【沒有了文件系統驅動,沒法識別2階段,因此涼了】
網絡
- 進入光盤引導,救援模式
- 切到主機的根 chroot /mnt/sysimage/
- 使用grub-install /dev/sda 命令修復便可
- 命令執行完後,建議sync同步數據,將數據從內存寫入硬盤後,重啓便可
【grub-install命令能夠一鍵修復1階段,1.5階段,2階段,很是強大。可是grub.conf文件沒法修復,只能手寫grub.conf配置文件】
啓動第二階段,grub.conf文件丟失或這損壞,第二階段就沒法啓動。ide
#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
當/boot 整個文件夾被清空,恢復系統操做
重啓後錯誤提示:
操作系統
- 光盤引導,進入救援模式
- 切根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 也能夠
- blkid 命令 和 fdisk -l 命令 ,查看磁盤分區和UUID ,嘗試找到 根 分區和 boot/ 分區,手動寫 fstab 文件 。【看分區大小,或者 將分區掛載到文件目錄,查看分區中的內容,判斷分區是否爲根】
- 簡單寫一下 fstab文件
- 重啓啓動,進入救援模式,能夠掛載上根了。
- 後續恢復方法,同/boot 被清空的 修復方式同樣便可。
- 在開機,進入系統內核選擇菜單,按 e 鍵 ,在選中內核 按e鍵, 在最後,添加 init=/bin/bash ,用 bash替代init,而後保存 繼續啓動。
- 這時候,進入的是根的 只讀掛載模式 使用 mount -o remount,rw / 從新掛載根,讀寫權限。
- 將光盤掛載,而後使用 rpm -ivh /mnt/Packages/upstart-xxxxxxx.rpm --force 強制安裝 init 進程程序的包。便可[可tab 補全]