Ubuntu 12.04 安裝 Xen 虛擬化平台時,常遇到「重啟後 GRUB 選單無 Xen 項目」、「xm list 報錯 can't find hypervisor info」、「32 位系統需 PAE 核心」等問題。本文系統彙總安裝流程、核心錯誤成因、GRUB2 配置調整、驗證步驟。
sudo apt-get install build-essential binutils python-dev libncurses5-dev libcurl4-openssl-dev xorg-dev uuid-dev bridge-utils bison flex udev gettext bin86 bcc iasl libgcrypt11-dev libssl-dev pciutils libglib2.0-dev gcc-multilib texinfo zlib1g-dev
# 64位系統
sudo apt-get install xen-hypervisor-4.1-amd64 xen-utils-4.1 xenwatch xen-tools xen-utils-common xenstore-utils
# 32位系統 (需先啟用 PAE 核心)
sudo apt-get install linux-image-server
sudo apt-get install xen-hypervisor-4.1-i386 xen-utils-4.1 ...
sudo apt-get install virtinst python-libvirt virt-viewer virt-manager
sudo xm list 應顯示 Domain-0 資訊現象:重啟後 GRUB 選單無 Xen 選項,或預設啟動一般 Linux 核心,導致 xm list 失敗。
原因:GRUB2 依 /etc/grub.d/ 目錄下檔案編號順序生成 grub.cfg,編號越小越優先。預設 10_linux (一般核心) 在 20_linux_xen (Xen 核心) 之前。
mv /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2
mv /etc/grub.d/10_linux /etc/grub.d/20_linux
mv /etc/grub.d/20_linux_xen /etc/grub.d/10_linux_xen
update-grub2
驗證:cat /boot/grub/grub.cfg | grep -A2 -B2 xen 確認 Xen 選單在前。
/boot/grub/menu.lst,手動編輯/boot/grub/grub.cfg (自動生成),透過 /etc/default/grub + /etc/grub.d/ 管理Ubuntu 12.04 預設使用 GRUB2。嘗試手動編輯 grub.cfg 或設定 GRUB_DEFAULT=數字 均無效,必須調整 /etc/grub.d/ 檔案順序後執行 update-grub2。
Xen 32 位模式要求核心支援 PAE (Physical Address Extension)。Ubuntu 12.04 32 位預設核心無 PAE,需安裝 linux-image-server (含 PAE) 後再安裝 xen-hypervisor-4.1-i386。
linux-image-server/etc/grub.d/ 檔案順序讓 Xen 核心優先update-grub2 重新生成配置sudo xm list 驗證 Domain-0 運行正常
xl 指令取代已棄用的 xmpygrub 直接啟動客體核心,無需 pygrub 佈署xen-balloon) 需在客體 OS 載入以支援動態記憶體調整