问题
在使用vm-bhyve虚拟机管理软件的时候,使用vm无法绑定网卡igb0
vm switch add public igb0
报错:/usr/local/sbin/vm: ERROR: failed to add member igb0 to the virtual switch public
解决
于是准备用原生ifconfig命令来绑定,结果报错:
ifconfig vm-public0 addm igb0
ifconfig: BRDGADD igb0: Device busy
文心回答:
这个错误通常意味着您试图添加的物理接口 igb0
已经在使用中,或者它已经被绑定到另一个接口或配置中。在 Linux 中,特别是在较新的版本中,网络配置通常使用 ip
命令或 nmcli
(NetworkManager 的命令行工具)而不是 ifconfig
。
不过,如果您仍然需要使用 ifconfig
,并且确实需要在桥接接口上添加物理接口,这里有一些步骤可以尝试:
-
检查当前配置:
首先,使用ifconfig
或ip addr
查看当前的网络接口配置,确保igb0
没有被其他配置占用。 -
停止使用中的服务:
如果igb0
正在被某个服务(如 DHCP 客户端、网络管理器等)使用,您可能需要停止这些服务,以便能够修改其配置。 -
从任何现有桥接中移除:
如果igb0
已经是一个桥接接口的成员,您需要先将其从桥接中移除。使用类似ifconfig vm-public0 -delete igb0
的命令(但请注意,这不是标准的ifconfig
语法,可能需要您使用其他方法来从桥接中移除接口)。
分析问题可能就是因为以前把卡绑在bridge0上了,导致没法再绑到其它比如public或者public0上。现在方向就是删除以前的bridge0桥接,然后把vm的public或者public0桥接过去。
先看看当前网络情况
ifconfig
igb0: flags=1008943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
options=4a520b9<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,WOL_MAGIC,VLAN_HWFILTER,VLAN_HWTSO,RXCSUM_IPV6,HWSTATS,MEXTPG>
ether 00:e2:69:13:67:f6
inet 192.168.1.5 netmask 0xffffff00 broadcast 192.168.1.255
inet6 fe80::2e2:69ff:fe13:67f6%igb0 prefixlen 64 scopeid 0x1
inet6 2409:8a3c:4056:4110:2e2:69ff:fe13:67f6 prefixlen 64 autoconf pltime 172800 vltime 259200
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
lo0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
groups: lo
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
bridge0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
options=0
ether 58:9c:fc:10:ff:97
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 4 priority 128 path cost 2000000
member: igb0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 1 priority 128 path cost 200000
groups: bridge
nd6 options=9<PERFORMNUD,IFDISABLED>
tap0: flags=8902<BROADCAST,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80000<LINKSTATE>
ether 58:9c:fc:10:ff:d3
groups: tap
media: Ethernet 1000baseT <full-duplex>
status: no carrier
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
vm-public: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
options=0
ether 5e:2a:5c:94:4b:8f
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
groups: bridge vm-switch viid-4c918@
nd6 options=9<PERFORMNUD,IFDISABLED>
vm-public0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=0
ether ba:69:db:12:1e:48
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
groups: bridge vm-switch viid-f2b58@
nd6 options=9<PERFORMNUD,IFDISABLED>
使用destroy删除bridge0
ifconfig bridge0 destroy
这时候再用vm来绑定到public桥:
vm switch add public igb0
命令成功了
这时候用vm看一下桥的情况:
vm switch list
NAME TYPE IFACE ADDRESS PRIVATE MTU VLAN PORTS
public standard vm-public - no - - igb0
public0 standard vm-public0 - no - - -
这时候再启动虚拟机,网络就应该正常了:
vm install -f myguest FreeBSD-14.1-BETA3-amd64-bootonly.iso
注意使用了-f选项,直接进入虚拟机。
附,验证网络安装
启动虚拟机后,可能要等几秒时间 ,就进入了光盘安装界面。顺利的情况下,直接安装,下面的问题都不会碰到。
实际碰到的其它问题
在获取dhcp的时候报错:
DHCP lease acquisition │
│ failed.
不过有时候使能正常获得的。问题解决。
进入命令行,发现竟然是resolv..conf文件没有配置好,加上
nameserver 114.114.114.114
nameserver 8.8.8.8
结果连网的时候总是报错,后来才明白,是因为FreeBSD14.1RC1发布了,原来用的安装盘是去找beta的,当然找不到了。
切换iso安装盘:
https://mirrors.ustc.edu.cn/freebsd/releases/ISO-IMAGES/14.1/FreeBSD-14.1-RC1-amd64-bootonly.iso
vm iso https://mirrors.ustc.edu.cn/freebsd/releases/ISO-IMAGES/14.1/FreeBSD-14.1-RC1-amd64-bootonly.iso
vm install -f myguest FreeBSD-14.1-RC1-amd64-bootonly.iso
最终安装成功!