ufo1cn 发表于 2022-4-13 00:16:13

HS8145X6 的 openwrt 17.01.7懒人版

本帖最后由 ufo1cn 于 2022-4-13 11:48 编辑

前面看了 唤醒华为智能网关光猫隐藏的小宇宙:OpenWRT这个贴,想把我的hs8145x6电信版也装上普通的Luci页面和openwrt包。但是由于与贴主的机器不一样,opkg一直没办法正常使用。 感谢HN8145X6安装虚拟机openwrt 21.02.2以及17.01.7懒人版的贴主,下载他的懒人包也可以运行,但是由于和他的系统不一致,运行主系统复制过来的程序会有Error relocating。经过他的指点,而且经过分析他的17.01.7包里面的opkg使用的distfeeds.conf和opkg.conf,正确把我的光猫也装上了能用的软件源。
注意,我的系统版本是V5.20.C00S035, 不同的版本请参照他的贴的注意事项,如变砖后果自负。
这里先把包放上来。使用方法和他的懒人包一样。
后面有空这里会编辑追加下产生这个包的一些步骤和经验,以便作为备忘和便于抛砖引玉大家举一反三生成自己的包,



/opt/upt/framework下是只读的文件,
/opt/upt/apps/apps这个目录存放着openwrt启动时会覆盖到openwrt根目录的文件.
所以这里的子目录可以创建一些启动文件来让openwrt启动时自动执行一些程序或脚本.


对于我的光猫来说,通过telnet或或者ssh登陆光猫主系统后,
进入openwrt有2种方法
注意:登陆光猫输入su,shell进入主系统shell后,权限并不是root,需要提升权限到root,再次输入su进入root用户.
有些操作需要root用户,复制到openwrt的文件如果不用root用户复制或创建,可能运行由于权限不够就会有问题.
执行前后可以通过whoami命令来得知当前是什么用户权限.


1:找到正确版本架构的dropbear之类SSH或telnet软件包解包放入/opt/upt/apps/apps里面,并手动创建自启动链接
可以直接在openwrt的启动脚本加入openwrt已经有的telnet或ssh服务器程序自动执行


实际测试
创建/opt/upt/apps/apps/etc/rc.local ,加入/usr/sbin/telnetd -p 2121 -F -l /bin/ash &
重启光猫,可以由telnet登陆光猫2121端口.
如果放入dropbear后通过ssh登陆,注意关掉主光猫的默认ssh端口或修改dropbear的配置,不要和主光猫ssh端口冲突.
建立并修改 /opt/upt/apps/apps/etc/shadow,把里面root的数据改成 /etc/shadow的root密码
不然登陆上去不需要密码
具体方法可以看后面.

2:通过光猫自带的saf管理程序进入,我的saf管理程序是saf-huawei,
主系统下输入saf-huawei可以找到saf-huawei的一些命令参数,
输入saf-huawei console回车进入openwrt的控制台.此时没有提示,密码是upt,直接输入密码回车再回车几次可以进入openwrt的shell
可以用以下命令在主系统和openwrt察看一些信息以便提供网络搜索的信息.
察看内核信息
uname -a
察看openwrt版本
cat openwrt_release
察看cpu信息
cat /proc/cpuinfo


据说电信内置opkg程序的参数被改过,还没有找到用法.
我直接用张小牛的懒人包opkg软件源的地址(已经验证过它的懒人包如果不运行光猫主系统复制过来的命令能用)来下载opkg替换
openwrt中可以访问主系统的一些共享目录.比如主系统的/tmp在openwrt中是/e8ctmp.
此时通过wget命令下载下面地址的opkg包解压并替换原有的opkg,可以在主系统也可以在openwrt中下载并替换.
下面是在openwrt中操作
进入tmp目录
cd /tmp
下载opkg包
wget -c http://mirrors.aliyun.com/openwrt/releases/17.01.7/targets/bcm53xx/generic/packages/opkg_2019-01-18-7708a01a-1_arm_cortex-a9.ipk
解压2次文件包得到opkg可执行文件
tar zxvf opkg_2019-01-18-7708a01a-1_arm_cortex-a9.ipk
tar zxvf data.tar.gz
移动当前目录解压出的opkg到系统的bin目录替换opkg程序
mv bin/opkg /bin

同样补上opkg运行需要的缺失的libgcc库文件
wget -c http://mirrors.aliyun.com/openwrt/releases/17.01.7/targets/bcm53xx/generic/packages/libgcc_5.4.0-1_arm_cortex-a9.ipk
tar zxvf libgcc_5.4.0-1_arm_cortex-a9.ipk
tar zxvf data.tar.gz
mv lib/libgcc* /lib

然后修改opkg的配置文件opkg.conf和distfeeds.conf,可以vi直接修改,也可以通过tftp传回电脑修改再传回,
顺便提醒有些文件包不能在windows解压再传到openwrt,需要直接在openwrt解压,才可以保留权限和文件链接,比如我的懒入包

还可以直接把整个目录打包后直接通过tftp传输到电脑解压察看分析,解压会有一些报错,这是因为linux的文件系统权限不一致的原因


tftp用法
上传openwrt的本地文件到电脑的tftp服务器
tftp -pl 文件名电脑的IP地址
下载电脑tftp服务器的文件到openwrt
tftp -gr 文件名电脑的IP地址

tar用法
打包成tar.gz文件
tarcvzf 文件名.tar.gz要打包目录并压缩为gzip格式
解压
tarxzvf要解压打包压缩文件到当前目录   




