烽火HG6201M交叉编译transmission

烽火HG6201M交叉编译transmission成功!!

我家本来wifi是靠二楼的路由器的,后来发现光猫可以发射wifi,没想到三楼的光猫信号比二楼的wifi还好!! 自从看到了这个光猫的账号密码,而且光猫带usb接口,登进去发现内存和cpu都很不错,而且自带samba文件共享!!顿时我对这款光猫就陷入了无尽的崇拜,甚至想再买一块来当开发板玩。

最近用惯了samba共享硬盘做nas,而且手头刚好有一个功率更大的和光猫电源相同dc头的12v电源,也不用怕硬盘供电不足了哈哈哈。正好硬盘盒有多,直接一个usb接上去。

bt做种本来有很多大文件,我用fat32的文件系统被4g的限制卡住肯定不行,我直接接我的硬盘,NTFS分区不能识别,我就想着编译一个ntfs-3g进去,但是后来没想到这光猫居然支持ntfs!!只不过不支持GPT的分区表,我改成MBR的分区表就成了,插上去自动识别!!连接后自动挂载到/mnt下,usb1_n这种格式!!不过没想到它似乎不支持ext系列文件系统。

接下来就是编译transmission了,为了transmission,还要编译各种它的依赖,curl,openssl什么的。openssl的动态库在光猫里有,但是因为没有头文件不能用在transmission里。。。我只能从头开始,先想办法安装旧版本的gcc,然后还不能直接上最新版本,各种挑选合适的旧版本,编译zlib,openssl,curl,libevent,百度解决各种报错,最后终于编译出来了transmission。而且我想着有了curl就可以自己写脚本搞ddns了!最近光猫有了ipv6,这样我无论在哪里都可以访问我的NAS了哈哈哈(后来发现这个ipv6虽然是公网的,但经常ping不通,无语。不知道为什么,可能移动的ipv6的路由没做好?) 然而我高兴得太早了,一运行curl就说invalid instruction。依赖curl的transmission也是,会报错不能运行。现在看感觉可能和openssl没选好架构,没加-mtune 34kc这个编译选项有关系。 最简单的交叉编译还是GO语言的,windows下一个环境变量就搞定了,可以直接放过去跑。

最后我还是失去了兴趣,入了openwrt的设备做nas。

之前了解到buildroot这个东西,听说它先要编译一个gcc,再用新的gcc去编译libc,整个linux系统等等东西,感觉它编译的太多了会很麻烦,没想到这才是真正方便的方法啊!!!这几天搞了一下,很容易就成功了。然而我已经买了其他设备做nas了。只能希望能帮到其他想拿这个光猫做NAS的人吧。

这光猫的web端用的是java,印象里java是很大一个,很占内存的,它居然能跑起来,虽然不知道是不是标准版的。而且这光猫的cpu使用率感觉从来都是20%以下,一般只有个位数。内存好像也挺大的。我之前网有一段时间很卡,而且光猫的samba也,就一直在怀疑是不是光猫,后来发现是蓝牙

------------光猫相关信息------ https://www.right.com.cn/forum/thread-783839-1-1.html 光猫各个挂载点都满了,几M的空间都没有,除了/osgi目录,大概有50M的空间?不记得了。编译好的东西可以放在这里或者直接放在挂载的硬盘或者优盘上面。

在根目录下面到处翻,还是能找到很多他们开发系统的信息的,要是没找到他们用的buildroot和linux内核版本,我可能就不会搞这个编译了。

好像是MTK的什么CPU,没有什么路由器用同款。 光猫是MIPS架构 大端序 mips32v2 34kc架构

下面是翻到的一些关键信息: 2017108-SmartHG_MTK7526_Engineering_CMCC-coverity Linux (none) 2.6.36-svn159641 #15 SMP Thu Nov 2 10:18:12 CST 2017 mips unknown mips-linux-glibc-4.9.3 proj/mtk04854/glibc-4.9.3/buildroot-2015.08.1/output/build/glibc-2.20/build/csu/start.o

