Linux - 弯路系列3:安装和编译libvirt-4.5.0及虚拟网卡virbr0(virbr0-nic)创建

系统:Anolis8(离线)

目录

1、安装及编译步骤

感谢提供步骤和错误解决参考: https://www.codeleading.com/article/1288836853/

  • tar -xvf libvirt-4.5.0.tar.xz 【安装包:https://download.libvirt.org/】
  • cd libvirt-4.5.0
  • ./autogen.sh
  • make
  • make install
  • 完成后检查:
    -- 查看:virsh list --all
    -- 开启libvirt:libvirtd -d
    -- 查看是否启动:ps -le | grep libvirtd

2、make过程中的错误

错误1:error: 'xdr_u_int64_t' undeclared (first use in this function)

java 复制代码
  CCLD     libvirt_secret.la
  CC       remote/libvirt_driver_remote_la-remote_driver.lo
  CC       remote/libvirt_driver_remote_la-remote_protocol.lo
In file included from remote/remote_protocol.h:18,
                 from remote/remote_protocol.c:7:
remote/remote_protocol.c: In function 'xdr_remote_vcpu_info':
./util/virxdrdefs.h:28:24: warning: implicit declaration of function 'xdr_u_int64_t'; did you mean 'xdr_uint64_t'? [-Wimplicit-function-declaration]
 #  define xdr_uint64_t xdr_u_int64_t
                        ^~~~~~~~~~~~~
remote/remote_protocol.c:272:15: note: in expansion of macro 'xdr_uint64_t'
          if (!xdr_uint64_t (xdrs, &objp->cpu_time))
               ^~~~~~~~~~~~
./util/virxdrdefs.h:28:24: warning: nested extern declaration of 'xdr_u_int64_t' [-Wnested-externs]
 #  define xdr_uint64_t xdr_u_int64_t
                        ^~~~~~~~~~~~~
remote/remote_protocol.c:272:15: note: in expansion of macro 'xdr_uint64_t'
          if (!xdr_uint64_t (xdrs, &objp->cpu_time))
               ^~~~~~~~~~~~
remote/remote_protocol.c: In function 'xdr_remote_node_get_cells_free_memory_ret':
./util/virxdrdefs.h:28:24: error: 'xdr_u_int64_t' undeclared (first use in this function); did you mean 'xdr_uint64_t'?
 #  define xdr_uint64_t xdr_u_int64_t
                        ^~~~~~~~~~~~~
remote/remote_protocol.c:664:48: note: in expansion of macro 'xdr_uint64_t'
                 sizeof (uint64_t), (xdrproc_t) xdr_uint64_t))
                                                ^~~~~~~~~~~~
./util/virxdrdefs.h:28:24: note: each undeclared identifier is reported only once for each function it appears in
 #  define xdr_uint64_t xdr_u_int64_t
                        ^~~~~~~~~~~~~
remote/remote_protocol.c:664:48: note: in expansion of macro 'xdr_uint64_t'
                 sizeof (uint64_t), (xdrproc_t) xdr_uint64_t))
                                                ^~~~~~~~~~~~
remote/remote_protocol.c: In function 'xdr_remote_node_get_free_pages_ret':
./util/virxdrdefs.h:28:24: error: 'xdr_u_int64_t' undeclared (first use in this function); did you mean 'xdr_uint64_t'?
 #  define xdr_uint64_t xdr_u_int64_t
                        ^~~~~~~~~~~~~
remote/remote_protocol.c:6825:48: note: in expansion of macro 'xdr_uint64_t'
                 sizeof (uint64_t), (xdrproc_t) xdr_uint64_t))
                                                ^~~~~~~~~~~~
remote/remote_protocol.c: In function 'xdr_remote_node_alloc_pages_args':
./util/virxdrdefs.h:28:24: error: 'xdr_u_int64_t' undeclared (first use in this function); did you mean 'xdr_uint64_t'?
 #  define xdr_uint64_t xdr_u_int64_t
                        ^~~~~~~~~~~~~
remote/remote_protocol.c:6840:48: note: in expansion of macro 'xdr_uint64_t'
                 sizeof (uint64_t), (xdrproc_t) xdr_uint64_t))
                                                ^~~~~~~~~~~~
make[3]: *** [Makefile:10507: remote/libvirt_driver_remote_la-remote_protocol.lo] Error 1
make[3]: Leaving directory '/home/software/libvirt-3.2.0/libvirt-4.5.0/src'
make[2]: *** [Makefile:6429: all] Error 2
make[2]: Leaving directory '/home/software/libvirt-3.2.0/libvirt-4.5.0/src'
make[1]: *** [Makefile:2107: all-recursive] Error 1
make[1]: Leaving directory '/home/software/libvirt-3.2.0/libvirt-4.5.0'
make: *** [Makefile:2000: all] Error 2

