宽带技术网

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 27960|回复: 83

F650/450、8145、K662等ARM平台,LXC容器内运行OpenWRT子系统

[复制链接]
发表于 2020-2-17 02:14:04 | 显示全部楼层 |阅读模式
本帖最后由 songee 于 2022-4-27 21:04 编辑 / L' Q/ \5 ]9 K# m2 b* I9 V# j: p7 X

# P0 Z, M* r9 _0 m家里装宽带,电信200M,送了个中兴F650A。自带的天翼3.0web界面看着不错可惜几乎没有可玩性,闲来无事研究一番。
9 C/ R7 k) d6 v/ @0 y( Q( t    借鉴论坛前辈achaoge的帖子:中兴 F450A/F650A 免 TTL 持久开 ssh顺利开启telnet,发现该光猫的运作机制是 主系统负责底层的硬件驱动、sendcmd管理系统(telnet、超密、ppp拨号、网络及WiFi、ftp等)、以httpd为基础的8080端口电信web管理界面,最后启动saf(lxc容器管理)程序。, x0 @# D3 ^6 g. c" u
    saf程序在华为和中兴的很多光猫上都存在,根据该程序在F650A中的功能,我认为其主要作用是自动管理lxc容器。开机有 ‘saf service 6 7 11’进程,意为将 mtd6 或 mtd7 作为saf子系统的firmware(rootfs)分区,mtd11 作为APPS数据overlay分区。至于是 mtd6 还是 mtd7,由 saf setactive 命令指定,默认 mtd6,如果子系统启动失败自动指定 mtd7;从 mtd7 启动失败可能导致整个 mtd11 分区被擦除,mtd11 分区同时也是主系统的overlay数据存放区,操作时需要特别注意!!
8 m$ x5 Y2 W8 u* N/ L  k; Q' p8 b
  1. root@F650A:/usr/sbin # saf( X$ ]* [& y* l* w6 }2 J
  2. Usage: saf service FWK_MTD_ID1 FWK_MTD_ID2 APPS_MTD_ID (eg. saf service 9 10 7)) I+ w, D3 ?5 Z% S: A! s
  3. saf console
    7 H0 y! \% H% ^* q
  4. saf info( _8 G$ O) E) Z
  5. saf version7 g0 h' |  U8 G7 P
  6. saf getfwkver
    8 M; `% o% W: R. d
  7. saf getbakfwkver5 W7 `& i! ~$ q
  8. saf getactive8 L: P8 F( X1 l: @
  9. saf setactive FWK_MTD_ID [AFTER_REBOOT] (eg. ./saf setactive 17 1)
复制代码
  1. root@F650A:~ # cat /proc/mtd
    / Y" P/ j9 ?1 M& g. U
  2. dev:    size   erasesize  name
    * Z9 T* z1 v( M+ X% o5 v
  3. mtd0: 08000000 00020000 "whole flash"
    ! l* o- n1 o8 Y# u/ L7 N: Q. b7 ^
  4. mtd1: 00100000 00020000 "u-boot"$ c8 S" l$ s1 j( {
  5. mtd2: 00080000 00020000 "others"
    4 N6 ~( m0 F* x2 g
  6. mtd3: 00100000 00020000 "parameter tags"
    7 T7 L% Q; {+ I$ \5 m$ y6 l
  7. mtd4: 00100000 00020000 "wlan") z, k% M; j0 F$ P+ F' D; `
  8. mtd5: 00200000 00020000 "usercfg"
    $ W9 a) M9 |% ~- t8 b! h9 O
  9. mtd6: 00800000 00020000 "framework"
    ' K& L3 @4 ]* S7 ]
  10. mtd7: 00800000 00020000 "framework1". x: R8 `0 T. c* m) _0 B' r# n
  11. mtd8: 00780000 00020000 "dbus"' i+ @* n$ Y6 Y: Y: N; S' J
  12. mtd9: 01280000 00020000 "kernel1"
    , j" \& h% C/ f+ v
  13. mtd10: 01280000 00020000 "kernel2"0 w0 {* v" |& i, A) o1 R; ]  I
  14. mtd11: 03e00000 00020000 "plugin_data"
    1 q7 Y* j1 ]0 {% U' b: ]+ `/ F" F
  15. mtd12: 01240000 00020000 "rootfs"
复制代码

/ @7 h9 y2 Y' y1 A. ?! N7 D9 v* |1 W0 w    saf程序管理子系统,是通过系统的lxc容器实现的,在/dbus/usr/bin/目录下有lxc相关程序,但并非标准的官方版,而是定制的,lxc.lxcpath即lxc容器存放位置设定为/usr/var/lib/lxc,暂时没有发现更改的方法(也没什么必要)。
root@F650A:~ # ls -l /dbus/usr/bin
' r9 P/ U& @7 r+ U1 ztotal 377
* G4 s" [6 J- d9 P-rwxr-xr-x    1 root     root         10143 Nov 15  2018 dbus-cleanup-sockets0 p$ `  |& d4 r) s. Y4 _4 M5 h
-rwxr-xr-x    1 root     root         18867 Nov 15  2018 dbus-launch
$ Z" G8 n" H  a- u. T-rwxr-xr-x    1 root     root         22537 Nov 15  2018 dbus-monitor7 Q1 B7 ?# d/ [0 H1 V7 X
-rwxr-xr-x    1 root     root         11049 Nov 15  2018 dbus-run-session
( }4 k) o: o/ r9 ^3 h9 j8 L8 X-rwxr-xr-x    1 root     root         23431 Nov 15  2018 dbus-send
" q7 q$ T3 Z; G+ m# @% h-rwxr-xr-x    1 root     root         19495 Nov 15  2018 dbus-test-tool! Q) s! M" S1 M/ ]! F4 f8 P1 m+ Z
-rwxr-xr-x    1 root     root         12257 Nov 15  2018 dbus-update-activation-environment) u# o% S* ~+ W; g  k
-rwxr-xr-x    1 root     root          8365 Nov 15  2018 dbus-uuidgen
0 h5 L# p) ~( h8 w9 w# \8 ]" b, N-rwxr-xr-x    1 root     root         33112 Nov 15  2018 gdbus. K2 E& v- o& A5 O/ v+ V
-rwxrwxrwx    1 root     root         12332 Nov 15  2018 lxc-attach" g$ L2 K+ x! g! h0 x
-rwxrwxrwx    1 root     root         14241 Nov 15  2018 lxc-autostart
7 |, h: [7 y* g0 A-rwxrwxrwx    1 root     root          9122 Nov 15  2018 lxc-cgroup" t% U: T% P4 ^0 P- F
-rwxrwxrwx    1 root     root          4414 Nov 15  2018 lxc-checkconfig- o  w; j) Q2 M' @8 }
-rwxrwxrwx    1 root     root         10175 Nov 15  2018 lxc-clone
  H+ `% @# e# w* ?-rwxrwxrwx    1 root     root          6181 Nov 15  2018 lxc-config
4 ?# F" w  b9 ^- F-rwxrwxrwx    1 root     root          8590 Nov 15  2018 lxc-console$ r/ }9 v/ f+ w: I- n
-rwxrwxrwx    1 root     root         14556 Nov 15  2018 lxc-create
# E6 s8 e, s* A" U-rwxrwxrwx    1 root     root          8540 Nov 15  2018 lxc-destroy! p5 @( |- f- X% F: @
-rwxrwxrwx    1 root     root         10027 Nov 15  2018 lxc-execute  y9 k% @5 z" A  A3 l! s9 A
-rwxrwxrwx    1 root     root          8630 Nov 15  2018 lxc-freeze
7 N- {5 i" i$ G+ x-rwxrwxrwx    1 root     root         18956 Nov 15  2018 lxc-info
3 }4 R# D8 e# l4 n: V-rwxrwxrwx    1 root     root          2834 Nov 15  2018 lxc-ls* r1 _) w. L# g, `! B# @& t% X
-rwxrwxrwx    1 root     root         11122 Nov 15  2018 lxc-monitor
2 ~( l+ {# x- A-rwxrwxrwx    1 root     root         12270 Nov 15  2018 lxc-snapshot
  ^; z$ R$ f! s6 S7 y-rwxrwxrwx    1 root     root         15356 Nov 15  2018 lxc-start- ?3 \$ a( o) d+ B9 ^$ l( C) N6 X
-rwxrwxrwx    1 root     root         10055 Nov 15  2018 lxc-stop
  e* z7 c& W* }7 Y* Y+ z-rwxrwxrwx    1 root     root          8634 Nov 15  2018 lxc-unfreeze* J3 @1 C: w# |8 \' `0 r
-rwxrwxrwx    1 root     root         12380 Nov 15  2018 lxc-unshare
' `3 S/ W, h8 O! w3 u/ Y-rwxrwxrwx    1 root     root         13324 Nov 15  2018 lxc-usernsexec
% Z* V0 l4 N, Z" u% ^-rwxrwxrwx    1 root     root          8561 Nov 15  2018 lxc-wait
  1. root@F650A:~ # lxc-config -l3 b0 l& R# J' l
  2. lxc.default_config8 T5 V1 W: g# I) w
  3. lxc.lxcpath* D* ?2 ?7 B- h9 y  J2 X) u7 J
  4. lxc.bdev.lvm.vg6 E) ?2 J% n4 @1 [1 U: _
  5. lxc.bdev.lvm.thin_pool9 \; o1 s9 E' X5 I
  6. lxc.bdev.zfs.root9 ?0 b) }5 g$ i% i+ F1 l# Y
复制代码
  1. root@F650A:~ # lxc-config lxc.default_config8 z  d0 P% B- F% _9 }9 M, v( S+ ^
  2. /usr/etc/lxc/default.conf
    # W* V* [6 ~8 z. N- L: a0 n
复制代码
  1. root@F650A:~ # lxc-config lxc.lxcpath8 ^* w+ w5 B/ T
  2. /usr/var/lib/lxc
复制代码
; u5 u9 f- P! l. f  o" k, q
    了解系统运作机制之后,我最初打算借用saf方式管理容器,将 mtd6 分区用 'dd' 命令输出到U盘,Ubuntu下'unsquashfs',然后用官方版openwrt中的 /bin、/sbin、/usr 、/lib 等替换 mtd6 中rootfs下相应文件后 'mksqushfs' 再回光猫 'mtd write' ,但只在15.05.1版本中成功,怀疑是因为从17.01版本开始,openwrt的libc用 musl 取代了15.05及之前的 uClibc,导致saf运行所需的appmgr等程序无法正常运行。鉴于此,索性完全抛弃saf,以lxc方式开启新世界,操作步骤在本文回复中细谈。