distfeeds.conf是软件源地址.
opkg.conf是opkg的其他一些配置,主要添加修改一些架构信息以便让opkg识别
文件内容如下
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
#因为软件源并不与当前的编译的openwrt百分百一致.注释掉签名检查
#option check_signature 1
#不依赖架构的软件
arch all 1
arch any 1
arch noarch 1
#通过察看openwrt自带的电信插件的软件包,发现架构信息是rtos44
#添加 rtos44
arch rtos44 10
#由于光猫cpu架构是arm cortex a9,添加软件源的cpu架构cortex a9
arch arm_cortex-a9 20



清理当前目录下释放的文件
rm -rf *.ipk*.gzdebian-binary bin etc lib usr


现在opkg能用了,直接通过opkg可以安装dropbear和通常的luci界面
如果已经在主系统中下载安装就不用再安装.
opkg update
opkg install dropbear
修改dropbear的配置文件,位置/etc/config/dropbear.
修改端口不与主系统的默认端口冲突,我这里修改为2222端口
option Port         '2222'

再次安装luci一些包后,原有的电信页面就会变成普通的luci页面
opkg install luci-base luci-mod-admin-fullluci-theme-bootstrap



工作告一段落,打包备份一下就是懒人包了
登陆主系统
cd /opt/upt/apps
mv appsopenwrt
tar czvf openwrt_R20S35.tar.gzopenwrt

使用tftp传输到电脑保存.使用时登陆主系统,
cd /opt/upt/apps
tftp -gropenwrt_R20S35.tar.gz电脑IP
tar xzvf openwrt_R20S35.tar.gz
rm openwrt_R20S35.tar.gz
备份删除当前的openwrt,我直接删除了
rm -rf apps
建立指向openwrt目录的软链接,代替原有的apps目录
ln -sf openwrt apps

一些有用的工具用法后面再追加






下面命令备忘待整理

tar czf aescrypt2.tgz   /lib/libhw_ssp_basic.so   /lib/libclang_rt.builtins_s.so/bin/aescrypt2/etc/wap/aes_string
aescrypt2 1hw_ctree.xmltmp
gzip -dhw_ctree.xml
tar czf iptables.tgz /lib/xtables /lib/libip* /lib/libxt* /sbin/ip* /sbin/xtables-legacy-multi /lib/pkgconfig/*







chenrenying1 发表于 2022-4-13 11:32:29

虽然我不懂,但觉得好历害,支持。并希望能进一步优化能大众通俗简单易用版。

faq110 发表于 2022-4-13 21:04:24

楼主厉害,深入浅出的讲解了制作方法

张小牛 发表于 2022-4-13 23:11:37

顶,耐心超好。送一个原厂opkg兼容的法子:
1、原厂opkg改名为ipkg
2、/bin下新建一个shell脚本,命名为opkg,权限755,内容如下
#!/bin/sh

if [ `echo $0 | sed -En '/\/?opkg$/p'` ]; then
opkg=`echo $0 | sed 's/opkg/ipkg/'`
opkg_para=`echo $* | sed -e 's/^install/aW5zdGFsbA==/' -e 's/^remove/cmVtb3Zl/' -e 's/^upgrade/dXBncmFkZQ==/'`
else
opkg=$0
opkg_para=$*
fi

$opkg $opkg_para

ufo1cn 发表于 2022-4-14 13:52:36

张小牛 发表于 2022-4-13 23:11
顶,耐心超好。送一个原厂opkg兼容的法子:
1、原厂opkg改名为ipkg
2、/bin下新建一个shell脚本,命名为opk ...

谢谢,请问这个脚本怎么用的?
有点看不懂,是可以根据电信原厂插件安装包的特征来自动调用原厂安装程序安装吗?
以前没有用到带电信插件平台的猫.
记得在光猫的电信界面访问获取应用连接不上. 网上说电信的插件应用平台已经关了.
是不是真的?电信的应用包现在还有渠道可以获取吗?

张小牛 发表于 2022-4-14 15:01:39

ufo1cn 发表于 2022-4-14 13:52
谢谢,请问这个脚本怎么用的?
有点看不懂,是可以根据电信原厂插件安装包的特征来自动调用原厂安装程序安装 ...

照我的方法做就行,这样,x6的opkg既保留了原来的功能,又能安装、卸载、升级软件。电信插件平台应该没关,只是不是distfeeds.conf里面的地址,因为我发现它下载安装过比光猫自己的插件更新的版本。

ufo1cn 发表于 2022-4-14 16:16:23

张小牛 发表于 2022-4-14 15:01
照我的方法做就行,这样,x6的opkg既保留了原来的功能,又能安装、卸载、升级软件。电信插件平台应该没关 ...

我系统里面opkg文件是在/bin目录,已经用下载的opkg替换过,
请问是要从framework复制原厂的opkg改名后放到/opkg/ipkg这里吗,
软件源下载opkg和脚本重名了.是要把脚本命名为opkg.sh还是说把下载的opkg放其他目录?

张小牛 发表于 2022-4-14 18:04:08

ufo1cn 发表于 2022-4-14 16:16
我系统里面opkg文件是在/bin目录,已经用下载的opkg替换过,
请问是要从framework复制原厂的opkg改名后放到 ...

下载的另外改个名字,放别的地方也行。脚本就是用来做兼容处理的,不叫opkg就失去意义了。

shitouyu 发表于 2022-4-14 19:03:42

厉害!大佬。

synoman 发表于 2022-4-15 12:59:49

光猫变成路由器?
页: [1] 2 3 4
查看完整版本: HS8145X6 的 openwrt 17.01.7懒人版