next up previous contents
Next: 無法開機問題解決 Up: 開機流程與系統服務 Previous: 開機啟動服務   Contents

開機過程的問題解決

  1. 忘記 root 密碼
    1. 重新開機;
    2. 開機進入 grub 選單後,
      1. 鍵入 'e' 進入詳細設定;
      2. 將光棒移動到 kernel 上方並點 'e' 進入編輯畫面;
      3. 然後出現如下畫面來處理:
        grub edit> kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet single
        
        # Runlevel 1: process rc.sysinit and rc1.d scripts
        # Runlevel s,S,single: process only rc.sysinit
        # Runlevel emerency: run sulogin only
        
      4. 按下 [enter] 再按下 b 就能夠開機進入單人維護模式了。
    3. 執行 passwd 指令重建 root 的密碼;
      [root@kvm4 /]# passwd
      type=1400 audit(1323777256.565:29): avc: denied { read } for
      pid=1912 comm="passwd" path="pipe:[12939]" dev=pipefs ino=12939
      ....
      ....
      [root@kvm4 /]# echo "123123" | passwd --stdin
      type=1300 audit(1323777556.699:32): avc: denied { read } for
      pid=1916 comm="passwd" path="pipe:[12939]" dev=pipefs ino=12939
      ....
      ....
      [root@kvm4 /]# setenforce 0  <==關閉 selinux
      type=1404 audit(1323777769.894:4): enforcing=0 old_enforcing=1
      audit=4294967295 ses=4294967295
      [root@kvm4 /]# passwd
      type=1400 audit(1323777776.973:5): avc: denied { read } for
      pid=887 comm="passwd" path="pipe:[10230]" dev=pipefs ino=10230
      ....
      Changing password for user root.
      New password: 
      BAD PASSWORD: it does not contain enough DIFFERENT characters
      BAD PASSWORD: is too simple
      Retype new password: 
      passwd: all authentication tokens updated successfully.
      
    4. 直接在開機選單關閉SELinux
      grub edit> kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet selinux=0 1
      
    5. 執行 init 3 切換成為多人文字介面。
  2. init 設定檔錯誤
    1. runlevel 0 至 6 都會讀取 /etc/inittab 設定檔,故無法進入單人維護模式;
    2. 在開機進入 grub 後,在 grub edit 的情況下,指定核心呼叫的第一支程式 init 為 /bin/bash:
      grub edit> kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet init=/bin/bash
      
    3. /sbin/init 不會被執行。root 取得 bash 工作,但此時除了根目錄外,其他的目錄都沒有被掛載; 且根目錄被掛載成為唯讀狀態。
    4. 下指令 mount -o remount,rw / 將根目錄重新掛載成為可讀寫。
    5. 以 mount -a 參考 /etc/fstab 的內容重新掛載檔案系統。
    6. 以 vim 修改 /etc/inittab。
    7. 執行 reboot 重新開機。
  3. 因檔案系統錯誤而無法開機
    1. 最常發生在 /etc/fstab。例如:使用者實作 Quota 時,/etc/fstab 寫錯參數,又沒有經過 mount -a 測試掛載,就立刻直接重新開機。
    2. 開機過程 fsck 失敗,導致無法順利開機,系統會提示請你輸入管理者密碼進入維護。
    3. 輸入 root 的密碼取得 bash。
    4. 以 mount -o remount,rw / 將根目錄掛載成可讀寫。
    5. 以 vim /etc/fstab 修改檔案。
    6. 以 reboot 重新開機。
  4. chroot 切換到另一顆硬碟工作。假設有兩個 Linux 系統在同一個主機上面,第一個 Linux 無法進入,可以使用第二個 Linux 開機。
    1. 進入一個完整的 Linux 系統 ( run level 3 或 5 );
    2. 假設有問題的 Linux 磁碟在 /dev/hdb1 上面,且系統的掛載如下:
      掛載點   裝置檔名
      /     → /dev/hdb1
      /var  → /dev/hdb2
      /home → /dev/hdb3
      /usr  → /dev/hdb5
      
    3. 在目前的 Linux 下建立一個目錄 /chroot,然後掛載如下:
      掛載點           裝置檔名
      /chroot/      → /dev/hdb1
      /chroot/var/  → /dev/hdb2
      /chroot/home/ → /dev/hdb3
      /chroot/usr/  → /dev/hdb5
      
    4. 執行 chroot /chroot,根目錄 / 就變成 /dev/hdb1 的環境。



2015-04-13