Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Xen 虛擬機無法啟動?單用戶模式修復實戰指南

編輯:Linux 教學

Xen 虛擬機(DomU)因忘記 root 密碼、關鍵配置檔誤改、/etc/fstab 掛載錯誤等原因無法正常啟動時,可透過 Dom0 以 xm create -c 進入單用戶模式進行修復。本文提供標準操作流程、Grub 參數編輯技巧、常見故障修復案例與自動化腳本。

標準修復流程

  1. 列出所有 DomU:xm list
  2. 關閉目標 DomU:xm shutdown <domu_name>(若卡住可 xm destroy 強制終止)
  3. 以主控台模式啟動:xm create -c <domu_name>
  4. Grub 選單出現時,按 e 編輯啟動參數
  5. 在 kernel 行尾加入 single 或 1 或 init=/bin/bash
  6. 按 b 啟動,進入單用戶/緊急 Shell
  7. 掛載根分區為讀寫:mount -o remount,rw /
  8. 執行修復(重設密碼、修正配置、檢查磁碟等)
  9. 同步並重啟:sync; reboot -f 或 exit 讓 init 繼續

Grub 1 (Legacy) vs Grub 2 編輯差異

項目Grub 1 (menu.lst)Grub 2 (grub.cfg)
編輯鍵e → 編輯 kernel 行 → Enter → be → 找 linux/linux16/linuxefi 行 → 尾端加參數 → Ctrl+x 或 F10
單用戶參數single / 1 / init=/bin/bash同左,或 systemd.unit=emergency.target
SELinux 繞過selinux=0enforcing=0 或 autorelabel=1

常見故障與修復指令速查

故障現象進入單用戶後修復指令
忘記 root 密碼passwd root
/etc/fstab 錯誤導致掛載失敗vi /etc/fstab 修正 → mount -a 驗證
SELinux 禁止登入setenforce 0 臨時放行 → restorecon -Rv / 修復標籤 → 重啟
磁碟損壞/超級區錯誤fsck -y /dev/xvda1(視實際裝置調整)
網路配置錯誤無法 SSHvi /etc/sysconfig/network-scripts/ifcfg-eth0 / netplan 修正
鍵盤/語系亂碼localectl set-keymap us / localectl set-locale LANG=en_US.UTF-8

自動化修復腳本範例(Dom0 執行)

#!/bin/bash
# xen-rescue.sh  [reset_password|fix_fstab|fsck]
set -euo pipefail
DOMU=$1
ACTION=${2:-shell}

xm shutdown "$DOMU" 2>/dev/null || xm destroy "$DOMU"
sleep 2

case "$ACTION" in
    reset_password)
        xm create -c "$DOMU" <<'EOF'
# 此處需人工互動,建議改用 expect 或 pygrub 自動化
EOF
        ;;
    fix_fstab)
        # 掛載 DomU 磁碟映像至 /mnt/rescue 進行離線修改
        MOUNT_POINT="/mnt/rescue"
        DISK_IMG=$(xenstore-read /local/domain/$(xm list "$DOMU" | awk 'NR==3{print $2}')/device/vbd/0/backend-dev)
        mkdir -p "$MOUNT_POINT"
        mount -o loop "$DISK_IMG" "$MOUNT_POINT"
        # 修復 fstab 範例:註解掉錯誤行
        sed -i 's/^\(.*\/data.*\)$/#\1/' "$MOUNT_POINT/etc/fstab"
        umount "$MOUNT_POINT"
        xm create "$DOMU"
        ;;
    fsck)
        DISK_IMG=$(xenstore-read /local/domain/$(xm list "$DOMU" | awk 'NR==3{print $2}')/device/vbd/0/backend-dev)
        fsck -y "$DISK_IMG"
        xm create "$DOMU"
        ;;
    *)
        xm create -c "$DOMU"
        ;;
esac

注意事項與最佳實踐

  1. 備份先行:修復前對 DomU 磁碟映像建立快照或 dd 備份。
  2. PV 驅動缺失:若單用戶模式下鍵盤無反應,嘗試在 DomU 配置 vfb = [ 'type=vnc,vncunused=1' ] 以 VNC 連線。
  3. systemd 系統:init=/bin/bash 進入後需手動 mount -o remount,rw /; mount -a,systemd 不會自動掛載。
  4. 日誌留存:修復完成前查看 journalctl -xb / /var/log/messages 確認根因,避免重複故障。

熟練掌握 xm create -c 進入單用戶模式,配合 Grub 參數編輯與離線磁碟修復,即可在數分鐘內解決絕大多數 Xen DomU 無法啟動的疑難雜症。

Copyright © Windows教程網 All Rights Reserved