1. 程式人生 > >Linux系統排錯及修復系統

Linux系統排錯及修復系統

系統引導過程概述:

        

1.   BIOS(Basic Input Output System):直譯過來後中文名稱就是"基本輸入輸出系統"。它是一組固化到計算機內主機板上一個ROM晶片上的程式,它儲存著計算機最重要的基本輸入輸出的程式、開機後自檢程式和系統自啟動程式,它可從CMOS中讀寫系統設定的具體資訊。

2. MBR(Master Boot Record):主引導記錄,MBR儲存於磁碟的頭部,大小為512bytes,其中,446bytes用於儲存BootLoader程式,64bytes用於儲存分割槽表資訊,最後2bytes用於MBR的有效性檢查。

3. Kernel:

核心,是Linux系統最主要的程式。

4. GRUB(Grand Unified Bootloader):多系統啟動程式。
 

一、mbr主引導分割槽損壞(grub磁碟引導階段)
1.模擬mbr引導分割槽資料(程式)丟失
fdisk -l                 ### *在哪,boot載入程式就在哪個分割槽
dd if=/dev/zero of=/dev/vda bs=446 count=1     ##截斷,破壞載入程式
reboot起不了

2.解決
1)virt-manager 中關閉虛擬機器,(小燈泡)此時硬碟啟動系統失敗,選擇使用映象啟動系統;(小電腦)確認選擇
2)開啟時,來到了安裝系統介面,選擇第三個,再選擇第二個;進入挽救模式
3)chroot /mnt/sysimage
4)grub2-install /dev/vda     ###安裝主引導分割槽的程式
5)exit(兩次)
6)關閉狀態下,重新選擇硬體方法啟動

二、grub引導檔案損壞
1.模擬
rm -fr /boot/grub2/grub.cfg
reboot後系統無引導,起不了
[[email protected] ~]# df                                   ###看/boot分割槽是否獨立出來
/dev/sda3      120529408  30757384    89772024    26%       /
/dev/sda1         508588        149440        359148       30%     /boot
...
2.解決
方法一:若沒有重啟:grub2-mkconfig  > /boot/grub2/grub.cfg          ###grub2-mkconfig就是原檔案內容,將它匯入檔案內

             
方法二:若重啟了,則要手動引導(一次性
1)指定啟動分割槽
  set root='hd0,msdos1'           ###在第幾磁碟分割槽,此處數字寫幾       
2)讀取核心,只讀掛載根目錄
  linux16 /vmlinuz-核心版本號 ro root=/dev/sda3
3)讀系統初始化映象檔案
  initrd16 /initramfs-核心版本號.img
4)boot       ###啟動,不可以reboot,否則繼續手動引導
5)上述操作可以使系統正常啟動,但是臨時的,進入系統後要執行grub2-mkconfig  > /boot/grub2/grub.cfg

 
注意:

1.若/boot分割槽獨立出來了,則現環境的根為真實的/boot;第二、三步如上寫相對路徑即可
2.若/boot分割槽未獨立,則現環境的根為真實的/;第二、三步寫絕對路徑/boot/...

3.挽救模式根目錄為/mnt/sysimage

三、核心引導檔案損壞
1.模擬核心檔案誤刪
 rm   -fr   /boot/vmlinuz-3.10.0-123.el7.x86_64
開機報錯,核心檔案找不到。系統無法啟動


2.解決

1)virt-manager 中關閉虛擬機器,(小燈泡)此時硬碟啟動系統失敗,選擇使用映象啟動系統;(小電腦)確認選擇
2)開啟時,來到了安裝系統介面,選擇進入挽救模式;再選擇第二個;選擇1繼續
3)切換真實根   chroot /mnt/sysimage/
4)掛載光碟機
   mkdir    /source
   mount    /dev/cdrom /source 
5)複製包
   cp /source/Packages/kernel-核心版本.rpm  /mnt
6)拆開包
   rpm2cpio kernel-核心版本.rpm | cpio -id
