前言

之前写了一篇怎么在随身WIFI 410 debian上加载几个无线网卡的驱动教程和编译文件分享,最后提了一嘴加载完后可以设置开机自启动,这篇来具体展开讲讲怎么做。同理可应用于linux其他开发板。

系统为debian11,内核为5.15。

准备工具

  • systemed

  • udev

这个基本上绝大部分linux系统都会预装好的,所以不用担心,没有装的话自行搜索怎么安装。

基本流程是:udev来调用systemd服务,因为udev可以实时监测usb的状态,所以可以实现热插拔。

创建systemd服务

  1. /etc/systemd/system/ 目录下创建服务文件,以my_custom_service命名(可以自己改):

 sudo nano /etc/systemd/system/my_custom_service.service
  1. 编辑该文件,添加下面内容(这里以无线网卡驱动为例):

 [Unit]
 Description=Switch RTL8811CU Device to Networking Mode at Boot
 After=set_usb_host_mode.service  # 确保在设置开发板为主机模式之后执行
 Requires=set_usb_host_mode.service  # 确保先执行set_usb_host_mode
 ​
 [Service]
 Type=oneshot
 ExecStartPre=/bin/sleep 5s
 ExecStart=/usr/sbin/usb_modeswitch -KW -v 0bda -p c811
 RemainAfterExit=yes
 ​
 [Install]
 WantedBy=multi-user.target

这里第9行的-v参数和-p参数要修改为之前那篇文章中提到的厂商id和设备id。

另外,上面的第3和第4行是执行条件,因为我自己另外新建了一个service来确保设备开机就切换为主机模式,也就是set_usb_host_mode.service这个服务,它的具体内容如下(如果有rc-local的话直接在里面添加切换主机模式的命令也是差不多效果的):

 [Unit]
 Description=Set USB to Host Mode at Boot
 After=local-fs.target
 ​
 [Service]
 Type=oneshot
 ExecStart=/bin/sh -c 'echo host > /sys/kernel/debug/usb/ci_hdrc.0/role'
 RemainAfterExit=yes
 ​
 [Install]
 WantedBy=multi-user.target

创建udev规则

  1. 创建 udev 规则文件:

 sudo nano /etc/udev/rules.d/99-my_custom_rule.rules
  1. 编辑规则文件,根据你的硬件设备属性来编写规则。这里以我们的网卡设备为例:

 ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0bda", ATTR{idProduct}=="c811", RUN+="sudo systemctl restart my_custom_service.service"

这里最后restart后面要跟你自己上面定义的服务的名字。

保存并重启systemd和udev

 sudo systemctl daemon-reload
 sudo udevadm control --reload
 sudo systemctl restart systemd-udevd

然后就可以随意热插拔了,U盘挂载是同理的,不过是需要指定一个挂载目录什么的,这里不具体展开了。

附图为自动挂载后就可以通过ifconfig查看到网口。

image-20240620200204150.png

文章作者: DB咕
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DB咕
Linux Debian 随身WIFI Linux
喜欢就支持一下吧