libvirt 是虛擬化管理的核心 API 與工具集,支援 KVM、QEMU、Xen、LXC 等多種 Hypervisor。本文記錄在 Ubuntu 12.04 上從原始碼編譯安裝 libvirt 1.1.2 的完整流程,強調關鍵步驟:先裝 virtinst 佔位、正確啟動服務名稱,避開常見坑點。
sudo apt-get install virtinst
原因: virtinst 依賴 libvirt,apt 會安裝舊版 libvirt 作為依賴。後續編譯安裝新版 libvirt 會覆蓋舊版檔案,避免檔案衝突與依賴關係損壞。此步驟極關鍵,網上許多教程遺漏。
sudo apt-get install \
libxml++2.6-dev libdevmapper-dev libpciaccess-dev \
python-dev libnl-dev \
pkg-config libyajl-dev libudev-dev \
libapparmor-dev libselinux1-dev \
libgnutls28-dev libsasl2-dev \
libcurl4-gnutls-dev libssh2-1-dev \
libpcap-dev libnuma-dev
wget https://libvirt.org/sources/libvirt-1.1.2.tar.gz
tar xzf libvirt-1.1.2.tar.gz
cd libvirt-1.1.2
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
--with-qemu --with-lxc --with-network --with-storage-scsi \
--with-storage-disk --with-storage-fs --with-storage-mpath \
--with-storage-rbd --with-storage-gluster --with-storage-vstorage \
--with-interface --with-nwfilter --with-nodedev --with-secdriver \
--with-driver=qemu --with-driver=lxc --with-driver=network \
--with-driver=storage --with-driver=nodedev --with-driver=secdriver
輸出確認關鍵項:QEMU: yes、LXC: yes、Network: yes、Python: yes。
make -j$(nproc)
sudo make install
Ubuntu (Upstart/Systemd) 服務名稱為 libvirt-bin,非 libvirtd。
# 啟動
sudo service libvirt-bin start
# 停止
sudo service libvirt-bin stop
# 狀態
sudo service libvirt-bin status
# 開機自啟
sudo update-rc.d libvirt-bin defaults
驗證:
virsh -c qemu:///system list --all
# 或
virsh uri
# 輸出:qemu:///system
| 錯誤現象 | 原因 | 修正 |
|---|---|---|
libvirtd: unrecognized service | 服務名錯誤 | 使用 service libvirt-bin |
Unable to connect to libvirt daemon | 服務未啟動或權限不足 | 啟動服務,將使用者加入 libvirt 群組:sudo usermod -aG libvirt $USER |
編譯報錯 yajl 缺失 | 缺少開發包 | sudo apt-get install libyajl-dev |
| Python binding 缺失 | configure 未檢測到 python-dev | 安裝 python-dev 重新 configure |
apt install libvirt-daemon-system libvirt-clients),穩定性更高。/opt/libvirt,透過環境變數切換,避免污染系統目錄。/etc/libvirt/ 配置目錄。掌握上述流程,即可在 Ubuntu 上成功部署 libvirt 虛擬化管理平台,為上層雲平台(OpenStack、oVirt)或手動虛擬機管理奠定基礎。
Linux rz/sz 文件傳輸實戰:SecureCRT/Xshell 配置與最佳實踐
Linux SELinux 狀態查看與關閉完全指南:臨時與永久方案
Linux 與 Windows 檔案權限機制深度比較:為何 Linux 更安全?
Linux 自動化安裝神器 Cobbler 部署全流程:從安裝、DHCP/TFTP、導入鏡像到 Kickstart 無人值守
Ubuntu sudo 執行 source/ulimit 報「command not found」解決方案
CentOS 7 搭建 Nginx 反向代理 + proxy_cache CDN 節點完整實戰教學