2.5G网卡调试记录
下载驱动
去https://www.realtek.com/zh-tw/downloads这个网站下载2.5G USB网卡对应的驱动
编译驱动
Makefile中需要进入到内核目录/lib/modules/4.19.232/build中进行内核编译,但是我们的build文件链接已经失效了,并且源文件也删除了
所以我们只好去重新下载一个内核代码了
使用如下命令:sudo apt-get install linux-headers-$(uname -r)
但是我们的内核版本太老了,已经无法在仓库中找到了,所以我在仓库中找到了一个说是通用的内核版本
然后发现不可以。。。编译的版本不能和使用的内核版本不同:
关于Makefile的理解参考:https://www.cnblogs.com/downey-blog/p/10486907.html
后来发现上面的方法完全是在绕圈子,直接去https://www.t-firefly.com/wiki网站下载对应的headers的deb文件,然后直接安装就行了,这样就可以解决没有build文件夹的问题
接下来解决找不到python的问题:
我的理解是我们使用的是python3,所以找不到“python”,所以我们可以找到我们python3的位置,为它创建一个链接:
whereis python3
然后为它创建链接:
sudo ln -s /usr/bin/python3 /usr/bin/python
解决了pyhton的问题后又遇到了scripts/basic/fixdep: Exec format error的问题,解决思路参考:
https://blog.csdn.net/weixin_40293570/article/details/107657238
其实就是需要重新进行make scripts编译
编译好了驱动模块以后,发生了一个很奇怪的问题:没有办法正确安装模块:
然后内核打印信息为:
但是这里没有安装驱动
解决压缩格式错误:invalid compressed data–format violated的方法
https://www.codeprj.com/blog/6936831.html
2023.1.30更新:
今天尝试了把驱动编译进内核的方法
编译驱动到内核后还是解决驱动不了网卡,以下是插上网卡后的内核输出:
发现使用的驱动还是cdc_ncms
==================================================================================================
刚才发现之前一直使用动态方式加载驱动模块不成功的原因是r8152已经静态地加载到内核中了,之前我们用lsmod看不到,但是使用命令:ls /sys/module 可以看到所有的驱动,在这里面就能找到r8152。
现在的情况是插上网卡之后根本看不到网卡信息了,换到我的虚拟机上试了一下,发现还是可以看到网卡信息的,但是还是使用的cdc_ncm驱动,没有把网卡正确驱动起来。
我在我自己的虚拟机上使用动态的方式加载了r8152的驱动模块,并且把rules文件放到了/etc/udev/rules.d/文件夹下,然后就发现也没发看到网卡的信息了
然后重新在网上查看相关文档,https://juejin.cn/post/7036981702769508389
发现执行了;
depmod -a
update-initramfs -u
modprobe r8152
sudo systemctl status systemd-modules-load.service
这几个命令以后,网卡就能正常使用了
内核打印信息:
解析一下上面的命令:
depmod:这个是生成模块之间依赖性的映射文件,这个文件供给modprobe使用
那modprobe和insmod有什么区别呢?参考这个文章:https://blog.csdn.net/Jerry_1126/article/details/55001820
简单来说就是modprobe能解决依赖性的问题,但是insmod无法解决。
所以说上面的问题很可能是因为我之前使用insmod,没有考虑依赖问题所导致的
=======================================================================================================
我在虚拟机上编译SDK得到内核映像,并且烧录到开发板中,内核中驱动的位置应该是在/lib/modules/ 内核版本 /kernel/ 这个文件夹中,但是我们的内核中并没有这个文件夹
插入一条知识:如何通过命令行连接wifi:https://cloud.tencent.com/developer/article/1494772
编译进入内核的方法我试了还是不行,接下来我准备把官方的统一镜像烧写到开发板后直接在开发板子上编译:
但是出现了一个非常奇怪的问题,开发板的gcc一直报错找不到文件夹:
解决:原来是gcc出了问题,重新下载就好了
编译成功后还是安装不了,遂放弃动态加载的方式
=======================================================================================================
之前编译完内核后内核中没有modules文件的原因是我们没有把统一固件烧到开发板上
之前整体编译无法通过的原因是没有拷贝文件系统
最终解决:
原来之前动态安装不上,包括之前编译进内核依旧无法使用的原因是在内核中驱动文件夹下/net/usb中有r8152的驱动了,所以是两个驱动冲突了,所以导致又安不上又用不了QAQ,最终解决这个问题咯,以后遇到驱动安装不上的情况要考虑是不是出现了驱动冲突。。。