本帖最后由 zeroqi2008 于 2021-2-25 12:34 编辑
在 老骥伏枥 大佬亲手帮助,以及为了传播大佬这种无私分享的精神,故有了下面这篇个人搞机心得。
希望大家秉承大佬无私分享、乐于助人的精神。给威联通搞机圈带来些正能量的东西。
引用:牛年大礼包中 大佬的原话如下:
需要强调的是,我不是一个黑客。资源来自于威联通官网公布的系统包和发布的固件。参考文献中注明所有引用的出处。本文深入浅出地介绍如何对原始固件启动后安插钩子的办法来实现动态破解的嵌入式linux逆向工程技术。此【牛年大礼包】工具盘的理念和启动引导的基础架构设计均绝对是老骥伏枥本人独创,并合法利用开源项目 (Tiny Core Linux Project) [3] 开发的。 也是老骥伏枥通过 NASYUN 论坛在全球独家首发。此工具盘为的是进行教学, 研究和技术交流。 禁止用于任何商业目的。
以下搞机心得禁止用于任何商业目的!如有发现请投诉于载体官方!
--------------------------------------------- 文笔有限,还是直接上干货好了。
先上成果展示
想要折腾温控。必须有一台已经成功运行的黑威联通NAS主机。牛年大礼包中已经仔细讲诉了以工具盘为基础制作引导盘、配置model并成功启动黑威联通的一系列流程。这部分请自行学习实践。 在牛年礼包第三讲 关于系统温度与Super I/O芯片 中,大佬说明了要实现温控显示必须做到的几点;搞清自己硬件的 Super I/O芯片 型号,编译出适合自己qnap版本使用的驱动文件并挂载,调试Model让其在qnap系统中正常显示。
1、搞清sio型号
大佬的方法是在主板启动时在bios设置界面查看。
我是个小白。我是直接在pe下用AIDA64查看传感器型号。
如上图所示,我的温控芯片是Nuvoton nct6791D/5538D
在查找芯片驱动源码的过程中发现NCT6775已经包含了6791d的驱动
2、编译适合自己qnap系统版本的驱动文件
在编译驱动这一块我要感谢
此文的作者(有群友告之是knat大佬 )但教程中没有署名,我也无法确认。so,就以感谢此文作者代替吧。 按照4.2.8文中步骤一步步做好编译环境在
中选取6775这项并打M标保存退出之后编译(428这篇教程里是全部编译),我是用在chh论坛 19x0
的这篇贴子中提到的
这条命令修改目录执行(这样很快)就会得到下面的hwmon-vid.ko及nct6775.ko文件
nct6775.ko是驱动文件。hwmon-vid.ko是前者的依赖文件。两者都需要挂载。依赖要先于驱动挂载。 在驱动所在目录下执行modinfo nct6775.ko,及modinfo hwmon-vid.ko查看以上驱动是否是基于你所用的固件内核编译(在428这篇教程里有详细描述步骤)
(以上这些知识感谢小群中那位不愿意惹麻烦的大佬 ,在编译这块指点了很多知识!心照、感谢)。
如有需要。我会在后面跟贴中详细描述编译驱动的步骤(只是会操作官方包里自带的),原理什么的我都不懂。基本只要识字的小白(如我)都能自行操作。
3、挂载驱动
ssh连进qnap。在驱动所在目录执行insmod hwmon-vid.ko(这个是6775的依赖文件必须先挂载),再执行insmod nct6755.ko。
我们可以用lsmod查看以上驱动是否挂载成功。
还有一种方法验证驱动挂载成功与否 在系统自带的linux系统下安装sensors来检测qnap内核有没成功识别你的SIO芯片
步骤如上图。地址:https://blog.csdn.net/Game__Life/article/details/104531029
正常挂载之后结果会如下图
在牛年礼包第三讲中仔细说明了需要的修改的部分:
在这里。我是利用牛年礼包中的钩子(patch )程序,在系统启动的时候直接调用之前我们编译好的两个文件。同时还有一个问题。如果直接通过脚本挂载。那么nct6775这个驱动始终只会挂载到/sys/class/hwmon/hwmon1/这里。那就不能按照大佬所提的方法让系统去识别了。为了想办法让驱动直接优先于qnap系统自带的
这两个驱动挂载。经过N 多次折腾测试,最后我采用了最简单粗暴的办法。 如上图。至此,我们完成了大佬教程里所讲的把自已硬件的信息挂载到hwmon0这步
4、调试model,让内核读取到的信息显示出来 牛年包教程中是这样说明的 我贴一下我现在用的机子里的model来说明一下 MAX_FAN_NUM = 3(3代表我自己系统风扇的个数)
CPU_TEMP_UNIT=DTS:1(cpu温度不用修改,1或者4都行) SYSTEM_TEMP_UNIT=SIO:1(读取hwmon0里面的第一温度) SIO_DEVICE = NCT6791(这个nct6791对应cat /sys/class/hwmon/hwmon0/name查出来的结果) [System FAN] FAN_UNIT = SIO FAN_1=I2 FAN_2=I3 FAN_3=I5 (1/2/3的值可以/sys/class/hwmon/hwmon0/cat fan*input查出的值自行调整) 如图所示,我的主板共有5个风扇接口,cpu我插的第1个接口,后面2、3为机箱背板风扇,5为侧面风扇,4闲置。 [CPU FAN] FAN_UNIT = SIO FAN_1=I1 以上关于model修改温控这块已完成。 最后一步。我们修改牛年包教程中提到的 修改libuLinux_hal.so库 LibuLinux_hal.so这个文件在qnap系统下面的/lib目录下面。 用winhex打开它 搜索hwmon0 对应图片修改左框处的数值为00 保存,上传覆盖掉原文件。 等几秒钟,进web页面刷新。恭喜你。完成了! 至此本心得教程完结。 祝各位机友搞机愉快!
请勿将此贴所述内容用于商业行为! 请勿将此贴所述内容用于商业行为! 请勿将此贴所述内容用于商业行为!
Ps:本心得贴其实是一份很粗略的过程贴,只是记录了我折腾并成功的过程。有很多更方便更实用的方法能够解决如何挂钩子(我那个方法只是其中最偷懒最粗暴的) 希望能借此贴让更多网友对威联通这个系统有更加浓厚的兴趣。如此而矣。 每多折腾一次,就会比上一次了解得多一点!
补充内容 (2021-4-12 13:44):
更新新固件。请用unanxtg大佬http://www.nasyun.com/thread-76492-1-1.html贴子里的方法。一劳永逸!
补充内容 (2021-11-17 08:39):
最新的5.0版本请用rmt大佬修改路径生成驱动再挂载 |