kvm,我跟你沒完——Centos7下編譯並安裝qemu
由於使用yum安裝qemu安裝之後好像沒有qemu-system-x86_64這個命令,但是我就偏偏不想用virt-install,所以留給我的只有一條路,編譯qemu。從此,走上了一條不歸路
第一步:獲取qemu原始碼
sudo yum install git
這一步是安裝git,如果沒有git這個命令就需要安裝,如果之前安裝過git可以跳過這一步
sudo git clone git://git.qemu.org/qemu.git
第二步:準備編譯環境
sudo yum install gzlib-devel glib2-devel pixman-devel gcc
由於編譯需要zlib-devel.x86_64 glib2-devel.x86_64 pixman-devel.x86_64這三個軟體(由於我的系統是64位所以後綴是x86_64,如果不確定系統可以去除.x86_64這部分就可以自動匹配安裝),以及cc命令所需要的包gcc
第三步:配置生成編譯檔案MakeFile
cd /home/feng/qemu
先進入剛才下載好的原始碼資料夾中,原始碼是剛才第一步下載的
sudo ./configure
第四步:編譯原始碼
sudo make
第五步:安裝原始碼
sudo make install
特別注意,從三步進入原始碼包資料夾後,第三步的第二個命令和第四步,第五步都必須在原始碼包資料夾裡執行
由於各個系統內建的軟體不同,可能在第三步的生成編譯檔案這一步會報錯,可能是提示說沒有make命令等,這樣的話還需要安裝autoconf automake libtool這三個軟體中的一個或多個,安裝命令也很簡單
sudo yum install autoconf automake libtool
以上是這三個軟體的安裝命令,你可以根據提示,需要哪個就安裝哪個
第六步:橋接網絡卡
sudo yum install bridge-utils
在配置橋接網絡卡之前先把橋接工具安裝上,為什麼要安裝這個包呢?因為回頭啟動 qemu時新增tap引數時需要用到/etc/qemu-ifup等指令碼,而這個指令碼實際呼叫的是brctl命令,所以需要安裝
sudo vi /etc/sysconfig/network-script/ifcfg-ens33
可能你的網絡卡配置檔案並不是ifcfg-ens33,這個根據具體情況,配置如下
TYPE=Ethernet BOOTPROTO=none NAME=ens33 DEVICE=ens33 ONBOOT=yes BRIDGE=br0 NM_CONTROLLED=no
這些配置專案是必要的,另外像UUID,HWADDR等可以保留
sudo vi /etc/sysconfig/network-script/ifcfg-br0
ifcfg-br0這個檔案是自己建的,也可以拷貝ens33,但是要UUID,HWADDR這塊刪掉TYPE=Bridge
BOOTPROTO=dhcp
NAME=br0
DEVICE=br0
ONBOOT=yes
NM_CONTROLLED=no
進行到了這裡,我們需要重啟一下網絡卡,順帶重啟一下NetworkManager(如果想關掉它也行)
sudo systemctl restart NetworkManager
這條命令是重啟NetworkManager
sudo systemctl restart network
這條命令是重啟network
!!注意:重啟之後使用ip -a就會發現此時多了一個br0,且br0的ip和ens33一樣,如果重啟之後沒有成功,可能是需要系統重新讀取一下網路配置檔案,可以選擇關機或者使用以下命令,如果一切正常則不需要執行這步
sudo source /etc/sysconfig/network-script/ifcfg-ens33
sudo source /etc/sysconfig/network-script/ifcfg-br0
執行完這個之後還需要在重啟一下網絡卡和NetworkManager,命令同上
第七步:安裝vnc
sudo yum install tigervnc-server
使用此命令可以安裝vnc,安裝之後首次使用vncserver命令時會提示設定密碼
第八步:編輯qemu-ifup和qemu-ifdown
sudo vi /etc/qemu-ifup
這個檔案應該是沒有的,自己建立,內容如下#!/bin/bash
switch=br0
if [ -n "$1" ];then
ip link set $1 up
sleep 1
brctl addif ${switch} $1
exit 0
else
echo "Error:no interface specified"
exit 1
fi
這個是qemu-ifup指令碼,最好自己手打上去,複製的話可能因為字型編碼等問題會導致指令碼執行失敗
sudo vi /etc/qemu-ifup
這個檔案應該也是沒有的,自己建立,內容如下
#!/bin/bash
switch=br0
if [ -n "$1" ];then
ip link set $1 down
sleep 1
brctl delif ${switch} $1
exit 0
else
echo "Error:no interface specified"
exit 1
fi
這個是qemu-ifdown指令碼,建議手打
第九步:建立虛擬機器
qemu-img create -f qcow2 ubuntu.qcow2 10G
建立一個虛擬機器映象檔案(目前這個檔案很小,安裝虛擬機器後虛擬機器的所有檔案都會在這個映象中,類似於vmware的vmx)
qemu-system-x86_64 -m 1024 --enable-kvm -cdrom /home/ubuntu-16.04.iso -net nic -net tap -vnc 192.168.1.110:2 ubuntu.qcow2
由於我的ip是192.168.1.110所以vnc後跟的是192.168.1.110:2,如果使用vnc客戶端(如vncviwer)連線時候地址應該是192.168.1.110:5902,(為什麼埠是5902而不是2,因為vnc的服務是5900開始的,冒號(:n)後面的數字可以理解為+n
-m:這個引數設定記憶體
--enable-kvm:這個引數設定kvm加速
-cdrom:這個引數設定系統映象
-net:這個引數是指定網絡卡模式
-vnc:指定使用哪個ip及埠的
第十步:啟動虛擬機器
qemu-system-x86_64 -m 1024 --enable-kvm -net nic -net tap -vnc 192.168.1.110:2 ubuntu.qcow2
在第九步使用vnc安裝完系統之後,如果想啟動系統可以使用如上命令,由於和第九步命令只差一個cdrom引數,在此不在解釋引數意義
!!注意:如果第九步和第十步出現許可權拒絕問題,可以在命令前加sudo或者切換到root使用者執行