解决:

解决来源:https://listman.redhat.com/archives/libvir-list/2013-May/077764.html

但是这个作者好像不是这一个原因

  • 在"./autogen.sh"后进行操作
  • grep -rn "XDR_CFLAGS =" * 为了查看包含XDR_CFLAGS定义的文件
  • 分别打开Makefile和src/Makefile文件,找到其中的XDR_CFLAGS = 定义行,添加上-I/usr/include/tirpc
    即:XDR_CFLAGS = -I/usr/include/tirpc
  • 再进行make即可

注:因为我是一起加的,所以不确定是不是只用添加Makefile和src/Makefile这两个文件其中之一即可,可自行尝试。

3、make install的错误

错误1:/usr/bin/mkdir -p ""/usr/local/etc/libvirt/nwfilter""

解决:

  • **grep -rn "NWFILTER_DIR" *** 【找到nwfilter文件的生成路径】
  • 删除2149、2722行多出来的引号

4、检查过程中的错误

参考:https://blog.csdn.net/yang39921/article/details/103296169

非常感谢分享!

5、手动创建virbr0(若未自动创建情况下)

ifconfig 或 ip a 后未看到有virbr0网卡

参考操作:

  1. CentOS7配置virbr0虚拟网卡详解:提升网络环境模拟效率
  2. kvm虚拟化网卡、virbr0、网段修改

(1)创建新的虚拟网络

  • 用一个xml文件定义default网络

virsh net-define /etc/libvirt/qemu/networks/default.xml

注:这两个参考步骤中default文件所处文件夹不同,我用的是1的路径。

复制代码
若default.xml文件不存在,则先创建:
<network>
<name>default</name>
<bridge name="virbr0"/>
<forward/>
<ip address="192.168.122.1" netmask="255.255.255.0">
	<dhcp>
 		<range start="192.168.122.2" end="192.168.122.254"/>
	</dhcp>
</ip>
</network>

(2)设置virbr0自启

virsh net-start default

virsh net-autostart default

(3)检查配置

ip a

查看是否有virbr0了

(4)关于创建桥接网络接口virbr0-nic

使用 ip 命令验证桥是否存在:

  • ip link show type virbr0 (完成上述步骤,输入这步可得到下述内容)
java 复制代码
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
   link/ether 52:54:00:9a:8c:49 brd ff:ff:ff:ff:ff:ff

使用 ip 命令,查询以 virbr0 网桥为主的接口:

  • ip link show master virbr0 (若无输出,则手动添加)
java 复制代码
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000
  link/ether 52:54:00:48:3f:0c brd ff:ff:ff:ff:ff:ff
  • 生成virbr0-nic,并将此接口添加到网桥virbr0

sudo ip tuntap add dev virbr0-nic mode tap        % 创建一个 TAP 接口

sudo ip link set dev virbr0-nic down            % 设置接口状态为 DOWN

sudo ip link set dev virbr0-nic address 52:54:00:9a:8c:49  % virbr0-nic 的 MAC 地址设置为与 virbr0 相同

sudo ip link set dev virbr0-nic master virbr0        % 将 virbr0-nic 接口添加到 virbr0 网桥

复制代码
检查:
- ip link show virbr0-nic
- ip link show master virbr0
相关推荐
HRTOS4 分钟前
HRTOS Shell继续完善:优化printf缓冲区与字符串越界保护,国庆后随新版本更新
运维·单片机·嵌入式硬件·算法·51单片机
智能RPA6 分钟前
农业与矿业行业智能体自动化平台对比评测(计量与巡检场景)
运维·人工智能·python·自动化·agent·rpa
沫璃染墨15 分钟前
《从零入门Linux系统篇(五十一):线程篇·四——pthread线程库详解:从线程创建到终止与分离》
linux·运维·服务器·开发语言·c++·系统架构·线程
YYRAN_ZZU18 分钟前
GMSL开发加解串配置介绍
linux·嵌入式硬件
墨家前任巨子27 分钟前
定时关机脚本
运维
云计算练习生27 分钟前
什么是上下文切换?进程切换时 CPU 到底在保存什么
linux·服务器·操作系统·进程切换
用户05101225729628 分钟前
RGA(二)——RK3588 的核拓扑与能力差异
linux·嵌入式
ESDWAN29 分钟前
企业组网后网络频繁掉线,常见故障排查指南
运维·网络·架构
用户05101225729629 分钟前
RGA(一)——基础知识
linux·嵌入式
qetfw33 分钟前
Debian 综合服务实训:Apache2、Samba、LDAP、vsftpd 与 OpenVPN
linux·服务器·debian