找回密码
 立即注册
查看: 6785|回复: 32

[教程] 猫盘 linux 解决掉IP问题

[复制链接]

4

主题

71

回帖

280

积分

中级渣柚V1

积分
280
QQ
发表于 2021-3-5 11:18:42 | 显示全部楼层 |阅读模式
本帖最后由 fhh 于 2021-3-23 14:04 编辑 % N1 }/ v: m1 }$ ]% J9 i# i9 R

1 D  ^( m( {$ b. a1 b/ N  B发现了几乎完美的解决方案,此贴终结
3 N( A. j5 g* t8 [" ehttps://bbs.nasdiyer.com/thread-7843-1-1.html
9 J4 ?$ f/ d# l刷机完成后,如果希望从emmc启动,只需更改bootcmd环境变量即可。
+ }* Z& K! ^9 ~% j$ a7 a
* ?0 X: u1 U" Q# N! ^0 [' Q$ H
' Y7 C' K! C. r9 H" x------------原内容------------------------------------$ A6 ^. Q* j, W
首先声明一点:0 E" \3 N" G* I  R7 U' K
猫盘掉IP并不是所谓的“网卡虚焊”
5 q# N" h0 t3 p# e7 r(不然为什么X3P可以正常使用)
& J5 }0 J2 w/ ~5 l5 q掉IP的真正的原因是H大提供的驱动(u-boot/Linux)存在问题,导致网卡没有被正常初始化% H8 I3 b/ ~- F. ?: e) s( C
(比对了一下x3p的dts和H大的dts发现基本上完全不一样,可能是硬件版本区别?)9 p/ {. o  ~: K( ]( t/ M" Z
所以,临时的解决方法如下:* a( H4 R9 P6 U+ g4 j; o# E- ?
1.刷X3P- ]. s- K  D+ U% B" ?
2.将H大提供的系统img(debian/ubuntu/archlinuxarm均可,我用的是Archlinux)写入U盘/ V4 v1 w$ `" H' l$ d  y: }! P
3.将U盘插入猫盘,进入ttl,清除emmc的mmcblk0p2分区,将U盘的文件系统复制到这个分区;
8 c- S" W8 g' u% s4.重启,在uboot中修改启动命令,从emmc的mmcblk0p2分区启动
2 D: t* o0 E  n( |' |$ p5.启动alpine后,将U盘挂载(比如/mnt)
/ n; v# m" C. E1 c4 ~8 `& C* G6.将/dev和/proc挂载到/mnt/dev和/mnt/proc
/ B5 s/ y9 @% w, K% J9 b7 T7.将/boot中的Image和dtb文件复制到/mnt备份
( Y6 P& f; Y5 J: S; Y) L' O) [8.将/lib/modules文件夹复制到/mnt备份
  }6 \+ n- g6 i( o. y' v# M7 a4 T& {" M9.chroot进/mnt,执行emmc-install.sh( b& A+ u+ a/ i$ W% l
10.挂载/dev/mmcblk0p1(安装完成的系统),备份当前的Image和dtb,将x3p的备份复制进去
: E; r  N- B# z( O4 u8 j11.将x3p的/lib/modules复制到当前系统
( {1 c+ V( V* @( {4 b6 h- U12.重启
6 a% ^0 l1 d# U0 Z9 f& [应该直接就能进去了,并且100%获取IP
2 E* }# C' P$ U) W内核也不会有crc错误的提示* K/ C% ]3 H) M9 ]& T' p, N
- l6 L3 G/ J3 w% \4 Z+ R
问题:
/ l/ X8 Y7 J6 S9 Q与之前的内核相同,无法控制风扇
7 B. P5 Z) K, q(LED的控制方法见楼下)% ^1 ^: c# i9 P

* J) H0 n. a8 b) l废话不多说,上图& M0 u8 [, y7 M+ i* S

获取IP截图

获取IP截图
4 R& E& [3 j4 A7 _0 n' c. F9 X

1

主题

34

回帖

67

积分

初级渣柚V2

积分
67
QQ
发表于 2021-3-5 12:48:26 | 显示全部楼层
绑定

4

主题

71

回帖

280

积分

中级渣柚V1

积分
280
QQ
 楼主| 发表于 2021-3-5 12:57:13 | 显示全部楼层
大致设置了一下,写了一个简单的脚本,可以用来控制LED:% N) u: c$ I% \; M6 j+ N' @
/usr/bin/led
3 E! X, m  J: h' R
  1. #! /usr/bin/bash7 Q4 ~( G$ `  c7 T. G: }7 `. f
  2. if [ ! -f "/sys/class/leds/c1/brightness" ]; then  I6 [+ x2 e8 i( t8 O$ _$ i
  3.         insmod /lib/modules/4.4.52-armada-17.10.1/leds-aw2013.ko
    * ~+ z; Q- w) m0 f5 z
  4. fi: |+ R, ~; D  C0 m
  5. if [ $# -eq 3 ]; then
    4 i+ `; U1 w7 L% K; h3 c/ ?/ t
  6.         echo $1 > /sys/class/leds/c1/brightness9 a* }# {# t% a3 [% H. k' [
  7.         echo $2 > /sys/class/leds/c2/brightness" u/ E  n& ~5 e; x# m: x
  8.         echo $3 > /sys/class/leds/c3/brightness5 S% p2 E% R6 w+ m5 P
  9. else& K+ K. o# k! O

  10. % D8 J1 Q' J2 }* m4 V
  11.         echo 23 > /sys/class/leds/c1/brightness3 l5 r% Q; d2 h9 B* U: ?
  12.         echo 147 > /sys/class/leds/c2/brightness8 d2 m8 Z5 @, e5 b* a6 o
  13.         echo 209 > /sys/class/leds/c3/brightness8 w8 Z, i; l0 W- f' j. h
  14. fi! n, i- `$ q* t: }' s$ x( f6 Q
复制代码
# f( y# N$ u- B/ p# \8 q
使用方法:. Q& ]: C- H- m6 S
led R G B) D7 k* y) @. U3 L4 ~& H1 d
不传RGB值默认是Arch蓝; X4 p+ U2 J# l- ~
为了让这个脚本开机启动,添加一个systemd脚本:
6 C2 f8 O( u5 c8 J( ]/usr/lib/systemd/system/led.service' g, ~! C% Z( i* K$ r
  1. [Unit]" Z8 O: X" c, S( E+ p7 |7 ^
  2. Description=LED enable
    7 N1 Q: l) e* o9 A" }" T
  3. Before=basic.target
    + {2 _/ ]" U* j2 X
  4. After=sysinit.target local-fs.target
    - Y% |/ R) f- v, F
  5. DefaultDependencies=no
    ) r) Z3 D  G0 k6 n

  6. . e0 \" U: G* c4 S. K( Y% v
  7. [Service]" g; c, J0 x, |
  8. Type=oneshot
    + Z2 w+ ~: U/ z/ C( ]- b6 p
  9. RemainAfterExit=yes) \2 Y/ i1 `3 i0 p
  10. ExecStart=/usr/bin/led
    $ U% G8 N& D$ Y4 f! ?; u+ O
  11. TimeoutStartSec=1min
    ; d- n( @0 Z" `

  12. 5 o+ m3 G: k! L* D3 C5 B
  13. [Install]4 w2 m! T1 p# }+ P
  14. WantedBy=basic.target
    : H: K# f5 R9 j' T- P9 h! E- L
复制代码
( b/ N5 X6 Z/ J
systemctl enable led后重启即可。

33

主题

323

回帖

1343

积分

中级渣柚V3

积分
1343
发表于 2021-3-5 13:39:18 | 显示全部楼层
好贴帮顶,顺便得渣金

1

主题

13

回帖

93

积分

初级渣柚V2

积分
93
发表于 2021-3-5 14:27:29 | 显示全部楼层
太厉害了  之前还花钱改uboot解决 帮顶

4

主题

71

回帖

280

积分

中级渣柚V1

积分
280
QQ
 楼主| 发表于 2021-3-6 08:57:08 | 显示全部楼层
获取网卡温度:. |# O2 d' v2 b$ f: D8 u6 d
1.按照https://blog.csdn.net/han_dawei/article/details/9427033这个教程,编译一个操作网卡接口的程序;5 S2 d6 G* ~7 ~1 r" T6 X3 ~0 ]
2.按照Marvell的官方datasheet,编写以下脚本:3 Z# z9 X/ [+ I5 J+ w2 s! n- e& y
/usr/bin/phytemp3 T* j& c% u8 X4 z" |1 o# M' w5 _! B
  1. #! /usr/bin/bash
    1 c6 ~! i' z9 s6 S5 D7 P  w% I
  2. mdio eth0 22 6
    9 c* i+ n3 m# j0 F
  3. raw=$(mdio eth0 26)
    , G# E" k8 d% U9 v5 @9 @  z( \
  4. mdio eth0 22 0
    ) J& t+ t2 @4 u0 b1 ^9 Y- D
  5. echo $(((raw&31)*5-25)): [* h# e/ |! m% F, ^7 N) r
复制代码

2 |- ]  W; K  C5 U4 W" p, c; T- f( t3.直接执行即可。
& C' k+ M4 q1 L% q2 F7 U$ s4 X( q: |  o9 O9 a+ M; y9 v
风扇控制:
5 u: f; m& D* H' q编写以下脚本:
4 }" X$ Y5 P7 K' G2 s1 v! s8 Z/usr/bin/gpiofan4 \' F1 v2 o* S8 A: _5 ]
  1. if [ $# -eq 1 ]; then6 y1 I4 H8 h  R& N4 A
  2.         case $1 in
    / X" v3 ^0 e( M) I2 Y) Q% ]+ v
  3.                 high)   echo 0 > /sys/class/gpio/gpio38/value
    ; Q& `; R: }# }& [6 P6 P
  4.                         echo 1 > /sys/class/gpio/gpio40/value;;" ?! X5 W$ ~$ i& ]
  5.                 low)    echo 1 > /sys/class/gpio/gpio38/value$ W+ k  ]2 T$ n" e) I+ L. ~
  6.                         echo 0 > /sys/class/gpio/gpio40/value;;! Z0 L1 c1 n! z3 o0 l3 \3 w* J
  7.                 off)    echo 0 > /sys/class/gpio/gpio38/value
    # |& Y9 T5 I+ w$ Q$ D9 o! Y
  8.                         echo 0 > /sys/class/gpio/gpio40/value;;
    . d  s  o" S3 r% }: J4 C
  9.                 init)   if [ ! -d "/sys/class/gpio/gpio38" ]; then
    ( e/ q/ P1 y* U/ L
  10.                                 echo 38 > /sys/class/gpio/export2 b$ \1 T0 J$ K4 G0 L2 D
  11.                                 echo out >  /sys/class/gpio/gpio38/direction
    / |( ?$ @( p% V6 }
  12.                         fi5 t/ E1 @; B4 q$ R) X$ b
  13.                         if [ ! -d "/sys/class/gpio/gpio40" ]; then4 M0 C2 Y/ ]3 p* j& u' p
  14.                                 echo 40 > /sys/class/gpio/export
    ' {3 R8 D. d7 {1 M4 R* z
  15.                                 echo out > /sys/class/gpio/gpio40/direction
    # |2 G6 t* o: V$ c( \
  16.                         fi;;, m1 ]( b. J' S. W, c8 x, v
  17.                 *)    echo $0 "high|low|off|init";;4 P2 D  Q, r% c* F& G( e% `
  18.         esac
    7 a& @: ?. d5 D+ }# @1 ]: H
  19. else6 r( ~  C; x5 ~* H' z5 d
  20.         echo $0 "high|low|off|init"; B2 z; x# ^( A- |: o  z6 E8 B7 ~
  21.         exit 127! x5 }  b+ g0 Q" D; Z8 G, a
  22. fi
