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

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

[复制链接]

4

主题

71

回帖

280

积分

中级渣柚V1

积分
280
QQ
发表于 2021-3-5 11:18:42 | 显示全部楼层 |阅读模式
本帖最后由 fhh 于 2021-3-23 14:04 编辑 $ v! [$ S# f: ^1 P9 M* n

* h+ }( w) g3 N( T2 T5 a发现了几乎完美的解决方案,此贴终结
. [" ]0 }5 F, z  Xhttps://bbs.nasdiyer.com/thread-7843-1-1.html
& b7 W" }9 i. Q4 i2 s6 _$ s刷机完成后,如果希望从emmc启动,只需更改bootcmd环境变量即可。9 V+ m  s# R7 w; f, _3 D0 x' Q

0 R* @# s7 m9 I* z! z) z
+ T) e0 \7 {* A  W------------原内容------------------------------------' m! D. w: b+ O, _
首先声明一点:$ ]& u& e" l2 ]! L" {, ?  J
猫盘掉IP并不是所谓的“网卡虚焊”6 t: C2 }- j0 L3 {; a
(不然为什么X3P可以正常使用)
+ E+ c3 O- B/ P" z5 P掉IP的真正的原因是H大提供的驱动(u-boot/Linux)存在问题,导致网卡没有被正常初始化
9 H8 @+ G" H8 B$ e8 i# }2 I" u- G(比对了一下x3p的dts和H大的dts发现基本上完全不一样,可能是硬件版本区别?)
0 \' D, U2 s' T所以,临时的解决方法如下:  y0 p4 D( s  x" ?
1.刷X3P
; Y1 O1 ~7 B2 q- z# G$ r: o* o2.将H大提供的系统img(debian/ubuntu/archlinuxarm均可,我用的是Archlinux)写入U盘
0 M& K- [$ G0 I2 E( y4 g! P# K3.将U盘插入猫盘,进入ttl,清除emmc的mmcblk0p2分区,将U盘的文件系统复制到这个分区;
# T! Q. A" }' Z. Q0 D% l4.重启,在uboot中修改启动命令,从emmc的mmcblk0p2分区启动$ `# N! c$ K% @
5.启动alpine后,将U盘挂载(比如/mnt)$ v  a/ \3 G  }" g3 {3 O
6.将/dev和/proc挂载到/mnt/dev和/mnt/proc( Y. a1 t* _/ V' e$ b
7.将/boot中的Image和dtb文件复制到/mnt备份8 ^/ o2 u9 P% t. [( g9 r2 i! g
8.将/lib/modules文件夹复制到/mnt备份
+ |1 N8 E3 K# l% A& y+ d9.chroot进/mnt,执行emmc-install.sh
! _8 D) l' {6 P9 t7 C1 E4 }10.挂载/dev/mmcblk0p1(安装完成的系统),备份当前的Image和dtb,将x3p的备份复制进去* p% ?: ^& ?2 G: E/ A+ H: Z
11.将x3p的/lib/modules复制到当前系统
8 L3 y7 Z2 ^& G12.重启& p. l, Z6 R7 i6 k+ W
应该直接就能进去了,并且100%获取IP
2 ^, c9 _, Y+ q; ^2 g1 x! E内核也不会有crc错误的提示
; e  I) b" r3 e+ v, L6 \
3 _# X- g2 J6 f) D' Q* g1 z/ ?7 d问题:( F# M! ~3 |9 B+ k' t
与之前的内核相同,无法控制风扇
3 I" ]/ ^0 o8 b& ~2 {% b(LED的控制方法见楼下): ?/ G' b1 T9 |/ Y6 F9 c$ Q/ a

, @) r8 E  R  E& z7 S- R废话不多说,上图- G; Y: o; ?: h* F+ d' v

获取IP截图

获取IP截图
7 s. j3 C- P7 K" E

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:
5 S/ M( M/ u) _# a) S2 O* e) h, b( K/usr/bin/led5 r8 }# }/ ~" V% w1 f* I
  1. #! /usr/bin/bash' [6 ?1 U6 m' W1 M
  2. if [ ! -f "/sys/class/leds/c1/brightness" ]; then1 E1 u- i( I/ J4 _1 Q) e9 Z# x
  3.         insmod /lib/modules/4.4.52-armada-17.10.1/leds-aw2013.ko2 K, q: H/ o( Q4 [* Y! V! X
  4. fi
    $ k- V0 r7 d4 k2 X. j1 p
  5. if [ $# -eq 3 ]; then6 i. F  [9 d9 ^$ i& p
  6.         echo $1 > /sys/class/leds/c1/brightness
    # E  G* q7 N  ?4 M, P5 U3 X$ ~
  7.         echo $2 > /sys/class/leds/c2/brightness
    8 X, e; l1 ~/ j( k
  8.         echo $3 > /sys/class/leds/c3/brightness
    ; w2 S' m# }: \% X4 K) }
  9. else
    ' R. \/ n! Z7 d. I" C- O
  10. 8 t( \0 c% Y& L, w1 X. k
  11.         echo 23 > /sys/class/leds/c1/brightness  c8 @( m2 O& n+ t) x
  12.         echo 147 > /sys/class/leds/c2/brightness; |% N" c5 r0 W' ]+ }* \
  13.         echo 209 > /sys/class/leds/c3/brightness/ n% Y, F2 S( L7 j# N
  14. fi
    " y: n  g& h2 A+ f  M% B1 W
复制代码

1 @6 Y& F0 N# D0 `" W5 x使用方法:
, B7 I5 E! |/ U8 yled R G B* n+ Z$ K: x' v- g4 Q% u
不传RGB值默认是Arch蓝. Q7 W/ m% ?% v# g% ]
为了让这个脚本开机启动,添加一个systemd脚本:% I/ U1 ?$ C# R+ A$ U3 K' W
/usr/lib/systemd/system/led.service( t7 f& ~# y" M9 h0 f2 E9 A( v* Z
  1. [Unit]
    7 W- d6 l6 C& P* u3 Q: m
  2. Description=LED enable4 [; F; X6 d* \" T; ?% E
  3. Before=basic.target
    ( Z$ i0 d& r* T/ F! w2 m
  4. After=sysinit.target local-fs.target
    ; W1 x! r5 k( ^
  5. DefaultDependencies=no- B5 I& \/ ]: ?4 C

  6. % T2 I" g" F( n! d
  7. [Service]3 p& @$ v; G( }
  8. Type=oneshot9 R8 o) Y) L9 U0 V  b  q
  9. RemainAfterExit=yes& [" C5 S& M  K$ C( _
  10. ExecStart=/usr/bin/led5 y5 t5 M8 P" a  V$ M/ `0 j: N2 h
  11. TimeoutStartSec=1min5 c2 v+ w9 Q+ g+ k4 F  O+ e

  12. ; W1 W5 Z/ ~' G, h5 [7 `
  13. [Install]
    0 N: {% [1 |* D5 b- B
  14. WantedBy=basic.target: B7 P/ r7 _: ~2 b3 o. v
复制代码

5 m0 g+ e& V6 E/ Ysystemctl enable led后重启即可。

33

主题

325

回帖

1348

积分

中级渣柚V3

积分
1348
发表于 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 | 显示全部楼层
获取网卡温度:
# T+ T" D1 s) t: V( j1.按照https://blog.csdn.net/han_dawei/article/details/9427033这个教程,编译一个操作网卡接口的程序;3 V" b/ W7 n" ~& H9 a- p
2.按照Marvell的官方datasheet,编写以下脚本:
3 Q! ^3 o- J2 e/usr/bin/phytemp
0 y+ ?+ v8 z0 `. f/ d
  1. #! /usr/bin/bash
    2 y1 R* b8 |5 Y& _' Q/ f5 X+ w
  2. mdio eth0 22 6  v; C8 a6 Y' r; K$ d$ s  N
  3. raw=$(mdio eth0 26)4 L& ^# e: _6 D  \# y+ k
  4. mdio eth0 22 0
    ; ~" v* h* L1 e1 B
  5. echo $(((raw&31)*5-25))
    9 |9 h0 \3 X7 O; t$ i% M. d
复制代码

" ]  C/ r, g* v3.直接执行即可。$ Z. o+ i! v0 e. E

$ S5 x+ _) C1 }  _2 d: U, N风扇控制:
* |! S" R3 v+ n# P! y* U+ W% |3 }编写以下脚本:
! n8 j, v+ O) j1 h! }3 l. H( [9 ~/usr/bin/gpiofan
+ Y" }# @* o6 W3 W4 F5 @
  1. if [ $# -eq 1 ]; then: k: U, h9 P1 [! i( c
  2.         case $1 in
    + l* S$ q0 O' A4 a
  3.                 high)   echo 0 > /sys/class/gpio/gpio38/value
    4 ?  ?# y* @0 q+ E5 j
  4.                         echo 1 > /sys/class/gpio/gpio40/value;;
    7 z1 f1 `3 {% r) K
  5.                 low)    echo 1 > /sys/class/gpio/gpio38/value) l6 K2 I7 b: v4 x* G3 b
  6.                         echo 0 > /sys/class/gpio/gpio40/value;;
    2 g, H3 h% W% l# ^6 w
  7.                 off)    echo 0 > /sys/class/gpio/gpio38/value. p% r6 B/ l0 P$ s$ D) k1 I
  8.                         echo 0 > /sys/class/gpio/gpio40/value;;
      v/ m+ m5 m. G! r$ @1 ?* ^6 c0 ^
  9.                 init)   if [ ! -d "/sys/class/gpio/gpio38" ]; then: c3 G3 W* x( n5 J2 J2 i1 [
  10.                                 echo 38 > /sys/class/gpio/export
    8 j+ m* z4 j6 Y; ?
  11.                                 echo out >  /sys/class/gpio/gpio38/direction6 E1 G* p  r  Y- L1 y( G
  12.                         fi
    " ?4 b' d, T: B: _6 m1 `; @
  13.                         if [ ! -d "/sys/class/gpio/gpio40" ]; then
    % e7 y" g+ i* K* E
  14.                                 echo 40 > /sys/class/gpio/export7 k+ ?) _' Y( m$ {
  15.                                 echo out > /sys/class/gpio/gpio40/direction
    6 k1 l  _0 D* c( G! s6 U
  16.                         fi;;
    : W# x, d, C9 W1 F8 a2 {
  17.                 *)    echo $0 "high|low|off|init";;" G% s+ n  _( {2 f4 D
  18.         esac
    - h9 x- h! Q1 \/ E, L$ N- L
  19. else
    8 n' ?4 ?% P- e' |9 D
  20.         echo $0 "high|low|off|init"+ u& I- b! @" Z) _( n  ~
  21.         exit 127
    9 e2 j) ~+ n: t, |+ _+ Y0 N
  22. fi
复制代码
5 D& T# U9 F( i- g1 r' s. G
用systemd调用gpiofan init即可启动。6 v  c& `5 E. Q: a8 [! ^( K$ g+ [' @
支持以下参数:+ o' i5 x" H0 C+ ^
off:完全关闭
/ f4 ]: O5 i. ]4 |, Thigh:高速度运行8 _7 Z" [1 c( y( c, M/ T
low:低速度运行
( I* @& j, B2 Z" p- q1 o; iinit:初始化,在调用其他功能之前,必须init!( ~; |9 ~  f* C) F; h) F3 T* `
( F4 ^+ y2 b  Q) j) O/ f  G, ]/ [8 r
至此,终于是完美实现功能了

5

主题

5267

回帖

7155

积分

资深垃圾佬

积分
7155
发表于 2021-3-6 10:06:23 | 显示全部楼层
4 a+ b- e4 V+ c/ b& ]$ S" J  C
好贴帮顶,顺便得渣金

0

主题

27

回帖

89

积分

初级渣柚V2

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

5

主题

5267

回帖

7155

积分

资深垃圾佬

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

  H" y& ]5 H& N好贴帮顶,顺便得渣金
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-23 07:27 , Processed in 0.089961 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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