--------编译过程------------ 我顺便上传下我的build-root的.config文件。 用别人的二进制文件确实不好,万一被下了毒呢。不过我还是把我编译好的上传一下,毕竟自己之前也想下载别人编译好的。 总之用ubuntu,去buildroot官网下载2015.08.1的版本,然后解压,把.config文件覆盖进去,就可以编译了。主要是选择对mips32,再选v2架构,toolchain里选2.6.36内核头文件 如果选glibc-4.9.3,它要求动态编译,我想了想还是选了静态编译,用uglibc,反正静态编译不需要加载库,这个版本不一样没关系。 gcc里面我勾选了c++支持和宽字符支持(不选宽字符可以少一个报错),nano需要宽字符。然后再勾选想要的包。直接选transmission,我还选了nano,vi一直懒得学用得不习惯。然后看什么顺眼就选了什么。我瞎选了很多包,导致要下载很多东西。 还有一个地方选并行数,根据cpu线程数选吧,我选了8。类似于make -j8吧。 buildroot真是强啊,想要什么包选什么包 或者把我上传的.config文件放到目录下,相当于使用我的配置了,可以看着上面的图片在配置里删。然后直接make。 接下来就是解决下载国外网站的网速问题了。可以考虑先全部下载好放到dl文件夹里面。省的卡在那里。不过这些源码包都挺小的。 或者有条件的直接proxychains -q make

这里会遇到几个报错,直接按顺序给出对应的解决网址:大家见招拆招吧

  1. 一开头就遇到的host-m4什么的错误 https://blog.csdn.net/Jun626/article/details/104870430
  2. uclibc的宽字符的报错(不选宽字符就不会有吧): https://dev.archive.openwrt.org/ticket/13095.html 这个需要下载patch打patch -p1
  3. gcc-final的 https://unix.stackexchange.com/questions/335717/how-to-handle-error-compiling-gcc-4-7-0-using-gcc-6-2-1

我编译了算是2.5次,一次是编译的动态库,顺便也发出来吧,后面又觉得要选宽字符。大概率不会遇到什么其他的报错了。 跑起来挺快的。不包括解决报错的时间只花了半小时不到。

--------光猫的samba------- ps一下就可以看到运行的smbd的路径,也可以找到改密码的smbpasswd。这里的用户好像要和linux系统中的用户对应,但是不好创建用户,所以推荐使用root用户,好像是smbpasswd-aroot然后就可以设置密码。然后在配置文件里面允许下root登录。因为感觉不设密码还是不安全

下面贴出我光猫samba的配置文件。之前配的时候看日志发现不能设置charset,因为编译的时候就不支持其他charset。我也不记得改了哪里了,应该能用吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[global]
smbpasswdfile=/flash/cfg/app_conf/samba/smbpasswd
workgroup=WORKGROUP
guestaccount=root
netbiosname=Fiberhome-samba_test
serverstring=SambaServer
dnsproxy=no
#displaycharset=cp936
#unixcharset=UTF-8
#doscharset=cp936
loglevel=0
logfile=/dev/null
interfaces=0.0.0.0/0[::]/0
loadprinters=no
security=user
socketoptions=TCP_NODELAYSO_RCVBUF=65536SO_SNDBUF=65536
usesendfile=yes
deadtime=5
[usbshare]
comment=AllStoragedevices
forceuser=root
forcegroup=root
public=no
writable=yes
browseable=yes


其实这些编译的东西我没有全部测试,毕竟已经买了openwrt做NAS,我就用了下curl是正常的,使用https需要设置-cacert到旁边的etc/ssl/certs/ca-certificates.crt。感觉应该能用,不会真的打脸翻车,又报invalid instruction吧,不过跑transmission需要自己搞一个配置文件,启动的时候设置好配置文件夹的路径。 顺便还编译了nginx 建议使用前做好备份,万一误删了什么就不好了。 这里都是静态编译的,直接把想要的复制出来放到优盘里,再插上光猫,开启telnet进去启动。比如transmission-daemon复制出来,在旁边的文件夹放好配置文件,启动的时候加上参数。 可以加上自己的开机启动脚本。开机自动启动一下transmission,然后再自己写个ddns脚本更新ipv6地址。参考:https://hotfeel.me/?p=119