virt-manager install on CentOS7.4-mini
We use virt-manager to boot VM on CentOS mini. This paper guide to install and configure the virt-manager and linux bridge. Because the virt-manager need display, we should install desktop(xfce) and vnc-server(tigervnc-server) at first. To avoid some issue, we disable and stop firewalld and selinux.
1. Stop firewall and selinux
1.1 firewall
1 systemctl stop firewalld 2 systemctl disable firewalld 3 iptables -F
# Check
1 systemctl status firewalld2 iptables -L
1.2 selinux
Set selinux to permissive
1 setenforce 0
Set selinux to disabled (need reboot the system to enable the config)
1 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
2 Desktop and VNC
# virt-manager need display
2.1 Install Desktop
1 yum install epel-release2 yum groupinstall xfce 3 yum groupinstall "X Window System" #To enable startx 4 systemctl set-default graphical.target #Set the graphical as default
2.2 Install vnc-server
1 yum install tigervnc-server
2.3 Configure vnc-server
# Generate the configuration file when VNC is first enabled.
1 vncserver2 cp ~/.vnc/xstartup ~/.vnc/xstartup.bak3 vim ~/.vnc/xstartup
#!/bin/shunset SESSION_MANAGERunset DBUS_SESSION_BUS_ADDRESS#exec /etc/X11/xinit/xinitrcstartxfce4 &[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresourcesxsetroot -solid greyvncconfig -iconic &
4 vncserver -kill :1
2.4 Verify vnc-server
1 vncserver -geometry 1600x900
3 Install virt-manager
3.1 Install virt-manager and dependences
# add repo for libvirt latest
1 vim /etc/yum.repos.d/libvirt-latest.repo
[libvirt-latest]baseurl = https://buildlogs.centos.org/centos/7/virt/x86_64/libvirt-latest/gpgcheck = 0name = libvirt-latest for CentOS7
# Install virt-manager virt-viewer and virt-v2v. virt-v2v is the uefi(/usr/share/AAVMF).
1 yum install virt-manager virt-viewer virt-v2v
3.2 Update qemu to 2.10.2
3.2.1 add repo for ceph 10.2.10
# need enable rbd to use ceph as backend on openstack
# jewel is ceph 10.2.10 and has ceph-devel
1 vim /etc/yum.repos.d/ceph.repo
[Ceph]name=Ceph packages for $basearchbaseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/$basearchenabled=1gpgcheck=1type=rpm-mdgpgkey=https://mirrors.163.com/ceph/keys/release.ascpriority=1[Ceph-noarch]name=Ceph noarch packagesbaseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarchenabled=1gpgcheck=1type=rpm-mdgpgkey=https://mirrors.163.com/ceph/keys/release.ascpriority=1[ceph-source]name=Ceph source packagesbaseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMSenabled=1gpgcheck=1type=rpm-mdgpgkey=https://mirrors.163.com/ceph/keys/release.ascpriority=1
3.2.2 Install dependences
# Build & install need some dependences
1 yum -y install gcc gcc-c++ automake libtool zlib-devel glib2-devel bzip2-devel libuuid-devel spice-protocol spice-glib-devel usbredir-devel libaio-devel ceph-devel flex bison
3.2.3 Download source code
1 wget https://download.qemu.org/qemu-2.10.2.tar.xz2 tar -xf qemu-2.10.2.tar.xz3 cd qemu-2.10.2
3.2.4 Config, build and install
# If use ceph as backend storage, add "--enable-rbd", and install ceph-devel as dependences
1 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-rbd --enable-kvm2 make –j3 make -j install
3.2.5 Link the new qemu
1 ln -s /usr/bin/qemu-system-x86_64 /usr/libexec/qemu-kvm
3.3 Update libvirt to 4.0.0
3.3.1 Install dependences
1 yum -y install gcc libnl-devel libxml2-devel libxslt device-mapper-devel libpciaccess-devel yajl-devel
3.3.2 Download the packages
1 wget https://libvirt.org/sources/libvirt-4.0.0.tar.xz 2 tar -xf libvirt-4.0.0.tar.xz3 cd libvirt-4.0.0
3.3.3 Configure & make & install
1 systemctl stop libvirtd2 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var3 make -j4 make -j install5 ldconfig6 systemctl daemon-reload7 systemctl restart libvirtd
3.4 Config libvirt to enable tcp connection
1 vim /etc/libvirt/libvirtd.conf
listen_tls = 0 listen_tcp = 1 tcp_port = "16509" listen_addr = "10.64.4.12" #the IP of your server unix_sock_ro_perms = "0777"unix_sock_rw_perms = "0777"auth_tcp = "none"host_uuid = "a3dbe9e0-4a05-58f3-b4b1-2cc0f42d4513" #host_uuid should be different
2 vim /etc/sysconfig/libvirtd
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.confLIBVIRTD_ARGS="--listen"
3 systemctl restart libvirtd4 virsh -c qemu+tcp://10.64.4.12/system
3.5 Update uefi via edk2
Because virt-v2v can't boot cirros, we use edk2 to update uefi.
1 wget https://rpmfind.net/linux/fedora-secondary/releases/27/Everything/aarch64/os/Packages/e/edk2-aarch64-20170209git296153c5-5.fc27.noarch.rpm2 rpm –i edk2-aarch64-20170209git296153c5-5.fc27.noarch.rpm3 rm -rf /usr/share/AAVMF4 mkdir /usr/share/AAVMF5 ln /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw /usr/share/AAVMF/AAVMF_CODE.fd6 ln /usr/share/edk2/aarch64/vars-template-pflash.raw /usr/share/AAVMF/AAVMF_VARS.fd
4 Linux bridge
4.1 Install bridge
1 yum install bridge-utils
4.2 Configure eth0 to br0 (temporary)
1 brctl addbr br02 brctl addif br0 eth03 ifconfig eth0 04 ifconfig br0 192.168.3.9 netmask 255.255.255.0 broadcast 192.168.3.255
4.3 Configure eth0 to br0 (permanent)
1 vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0TYPE=EthernetONBOOT=yesBOOTPROTO=noneBRIDGE=br0IPV6INIT=noHWADDR=8c:fd:f0:08:18:ab
2 vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0TYPE=BridgeONBOOT=yesBOOTPROTO=staticIPADDR="10.64.37.158"PREFIX="24"GATEWAY="10.64.37.1"DNS1="10.128.0.10"IPV6INIT=noDELAY=0
3 systemctl restart network