USB 网口和u盘 驱动模块功能动态切换

测试环境

kernel version 4.4.49

 

开始

首先将网口和u盘的驱动都编译成模块,这里省略。

 

作为U盘

加载模块顺序,注意不按顺序加载模块会出现依赖问题

insmod configfs.ko
insmod libcomposite.ko
insmod usb_f_mass_storage.ko             
insmod g_mass_storage.ko file=./test.img stall=n

其中test.img的制作

dd if=/dev/zero of=./test.img bs=1M count=50

加载后在pc段

sudo fdisk -l

找到对应的sdx,将其格式化后,即可作为u盘使用了。

mkfs.ext4 /dev/sdx


卸载模块顺序,注意不按顺序卸载模块会出现依赖问题

rmmod g_mass_storage.ko
rmmod usb_f_mass_storage.ko
rmmod libcomposite.ko
rmmod configfs.ko



作为USB网口
 

加载模块顺序,注意不按顺序加载模块会出现依赖问题

insmod configfs.ko
insmod libcomposite.ko
insmod u_ether.ko
insmod usb_f_rndis.ko
insmod usb_f_ecm.ko
insmod usb_f_ecm_subset.ko
insmod g_ether.ko


ping

ifconfig usb0 192.168.9.69 up
ping 192.168.9.x (PC usb0 ip)

卸载模块顺序,注意不按顺序卸载模块会出现依赖问题

rmmod g_ether.ko
rmmod usb_f_ecm_subset.ko
rmmod usb_f_rndis.ko
rmmod usb_f_ecm.ko
rmmod u_ether.ko
rmmod libcomposite.ko
rmmod configfs.ko

 

切换时,因先卸载当前模块,再加载新的模块。

 

 

;