Part 3: Dsm编译环境搭建困难重重
既然拣现成的不行,那就得自己动手啦~
在Marvell网站找来aqc107的Linux驱动源码,在DSM界面开启SSH,Putty连接Nas,再用Winscp把驱动上传到Nas里,在Dsm下自行编译,感觉驱动很快就能成功啦!
然而理想是美好的,现实却总是残酷,好不容易通过SSH进入到DSM后台界面,第一条命令就碰壁了!
make :command not found
找熟悉Linux的朋友远程协助,不仅make命令无法执行,安装工具apt也没有,应该是群晖Dsm里作了限制,删除了一些基本命令,他说搭建编译环境蛮复杂的,建议我别再折腾啦!
不死心网上到处搜索资料,找到通过添加IPKG安装工具,为DSM安装软件;
详细步骤参考这里:https://blog.csdn.net/qq_37946291/article/details/108421382
安装好IPKG工具后,给DSM装上了make automake等组件
make驱动可以执行了,然而执行过程总是报错
No rule to make target 'modules' stop
我这个Linux小白想不明白问题在那,找朋友询问,还是说编译环境有问题, 到了这一步就困住了
网上搜索No rule to make target 'modules'的资料,也大多说是编译环境的问题
查看Marvell驱动里的readme说明,放在第一条的也是说要确保具备Linux头文件和编译工具
Part 5: Linux 4.4.180内核编译
随着查阅资料的增多,开始仔细审视每一步的细节,Marvell网卡驱动的源码里,include引用了不少linux源文件,编译成功的大佬们都在说一件事,linux下编译驱动,内核版本、config配置尽量相同才能成功。看到好几个贴子都有采用群晖源码编译linux内核的步骤,虽然不大明白为啥要连同linux内核一起编译,前面编译环境是在ubuntu 16.04和18.04下,内核版本跟4.4.180+均不相同,在没找到问题所在之前,不如也来一次尝试。
费不少时间找到了Linux 4.4.180的源码, http://ftp.sjtu.edu.cn/sites/ftp ... inux-4.4.180.tar.gz
又开始四处找linux内核编译资料、B站看视频,一步一步照着教程
将下载的源码包传到/opt目录,然后运行tar zxvf linux-4.4.180.tar.gz解压缩,得到linux-4.4.180目录
make x86_64_defconfig
make menuconfig
make -j4
make modules_install
make install
好不容易完成了,unbuntu重启系统,
uname -a 显示内核版本自动升级为4.4.180,满怀希望地编译驱动,过程一切顺利
然而放到Nas里面insmod加载,仍然报unkown symbol in module错误
尝试把5.4.0-97-generic里面的所有文件通过winscp工具,拷贝到/lib/modules/4.4.180+/build目录里(Marvell驱动的Makefile里引用到这个位置),make 编译时不再报错,成功得到atlantic.ko。
不过跟在Ubuntu下一样,使用insmod atlantic.ko时仍然报错unkown symbol in module,