复制代码

" c7 U! T+ Q2 N. a用systemd调用gpiofan init即可启动。2 _5 B. b5 l" s
支持以下参数:
' {! B4 L- U1 [% [2 L% V6 E off:完全关闭8 v6 r* J7 r3 P( m0 M- e7 S' k
high:高速度运行! o) ^% Y& d. |2 T# z3 z
low:低速度运行
4 t9 S- I* U" F( d9 K  @  Z+ Jinit:初始化,在调用其他功能之前,必须init!) {" ^$ Z  h; ~4 H. n
4 u3 T; P: P; ]: Q
至此,终于是完美实现功能了

5

主题

5264

回帖

6859

积分

资深垃圾佬

积分
6859
发表于 2021-3-6 10:06:23 | 显示全部楼层
# z( e. e& N( n$ d" C. d  C
好贴帮顶,顺便得渣金

0

主题

27

回帖

89

积分

初级渣柚V2

积分
89
QQ
发表于 2021-3-6 11:45:21 | 显示全部楼层
好贴帮顶,顺便得渣金

5

主题

5264

回帖

6859

积分

资深垃圾佬

积分
6859
发表于 2021-3-8 09:06:55 | 显示全部楼层

& }7 R) H) X7 S2 Q好贴帮顶,顺便得渣金
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|矿渣社区 ( 黔ICP备2024020525号-1 )

GMT+8, 2024-3-28 22:16 , Processed in 0.051114 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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