3 |# j  k1 w, h: K( I    经过几番折腾,已将系统原有的openwrt中兴定制版saf子系统完全替换为官方openwrt19.07.1(lxc方式启动),不影响光猫拨号且可在线安装及更新非kmod类app,如ariang离线下载,samba文件共享,甚至各类科学上网工具(性能及安全原因不推荐)。3 V) m% y" L# w8 C; W3 E2 `& u
# F, ^' T6 c: k- z. A
* T' @/ J' U  X4 l4 H9 ~$ L
/ x5 o. P' _- K: U

' t  Q6 Q" R: |6 W3 j
/ n: L& \, R( W$ @
0 v! K( q9 j( F0 w$ v+ o7 R( n8 n9 s

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2020-2-19 14:34:03 | 显示全部楼层

简化并更新OpenWRT22.03.0 RC1版本

本帖最后由 songee 于 2022-4-26 23:39 编辑
. D$ _! X5 a* e/ r) P9 N; Q( U# T4 d( \  N# {
因二楼原帖过程过于繁琐,近期尝试了一种较为简单的办法。2 \2 B: B5 M( }. e. u

0 o0 `9 d* [4 F) z, p
6 j6 O4 i+ r; r. t# T: k1、下载openwrt.org固件,我选的是openwrt-22.03.0-rc1-bcm53xx-generic-tenda_ac9-squashfs.trx,binwalk分析squashfs偏移量并用dd取出,unsquashfs提取rootfs,打包为rootfs2203rc1.tar.gz,传入光猫临时目录,如 /run/shm 。! ]* ?2 G# }$ r* }3 H4 U

' D% q, S$ X7 t+ U' i1 N2、将rootfs2203rc1.tar.gz提取至 (lxc-config lxc.lxcpath)/openwrt/rootfs 。2 P: `2 G6 z* P: z2 L% X! s0 v
  1. root@F650A:/usr/var/lib/lxc/openwrt/rootfs # tar -xzvf /run/shm/rootfs2203rc1.tar.gz -C ./
复制代码
) o1 A0 u5 Q6 U+ O9 Z
" a$ K, X8 G3 C
3、修改rootfs。openwrt的网络配置与主系统有冲突,需要清除。
9 w" Q9 S. Y; ]  L, H    3.1 移除 ./etc/board.d/ 目录下 01_leds 、02_network 、99-default_network 三个文件。
6 {0 o) A% s* N    3.2 移除 ./etc/rc.d/ 目录下 K21wpad 、K85odhcpd 、K90network 、S19dnsmasq 、S19firewall 、S19wpad 、S20network 、S35odhcpd 、S96led。) l( S( B' o) Y0 K
    3.3 移除 ./etc/modules.d/ 和 ./etc/modules-boot.d/ 及 ./lib/modules/5.10.111/目录下所有文件,openwrt的kernel modules与光猫内核不兼容。# a; j. p" i0 |0 G+ ^+ ^
6 h% H) h" P2 Y
    3.4 修改opkg源 ./etc/opkg/distfeeds.conf(可选)1 U  h' Z- P1 m0 o" y
  1. src/gz openwrt_core https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/targets/bcm53xx/generic/packages
    " g, Q) v% u3 d" U  V
  2. src/gz openwrt_base https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/base
    + j) Z  B# G9 y9 N" W0 Z" }2 ]
  3. src/gz openwrt_luci https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/luci! c) H; w' ]  m& [# @- [8 a. \
  4. src/gz openwrt_packages https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/packages
    # V% B5 J2 |8 o: w0 ?: L6 q
  5. src/gz openwrt_routing https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/routing4 y  [( z) [1 w+ M
  6. src/gz openwrt_telephony https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/telephony7 D, \: O3 v5 P: ^: h  L2 J
复制代码
  3.5 修改 ./etc/inittab 实现启动项自启(参考https://github.com/mikma/lxd-ope ... r/files/etc/inittab
- u% Y. @8 ^0 Z- {! u
  1. ::sysinit:/etc/init.d/rcS S boot
    + x1 v3 z  x7 ]
  2. ::shutdown:/etc/init.d/rcS K shutdown
    ) }$ m, i! J3 m3 }, y. h# \
  3. console::askfirst:/usr/libexec/login.sh
复制代码
  3.6 修改密码 ( root 密码 chinadsl
( [' Z0 f, E! p% k9 t/ y. D
  1. root@F650A:/usr/var/lib/lxc/openwrt/rootfs # chroot ./
    - R) ~; D) X1 a7 c* M
  2. & G+ n# {3 N; P+ T; l

  3. 4 B7 K0 d8 j5 ~, r4 m  u
  4. BusyBox v1.35.0 (2022-04-20 10:37:37 UTC) built-in shell (ash)/ L5 r, t& O1 z

  5. 5 n2 V, w7 d4 v" n3 \8 X
  6. root@F650A:/ # passwd/ t1 R0 M, A' }6 n. c5 q
  7. Changing password for root, Z6 D; \( q8 t; {+ k3 w
  8. New password:
    5 \' t" n/ L0 A" ^6 I% C
  9. Bad password: too weak$ o- {& z( l9 @4 `# |/ ]
  10. Retype password:, i& ]( C5 D! S. z1 J
  11. passwd: password for root changed by root
复制代码
  3.7 删除 ./etc/resolv.conf 软连接并新建./etc/resolv.conf,否则openwrt无法解析域名# c; c- m" [2 {. d
  1. nameserver 223.5.5.5
    & v& }# [. \$ J8 J0 B
  2. nameserver 2001:da8::666; `  B' j, ^9 M) x7 z
复制代码

3 ^, Z& h& J( Q! y
! |. \9 J4 l* ]+ W. u' p4、修改lxc配置文件 /usr/var/lib/lxc/openwrt/config ,根据各自光猫环境修改测试,这个配置我的F650A可正常使用。( z6 L4 `9 M+ m) A8 O" `
  1. lxc.arch = arm6 p; @- v0 z2 r
  2. lxc.utsname = openwrt, \  @+ m4 i' K1 W  x+ @: u
  3. #lxc.rootfs.mount = /usr/var/lib/lxc/openwrt/rootfs  e9 G% |4 @! H  ~8 O2 @
  4. #lxc.rootfs.path = overlayfs:/opt/upt/framework1/rootfs:/opt/upt/apps/openwrt-rootfs
    ! r) n/ O$ b0 D  t: D5 ~. @
  5. lxc.rootfs = /usr/var/lib/lxc/openwrt/rootfs
    ' G8 \/ {' h, Q* O
  6. lxc.haltsignal = SIGUSR1
    4 d, E# {/ s0 o. ]$ L% ~& h: u
  7. lxc.tty = 1
    : C6 [  ?, ?$ y. E* I$ A  `
  8. lxc.pts = 1
    3 s, U; V% B4 k9 R
  9. #lxc.hook.pre-start = /usr/var/lib/lxc/openwrt/pre-start.sh
    # m2 @6 i. J# ?& D! Q- a" B+ \
  10. lxc.aa_profile = lxc-container-default-with-nesting0 U9 M. K  n1 @0 ]9 c
  11. lxc.network.type = none6 u7 \* ^, g9 [  f) Q+ W  ]
  12. lxc.mount.auto = cgroup-full:rw
    " F$ d: }, e9 @
  13. #lxc.mount.auto = proc sys cgroup
    ; U' \& [3 n$ Y/ c% {7 c0 s
  14. lxc.mount.entry = sysfs sys sysfs defaults 0 06 @  @& O" f/ _& X6 L# d1 L, w
  15. lxc.mount.entry = proc proc proc defaults 0 0
复制代码

8 |* @5 r' |# I. b' U5 H- H# O& _' H* o, O7 R# j: t; ?
5、启动,根据提示按enter进入控制台。
( X# A# Z) C$ I; A0 W7 b
  1. root@F650A:~ # lxc-start -n openwrt
    " w* K% ]0 l& C9 P+ Q) ?
  2. <6>init: Console is alive
    + ]" G1 m6 O0 P- O* x/ T
  3. <3>init: Failed to redirect stdin to /dev/null: No such file or directory
    : g6 v9 S' y2 y4 u0 l2 w
  4. <3>init: Failed to redirect stdout to /dev/null: No such file or directory
    & q) v) J( h! B4 \, l3 R, J
  5. <3>init: Failed to redirect stderr to /dev/null: No such file or directory
    ( Y# e3 I% `4 v5 [- y0 D7 L
  6. <6>kmodloader: loading kernel modules from /etc/modules-boot.d/*
    - h! [; r3 `* e4 E- k! Z1 V
  7. <6>kmodloader: done loading kernel modules from /etc/modules-boot.d/*1 k) ]6 g) ~5 Q; c: q: y
  8. <6>init: - preinit -
    6 h  I# u/ @* \! R, U
  9. ls: /etc/board.d/*: No such file or directory
    $ y' `6 b7 C2 V) |8 l' i
  10. Press the [f] key and hit [enter] to enter failsafe mode
    & w8 K3 a  {" m+ @. z
  11. Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level" J. d: o4 }2 \$ d. L$ e: O( O! j
  12. <3>mount_root: Could not open mtd device: /dev/mtd12: ]4 G; L: M2 ~9 y& E$ N
  13. <3>mount_root: reading rootfs failed
    7 Q2 B* ^8 A! H' w. ?7 ^7 x4 E5 @- X* j
  14. <5>mount_root: mounting /dev/root6 X; Q  d! f% A0 c, h
  15. urandom-seed: Something is wrong with /dev/urandom5 c  d4 y. p7 W( B- h
  16. <6>procd: - early -
    5 P8 W8 x+ Z& y1 o& P; x* Z3 ?
  17. <6>procd: - ubus -
    - P' w6 ^3 v; m) T
  18. <6>procd: - init -1 Z& K! E: m; u
  19. Please press Enter to activate this console.4 }, T2 j* P  V0 B" T
  20. <6>kmodloader: loading kernel modules from /etc/modules.d/*
      b1 \- u& D; S  `' T# {
  21. <6>kmodloader: done loading kernel modules from /etc/modules.d/*7 X( P" d1 |, C8 `" W3 }) x; V  X/ \
  22. <6>urngd: v1.0.2 started.
    ! c" C! X* }% {* Z. h: L9 u# R

  23. $ b( G( r- o- Q1 u) H
  24.   H. v7 D; x9 E5 `" ]4 v. ~+ z

  25. 8 r9 D5 u7 b2 W7 K- Q9 `& [) q/ k
  26. BusyBox v1.35.0 (2022-04-20 10:37:37 UTC) built-in shell (ash): a' v/ y  o) h8 i$ {0 W
  27. 1 w5 n: `# D% Q) D
  28.   _______                     ________        __# ]; t' J3 m4 t! L  m. R. F4 I
  29. |       |.-----.-----.-----.|  |  |  |.----.|  |_: I1 t5 I; T! y: e% E/ u7 I
  30. |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|* T! i6 v/ Z$ \, P7 ^
  31. |_______||   __|_____|__|__||________||__|  |____|9 G; n% F, s7 Z  [/ v$ E
  32.           |__| W I R E L E S S   F R E E D O M
    % x  \, R0 H" U0 G6 l' ?# @
  33. ------------------------------------------------------ U, |& x7 c+ L* N3 @
  34. OpenWrt 22.03.0-rc1, r19302-df622768da$ e+ g& J" e% \4 T8 w
  35. -----------------------------------------------------
    6 ^# t- k, d) M. b6 |! }  Z
  36. root@openwrt:/#
复制代码
) d! `% _5 ~+ s6 n5 T
8 A& T. Z. }4 e6 ]
  1. root@openwrt:/# ps; _& g( f; T! B" R2 X- L' }
  2.   PID USER       VSZ STAT COMMAND
    & W( v/ ~9 X" `$ v$ a  z
  3.     1 root      1452 S    /sbin/procd( v+ A8 ]3 q5 _5 w3 v2 |* |
  4.    58 ubus      1112 S    /sbin/ubusd' a, N* b" s! j, C2 d
  5.    59 root      1196 S    /bin/ash --login5 ]4 J: ]% ?7 d( `, Z7 g+ h" x
  6.    93 root       908 S    /sbin/urngd& W9 O4 r* ^& R' Z  E
  7.   204 root      3736 S    /usr/sbin/uhttpd -f -h /www -r OpenWrt -x /cgi-bin -u /ubus -t 60 -T 30
    4 O, {/ h8 D( g
  8.   487 root      1952 S    /sbin/rpcd -s /var/run/ubus/ubus.sock -t 30
    5 m2 E: _% U' d6 Y
  9.   556 root       956 S    /usr/sbin/dropbear -F -P /var/run/dropbear.1.pid -p 22 -K 300 -T 3
    : l: g7 w7 R4 A8 |4 C
  10. 1065 root      1200 R    ps8 d) f- _% l6 b4 o% v/ U# S
  11. root@openwrt:/#
复制代码

, y# }) j( p+ U: o' h* B) f
* E* X, {5 ~: o# S9 I6 v
  1. root@openwrt:/# opkg update
      M6 d0 q6 e2 Y% |, B+ F& q3 S
  2. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/targets/bcm53xx/generic/packages/Packages.gz1 s, [1 X6 V0 l8 I. O, X$ z" r
  3. Updated list of available packages in /var/opkg-lists/openwrt_core% G4 Z* C( T: p& L
  4. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/targets/bcm53xx/generic/packages/Packages.sig/ g3 c8 q* d( \3 y# V2 B3 m7 F4 o
  5. Signature check passed.  v8 e6 D' G9 l' k1 B. |
  6. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/base/Packages.gz& k( x" n% P" s) J+ t2 T
  7. Updated list of available packages in /var/opkg-lists/openwrt_base
    " Q: o- `- w+ v
  8. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/base/Packages.sig
    ; }6 O* _7 S8 c9 u
  9. Signature check passed.
    : V2 p* ~3 u% L, D
  10. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/luci/Packages.gz
    $ a7 L3 j+ u- C, e
  11. Updated list of available packages in /var/opkg-lists/openwrt_luci
    3 F4 O: C/ e% t+ u) i8 }3 J- g3 c
  12. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/luci/Packages.sig
    : y$ p9 @# O' B( g* l  k
  13. Signature check passed.
    ' q. O7 h' B; u! m4 I
  14. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/packages/Packages.gz
    " M) Q1 z3 W) v9 [
  15. Updated list of available packages in /var/opkg-lists/openwrt_packages; z& ?/ G7 _, a, D
  16. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/packages/Packages.sig
    # ^( ?0 G6 V) {2 B# ~
  17. Signature check passed.
    % _) A3 X( V- j) `7 J8 q
  18. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/routing/Packages.gz6 W9 O& Q  a6 T  T' R! H" w
  19. Updated list of available packages in /var/opkg-lists/openwrt_routing* z3 o. d; ]3 V
  20. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/routing/Packages.sig
    0 e" x9 q, @3 s+ ]& _! ^
  21. Signature check passed.4 S& S+ v$ D  b# q' c
  22. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/telephony/Packages.gz
    4 n1 A  O; L- b" ]. r
  23. Updated list of available packages in /var/opkg-lists/openwrt_telephony
    ( z# [4 ^! n% f9 N4 q3 [
  24. Downloading https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0-rc1/packages/arm_cortex-a9/telephony/Packages.sig! g% A* }- r1 P2 q3 k4 r+ T+ a* x
  25. Signature check passed.3 Y( Z( C" r. Y1 E. @
  26. root@openwrt:/#
复制代码

; }+ E+ g, I) S9 T
0 t- Z" r6 F* m  @此时临时的openwrt系统已建好,运行的服务有两个:http占用主系统的80和443端口,ssh占用22端口。/ F9 m, B, K( Q8 q2 O( S5 `

2 F0 H: }( z9 q" s) _如果光猫有公网IP,请务必关闭ssh密码登录并使用密钥。
% ?/ d( X% j  A! v, z9 L2 E9 s0 b- a+ E# g
后期使用建议使用 lxc-start -dn openwrt 后台启动,使用 lxc-stop -kn openwrt 命令关闭。openwrt管理使用ssh密钥登录。' L4 b3 x0 E% t& V) Y4 `; f
需要固化openwrt到固件的,可以打包rootfs和config(需修改配置),mksquashfs制作成squashfs,用mtd写入saf分区,就不用担心恢复出厂设置了。& }) P; x. c2 C9 N
随光猫启动可以参考二楼。
! H) r, w5 h/ ^
; M! p6 R4 w& n! R

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2022-4-27 23:10:13 | 显示全部楼层
因光猫原系统的busybox功能不完整,也没有nano和dropbear,调试lxc可能会不方便,现分享出来。9 H& ~2 G  t. L) y7 b
$ l6 C# u' k4 ]
  1. root@F650A:~ # /usr/bin/busybox
    3 c, a  `4 w" h$ F6 ~1 B6 _# k
  2. BusyBox v1.23.2 (2020-06-16 16:53:26 CST) multi-call binary.
    ( B3 |6 M! y  h' j% n
  3. BusyBox is copyrighted by many authors between 1998-2012., V$ ~. @! a& l; h" [. l( I* F
  4. Licensed under GPLv2. See source distribution for detailed
    ( X) o) c! g8 R; }
  5. copyright notices.$ C' J' `) _  S
  6. ; b% M$ w% @6 G: c+ ?4 X  ?
  7. Usage: busybox [function [arguments]...]
    ) H* s/ \6 c# D! D  S4 s
  8.    or: busybox --list[-full]
    2 W' n& B" k8 X- D" U) t8 V
  9.    or: busybox --install [-s] [DIR]1 B& }2 |# l8 ^
  10.    or: function [arguments]...& b" V) r: {5 t
  11.   \2 b) {3 P; Z9 S7 l8 Y5 F5 u
  12.         BusyBox is a multi-call binary that combines many common Unix; Z" d" U7 h7 u& a# N
  13.         utilities into a single executable.  Most people will create a  x/ N$ o# J% v% T
  14.         link to busybox for each function they wish to use and BusyBox
    7 ?, ~: s/ H5 X- z2 h+ A, [
  15.         will act like whatever it was invoked as.
    # A$ Z5 c/ Z/ c3 S4 p

  16. 3 J0 [# l/ d1 h. y; W5 u
  17. Currently defined functions:, U0 q5 [! E/ n
  18.         [, [[, addgroup, adduser, ar, arp, arping, ash, awk, basename, blkid, brctl, bunzip2,
      `) p5 k4 {9 f% n# r4 [1 P& p
  19.         bzcat, cat, catv, chattr, chgrp, chmod, chown, chroot, chrt, chvt, cksum, clear, cmp, cp,* F' T0 x% h+ v# M
  20.         cpio, crond, crontab, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod, devmem, df,& ?, K/ [4 H3 \) ^
  21.         diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, echo, egrep, eject, env,
    ; m* a- J' o$ X' f$ e6 {/ X1 f
  22.         ether-wake, expr, false, fbset, fdflush, fdformat, fdisk, fgrep, find, flock, fold, free,
    " l- O* J& v* t* e) y8 w) r4 J
  23.         freeramdisk, fsck, fstrim, fuser, getopt, getty, grep, gunzip, gzip, halt, hdparm, head,
    ( p( J$ ]2 P) V. t# G/ A# g" ^
  24.         hexdump, hostid, hostname, hwclock, id, ifconfig, ifdown, ifup, inetd, init, insmod,
    6 I0 R# i% T# e2 I5 U, D/ V$ Y9 k
  25.         install, ip, ipaddr, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kill, killall,
    * f6 z+ M( t( d" ^8 M' j# x
  26.         killall5, klogd, last, less, linux32, linux64, linuxrc, ln, loadfont, loadkmap, logger,5 J" T$ Y: v& @. L8 K, R# e
  27.         login, logname, losetup, ls, lsattr, lsmod, lsof, lspci, lsusb, lzcat, lzma, makedevs,7 k- e+ [/ T0 ]$ V* _
  28.         md5sum, mdev, mesg, microcom, mkdir, mke2fs, mkfifo, mkfs.ext2, mknod, mkswap, mktemp,5 z( H3 N) U5 I  |. ~
  29.         modinfo, modprobe, more, mount, mountpoint, mt, mv, nameif, nanddump, nandwrite, netstat,5 d+ C  p$ z( r* \
  30.         nice, nohup, nslookup, od, openvt, passwd, patch, pidof, ping, pipe_progress, pivot_root,
    ! r/ J4 k0 W, i0 Z1 Z; P
  31.         poweroff, printenv, printf, ps, pwd, rdate, readlink, readprofile, realpath, reboot,. H& Y5 w1 j. N. M+ ?- i
  32.         renice, reset, resize, rm, rmdir, rmmod, route, run-parts, runlevel, sed, seq, setarch,
    ( X, Q: q5 T' Y
  33.         setconsole, setkeycodes, setlogcons, setserial, setsid, sh, sha1sum, sha256sum, sha3sum,5 G0 p0 E# t! g: n9 [/ S- J) p
  34.         sha512sum, sleep, sort, start-stop-daemon, strings, stty, su, sulogin, swapoff, swapon,
    ' _" e* S4 I7 z% s$ }
  35.         switch_root, sync, sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, tftp, time, top,
    . s- ~9 F  E; k3 ?
  36.         touch, tr, traceroute, traceroute6, true, tty, ubiattach, ubidetach, ubimkvol, ubirmvol,
    : I" Q% d( ^& D# t+ P
  37.         ubirsvol, ubiupdatevol, udhcpc, umount, uname, uniq, unix2dos, unlink, unlzma, unxz, unzip,
      M5 I9 X6 B; A6 g+ R% k
  38.         uptime, usleep, uudecode, uuencode, vconfig, vi, vlock, watch, watchdog, wc, wget, which,
    / \, q# Q& Z  `8 J: q
  39.         who, whoami, xargs, xz, xzcat, yes, zcat
    7 M% S$ _1 U* f$ R. K

  40. 1 R! H: b) w% J. _, e# x& T4 _: A. I
复制代码
  1. root@F650A:~ # nano -h
    7 b# i, e/ e& K* i
  2. Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...) S9 ?- S3 ?( Z* Y
  3. 8 v' a) x; U' I8 C- d8 g
  4. Option          GNU long option         Meaning& I( k4 h/ q/ o9 w9 L+ X& q
  5. +LINE,COLUMN                           Start at line LINE, column COLUMN
    % d0 v4 v. i* j  m" I
  6. -D             --boldtext              Use bold instead of reverse video text! Y. z1 H& c- w! s3 M+ Y
  7. -K             --rebindkeypad          Fix numeric keypad key confusion problem
    2 \# F6 R: c! _0 r7 W. R6 K
  8. -L             --nonewlines            Don't add newlines to the ends of files# z8 p" y3 c( Z5 s# Z- k5 _9 m
  9. -O             --morespace             Use one more line for editing; a, y6 Y- P4 d7 T) c* Z( X
  10. -R             --restricted            Restricted mode. g2 S( F: P+ l1 I8 g
  11. -T <#cols>     --tabsize=<#cols>       Set width of a tab to #cols columns
    ! w0 `6 [6 A( [; a9 e
  12. -V             --version               Print version information and exit$ D- o3 w1 e( f& r" S. c# \: O
  13. -c             --const                 Constantly show cursor position* F; S1 T: a: O7 w# n8 m5 a' J
  14. -d             --rebinddelete          Fix Backspace/Delete confusion problem% h6 A' J8 q" C
  15. -h             --help                  Show this help text1 o- E9 A7 H5 x( a! [5 K- u' B
  16. -l             --nofollow              Don't follow symbolic links, overwrite
    ! R) [. R) y6 i! q
  17. -n             --noread                Do not read the file (only write it)- M9 n" Q4 W$ g
  18. -p             --preserve              Preserve XON (^Q) and XOFF (^S) keys2 h  _6 {8 I- w# S
  19. -t             --tempfile              Auto save on exit, don't prompt& G4 u* q- _7 Z
  20. -v             --view                  View mode (read-only). l' c" |+ f2 }4 _& _5 u, s- V( W
  21. -x             --nohelp                Don't show the two help lines1 R; e2 L" c8 s
  22. -z             --suspend               Enable suspension
    6 E2 w. [" |/ o$ l+ {
  23. root@F650A:~ # nano -V
    3 l+ y$ c  R# }- g% {( B; {
  24. GNU nano, version 2.4.2
    9 `1 W5 @; h9 ?) O; }% T; O
  25. (C) 1999..2015 Free Software Foundation, Inc.# r; v, _8 z$ O; i7 o
  26. Email: nano@nano-editor.org    Web: http://www.nano-editor.org/6 R! e5 N# {9 J8 h9 g
  27. Compiled options: --enable-tiny --disable-utf80 }* c( }! S' n3 Y) z" V, c+ w
复制代码
  1. root@F650A:~ # dropbear -h& M- m* v! b$ ]: ~
  2. Dropbear server v2015.67 https://matt.ucc.asn.au/dropbear/dropbear.html. N  W$ S0 T2 S: L' B* r
  3. Usage: dropbear [options]+ P* {! y- C  t& V
  4. -b bannerfile   Display the contents of bannerfile before user login; `% n' E( X- {- g. ^& L# Q" m
  5.                 (default: none)2 W# Z" f3 ~- B
  6. -r keyfile  Specify hostkeys (repeatable)
    + V) Q" G# K# `2 x7 g
  7.                 defaults:9 F4 q+ e( D; l
  8.                 dss /etc/dropbear/dropbear_dss_host_key, _! d: T  J- j6 F
  9.                 rsa /etc/dropbear/dropbear_rsa_host_key
    & _4 N1 T" E, K
  10.                 ecdsa /etc/dropbear/dropbear_ecdsa_host_key
    ' r9 p+ o) M  Q0 r; q. f
  11. -R              Create hostkeys as required- @" P: j5 \( X
  12. -F              Don't fork into background
    7 C* {/ f! ~! t
  13. -E              Log to stderr rather than syslog2 S& P+ }: ~1 i
  14. -m              Don't display the motd on login2 F0 S, j1 b9 q4 u9 C. a5 b
  15. -w              Disallow root logins
    2 o& f5 b! [% P
  16. -s              Disable password logins
    1 f2 o+ ^; D, i) T6 E$ h
  17. -g              Disable password logins for root
    7 x6 x0 V5 k0 G
  18. -B              Allow blank password logins
    0 s: j5 ~; \  j5 u. V# X# v3 J
  19. -j              Disable local port forwarding! T" P1 j2 {7 J  a  d
  20. -k              Disable remote port forwarding- {- }3 W1 [( w
  21. -a              Allow connections to forwarded ports from any host
    & x+ |) k' ?, H! O. e
  22. -p [address:]port# N3 B& Z: l" ^7 f, ^
  23.                 Listen on specified tcp port (and optionally address),
    5 z7 k  L% m# b" V) r$ I5 [" `$ M
  24.                 up to 10 can be specified) L. o' }2 y- a% J/ Z) K
  25.                 (default port is 22 if none specified)
    & I5 A& v1 z) ^$ Q% ]
  26. -P PidFile      Create pid file PidFile
    # o8 a0 c6 d" j9 t9 w
  27.                 (default /var/run/dropbear.pid)
    ' X! y1 e$ o. m2 z; e: L
  28. -i              Start for inetd6 l+ [7 l6 A8 C
  29. -W <receive_window_buffer> (default 24576, larger may be faster, max 1MB)7 O9 V1 A" I4 Y& e; E
  30. -K <keepalive>  (0 is never, default 0, in seconds)
    ) M, Q  Y7 h4 p$ t- g
  31. -I <idle_timeout>  (0 is never, default 0, in seconds)8 i1 X0 Z: [4 Z
  32. -V    Version
    / Y; H! h: g# }: u
复制代码
- v) x' B4 ^% Q8 u
  r6 M7 {& f8 P% B: o

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2021-11-27 21:38:54 | 显示全部楼层
本帖最后由 btworm 于 2021-11-27 21:41 编辑 2 r$ d, l+ {6 H! o1 Z
songee 发表于 2021-11-27 04:15
" \, q& Q6 Z- w7 y1.只要lxc相关命令可以正常运行,写好配置文件,选择符合CPU架构的rootfs,就可以把容器跑起来。, n% p! M+ q; O9 O
2.我的 ...

) D1 V( |; h4 h5 s感谢指点!; @0 G+ y& K7 }  |7 `' E

1 N  E7 T* U8 y" s9 l4 b关于第2点( o+ u4 \3 q9 N+ O! ]7 T
华为光猫 / 只读,/etc,/usr,/lib这些目录也都依附于/, 所以都不可写, /opt目录不存在,当然也无法创建。7 c3 S: N( N2 M; M$ }9 A
! }0 ]# E  |' a% V
之前担心/dev/pts, /proc, /sys只读,是因为以前玩路由器时,有个chroot脚本使用过这些目录,刚又看了遍那个脚本,使用的是 "-o bind"参数,所以主机目录是否可写就无所谓了。在华为猫上跑lxc应该没问题了5 q5 a, R2 f  @- C) M

* f- b6 Q; j: X# Y$ G+ J, D' v另外想问问,光猫容器内的应用对端口的监听是:
) ?& t8 g7 Z7 N9 k6 W( A; h/ v1.直接监听光猫的端口?- _! d( ^" B, ^+ i3 Y) F
2.还是只能监听容器内的端口,并需要光猫iptables做端口转发给容器?

点评

有问题,根本找不到可以启自己进程的入口,只能利用已有的容器  详情 回复 发表于 2022-1-29 22:18
标准的容器支持多种接口类型,例如桥接或者NAT,但是有些光猫的lxc被厂家修改过。像我的这台F650A,我没有找到配置接口的方法,在config里的接口设置是“none”,实际效果是容器完全使用了宿主机的全部网络接口,所  详情 回复 发表于 2021-12-27 23:16
 楼主| 发表于 2020-2-22 18:37:10 | 显示全部楼层
anysoft 发表于 2020-2-22 17:508 G# K. D: f$ ~6 J& ], e
HS8145V HS8145V5  F650A 都是512MB+256MB 2.4G+5G方案
$ s6 R* O. |' l* G( [. i  H价格都还好,特别F650A 因为会玩的人少价格特别便 ...

2 H% u' U  Z% u5 ]3 t! k. F0 jhs8145v技术成熟,更适合玩,而且其实f650a是512/128,nand flash少了一半,CPU一个尿性,价格差别不大的话,能hs8145v还是别选650。
6 o+ q" v, L7 c2 M" i还有个大胆想法,lxc可以通过配置文件config修改子系统网络,从eth0桥接是不是就能在子系统多拨了,子系统专门离线和网络存储,不影响猫后面接的手机电脑上网,还是蛮有趣的
) B, H4 ]+ I& X5 [
( [. I) K. {/ e; I4 s4 x
; G! ]/ Z5 p3 C8 n* b6 N; `
! J* |$ i+ E1 Y7 p9 ~! T

点评

想加个好友交流的,回复被站长直接删了.....Q 2 7 5 0 3 5 3 0 0  详情 回复 发表于 2020-2-25 10:25
 楼主| 发表于 2020-2-17 02:19:26 | 显示全部楼层

二楼原帖,仅保留做参考

本帖最后由 songee 于 2022-4-27 21:17 编辑
( E  S  O& s9 K" H# h" P7 I$ w& U" ~7 F6 ^! B$ T

# w/ P4 A9 d! P, z8 y(2020年原帖初步摸索,过程过于繁杂,不建议再按这部分思路操作)  i; l" K) Y1 i5 a9 J; ?
中兴、华为等带有saf模块的光猫,以官方版openwrt替换厂商定制版的思路总结一下,供大家参考。+ y- n! p3 s$ e5 c7 y5 c
1、准备工具
2 o9 M3 P' A( ?; k    F650A主系统没有 mtd 、 dd 和 vi 等工具,而自带的saf子系统正好都有,子系统位于framework分区即mtd6,挂载于/opt/upt/framework,cp过来可以直接使用。
root@F650A:~ # cp /opt/upt/framework/saf/rootfs/sbin/mtd /usr/bin/$ a# H+ M: u0 ^, z, A# R$ }
root@F650A:~ # cp /opt/upt/framework/saf/rootfs/lib/libubox.so /lib/
1 ?) d0 F) {0 M% Uroot@F650A:~ # cp /opt/upt/framework/saf/rootfs/bin/busybox /usr/bin/
, {& b, I1 y) y: E. Uroot@F650A:~ # cd /usr/bin/
- M7 L# P( e/ o3 u5 Iroot@F650A:/usr/bin # ln -s busybox dd
" D$ C2 Y7 j! E% ^) s8 D1 I( M( t1 _root@F650A:/usr/bin # ln -s busybox vi
+ m# h: y. }) J* H* `
2、改进lxd-openwrt生成代码。
! R2 \# M* K: @! L2 F    本节参考https://github.com/mikma/lxd-openwrt,系统推荐Ubuntu 18.04以上。目前该项目支持x86_64|i686|aarch64架构,而F650A的CPU型号 ZTE ZX279128 的架构是 ARMv7 Processor rev 1 (v7l) ,不属于以上三种,只能调整build.sh部分代码。ZX279128架构bcm53xx的相同,借用它的SDK。可以git clone 或者网页内 Download ZIP,我浏览器挂的有代理,网页下载之后解压,修改build.sh。修改后的build.sh与原文件build.sh.origin的diff如下" @0 R+ D+ U  H' X, P
*** build.sh                2020-02-19 01:50:10.972675562 -0100
& {; u% l, h5 w1 Q% _/ |--- build.sh.origin        2020-02-14 19:10:45.000000000 -0100$ q: U* O3 V- r4 j" X
***************
$ h0 i5 B. X  Q0 S) T: q*** 72,81 ****2 a$ y# n8 ^+ D8 Z$ f
                  subarch=64
4 t( i$ B0 `# T                  arch_ipk=x86_64
. H& v9 t6 q% K, r6 y                  ;;
/ `' F) `6 b: ^' M. `0 q1 c6 {!         arm)
" `0 c, [' N& M; g6 N!                 arch=bcm53xx7 j2 H8 r( C9 m
!                 subarch=generic
! G6 E  G, q$ N!                 arch_ipk=arm_cortex-a9
3 d3 G* `& G+ V# h7 Y                  ;;! J. P6 D# M$ n+ f' J& B& ]# n7 s" o
          *)
. q3 e5 j/ b; g7 |  [% x3 N                  usage( V0 H# {- x+ k% k
--- 72,81 ----! Z& C6 H3 B* I+ z& K
                  subarch=64
' l, |% a. X: k8 P) {                  arch_ipk=x86_64
+ m9 H0 x7 k- M                  ;;. B9 k, [5 e8 S- I" w
!         aarch64)2 ]  h7 Q% Z4 }
!                 arch=armvirt
4 m) d: O( u  o9 ^!                 subarch=64/ o4 {- s: P2 ~) R
!                 arch_ipk=aarch64_generic
1 }* X+ d7 @) P1 f, {& F8 S                  ;;
4 P' y9 D' |) Z/ L$ @; H          *)
2 Y# K- C5 |# J3 d                  usage5 ?* v2 i& r$ r: G9 E& u5 G
***************& h8 Q. J' l0 X# \. K; M% \0 q
*** 87,97 ****: R4 m+ q/ E  N' S. Z
  if test $ver = snapshot; then% z7 A3 k1 G$ X$ \/ `
          openwrt_branch=snapshot
! Y2 k$ `; [7 p' Z1 q( C          procd_url=https://github.com/openwrt/openwrt/trunk/package/system/procd
  s, k+ v1 ~0 t: H!         openwrt_url=https://mirrors.cloud.tencent.com/lede/snapshots/targets/${arch}/${subarch}/ W! h  f$ y5 O8 T' N5 K0 Z
  else
! L) F7 Y3 i7 y2 O$ o          openwrt_branch=${dist}-${branch_ver}, U3 u. l* y+ f5 p' B" V
          procd_url=https://github.com/openwrt/openwrt/branches/${openwrt_branch}/package/system/procd+ E7 N, s  }5 w* Q/ \6 q
!         openwrt_url=https://mirrors.cloud.tencent.com/lede/releases/${ver}/targets/${arch}/${subarch}
5 c$ }: O/ ~" W# }7 ^  fi
8 s2 N: X' k8 P$ V4 V  2 O" ~  q. @- d1 A, R6 {3 p+ @
  procd_extra_ver=lxd-3
2 r: W- c$ ~: @# ^/ h4 Q--- 87,97 ----) [: K. c, V2 l% d
  if test $ver = snapshot; then9 K3 f! ]9 s! H3 e6 {0 u# I5 [
          openwrt_branch=snapshot! J/ {4 V2 }# ?& p) W- \3 _& P
          procd_url=https://github.com/openwrt/openwrt/trunk/package/system/procd% C- r! g! i1 L* J* U) V9 d) o
!         openwrt_url=https://downloads.openwrt.org/snapshots/targets/${arch}/${subarch}! }/ G' X& V/ X# r. X  \
  else. V% r; Z/ ]: F% l) d4 z
          openwrt_branch=${dist}-${branch_ver}8 M5 x" n- q( A
          procd_url=https://github.com/openwrt/openwrt/branches/${openwrt_branch}/package/system/procd- }" ~) E( _+ t$ f/ E  W$ C
!         openwrt_url=https://downloads.openwrt.org/releases/${ver}/targets/${arch}/${subarch}
3 c1 B7 U' _* r1 y7 R5 O1 y! n  N  fi
- w- }+ T/ P* P- f" u9 e  
& _1 Z# {* B( @" Y: ^' g  procd_extra_ver=lxd-3
. H7 ]! A6 O* _) K5 H***************- ^. _/ v( Q$ |% R
*** 112,125 ****
- }2 |0 r& Y. z( Q9 S  }
5 ?/ F+ d4 m" v. l. N, \  o  ( @& X$ f( J- R# F/ B$ k
  download_rootfs() {0 E. I% j4 Q9 X, R& ~' t# h' F
! #        detect_url "rootfs\.tar"
! z7 |- n, O$ H" v7 _: u' z! #        local rootfs_url=$openwrt_url/$return  m2 F# u7 {% y1 C; }
  
8 t$ h2 f0 @+ |' {2 Y5 B          # global $rootfs
9 H$ D0 a+ G0 h5 C" K% A3 G& T!         rootfs=dl/openwrt-19.07.1-bcm53xx-generic-rootfs.tar.gz
. @& x- L& y. T; ]$ R& c  
# p( {6 L/ f3 |# L& m+ t9 R  |; ?  h1 z' w! #        download $rootfs_url $rootfs $rootfs/ v, m) d. M1 i
! #        check $rootfs $rootfs_url. [, h: s. ^. y% m/ L/ w* ?
  }  H/ @6 P& |* S
  " {) F+ n1 F) U9 h: \3 y/ a) [
  download_sdk() {
# v# ^# y% O! |: E--- 112,125 ----- l8 G  z4 p) B4 e( u% ]
  }+ K% o, j* S- {0 s
  , w3 ?. G, Q3 B- v1 `
  download_rootfs() {  c9 e6 m0 h. Z* g  G
!         detect_url "rootfs\.tar"1 [. o5 U( v( L8 ~
!         local rootfs_url=$openwrt_url/$return
7 s5 l% S! }4 G2 I5 U  
' ^8 Q5 w! S# P' N8 r* R          # global $rootfs: z5 r  M. V2 U* V9 H
!         rootfs=dl/$(basename $rootfs_url)
  o% j8 N% `- j& O1 a$ V  & n, l( ^8 \# M' e! p$ \
!         download $rootfs_url $rootfs' Y8 s5 o8 m7 B/ W% K( g
!         check $rootfs $rootfs_url
1 {: ^2 j( v, @  }" Q3 y6 p& q6 V4 _
  % z! w) r1 A& j6 p4 `5 k& W
  download_sdk() {
" }) h$ D9 y6 m
3、从腾讯镜像下载openwrt-19.07.1-bcm53xx-tplink-archer-c9-v1-squashfs.bin,从固件中提取rootfs并预处理。) U6 A: ?% t, h
  1. x@x-Surface-Pro-3:~/下载$ binwalk openwrt-19.07.1-bcm53xx-tplink-archer-c9-v1-squashfs.bin + ^8 ^, U9 @1 S/ |- Z

  2. 2 e' ^1 I( `' H) W* K
  3. DECIMAL       HEXADECIMAL     DESCRIPTION0 V/ z4 U7 F( ^2 P
  4. --------------------------------------------------------------------------------
    ( c8 K  P# ]  z8 e
  5. 8317          0x207D          TRX firmware header, little endian, image size: 1810432 bytes, CRC32: 0xBCD36218, flags: 0x0, version: 1, header size: 28 bytes, loader offset: 0x1C, linux kernel offset: 0x0, rootfs offset: 0x0, c( h3 u! ?) c* _. E4 H+ Y1 f# a
  6. 8345          0x2099          LZMA compressed data, properties: 0x5D, dictionary size: 65536 bytes, uncompressed size: 1801662 bytes
    ( i. l% q. d" V; k
  7. 1818749       0x1BC07D        Squashfs filesystem, little endian, version 4.0, compression:xz, size: 1856770 bytes, 1174 inodes, blocksize: 262144 bytes, created: 2020-01-29 16:05:35: ^6 y! I1 ^) e

  8. 0 p0 [. ^- p' ?
  9. x@x-Surface-Pro-3:~/下载$ dd if=openwrt-19.07.1-bcm53xx-tplink-archer-c9-v1-squashfs.bin of=rootfs-squashfs.bin bs=1 skip=18187493 [9 M  X1 I% n- {5 u
  10. 记录了1900548+0 的读入' b$ |4 C! z& {6 I& p, I
  11. 记录了1900548+0 的写出4 T/ l! ]! s' N& m3 M
  12. 1900548 bytes (1.9 MB, 1.8 MiB) copied, 5.16823 s, 368 kB/s% @% f6 O" j0 ^8 ?, J. C' f3 N
  13. x@x-Surface-Pro-3:~/下载$ binwalk rootfs-squashfs.bin
    0 w; M) V) ]' F; W( _# v4 ~
  14. ) [3 G: c( l1 J6 l7 P8 p
  15. DECIMAL       HEXADECIMAL     DESCRIPTION
    ! _+ R+ \" d6 H0 n1 Y
  16. --------------------------------------------------------------------------------
    . a; b9 E5 h* n9 ?$ f
  17. 0             0x0             Squashfs filesystem, little endian, version 4.0, compression:xz, size: 1856770 bytes, 1174 inodes, blocksize: 262144 bytes, created: 2020-01-29 16:05:35
    & O, e% V  V- P* K$ f: `$ e/ k
  18.   h7 x- G& T+ U  x0 j
  19. x@x-Surface-Pro-3:~/下载$ unsquashfs rootfs-squashfs.bin
    / P6 l/ z/ L( \. Q" l: x! z
  20. Parallel unsquashfs: Using 4 processors* s4 T, v4 z2 A# ^( S. L$ ^
  21. 1071 inodes (1066 blocks) to write6 b5 P1 Z& k2 c! [) [% l

  22. / I% R$ i% O) x4 e. o! X
  23. 8 w7 Y& T* U% Z5 I
  24. create_inode: could not create character device squashfs-root/dev/console, because you're not superuser!
    + a  O9 s0 y) b/ r3 o% L" p7 @
  25. [====================================================================================================| ] 1065/1066  99%5 C+ L: `7 v* I8 a+ J+ o( \9 y5 W3 [

  26. 1 k! p. }( G! b: t
  27. created 875 files" H( e3 H/ i0 Z
  28. created 103 directories
      {# `: m1 X8 @2 C3 C; L6 T4 J
  29. created 195 symlinks
    9 N0 e% p  P6 P: n
  30. created 0 devices  j, F3 |2 ]+ F0 o9 u7 w6 G
  31. created 0 fifos
    " Y5 m& Z+ R/ i/ w: J. c" K
  32. x@x-Surface-Pro-3:~/下载$ cd ./squashfs-root/: M8 [6 c4 b( O! T$ x3 x4 b
  33. x@x-Surface-Pro-3:~/下载/squashfs-root$ gedit etc/opkg/distfeeds.conf
复制代码
将opkg软件源改为腾讯镜像
5 Q. T/ M) i9 ?3 R1 z% G
src/gz openwrt_core https://mirrors.cloud.tencent.co ... xx/generic/packages
: `6 g( ]3 C! t# V" p) Asrc/gz openwrt_kmods https://mirrors.cloud.tencent.co ... 92b7d7eca715b1ee0b8; W/ _" k5 j$ ?( x2 I
src/gz openwrt_base https://mirrors.cloud.tencent.co ... /arm_cortex-a9/base
6 F8 Q: j" x2 _- N/ A( |+ b( Ysrc/gz openwrt_luci https://mirrors.cloud.tencent.co ... /arm_cortex-a9/luci' v" u7 [5 {- ^$ i
src/gz openwrt_packages https://mirrors.cloud.tencent.co ... _cortex-a9/packages
8 s, V- l4 J3 B( Msrc/gz openwrt_routing https://mirrors.cloud.tencent.co ... m_cortex-a9/routing8 X: J! i# P0 G) e% J6 H' H
src/gz openwrt_telephony https://mirrors.cloud.tencent.co ... cortex-a9/telephony
  1. x@x-Surface-Pro-3:~/下载/squashfs-root$ tar czf ../openwrt-19.07.1-bcm53xx-generic-rootfs.tar.gz ./2 x9 `7 j9 s) a! I, ^) d% y7 A
  2. x@x-Surface-Pro-3:~/下载/squashfs-root$ cd ../' Q. S) o. ~7 F; [7 I. D! R$ j# Q
  3. x@x-Surface-Pro-3:~/下载$ mkdir lxd-openwrt-master/dl
    - F- Y' `+ a$ K1 e6 T* T7 r
  4. x@x-Surface-Pro-3:~/下载$ mv openwrt-19.07.1-bcm53xx-generic-rootfs.tar.gz lxd-openwrt-master/dl/
复制代码
执行修改过的build.sh% _$ Q# O0 t. H$ ]6 J9 U; G
  1. x@x-Surface-Pro-3:~/下载$ cd lxd-openwrt-master/
    , B$ v  d  C* C" t# a( F- x+ \0 u
  2. x@x-Surface-Pro-3:~/下载/lxd-openwrt-master$ ./build.sh -a arm -v 19.07.14 z6 X& ]4 K, {3 A  M" p
  3. ....... z9 R& [+ P1 m: s; c9 {6 e
  4. Pack rootfs
    2 a1 q/ i! g' H
  5. Tarball built: bin/openwrt-19.07.1-bcm53xx-generic-lxd.tar.gz, T( U8 m% w9 d1 y. C
  6. x@x-Surface-Pro-3:~/下载/lxd-openwrt-master$ mkdir ../openwrt-19.07.1-bcm53xx-generic-lxc
    2 W- E$ O' w; \1 J3 C
  7. x@x-Surface-Pro-3:~/下载/lxd-openwrt-master$ tar zxf bin/openwrt-19.07.1-bcm53xx-generic-lxd.tar.gz -C ../openwrt-19.07.1-bcm53xx-generic-lxc
    8 r; O; x$ K% y0 d& m( s
  8. x@x-Surface-Pro-3:~/下载/lxd-openwrt-master$ cd ../openwrt-19.07.1-bcm53xx-generic-lxc/4 [9 w# U) T# q/ }0 q' V1 y3 {% h+ z
  9. x@x-Surface-Pro-3:~/下载/openwrt-19.07.1-bcm53xx-generic-lxc$ ls
    $ r, c+ Z! e4 |7 o$ Q: O
  10. metadata.yaml  rootfs  templates* w! q4 b' S# v- c& B
  11. x@x-Surface-Pro-3:~/下载/openwrt-19.07.1-bcm53xx-generic-lxc$
复制代码

3 w; _% ?' T6 t: S& i4、这时我们已经创建好lxc下可运行的openwrt19.07.1的rootfs,接下来处理lxc及rootfs的配置文件。- J+ v9 l& T' A2 ?6 k( S" D
进光猫复制自带子系统的两个文件,再通过U盘或ftp传到Ubuntu的openwrt-19.07.1-bcm53xx-generic-lxc目录下,9 ^# T  {4 D+ R" s' X
  1. root@F650A:~ # cp /opt/upt/framework/saf/config /mnt/USB_disc1/" Z2 ]% Z2 O5 w/ w
  2. root@F650A:~ # cp /opt/upt/framework/pre-start.sh /mnt/USB_disc1/
复制代码
config为saf系统的配置文件,新系统下稍作修改,
# Q! j/ A( K  s7 K1 k
lxc.arch = arm- T1 m! ^: T1 V$ V& S( g% x3 }: K
lxc.utsname = openwrt
: S) j  g+ u" S0 P5 c* d' s/ Zlxc.rootfs.mount = /usr/var/lib/lxc/openwrt/rootfs
9 ^' j/ z4 j, n7 g1 l$ Ylxc.rootfs.path = overlayfs:/opt/upt/framework1/rootfs:/opt/upt/apps/openwrt-rootfs
* A0 F4 j7 _. ^" s# lxc.rootfs = /usr/var/lib/lxc/openwrt/rootfs 8 k* V8 g2 o. y
lxc.haltsignal = SIGUSR1
* F3 c# z9 [9 g2 H2 Plxc.tty = 1
2 U8 P; G" y4 S- ]8 {+ ^7 nlxc.pts = 17 H5 ~7 h% x: m# b" J$ o6 i0 y# u
lxc.hook.pre-start = /usr/var/lib/lxc/openwrt/pre-start.sh  {5 e! M' W- H# M. H1 b0 {
lxc.aa_profile = lxc-container-default-with-nesting
* C' n% ^3 a3 G* I$ A/ X& m  K6 clxc.network.type = none2 E1 ]- \4 o& s+ l, n7 c
lxc.mount.entry = sysfs sys sysfs defaults 0 0
- [+ k2 `2 T/ w: }lxc.mount.auto = cgroup-full:rw
' c+ v9 w" B2 alxc.mount.entry = proc proc proc defaults 0 0
& U7 Q* f/ ?3 ^$ ], b/ O2 hlxc.mount.entry = /mnt mnt none rw,rbind 0 0
" C2 X* A; k& y- {lxc.start.auto = 1

# U1 y7 D( I  `, e3 L! U4 [pre-start.sh处理模拟终端,为避免重复挂载devpts,添加一行卸载代码,% N- P' R+ \5 z
#!/bin/sh
* {8 G1 W5 w' t- Rumount /dev/pts /dev/ptmx
- b  g  y. y, ]$ Bmount -t devpts -o newinstance -o ptmxmode=0666,nosuid devpts /dev/pts- m; W% G& j& x
mount -o bind /dev/pts/ptmx /dev/ptmx

) O& F6 {( D9 s: g- d再删除rootfs/etc目录下网络和防火墙相关启动及配置文件如uci-defaults/09_fix_crc、uci-defaults/12_network-generate-ula、uci-defaults/70_fill-dhcp-checksum、uci-defaults/odhcpd.defaults、board.d/01_leds、board.d/02_network、board.d/99-default_network、config/dhcp、config/firewall、rc.d/K10gpio_switch、rc.d/K85odhcpd、rc.d/K90network、rc.d/S19dnsmasq、rc.d/S19firewall、rc.d/S20network、rc.d/S35odhcpd、rc.d/S94gpio_switch、modules.d/、modules-boot.d/、ppp/、sysctl.d/ 等,创建squashfs镜像,
9 O5 k, Y5 ?6 L5 G$ c
  1. x@x-Surface-Pro-3:~/下载$ mksquashfs openwrt-19.07.1-bcm53xx-generic-lxc openwrt-19.07.1-bcm53xx-lxc.bin
    2 h( @. U# `& n5 w1 z. ~
  2. Parallel mksquashfs: Using 4 processors& X3 L2 R( a8 b' T- s
  3. Creating 4.0 filesystem on openwrt-19.07.1-bcm53xx-lxc.bin, block size 131072." ]$ v, e8 A& n$ Q) b" h" R
  4. [=======================================================================================================/] 881/881 100%
    , }! ~( ?3 y7 H* H3 E; |( r

  5. " t' a6 O( R( O3 A! k. x
  6. Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072  b8 o/ t+ Z4 |
  7.         compressed data, compressed metadata, compressed fragments,8 Q# K) {% t3 h' l# a% Q6 a
  8.         compressed xattrs, compressed ids  ?# v; x4 ~3 M  D; m& R! n8 H* |
  9.         duplicates are removed
    . {, F0 X$ ?# V# s; t: s  h
  10. Filesystem size 3163.90 Kbytes (3.09 Mbytes)
    2 y  A! l) X; U* U" Y, W/ S
  11.         48.94% of uncompressed filesystem size (6464.54 Kbytes)
    * ~) |  s* y( @
  12. Inode table size 9693 bytes (9.47 Kbytes)& t+ p+ p1 s& ?) S$ `* I
  13.         25.72% of uncompressed inode table size (37693 bytes)
    + z2 ~+ c8 M& ?. f1 Q
  14. Directory table size 11372 bytes (11.11 Kbytes)
    & m; n, d; F/ K* g- h' |
  15.         47.17% of uncompressed directory table size (24108 bytes): ]1 m" R; \- v
  16. Number of duplicate files found 136
    8 m2 `% b4 P: O" n/ b
  17. Number of inodes 1145
    5 e, d0 H. j" K- l* O% _. `
  18. Number of files 873
    $ J4 k9 o3 p% b+ c) Y
  19. Number of fragments 39
    * t3 W: v  m) v# l6 o
  20. Number of symbolic links  171
    6 A) E  q, j: c1 U/ x. _+ `
  21. Number of device nodes 0
    ( O- l& x+ W- s$ Q( K& r
  22. Number of fifo nodes 0
    $ j- \2 \0 ~' E6 g7 m/ O
  23. Number of socket nodes 0
    ; o4 U  z3 d  @
  24. Number of directories 101
    ) L! J# `: G- h8 U% ?
  25. Number of ids (unique uids + gids) 19 d4 f: P4 B0 N5 j
  26. Number of uids 1
    2 C5 }# }6 e$ E+ _
  27.         x (1000)
    & k+ P1 r0 _: p/ m" o) J  v: Q
  28. Number of gids 11 {' y  d4 C; `8 A5 ^
  29.         x (1000)7 d' \3 ~& A6 f! O8 B* K
  30. x@x-Surface-Pro-3:~/下载$
复制代码
5 f' j1 o2 s5 m3 ^1 C* {

! ~8 W0 w/ e# L; P$ C4 {5、生成的openwrt-19.07.1-bcm53xx-lxc.bin传入光猫,'mtd' 写入mtd7分区。
4 X& }) H2 g: X- g! w& v: H, M刷之前先关掉saf,因saf有lxc-monitord进程守护,kill掉之后会自动运行,只好修改saf程序名,重启光猫。
. ^' S5 c: D( a. c8 q) E4 A, N0 d7 G# F
  1. root@F650A:~ # mv /usr/sbin/saf /usr/sbin/saf.bak
    2 l1 l, K, L0 }9 H3 v& d) p6 i0 T5 U
  2. root@F650A:~ # reboot
复制代码
重启后telnet登录,'ps' 确认进程列表没有saf,备份然后写入并挂载。
root@F650A:~ # ps
  X% I4 b( _, i* a  PID USER     VSZ   RSS  STAT  CPU COMMAND" F( x8 k' I' S" x$ t% p
    1 root     23160   600  S     <1>  init
# Q* Q8 M0 l6 [- V    ......# K  m/ Y# T' J0 d) k
root@F650A:~ # dd if=/dev/mtd7 of=/mnt/USB_disc1/mtd7.bin bs=1M
5 B7 z9 \3 f8 ^3 q2 _8+0 records in
2 a3 h- b6 a! l6 M& \8+0 records out/ o: ^( o" D4 K8 j; C  |  T  {% m. z
root@F650A:~ # mtd write /mnt/USB_disc1/openwrt-19.07.1-bcm53xx-lxc.bin /dev/mtd7! d; G5 `. F6 o# g2 j; b1 ~
Unlocking /dev/mtd7 ...
- e$ o$ T0 f# n' Y- I
8 k! R8 M2 |8 d) KWriting from /mnt/USB_disc1/openwrt-19.07.1-bcm53xx-lxc.bin to /dev/mtd7 ...# u* E) g9 U7 u8 s3 V
root@F650A:~ # mount /dev/mtdblock7 /opt/upt/framework1
+ p+ }$ g% m- P; v7 L% i
6、开启OpenWRT新世界
; r7 \( P9 S( s    写入mtd7分区并挂载之后,开始首次启动的准备工作。F650A的lxc默认路径在/usr/var/lib/lxc(一楼有说明),按config文件创建相应文件及文件夹,
1 }5 e% C0 F7 D3 ?+ K# G/ L" Z
* m9 U: I3 E- J
  1. root@F650A:~ # mkdir -p /usr/var/lib/lxc/openwrt. l% u0 ~% Y" r  w1 S; m
  2. root@F650A:~ # cd /usr/var/lib/lxc/openwrt
    6 _( o& E: n0 ^, D# a" P) x
  3. root@F650A:/usr/var/lib/lxc/openwrt # ln -s /opt/upt/framework1/pre-start.sh pre-start.sh
    $ a2 p) O9 U8 Q, `: s2 R2 n8 D
  4. root@F650A:/usr/var/lib/lxc/openwrt # ln -s /opt/upt/framework1/config config8 _& t$ X/ \! l' b+ `2 F
  5. root@F650A:/usr/var/lib/lxc/openwrt # mkdir rootfs) a! f% |3 ?" s2 o# }& p
  6. root@F650A:/usr/var/lib/lxc/openwrt # mkdir /opt/upt/apps/openwrt-rootfs
    3 n3 N( b* ^: p- r# |, k
  7. root@F650A:/usr/var/lib/lxc/openwrt # lxc-start -dn openwrt+ D. ^% @! b* O3 ?( @
  8. root@F650A:/usr/var/lib/lxc/openwrt # ps
复制代码
此时的进程列表应该可以看到/usr/sbin/uhttpd、dropbear等,或者可以尝试打开浏览器 http://光猫ip/或ssh登录,如果看到Authorization Required提示登录或ssh提示登录用户名密码,表明lxc已成功运行,但此时无密码状态无法网页和ssh登录,只能通过控制台方式添加密码后才能实现。关闭openwrt容器,'ps' 确认,前台启动。& x: K# ]0 e7 ?; j' W
  1. root@F650A:/usr/var/lib/lxc/openwrt # lxc-stop -kn openwrt! x- Z1 ?1 m; F7 e' [
  2. root@F650A:/usr/var/lib/lxc/openwrt # ps" e* S, P9 B9 o
  3. root@F650A:/usr/var/lib/lxc/openwrt # lxc-start -n openwrt# K& W, @- T1 n. h
  4. <6>init: Console is alive
    0 R  G  I8 r/ G
  5. <6>kmodloader: loading kernel modules from /etc/modules-boot.d/*
    & g0 C% l3 G' q6 B0 U
  6. <6>kmodloader: done loading kernel modules from /etc/modules-boot.d/*6 `' C( d& B6 ?8 z: q4 F! ~$ P9 m
  7. <6>init: - preinit -" z/ S0 w0 Y/ u
  8. WARNING: Variable 'network' does not exist or is not an array/object0 C) f  _7 w# S5 h0 {! Z
  9. WARNING: Variable 'lan' does not exist or is not an array/object
    * X1 U8 U7 k$ b$ z6 ]# ]8 h5 n
  10. Press the [f] key and hit [enter] to enter failsafe mode/ I; [* a3 h9 v0 X7 U9 C
  11. Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level8 K( ?3 {9 t2 c, a+ `- c  B; K% y
  12. <5>mount_root: mounting /dev/root
    # ]  ?5 k3 M- e% U5 y/ \
  13. urandom-seed: Seeding with /etc/urandom.seed
    5 [) O/ q8 k5 Z8 t) T( ^
  14. <6>procd: - early -5 ?  p$ F( s5 J/ J  O" s3 E
  15. <6>procd: - ubus -' J( B+ k1 {+ _3 r! F( }
  16. <6>procd: - init -! y! _2 j; D# |5 |
  17. Please press Enter to activate this console.
    $ F$ m) l9 d1 C; {
  18. <6>urngd: v1.0.2 started.
复制代码
此时回车便可看到openwrt的登入界面,添加密码。
% [" ^, G; Q+ ~, @! Z" c' O

  1. , `: ^, |' K& `: E/ A
  2. BusyBox v1.30.1 () built-in shell (ash)
    2 c/ B& y: S3 g. {% {$ G% c1 Q' v
  3. & N) H* w( U$ C$ O6 u! Z  W# g
  4.   _______                     ________        __
    8 o# ]7 k- E  W% K9 y6 B9 G
  5. |       |.-----.-----.-----.|  |  |  |.----.|  |_9 {3 n0 b: ~, O- ~7 B
  6. |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|% L$ l, E0 c$ q3 f5 T$ v& q6 m
  7. |_______||   __|_____|__|__||________||__|  |____|3 j; p" v$ ^4 W! q* W0 K
  8.           |__| W I R E L E S S   F R E E D O M
    8 N: C& A* s; H- ?7 G- K) t
  9. -----------------------------------------------------% M% n; p- f. J+ L% N3 q) |+ H
  10. OpenWrt 19.07.1, r10911-c155900f66% F; l" E5 N6 t# X  m
  11. -----------------------------------------------------5 H9 }4 C1 c2 s% X* [# r
  12. root@openwrt:/# passwd root
    ' E  |; m% Z, m6 K$ S. C, b
  13. Changing password for root
    6 Z$ G) y0 G# F9 b- K* ~/ x: J
  14. New password:
    ! Z1 r' L/ j5 V
  15. Bad password: too weak) B' h4 ^7 ]6 V$ a
  16. Retype password: 0 l+ b/ N  P, b) D; A. s' W4 ?  i. d
  17. passwd: password for root changed by root
    ! l8 r+ }0 T. f7 d! x# p% Z3 j! Q
  18. root@openwrt:/# exit
    4 I5 g( U4 ]: |+ W# S& m
  19. Please press Enter to activate this console.
复制代码
控制台方式进入openwrt之后,exit无效,没找到正常的退出方式,只能关闭窗口,此后就可以通过网页和ssh正常登录。  ]7 y( J! Y+ c6 f3 R8 R8 Y

2 i+ f1 o, M5 |5 e2 }3 b  S3 D7 a: V7、自启动及进程守护
3 E  o  U5 j5 U, R( |, [3 c    telnet登录光猫主系统,确认saf程序已备份,
& g1 z' H6 i! ?# t! c4 D  q6 Z( M! y+ ?& f
  1. root@F650A:~ # ls /usr/sbin/
    , A: b. \9 O( g* I
  2. chroot       lsap         saf.bak      telnetd
    # W- z, E5 N9 a6 m; R1 x
  3. root@F650A:~ # vi /usr/sbin/saf
复制代码
填入 (2021年5月更新:去除USB端口挂载判定,避免无挂载时LXC不能启动)
9 V" z0 O$ ]0 x3 L& E3 ?
#!/bin/sh/ @4 [; K  t& _( ~( G
# add user-defined startup scripts here6 L! z2 R* o& h
6 B1 G% t" N, |/ a# ?1 w8 w
  df | grep mtdblock7
2 S, T+ a7 e4 S  u% G$ G  J' a! F  if [ $? -ne 0 ]
* B& z( W: N9 H    then
  g- W# t! o1 ^      /bin/mount -n -t squashfs -o ro /dev/mtdblock7 /opt/upt/framework1
6 b, g$ H* L- u* [8 S& ]' `  fi, j/ T" R8 P! i8 D) Y
##& D# H* l' I8 I6 K! {  i

% ]4 b2 V0 P- S% E* i- l5 X#  ps | grep ntfsmount | grep -v grep1 p$ i( t0 ^% O) x3 F* R, \+ [
#  if [ $? -eq 0 ]
: ~. h# h8 r, ?; k. o- Q, t8 e#    then6 S$ t& l8 P+ ^, e5 ~
      /dbus/usr/bin/lxc-start -dn openwrt, a2 m' E/ C# [! \4 g: I
#  fi
; ]% |- k) m5 U7 ]! I8 n3 w##
# S/ \; w6 ?3 x- w+ F
或者在电脑编辑好内容,命名为saf,传入/usr/sbin/,'chmod +x' 添加执行权限,重启光猫。" E! k, t; ^7 S, ?4 q

3 V. z, A  _( c2 z! M* G, E) P/ a8、后续问题
5 ~2 H! L& z, @. o( U* U8 B# a    目前的openwrt安装或更新程序会报错,缺少 libustream-openssl 、ca-bundle 、ca-certificates 和 libopenssl1.1,还需要修改dns,添加中文等
, }4 P. l) p3 M1 [$ ^! S! V7 i% b2 J" x# m+ H" D& C7 g
  1. root@openwrt:~# opkg update* v7 K$ b( r. R1 h# F& A' s5 {
  2. Downloading https://mirrors.cloud.tencent.com/lede/releases/19.07.1/targets/bcm53xx/generic/packages/Packages.gz/ i+ ^' ?% v4 n+ v4 N3 }
  3. wget: SSL support not available, please install one of the libustream-.*[ssl|tls] packages as well as the ca-bundle and ca-certificates packages.3 {% T# j& v- y+ Q: G" ]
  4. *** Failed to download the package list from https://mirrors.cloud.tencent.com/lede/releases/19.07.1/targets/bcm53xx/generic/packages/Packages.gz
复制代码
这些安装包可以从腾讯的镜像站下载然后手动安装。
% K8 s/ S( v( [& ^& I9 K
  1. root@openwrt:~# cd /mnt/USB_disc1/
    " `  B+ u) {: ?, g7 l$ ^! g
  2. root@openwrt:/mnt/USB_disc1# opkg install *.ipk
复制代码
修改dns
: j6 P+ s& A; t
  1. root@openwrt:/mnt/USB_disc1# rm /etc/resolv.conf3 M& ?* }7 l4 H2 \5 ]: p  l
  2. root@openwrt:/mnt/USB_disc1# vi /etc/resolv.conf
复制代码
填入,保存# Z+ ]! B& d4 n# U
nameserver      223.5.5.56 Z6 x( K& `+ U7 l2 Y3 X7 O
nameserver      8.8.8.8
5 c  S& j& ~( d9 }/ W+ z3 bnameserver      2001:da8::666

1 S8 m/ J& y+ l5 D) G嫌过程繁琐的可以直接下载我配置好的镜像,从第5部分最后开始操作,将下载的openwrt-19.07.1-bcm53xx-lxc.bin和saf-lxc-start-openwrt放入光猫上的u盘,子系统默认root密码123456。- u1 k% ~3 n: K9 |
  1. root@F650A:~ # dd if=/dev/mtd7 of=/mnt/USB_disc1/mtd7.bin bs=1M
    ! k5 `6 m1 c# m, X4 }( ^
  2. root@F650A:~ # mtd write /mnt/USB_disc1/openwrt-19.07.1-bcm53xx-lxc.bin /dev/mtd7: M  ?* V5 F1 X# a' [
  3. root@F650A:~ # mount /dev/mtdblock7 /opt/upt/framework13 s% ^' p( {% Y$ |* l
  4. root@F650A:~ # mkdir -p /usr/var/lib/lxc/openwrt
    ; l7 H3 _4 G+ `6 l+ m3 L
  5. root@F650A:~ # cd /usr/var/lib/lxc/openwrt
    " D' W% S5 A8 j) \0 O
  6. root@F650A:/usr/var/lib/lxc/openwrt # ln -s /opt/upt/framework1/pre-start.sh pre-start.sh
    : g# y! ^, Z+ ]2 v; d* }! {
  7. root@F650A:/usr/var/lib/lxc/openwrt # ln -s /opt/upt/framework1/config config7 d" W' C3 N3 I! c2 r
  8. root@F650A:/usr/var/lib/lxc/openwrt # mkdir rootfs
    ' M$ p' [/ q9 ^. Q
  9. root@F650A:/usr/var/lib/lxc/openwrt # mkdir /opt/upt/apps/openwrt-rootfs3 c7 P6 z; \2 W
  10. root@F650A:/usr/var/lib/lxc/openwrt # lxc-start -dn openwrt, E% a# K1 w; x. S) ]$ c
  11. root@F650A:/usr/var/lib/lxc/openwrt # cd ~
    * J: ?1 f! @5 G
  12. root@F650A:~ # mv /usr/sbin/saf /usr/sbin/saf.bak$ V0 P: P) Z' N# e0 \+ O
  13. root@F650A:~ # cp /mnt/USB_disc1/saf-lxc-start-openwrt /usr/sbin/saf
    ( w; I: h. r2 v9 N
  14. root@F650A:~ # chmod 0755 /usr/sbin/saf
复制代码
   虽然子系统的openwrt可以顺利运行,但经过我的测试,kmod类app大多无法正常工作。比如F650A内核不支持ext4文件系统,在子系统安装kmod-fs-ext4,尽管可以安装成功,但重启后提示 modprobe 启用ext4模块失败。
3 k* ]5 U" t. T+ l* x# l        子系统的uhttpd默认占用80和443端口、dropbear占用22端口,如果主系统有应用使用这些端口,会产生冲突,需修改rootfs/etc/config/下uhttpd和dropbear的端口设置。F650A的电信web管理系统尽管使用了8080端口,但web登录界面二者公用,当输入超密自动跳转至 :8080/start.ghtml,而使用光猫背面密码则跳转至80端口的luci,所以新的openwrt刷入后电信web管理系统将不可用,这意味着不能方便配置光猫网络,恢复出厂后无法重新拨号。为使子系统与主系统的web页面共存,即访问 http://光猫ip/ 时进入子系统luci页面,而访问 http://光猫ip:8080/ 时进入电信web管理页面,需要更改光猫主系统,此操作的定制空间更大,有机会的话在后面回复中整理出自定义光猫固件的思路。
* G, T* e6 ]5 v  R7 X# F' O; q4 N. h
& y7 u+ k6 ~* f* d( L

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2020-2-17 23:36:12 | 显示全部楼层
期待大神的教程
发表于 2020-2-18 20:19:40 | 显示全部楼层
谢谢分享,期待大神的教程
发表于 2020-2-18 21:28:08 | 显示全部楼层
滿滿的乾貨,還具有很好的分享精神,贊一個!!
发表于 2020-2-20 12:58:43 | 显示全部楼层
坐等lxc的教程,另外19openwrt是你自己编译的还是直接下载armv7的官方bin刷进去的?1 ~; R# C0 J  ?: F: M8 R
中兴非15.0.1出问题是你没清理/opt/upt/apps//apps目录
: D# l8 Z  `2 E% u  P8 C几乎所有光猫为了节省空间?都会有部分lib和var目录重用主系统的文件,openwrt下e8clib和e8cvar可以看看。: W, M+ G1 [3 [) E9 J0 W3 F
另外中兴编译的openwrt开始了uclibc的xlocale配置,这也是achaoge直接用omap源的APP无法运行的原因,我自己有手动开启xlocale后编译omap的openwrt放进去运行OK。
+ q1 c6 p' @( ?$ R8 i" }% I有兴趣可以一起研究玩。
 楼主| 发表于 2020-2-20 21:40:34 | 显示全部楼层
anysoft 发表于 2020-2-20 12:58/ K( `8 G! v3 S% [* {  [
坐等lxc的教程,另外19openwrt是你自己编译的还是直接下载armv7的官方bin刷进去的?
) y: p9 [8 f6 I7 R1 q/ e中兴非15.0.1出问题是 ...

  P$ z+ I- a, m
, d" l3 z0 g# i/ Eopenwrt1907用的官方rootfs经https://github.com/mikma/lxd-openwrt修改而来;xlocale的问题我在编译主系统的busybox时也发现了,官方用的应该是buildroot2015.08.1,如果有dtb和驱动甚至可以自己写个固件了。
发表于 2020-2-21 14:42:33 | 显示全部楼层
songee 发表于 2020-2-20 21:40! R; q2 Q9 A- l- x9 j; I1 N- Q
openwrt1907用的官方rootfs经https://github.com/mikma/lxd-openwrt修改而来;xlocale的问题我在编译主 ...

. m- ?2 o2 p9 R是的, 中兴使用的是buildroot-2015.8.1,这个strings 一下sendcmd 就可以看到
" E9 B$ Q$ y( ^, s  q$ a, k: r2 S% C# C
看了下操作步骤,其实如果内存足够,没必要关闭saf启动的天翼网关。/ B; |$ `9 r( L8 U. U
可以让lxc容器启动两个op应该是可以的,F650A和华为hs8145V应该都是512MB内存,内存足够,openwrt可以放到apps分区文件夹下,不一定要写入mtd7再手动挂载。& x. h4 q# N% {+ P( x: P9 J" {( M. t

7 v9 G6 N" _' N! p$ Q6 O我的HS8145V启动后内存只占用了30%,足够了。
  g- i8 i* E$ p/ A# s
$ g* x# [4 e2 @* F( W& T5 D2 O另外主系统下的usr/sbin目录下文件不是内存加载的rootfs对应的squash文件?这个更改应该不会回写到文件系统,重启应该就会消失?
- h, @8 K( y7 F" W5 B/ k. b不晓得中兴和华为是不是一样的。可能中兴可以修改文件吧,华为的只能dd备份rootfs分区后自己解包修改打包后再dd写进去,会有砖的风险,砖了只能上编程器。3 F0 T& |4 Z2 n8 @! }& G" Z0 {
# N4 M, Q! g& |) S
至于端口问题可以在打包openwrt的时候先修改每个服务对应监听端口就不会冲突了。9 |2 V! Y) N. Z6 k

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

点评

通过修改端口与saf共存确实可行,只是内存和CPU在开ariang离线下载、文件共享等重负载下会更吃力。 在测试lxc的时候我也是把rootfs直接放在了/usr/var/lib/lxc目录下,但会占用20%左右的ubi分区(mtd11,分区大小62M  详情 回复 发表于 2020-2-21 22:31
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|宽带技术网 |网站地图

粤公网安备 44152102000001号

GMT+8, 2023-2-1 07:52 , Processed in 0.135365 second(s), 33 queries .

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表