1. 程式人生 > >part_17:系統排錯

part_17:系統排錯

1 . root密碼忘記

  1. 重新啟動系統
  2. 在系統啟動階段按上下健停止系統系統引導
  3. 選擇啟動引導標題,按“E”進行編輯
  4. 找到linux16引導條目這一行,從這行最後刪除到ro選項,並把ro改為rw,然後新增rd.break選項 在這裡插入圖片描述 在這裡插入圖片描述
  5. ctrl+x啟動設定過後的系統引導條目
  6. 進入系統後執行chroot /sysroot切換到真實的系統環境 在這裡插入圖片描述
  7. passwd root修改超級使用者密碼
  8. 建立檔案/.autorelabel讓系統從新掃描所有檔案
  9. exit兩次使系統自動重新啟動 在這裡插入圖片描述

2 . 系統恢復

(一) 硬碟引導階段 mbr主引導記錄的恢復

  1. 模擬問題:dd if=/dev/zero of=/dev/vda bs=446 (主分割槽檔案的446個位元組)count=1 在這裡插入圖片描述
  2. reboot
  3. 進入挽救模式:poweroff後,匯入映象 ,將IDE CDROM 調到最上邊,這是光碟啟動,因為要從映象裡面安裝東西 在這裡插入圖片描述 在這裡插入圖片描述
  4. 開機後 troubleshooting 後, 選擇第二個linux system,直接continue ok ok 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述
  5. chroot /mnt/sysimage 將主引導記錄目錄移到根下
  6. df 檢視一下 在這裡插入圖片描述
  7. grub2-install /dev/vda 啟動分割槽所在硬碟
  8. 兩次exit 在這裡插入圖片描述
  9. poweroff後將IDE CDROM 移下去,改成硬碟啟動 開機就可 在這裡插入圖片描述

(二) 引導檔案的丟失 恢復 (系統初始化手動引導) == /boot/ grub2 下的是引導檔案==

  1. 假設不小心把引導檔案刪除 rm -rf /boot/grub2/grub.cfg
  2. 兩種恢復方法: (1)不用開機重啟 : grub2-mkcofig > /boot/grup2/grup.cfg 在這裡插入圖片描述 (2)開機重啟:(先df檢視位置) 在這裡插入圖片描述 1)grup > set root=‘hd0,msdos1’ ##設定跟目錄為第幾個硬碟的第幾個分割槽。 ==這裡的位置是/boot所在的位置,如果/boot單獨分割槽,假如是/dev/vda5 則是msdos5 ; 如果 /boot沒有單獨分割槽,那位置就是/的所在分割槽。 == 因為/boot沒有單獨分割槽,所以指向根分割槽 2)grub > linux16 /boot/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/vda1 ## 將核心檔案只讀掛載到跟分割槽 == 其中:vmlinuz-3.10.0-123.e17.x86_64是核心檔案;vda1 是跟分割槽的裝置名稱,無論什麼時候,這裡指向的是跟分割槽;如果/boot沒有單獨列出,那麼路徑就是linux16/boot/vmlinuz-3.10.0-123.e17.x86_64 ; 如果/boot單獨列出,則路徑是linux16/vmlinuz-3.10.0-123.e17.x86_64 == 3)grub > initrd16 /boot/initramfs-3.10.0-123.e17.x86_64.img(系統初始化映象) 4)grub > boot ##啟動在這裡插入圖片描述
    5)因為以上的操作可以使系統正常啟動,但是是臨時的,所以進入系統後還需要執行:grub2-mkcofig > /boot/grub2/grub.cfg 在這裡插入圖片描述

(三) 核心檔案的丟失

  1. 假設刪除了: rm -rf /boot/vmlinuz-3.10.0-123.e17.x86_64 ##假設刪除了核心檔案 在這裡插入圖片描述
  2. 進入到挽救模式: (1)chroot /mnt/sysimage 將主引導記錄目錄移到根下 在這裡插入圖片描述 (2)mkdir /westos 建立一個目錄,用來掛載映象:mount /dev/sr0 /westos (3)cd /westos後ls 可以看到Package cd到該目錄下 (4)複製 kernel-3.10.0-123.e17.x86_64.rmp 到 /mnt下(目錄不是唯一的,自己能記住就行,也可以是/etc 無所謂):cp kernel-3.10.0-123.e17.x86_64.rm /mnt (5)cd /mnt 拆包:rpm2cpio kernel-3.10.0-123.e17.x86_64.rpm | cpio -id (6)cd到/mnt下的boot cp vmlinuz-3.10.0-e17.x86_64 /boot/ ##將核心檔案移到/boot (7)兩次exit退出後,改成硬碟啟動,就可以了。 在這裡插入圖片描述
  3. 改成硬碟啟動 開機就可

(四)系統初始化映象檔案丟失 uname -r :專門檢視核心版本

  1. 模擬實驗:假設刪除了映象檔案:rm -rf /boot/initramfs-3.10.0-123.e17.x86_64.img 在這裡插入圖片描述
  2. 恢復: (1)當系統沒有重啟時:mkinitrd /boot/initramfs-3.10.0-123.e17.x86_64.img 3.10.0-123.e17.x86_64 ## mkinitrd 命令生成該映象 在這裡插入圖片描述 (2)當系統重啟後,進入挽救模式,chroot /mnt/sysimage後: mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) ##此處回報錯,因為系統管道未開啟,但是無關緊要 (3)兩次exit退出後,改成硬碟啟動,就可以了。 在這裡插入圖片描述

(五)/boot分割槽的恢復(將以上所有的設定都恢復一遍)

  1. 假設:/boot分割槽被刪除 rm -rf /boot 在這裡插入圖片描述 在這裡插入圖片描述
  2. 恢復: (1)進入挽救模式 , chroot /mnt/sysimage (2)建立一個目錄: mkdir /boot (3)grub2-install /dev/vda ## 啟動分割槽所在硬碟 在這裡插入圖片描述 (4)因為之前已經掛載和拆包,所以直接將/mnt/boot/的核心檔案複製到 /boot 在這裡插入圖片描述 (5)系統初始化映象檔案恢復 在這裡插入圖片描述 (6)引導檔案的恢復 在這裡插入圖片描述 (7)兩次exit退出後 ,改成硬碟啟動就可以了

(六) 系統的啟動級別出問題後

  1. 錯誤生成:systemctl set-default reboot.tardet 系統無限重啟 在這裡插入圖片描述
  2. 解決: (1) 開機按上下鍵停止讀1. 開機按上下鍵停止讀秒 (2) 按“E”進入編輯模式 (3)選擇核心啟動行 改變為: 5 在這裡插入圖片描述 (4)ctrl + x 啟動 (5)重新設定啟動系統的引導條目:systemctl set-default graphical.tardet 即可

3 . find命令

在這裡插入圖片描述下面是一部分例子的操作展示: 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 例題: 將屬於mail組的檔案備份到/mnt下。 在這裡插入圖片描述