7)還原
  cp /mnt/boot/vmlinuz-3.10.0-123.el7.x86_64  /boot
8)exit(兩次)
9)關閉狀態下,重新選擇硬體方法啟動

四、系統初始化映象檔案(img檔案)缺失
1.模擬
rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
reboot時會有報錯,初始化檔案找不到


2.改正

方法一:刪除檔案後本機沒有重新啟動

mkinitrd     /boot/initramfs-$(uname -r).img $(uname -r)                          ##uname -r  顯示核心版本名

方法二:刪除檔案後本機已經重新啟動

1)virt-manager 中關閉虛擬機器,(小燈泡)此時硬碟啟動系統失敗,選擇使用映象啟動系統;(小電腦)確認選擇
2)開啟時,來到了安裝系統介面,選擇第三個;再選擇第二個;進入挽救模式
3)df
4)chroot /mnt/sysimage
5)df
6)mkdir /boot/initramfs-$(uname -r).img  $(uname -r)   ###$()=數學();uname -r 檢視核心版本號
7)exit(兩次)
8)關閉狀態下,重新選擇硬體方法啟動

五、systemctl初始化(系統啟動級別被修改)
1.設定開機後重啟
   cd    /etc/systemd/system/          
[[email protected] system]# ll default.target           ###系統開機檔案       
lrwxrwxrwx. 1 root root 40 Jul 10  2014 default.target -> /usr/lib/systemd/system/graphical.target
[[email protected] ~]# ll  /usr/lib/systemd/system/graphical.target        ###有圖介面
-rw-r--r--. 1 root root 522 Apr  2  2014 /usr/lib/systemd/system/graphical.target
[[email protected] system]# ll /lib/systemd/system/multi-user.target   ###無圖介面
-rw-r--r--. 1 root root 524 Apr  2  2014 /lib/systemd/system/multi-user.target
[[email protected] system]# ll  /lib/systemd/system/poweroff.target ###系統關閉檔案
-rw-r--r--. 1 root root 500 Apr  2  2014 /lib/systemd/system/poweroff.target
[[email protected] system]# ll   /lib/systemd/system/reboot.target    ###系統重啟檔案
-rw-r--r--. 1 root root 493 Apr  2  2014 /lib/systemd/system/reboot.target
[[email protected] system]# rm   -fr    default.target
[[email protected] system]# ln -s /lib/systemd/system/reboot.target /etc/systemd/system/default.target          ###將重啟檔案與開機檔案連結,這樣重啟優先順序調高,也就更改了啟動級別為重啟
reboot會進入無限重啟
2.改正:先手動進入圖形介面,再更改鏈路
1)在進入系統時按『e』                ###進入系統挽救模式
2)在系統核心linux16那行最後加上5              ###init5 有圖啟動

    
3)『ctrl+x』               ##執行         
4)進入虛擬機器後

[[email protected] ~]# systemctl  set-default graphical.target       ##開啟初始的啟動級別:有圖啟動
rm '/etc/systemd/system/default.target'                        
ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'
5)[[email protected] ~]# ll    /etc/systemd/system/default.target         ###已連結到正確鏈路
lrwxrwxrwx 1 root root 40 Oct 29 22:01 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target

六、當忘記超級使用者密碼
1.在進入系統時按『e』                ###進入系統挽救模式
2.刪除系統核心linux16那行ro及以後內容,將其改為rw rd.break    ###核心啟動終止,不進入系統初始化。系統初始化是進行認證的


3.『ctrl+x』                         ###進入單使用者模式執行
4.chroot /sysroot/                   ###進入真實的系統根目錄
5.whoami                             ###檢視當前使用者身份
6.echo 新密碼|passwd --stdin root    ###非互動式改密碼
7.touch /.autorelabel                ####重新建立密碼後selinux預設不識別,需要重新初始化selinux(selinux的機制;重新載入安全上下文)


8.兩次exit