|
|
本帖最后由 ufo1cn 于 2022-4-13 11:48 编辑 " w+ W H# o7 p6 j/ \# z% b' V
: d$ B2 ^+ g4 u& `' [8 V& }前面看了 唤醒华为智能网关光猫隐藏的小宇宙:OpenWRT这个贴,想把我的hs8145x6电信版也装上普通的Luci页面和openwrt包。但是由于与贴主的机器不一样,opkg一直没办法正常使用。 感谢HN8145X6安装虚拟机openwrt 21.02.2以及17.01.7懒人版的贴主,下载他的懒人包也可以运行,但是由于和他的系统不一致,运行主系统复制过来的程序会有Error relocating。经过他的指点,而且经过分析他的17.01.7包里面的opkg使用的distfeeds.conf和opkg.conf,正确把我的光猫也装上了能用的软件源。+ b' E. Z8 [; W8 R
注意,我的系统版本是V5.20.C00S035, 不同的版本请参照他的贴的注意事项,如变砖后果自负。
, z( W/ x) X/ }$ N: w! G+ Q5 g9 x这里先把包放上来。使用方法和他的懒人包一样。
3 A' h& r" j. U$ f2 H( H! p+ D; Y后面有空这里会编辑追加下产生这个包的一些步骤和经验,以便作为备忘和便于抛砖引玉大家举一反三生成自己的包,4 y+ D' G' t' k0 ` f7 X9 t
" Y6 Z- t& e6 S( L( f* i8 i, Q4 {) b+ M+ s% _
) i! x2 ]$ ^2 P: m/opt/upt/framework下是只读的文件,
; O/ k" Q' }; r* E4 N" n) W I, Y/opt/upt/apps/apps这个目录存放着openwrt启动时会覆盖到openwrt根目录的文件.* n$ Q4 N# E f1 |% t
所以这里的子目录可以创建一些启动文件来让openwrt启动时自动执行一些程序或脚本.
! b0 N3 J( T' ]" q R2 x
9 F$ v# R& ~% ]4 l: ^8 G
, Z8 u1 c7 S% R- X( @& {对于我的光猫来说,通过telnet或或者ssh登陆光猫主系统后,
5 d* ]1 z# _, R" Z. Y进入openwrt有2种方法1 s. _* _8 c( e' u' |( b3 h# t
注意:登陆光猫输入su,shell进入主系统shell后,权限并不是root,需要提升权限到root,再次输入su进入root用户./ a( k3 C7 C R/ c
有些操作需要root用户,复制到openwrt的文件如果不用root用户复制或创建,可能运行由于权限不够就会有问题.
; a* h* n3 I5 H% v执行前后可以通过whoami命令来得知当前是什么用户权限.6 i. t2 K5 p& ], g2 B9 _, m" e
3 M, T- b; w$ [4 R" {7 I
! n. J2 f) J+ |" {/ c1:找到正确版本架构的dropbear之类SSH或telnet软件包解包放入/opt/upt/apps/apps里面,并手动创建自启动链接
. C0 y; n! i+ Q+ |2 f可以直接在openwrt的启动脚本加入openwrt已经有的telnet或ssh服务器程序自动执行
$ q; [' K! `7 C7 f" c% c0 f- q# S2 E
2 v- r9 Y3 B; c6 v8 c
实际测试
* o& N/ }1 [ r+ e/ ]7 }* d创建/opt/upt/apps/apps/etc/rc.local ,加入/usr/sbin/telnetd -p 2121 -F -l /bin/ash & 3 o7 i T3 x( W; F2 v
重启光猫,可以由telnet登陆光猫2121端口.. h% m4 o" \4 |/ |
如果放入dropbear后通过ssh登陆,注意关掉主光猫的默认ssh端口或修改dropbear的配置,不要和主光猫ssh端口冲突.( q; X% G+ e- J/ T- h
建立并修改 /opt/upt/apps/apps/etc/shadow,把里面root的数据改成 /etc/shadow的root密码
M) B/ b+ ?$ Q不然登陆上去不需要密码 |5 e4 `% i$ ?2 X# x, E
具体方法可以看后面.: [0 k" w) ?% E; m
; A$ ~- [3 ~5 Z6 e2:通过光猫自带的saf管理程序进入,我的saf管理程序是saf-huawei,% b: @8 F/ O/ {$ a# @# T" R0 v
主系统下输入saf-huawei可以找到saf-huawei的一些命令参数," t3 Y1 ]9 ?: _
输入saf-huawei console回车进入openwrt的控制台.此时没有提示,密码是upt,直接输入密码回车再回车几次可以进入openwrt的shell1 @) H% ~0 I1 O
可以用以下命令在主系统和openwrt察看一些信息以便提供网络搜索的信息.
, j" R* c; z9 d: g) w! _5 j察看内核信息: J' Z1 I/ K- V- g
uname -a
G* ?" {5 K. \& M9 O4 W察看openwrt版本2 M( M5 x' P% p
cat openwrt_release
# ?! r1 C: ?* i3 s察看cpu信息5 A$ p% T; ~* O8 _5 F. a
cat /proc/cpuinfo
$ X& \* [* H: q3 I, L' L9 c! h$ M {+ s0 c* r5 i- t
' z) D) A- A9 s. \/ P据说电信内置opkg程序的参数被改过,还没有找到用法." ~+ o: _$ b( f8 g8 C2 P
我直接用张小牛的懒人包opkg软件源的地址(已经验证过它的懒人包如果不运行光猫主系统复制过来的命令能用)来下载opkg替换6 D1 }7 u; }/ M1 B* Z% K! w
openwrt中可以访问主系统的一些共享目录.比如主系统的/tmp在openwrt中是/e8ctmp.
, k z( ]* I/ ^5 f) h. p. P此时通过wget命令下载下面地址的opkg包解压并替换原有的opkg,可以在主系统也可以在openwrt中下载并替换.
, T, k: L3 T# E) ~+ U, J; M下面是在openwrt中操作 I2 [5 R& ]+ r. C5 ]7 B% n
进入tmp目录; G( h% v+ N+ s( k# k
cd /tmp( \ k$ B! v Y; ~- _0 ~9 y
下载opkg包
3 p, M& ]$ h; T6 F1 Swget -c http://mirrors.aliyun.com/openwr ... 1_arm_cortex-a9.ipk
$ |( B' D# s- M+ ?' M& p1 g解压2次文件包得到opkg可执行文件
2 z+ J" M9 y/ ~tar zxvf opkg_2019-01-18-7708a01a-1_arm_cortex-a9.ipk2 L+ n8 v1 C: R" W6 A, Y
tar zxvf data.tar.gz* Y$ _8 Y$ {' t
移动当前目录解压出的opkg到系统的bin目录替换opkg程序1 [; z) W6 C z6 s$ q; \% g
mv bin/opkg /bin
& D; H( y3 S1 j$ Z. y1 p, n) s) w% _ `& V t
同样补上opkg运行需要的缺失的libgcc库文件
1 Q; ~$ f/ q3 N" k; v9 rwget -c http://mirrors.aliyun.com/openwr ... 1_arm_cortex-a9.ipk( U+ P% w7 W+ Q5 y, X
tar zxvf libgcc_5.4.0-1_arm_cortex-a9.ipk' N% x8 ~ ^6 ]% \2 L
tar zxvf data.tar.gz
! B5 U1 N8 i0 I7 E/ h& Hmv lib/libgcc* /lib% O8 G) d* o+ [+ n$ h, t7 O! L
; c# g5 H8 ~5 Q' {! f8 D2 ~+ J
然后修改opkg的配置文件opkg.conf和distfeeds.conf,可以vi直接修改,也可以通过tftp传回电脑修改再传回,3 N" u$ z e L8 M$ k6 g
顺便提醒有些文件包不能在windows解压再传到openwrt,需要直接在openwrt解压,才可以保留权限和文件链接,比如我的懒入包& l: D! Q. D0 U1 @9 m
# B# y9 }( L3 k4 \ Y$ g
还可以直接把整个目录打包后直接通过tftp传输到电脑解压察看分析,解压会有一些报错,这是因为linux的文件系统权限不一致的原因$ Z2 S7 _* Z. f" B* _: P
. c0 F2 @& S9 O+ o# x% K& |' M/ L7 q9 `* O1 a% d) i& ]
tftp用法
1 B- f" w1 H, A5 F上传openwrt的本地文件到电脑的tftp服务器9 x |* I# s/ Y1 ?. ?
tftp -pl 文件名 电脑的IP地址! m. z; g5 {" [! ^# `' S( z
下载电脑tftp服务器的文件到openwrt
6 `6 _6 N- X2 h Gtftp -gr 文件名 电脑的IP地址% T( R/ {. \9 c
9 @( B- F2 D n3 w9 s
tar用法9 H) s" l% `4 g! O
打包成tar.gz文件' p. a& U+ E( D5 M7 s( b
tar cvzf 文件名.tar.gz 要打包目录并压缩为gzip格式4 X* v7 O8 c2 E4 }# ]9 Y9 s# N
解压
4 k. b$ z% L- ~2 s9 d" Ntar xzvf 要解压打包压缩文件到当前目录 # [% {8 z/ m3 J6 v8 D: j7 X0 V2 z
9 A, P f& q# ^6 f
9 {4 A: F0 k' r: _% B2 H# X
# I! O, Q4 x6 W4 o8 G" N
% R" Z: ~' y5 R/ Udistfeeds.conf是软件源地址." A4 X7 ]( f. g; U$ N. l7 ?. l
opkg.conf是opkg的其他一些配置,主要添加修改一些架构信息以便让opkg识别
* W; j4 x) E, N9 B3 \文件内容如下( L" S4 A& R" |8 [
dest root /
) |) a/ R6 c) d- z* M& u/ Qdest ram /tmp. L, C/ \$ d: I3 X% K! ^( F1 A0 @
lists_dir ext /var/opkg-lists" @ n$ b5 h8 [: G8 Z
option overlay_root /overlay9 w% f. [8 a, q8 [' _% V: U
#因为软件源并不与当前的编译的openwrt百分百一致.注释掉签名检查, G9 ~; B9 P) @+ ]4 E
#option check_signature 10 z) w) l+ l/ R1 ~+ G* g6 x
#不依赖架构的软件+ W" T1 Z8 t; {- y4 |# V
arch all 1
0 o' N: t& y5 u6 parch any 1
% t; ~6 ~* V4 Z6 carch noarch 1 U7 }; i) B+ n4 Z" `4 {
#通过察看openwrt自带的电信插件的软件包,发现架构信息是rtos44
. P) b. D- P8 v9 s( U1 g2 S5 e#添加 rtos44
4 Y: j7 `: o! Oarch rtos44 10* `: T% A, D/ P( T8 Y. @4 Q
#由于光猫cpu架构是arm cortex a9,添加软件源的cpu架构cortex a92 e# J% ~* M5 [2 }8 ^
arch arm_cortex-a9 20
3 ^+ N& i4 y' b |- x
0 ~% [# a% w1 l+ B w- u% I3 o+ x3 Q: S& z, n
) V2 y7 f1 Z: @7 [% O4 S清理当前目录下释放的文件
. D# t8 Y% P- _: l; |. grm -rf *.ipk *.gz debian-binary bin etc lib usr
0 V: z+ m/ \' ^& p+ `: u! T6 {' y. Y( `
* M; e! \9 k/ B' n% E' w" I+ x现在opkg能用了,直接通过opkg可以安装dropbear和通常的luci界面# \! P! C* [( m" [; C- t
如果已经在主系统中下载安装就不用再安装.
, P$ E2 b T" m" a. y; sopkg update
6 V9 Z. a9 ]) e; ?0 N$ Fopkg install dropbear/ v# _" |" P3 u. h: M' }, t
修改dropbear的配置文件,位置/etc/config/dropbear.3 Z0 G4 s4 A+ C+ ^# S
修改端口不与主系统的默认端口冲突,我这里修改为2222端口
% t* q( B" l3 aoption Port '2222'; ~0 n) @; w6 h, @ @7 o2 B
3 i8 e, g) K2 l: o/ E, W" u再次安装luci一些包后,原有的电信页面就会变成普通的luci页面
2 y& D; M9 \ Q( d7 O/ |& }% Wopkg install luci-base luci-mod-admin-full luci-theme-bootstrap/ ]# r! Q' I( \0 y" ^) g. c; e
7 k+ n, x" X6 a# |4 X1 u0 N W
2 r/ _; v( {) d) Z# N* c' r$ R5 e% h( s. y! ^# b+ r: x) t! b9 D
工作告一段落,打包备份一下就是懒人包了1 v+ x& J& ]" G( f
登陆主系统2 g1 v% i+ o) |, T
cd /opt/upt/apps: O# \& f5 A. A7 B
mv apps openwrt, I) g0 W, |: g K
tar czvf openwrt_R20S35.tar.gz openwrt% ^, E' Y& G3 `5 p
# ~! u" U" O2 {使用tftp传输到电脑保存.使用时登陆主系统,! B7 f# T! e9 i4 x
cd /opt/upt/apps' D A7 b: A; w v8 [
tftp -gr openwrt_R20S35.tar.gz 电脑IP
1 f8 j$ K6 N+ f1 Ftar xzvf openwrt_R20S35.tar.gz6 ~/ u/ ~4 b: t, z L
rm openwrt_R20S35.tar.gz3 H+ n, e1 P3 ~% b! k2 w
备份删除当前的openwrt,我直接删除了% p: x' r" K7 u
rm -rf apps
; w4 p" s: ]; n: _, h" L, {) J建立指向openwrt目录的软链接,代替原有的apps目录
4 U9 {, @3 {. S6 j0 Nln -sf openwrt apps
9 M+ E. v, j! O, J% ?* F& ?- u; o) D9 @, j$ O) i4 Z6 a+ S
一些有用的工具用法后面再追加
x4 C' t$ B: N: @; C. S; D4 `8 v+ ^
+ k( u( x: `* t) u. e
( P* t5 n6 |" B; p5 D$ @5 e
% a. `9 x! w. O o% s, o1 j5 T. S4 `" ?2 C
5 `( i! g8 `9 g* A5 C J! n
下面命令备忘待整理) l3 d$ s/ v+ _; k1 n
) ?6 }( X( J! j c7 ytar czf aescrypt2.tgz /lib/libhw_ssp_basic.so /lib/libclang_rt.builtins_s.so /bin/aescrypt2 /etc/wap/aes_string& N0 t8 ?1 `5 N1 M5 f
aescrypt2 1 hw_ctree.xml tmp, P, J; C1 L0 {8 i# L) G
gzip -d hw_ctree.xml. `+ |# l# X. K! ^# H
tar czf iptables.tgz /lib/xtables /lib/libip* /lib/libxt* /sbin/ip* /sbin/xtables-legacy-multi /lib/pkgconfig/*
, }7 U4 t- b& Z1 V) ^) Q* O, Q V9 }' b! k- ~* w
3 G6 _! K" J" Z8 {5 e; \
; U% j8 T. L2 \$ i/ z* b3 Z9 G8 S
# e- L: i. p1 }- h& O8 J0 U: J6 d# e9 w b
/ y! @! C5 P& p0 P) C0 {7 z6 ?; W+ s. f5 o' E1 W/ ^8 r1 P
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|