ESXi8.0U3 USB网卡开机自动绑定 踩坑笔记
参考教程:https://www.right.com.cn/forum/thread-8208945-1-1.html
主体是参照上述教程实现的,最终代码略有不同,/etc/rc.local.d/local.sh文件代码如下:
vusb0_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
count=0
while [[ $count -lt 20 && "${vusb0_status}" != "Up" ]]
do
sleep 10
count=$(( $count + 1 ))
vusb0_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
done
esxcfg-vswitch -R
esxcli system module parameters set -p "vusb0_mac=00:e0:4c:68:00:c2" -m vmkusb_nic_fling
esxcli network vswitch standard policy security set --vswitch-name=vSwitch1 --allow-forged-transmits=true --allow-mac-change=true --allow-promiscuous=true
esxcli network vswitch standard uplink add --uplink-name=vusb0 --vswitch-name=vSwitch1
esxcli network vswitch standard policy failover set -v=vSwitch1 -a=vusb0
exit 0
踩坑1: 代码没对
因为ESXi系统开关机时间耗时长,修改完之后要做实验一次不容易,如果是因为代码上的问题等起来就不划算,可以直接先开启SSH后,在终端里手动将代码一行一行运行一遍,以避免代码实现层面的问题。具体怎么把上述代码中的参数替换成适合你机器情况的版本,还请参考参考教程。
踩坑2: 禁用安全启动
在/etc/rc.local.d/local.sh原始文件中有一行注释:“Note: This script will not be run when UEFI secure boot is enabled.”这里需要在宿主机的BIOS里禁用Secure Boot,否则代码可能不会在启动阶段执行。
踩坑3: 文件权限问题
像我一样不喜欢用Vim,而更喜欢通过SFTP可视化地访问服务器文件目录的人,无论是在USB网卡的问题上还是别的上,都需要注意权限的问题。因为下载编辑再上传的文件会覆盖源文件的权限属性,可能导致文件可执行权限被默认禁用,需要再手动给予文件的可执行权限。如此,文件才会在ESXi启动期间被执行从而使改变生效。
![文件权限编辑](https://qnam.smzdm.com/202501/07/677d374024d712573.png_e1080.jpg)
踩坑4: 做好备份
修改前记得将ESXi主机系统配置导出备份。之前尝试的时候,有把网络配置搞崩过,导致启动之后无法通过原有(非USB网卡)网络访问ESXi管理页面,最后重装系统。其实不必重装,在宿主机的显示输出界面可以修改网卡的配置,也可以进入命令行界面从而将修改的文件改回去再重启。
使用如下命令来同步现在未保存的配置。
vim-cmd hostsvc/firmware/sync_config
并使用如下命令备份现有的配置文件。
vim-cmd hostsvc/firmware/backup_config
将输出结果*星号部分替换成Esxi主机的IP地址或域名后,就可以把这串网址粘贴到浏览器下载这个配置文件了。
![ESXi配置导出](https://am.zdmimg.com/202501/07/677d36ea240932911.png_e1080.jpg)
PS:代码方面我认为最关键的是“esxcli network vswitch standard uplink add --uplink-name=vusb0 --vswitch-name=vSwitch1”。在修改之前系统启动后,实际只需这条命令,即可将USB网卡绑定到虚拟交换机上,与在管理网页里修改虚拟交换机的配置是等效的。但是没有测试其他更少代码的情况,这个版本能够起效就没再折腾了。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
![](https://res.smzdm.com/pc/pc_shequ/dist/img/the-end.png)