使用debian编译威联通的驱动
需要文件:
X86_64开发工具包(toolchain x86)
ARM开发工具包(toolchain arm64)
内核文件包(QTS_Kernel)

安装debian8系统
使用winscp登录debian,注意要用root账号
修改debian系统的apt源,文件路径路径/etc/apt/sources.list

内容替换为:
ctrl+P,打开ssh工具,或使用其他第三方ssh工具连接debian,使用以下命令,安装所需软件
在home文件夹创建工作目录
复制工具链和开发包到此目录,工具链一个文件,5.1的开发包是分卷打包的,有两个文件,需要同时复制进去

切换至工作目录
解码工具链,解压后目录名称GPL_QTS,文件名称中有空格,所以下面的命令中有“\ "格式化空格
解压开发包,解压后目录名称x86_64-QNAP-linux-gnu
在目录GPL_QTS/src/linux-5.10下找到文件cflag_kernel_qnap.mk,
打开此文件,里面有两行参数,
在CFLAGS_KERNEL_QNAP参数后面加上-DCONFIG_QND_FNOTIFY_MODULE,然后再复制每行参数,粘贴到同目录里makefile文件中对用的参数后面,不能换行
* CFLAGS_KERNEL_QNAP 对应 CFLAGS_KERNEL
* CFLAGS_MODULE_QNAP 对应 CFLAGS_MODULE
* 5.1在474/471行,4.2在366/363行,4.12在373/371行
* 开头的型号不重要,不需要改
* 或直接用修改好的文件覆盖:
Makefile.rar

切换到编译目录
复制配置文件,注意修改型号,型号可在/home/pcp5/GPL_QTS/kernel_cfg目录查看
选择需要编译的内容
配置编译环境,直接复制,在ssh里执行即可。
编译驱动,4核大概1分钟,-j4中4指调用几核进行编译,不加此参数默认单核编译。
编译好的驱动文件在/home/pcp5/GPL_QTS/src/linux-5.10/drivers里对应的目录里,后缀名为ko,温控传感器驱动同时需要依赖文件hwmon-vid.ko,即此文件和传感器驱动要一起用。

编译系统引导时,同时把依赖文件和驱动文件加进去就行,系统会自动按顺序先加载依赖,再加载驱动。
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverseapt-get install build-essential
apt-get install libncurses-dev
apt-get install bison
apt-get install flex
apt-get install libssl-dev
apt-get install libelf-dev
apt-get install libncurses5-dev
apt-get install bc
apt-get install dialog
apt-get install dpkg-dev
apt-get install autoconmkdir /home/pcp5cd /home/pcp5# x86
tar -xvf Cross\ Toolchain\ SDK\ \(x86\)\ 20180115.tar.gz# arm64
tar -xvf Cross\ Toolchain\ SDK\ \(arm64\).tar.gzcat QTS_Kernel_5.1.0.20230808.tar.gz.* | tar -zxcd GPL_QTS/src/linux-5.10# x86
cp ../../kernel_cfg/TS-X72/linux-5.10-x86_64.config .config# arm64
cp ../../kernel_cfg/TS-X42/linux-5.10-arm64.config .config
make menuconfig* 先在 Device Drivers 下,取消 Generic Target Core Mode的选
* 按空格键加选或减选,需要编译的按到[M]
* 然后save保存后再退出
目录:(连按两次esc返回上级目录,左右切换底部选项)
- 网卡:
Device Drivers/Network device support/Ethernet driver support/Realtek devices/8168
../Intel(R)...
- 温控传感器:
Device Drivers/Hardware Monitoring support/ITE IT87XX and compatibles
../Novoton NCT****
* nct系列传感器加载驱动成功,但温控数据在hwmon0目录,不在hwmon0/device的话,需要使用修正过路径的*.c文件替换源文件。
修正过的文件:
nct6775.rar,文件位置:/home/pcp5/GPL_QTS/src/linux-5.10/drivers/hwmon








* 一键激活it87编译
sed -i 's/# CONFIG_SENSORS_IT87 is not set/CONFIG_SENSORS_IT87=m/' .config* 一键激活nct6775编译
sed -i 's/# CONFIG_SENSORS_NCT6775 is not set/CONFIG_SENSORS_NCT6775=m/' .config# x86
export PATH=$PATH:../../../x86_64-QNAP-linux-gnu/cross-tools/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../../../x86_64-QNAP-linux-gnu/cross-tools/bin/lib
export CROSS_COMPILE=x86_64-QNAP-linux-gnu-
export ARCH=x86_64# arm64
export PATH=$PATH:../../../aarch64-QNAP-linux-gnu/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../../../aarch64-QNAP-linux-gnu/lib
export CROSS_COMPILE=aarch64-QNAP-linux-gnu-
export ARCH=arm64make clean
make modules -j4只编译指定驱动,可使用M参数指定驱动目录
make modules M=./drivers/hwmon -j4
注: 如果加载编译好的温控驱动读取到的温度有误差的话,可以在对用的*.c文件进行修正:
修正值=摄氏度*1000
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[nr][index]));
改成
return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[nr][index]) - 20000);
