在没有网线的情况下使用usb wifi参考方法

RT,楼主测试时候受环境限制,没有网线。使用一台带有网线的设备烧录镜像后,只有几个usb wifi,理论上没法直接上网

由于板子并没有编译环境,且使用手机等设备提供桥接无法直接联网,因此这里优先采用交叉编译的方法。

在有网的设备上根据官方教程准备交叉编译环境后,编译当前版本的内核以及头文件,拷贝到U盘使用dpkg安装,并在/boot/extlinux下的extlinux.conf文件中修改default XXX ,其中XXX是刚刚装好的内核

随后利用有网设备上交叉编译出网卡驱动,目前是楼主用的是8821驱动。随后需要把编译后的8821cu.ko拷贝到visionfive2上,并使用insmod或者modprobe临时挂载.ko文件,就可以正常驱动usb wifi实现联网

insmod和modprobe在/sbin中,系统自带,利用root身份执行就可以,不需要另外下载kmod

联网后强烈建议安装build-essential后再次编译8821cu.ko,然后make install。对应这个内核文件自行保留,一旦因为各种原因需要重装时,可以直接安装内核文件,并且直接modprobe 8821cu.ko,就可以临时恢复联网环境。理论上这个方法可以实现任意usb wifi的临时联网,只要有驱动就行

楼主的方法很稳,是正规做法 :+1: 我偷懒选了另一条更轻的路,分享下,仅供参考:

其实官方内核没编 usbnet 模块(# CONFIG_USB_USBNET is not set),所以手机 USB 共享才没反应。我是用官方镜像里的内核配置(config-6.12.5-starfive,可从 /proc/config.gz 或镜像 EFI 分区提取)交叉编译出 usbnet.ko(顺带 cdc_ether.korndis_host.ko),拷到板子上 modprobe 就能用,不用换内核也不用装头文件。

插手机开 USB 网络共享,会直接注册成 eth2,dhclient 就能上网。我这边正好手机信号比 USB wifi 稳,就这么凑合用了 :joy:

另外分享一个我踩过的坑:编内核模块一定要用运行内核的原始 .config。我自己重新生成过一次,结果 struct net_device 布局错位(dev_addr 偏移差了 16 字节),一插设备板子直接死机,折腾了很久才定位到。