介绍 centos 下编译安装 libvirt7.5的方法,类比于 debian系,同时包含 libvirt 经典安装方式.
libvirt
是目前使用最为广泛的对KVM虚拟机进行管理的工具和 API
。 Libvirtd
是一个 daemon
进程,可以被本地的 virsh
调用,也可以被远程的 virsh
调用, Libvirtd
调用 qemu-kvm
操作虚拟机。下面介绍 Centos7.6 下编译安装 Libvirt 7.5 的方法。
环境准备 1 yum install -y meson gcc qemu-kvm
编译步骤-7.5 首先下载源码文件:
1 2 3 4 wget https://libvirt.org/sources/libvirt-7.5.0.tar.xz tar -xvf libvirt-7.5.0.tar.xzcd libvirt-7.5.0
编译前可以查看一下当前系统下 virsh 的安装位置
1 2 [root@compute-01 stl] /usr/bin/virsh
可以看到是安装在 .usr/bin
这个 PATH
路径下,因此在编译安装时,可使用如下命令指定安装位置(默认安装在 /usr/local/bin
目录下):
1 2 3 $ meson build --prefix=/usr $ ninja -C build $ sudo ninja -C build install
下面是官网给出的几种安装模式,包括直接使用 release 包安装,安装到您的个人目录下,或是根据系统自动安装到相应位置,可以按需选择。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $ xz -dc libvirt-x.x.x.tar.xz | tar xvf - $ cd libvirt-x.x.x $ meson build $ meson build [possible options] $ ninja -C build $ sudo ninja -C build install $ meson build --prefix=$HOME /usr $ ninja -C build $ sudo ninja -C build install $ meson build -Dsystem=true $ ninja -C build
编译步骤-5.6 1 2 3 4 5 6 7 wget https://libvirt.org/sources/libvirt-5.6.0.tar.xz tar -xvfcd libvirt-5.6.0 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var $ make -j32 $ sudo make install
疑难解决
ERROR: Program ‘rpcgen portable-rpcgen’ not found
1 2 3 4 wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4.2/rpcsvc-proto-1.4.2.tar.xz ./configure --sysconfdir=/etc && make make install
1 2 $ yum install python -y $ pip install rst2html5
Dependency “glib-2.0” not found, tried pkgconfig and cmake
Dependency “gnutls” not found, tried pkgconfig and cmake
1 yum install gnutls-devel
Dependency “libxml-2.0” not found, tried pkgconfig and cmake
1 yum install libxml2-devel -y
1 2 3 4 5 6 7 8 9 10 yum -y install libtirpc-devel find / -name "rpc.h" vim meson.build headers = [ ... '/usr/include/tirpc/rpc/rpc.h' , ]
parser error : Double hyphen within comment: <!-- This file is auto-generated from keymaps.csv
解决方法:找到报错的 *.html.in
文件报错行出,将报错的 --
改为 -
即可。
1 yum install virt-install
libvirtd.service
存在于 /usr/lib/systemd/system/
文件夹下,而在 /etc/systemd/system/
文件夹下有该文件的软连接,表明这是自动启动的。
尝试启动该服务时会报错,因为其中指定环境变量有问题,其中的大部分内容不需要改动,就是下面的文件的路径需要改,因为手动编译安装的libvirt安装路径在 /usr/local/sbin/libvirtd
或是 /usr/sbin/libvirtd
,修改以下两处:
1 2 3 4 5 [Service] ... EnvironmentFile=/etc/sysconfig/libvirtd ExecStart=/usr/sbin/libvirtd $LIBVIRTD_ARGS ...
需根据您系统中实际位置查找到对应位置,如果按照本文建议流程则路径同上,否则需自行查找,之后再次尝试启动即可,有可能需要重新加载一下服务。
1 2 3 systemctl daemon-reload systemctl reload libvirtd systemctl start libvirtd
即可启动成功,若不成功请留言。
virt-manager 启动提示 virt qemu-sock no such file or directory
检查后应该是 virtqemud
服务没起来导致的,编译安装默认生成的服务路径在 /usr/local/*
下,而我们指定了安装在默认位置 /usr
,参考 systemd 无法启动的解决方法即可解决该问题。
首先看一下 /usr/sbin/virtqemud
这个文件是存在的,下面继续操作,首先使能该服务。
1 2 3 4 5 $ systemctl enable virtqemud Created symlink from /etc/systemd/system/multi-user.target.wants/virtqemud.service to /usr/local/lib/systemd/system/virtqemud.service. Created symlink from /etc/systemd/system/sockets.target.wants/virtqemud.socket to /usr/local/lib/systemd/system/virtqemud.socket. Created symlink from /etc/systemd/system/sockets.target.wants/virtqemud-ro.socket to /usr/local/lib/systemd/system/virtqemud-ro.socket. Created symlink from /etc/systemd/system/sockets.target.wants/virtqemud-admin.socket to /usr/local/lib/systemd
创建了改服务的软连接,宣告自启,此时服务配置有问题,直接修改该软连接指定的文件
1 2 3 4 5 6 7 8 vim /usr/local/lib/systemd/system/virtqemud.service [Service] ... EnvironmentFile=-/etc/sysconfig/virtqemud ExecStart=/usr/sbin/virtqemud $VIRTQEMUD_ARGS
之后重新加载服务,再启动
1 2 3 systemctl daemon-reload systemctl reload virtqemud systemctl start virtqemud
不出意外的话就能启动了,若有问题请留言。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 vim /usr/local/lib/systemd/system/libvirtd.service vim /usr/local/lib/systemd/system/virtlogd.service vim /usr/local/lib/systemd/system/virtqemud.service [root@dev system] /usr/local/lib/systemd/system/libvirtd.service /usr/local/lib/systemd/system/virtlockd.service /usr/local/lib/systemd/system/virtlogd.service /usr/local/lib/systemd/system/virtlxcd.service -rw-r--r--. 1 root root 721 7月 5 17:21 /usr/local/lib/systemd/system/virtnetworkd.service -rw-r--r--. 1 root root 643 7月 5 17:21 /usr/local/lib/systemd/system/virtnwfilterd.service -rw-r--r--. 1 root root 607 7月 5 17:21 /usr/local/lib/systemd/system/virtproxyd.service -rw-r--r--. 1 root root 623 7月 5 17:21 /usr/local/lib/systemd/system/virtsecretd.service -rw-r--r--. 1 root root 677 7月 5 17:21 /usr/local/lib/systemd/system/virtstoraged.service -rw-r--r--. 1 root root 626 7月 5 17:21 /usr/local/lib/systemd/system/virtvboxd.service Description=Virtualization daemon 8 Requires=virtlogd.socket 9 Requires=virtlockd.socket 10 Wants=systemd-machined.service 11 Before=libvirt-guests.service 12 After=network.target 13 After=dbus.service 14 After=iscsid.service 15 After=apparmor.service 16 After=local-fs.target 17 After=remote-fs.target 18 After=systemd-logind.service 19 After=systemd-machined.service
1 journalctl -xef -u libvirtd.service
configure: error: You must install device-mapper-devel/libdevmapper >= 1.0.0 to compile libvirt
1 yum install device-mapper-devel
yum install libpciaccess-devel)
Failed to get host power management capabilities
1 2 3 yum -y install pm-utils 重启libvir /etc/init.d/libvirt-bin restart
参考文献