1. 程式人生 > >Linux啟動流程及錯誤修復

Linux啟動流程及錯誤修復

系統啟動流程

                                                                                              通電

                                                                                                 ||

                           bios(主機板上的只讀儲存中,basic input output system) 作用:硬體檢測,啟用硬體

                                                                                                 ||

                                                              grub系統引導(grub引導分為兩個階段)

                                   階段1:mbr(主引導記錄)主引導記錄在硬碟上的0磁軌,一扇區,446個位元組

                                                                        階段2:grub檔案引導階段

                                                                                                 ||

                            啟動核心,只讀掛載/裝置,檢測裝置,對裝置驅動進行初始化,進入系統初始化階段
                                                                                                 ||

                                                                                   系統初始化階段

              載入initrd映象,開啟初始化程序systemd,開始selinux,載入核心引數,初始化系統時鐘,鍵盤,主機名稱

              重新讀寫掛載/裝置,啟用raid,lvm,啟用配額,啟動multi-user.target.wants中的所有服務,開啟虛擬控制檯

                                                                                          啟動圖形


常見系統錯誤

主引導記錄mbr被刪除

模擬問題:fdisk -l ---- 檢視當前主機的磁碟裝置,找到帶*的裝置,這裡實驗主機上為/dev/vda1

                    dd if=/dev/zero of=/dev/vda1 bs=446 count=1 ---- 刪除裝置上的主引導記錄

報錯介面:

解決方法:

虛擬機器加光碟,掛載映象,從boot options中設定從光碟中優先啟動

選擇troubleshooting

進入第二個挽救模式

挽救模式會找到已經安裝的linux系統,並把根掛載到/mnt/sysimage,挽救模式的根和真實系統不是一個根

選擇continue得到挽救模式的環境

chroot /mnt/sysimage ---- 切換到真實的根系統

grub2-install /dev/vda ---- 安裝446位元組的引導,沒有錯誤代表成功安裝

boot options 更改啟動選項,機器即可正常啟動

 

引導檔案grub.cfg丟失

模擬問題:rm -fr /boot/grub2/grub.cfg

報錯介面:

解決方法:

當主機沒有關閉時:

grub2-mkconfig > /boot/grub2/grub.cfg ---- 將grub檔案重新寫入boot

當主機已經關閉時:

setroot='hd0,msdos1' ---- boot啟動分割槽

linux16 /boot/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/vda1 ---- 路徑為自己根所在路徑

initrd16 /boot/initramfs-3.10.0-123.e17.x86_64.img ---- 系統初始化程式

boot

系統即可正常啟動,系統啟動後grub.cfg檔案還沒有存在:grub2-mkconfig > /boot/grub2/grub.cfg

 

核心檔案丟失

模擬問題:rm -fr /boot/vmlinuz-3.10.0-123.e17.x86_64

報錯介面:

解決方法:

掛載映象至光碟

進入挽救模式

chroot /mnt/sysimage

mkdir /westos

df ---- 檢視光碟裝置名稱

mount /dev/sr0 /westos ---- 把光碟掛載到新建的目錄中

cd /westos/Packages ---- 進入光碟的包目錄

cp kernel-3.10.0.-123.e17.x86_64.rpm /mnt

rpm2cpio kernel-3.10.0.-123.e17.x86_64.rpm | cpio -id

cd /mnt/boot

cp vmlinuz-3.10.0-123.e17.x86_64 /boot

boot options 更改啟動選項,機器即可正常啟動

 

系統初始化映象檔案丟失

模擬問題:rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img

報錯介面:

解決方法:

當主機沒有關閉時:

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

uname -r ---- 檢視版本號

當主機已經關閉時:

掛載映象至光碟

進入挽救模式

chroot /mnt/sysimage

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

boot options 更改啟動選項,機器即可正常啟動

 

/boot目錄被誤刪

模擬問題:rm -fr /boot/*

報錯介面:

解決方法:

掛載映象至光碟

進入挽救模式

chroot /mnt/sysimage

grub2-install /dev/vda1

cp vmlinuz-3.10.0-123.e17.x86_64 /boot

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

grub2-mkconfig > /boot/grub2/grub.cfg

boot options 更改啟動選項,機器即可正常啟動

 

開機啟動級別發生錯誤

模擬問題:systemctl set-default reboot.target

報錯介面:主機開機一直重啟

解決方法:

在此介面按e

修改檔案內容如下,在行尾加入5 ctrl+x重啟

重啟時,修改啟動級別

systemctl set-default graphical.target

 

忘記超級使用者密碼

模擬問題:假裝忘記超級使用者密碼

解決方法:

開機啟動時,按e進入介面

把ro改為rw,然後新增rd.break選項   ctrl+x啟動

chroot /sysroot切換到真實的系統環境

passwd 更改超級使用者密碼

touch /.autorelabel ---- 讓系統重新掃描所有檔案,當系統selinux關閉時,可以不建立此檔案。selinux開啟時必須建立此檔案

密碼修改成功