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

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

[复制链接]

4

主题

71

回帖

280

积分

中级渣柚V1

积分
280
QQ
发表于 2021-3-5 11:18:42 | 显示全部楼层 |阅读模式
本帖最后由 fhh 于 2021-3-23 14:04 编辑 % ^9 L& N5 M* g

  d# @$ l: q$ a& V, W发现了几乎完美的解决方案,此贴终结) C4 e, H5 a% J8 l* D' t& P% u
https://bbs.nasdiyer.com/thread-7843-1-1.html5 M* @6 c9 s0 D3 S4 h% k
刷机完成后,如果希望从emmc启动,只需更改bootcmd环境变量即可。1 E2 D4 Q  _! J' Q
& }+ I: d% k2 r0 F9 k1 Z! H

/ a: G6 m, J+ I* `------------原内容------------------------------------, Y) G" }# h4 Q" ?. ~+ x1 x
首先声明一点:; X4 _5 N3 _: ~* l
猫盘掉IP并不是所谓的“网卡虚焊”
( x  L6 {5 {7 o, ]" @/ f(不然为什么X3P可以正常使用)$ b0 Z7 V! i3 y5 x( o
掉IP的真正的原因是H大提供的驱动(u-boot/Linux)存在问题,导致网卡没有被正常初始化
) U$ Y3 d7 x5 U! f(比对了一下x3p的dts和H大的dts发现基本上完全不一样,可能是硬件版本区别?)
' p8 Q% ~' h! j所以,临时的解决方法如下:
6 ~8 l. }' a' A  V, O; F1.刷X3P  O5 h& K" }+ q+ v
2.将H大提供的系统img(debian/ubuntu/archlinuxarm均可,我用的是Archlinux)写入U盘
7 \- C0 n" X5 F# z( ?2 q4 V! u3.将U盘插入猫盘,进入ttl,清除emmc的mmcblk0p2分区,将U盘的文件系统复制到这个分区;  B" L6 ~# D. x. U9 e
4.重启,在uboot中修改启动命令,从emmc的mmcblk0p2分区启动- m1 x7 S% }# F. j
5.启动alpine后,将U盘挂载(比如/mnt)5 g, `* `0 t* R$ z) G/ R4 n8 Q) N
6.将/dev和/proc挂载到/mnt/dev和/mnt/proc" ?% Z, p6 g9 M7 \, j" V
7.将/boot中的Image和dtb文件复制到/mnt备份2 i9 J. i! p. g3 P0 ~2 S& s
8.将/lib/modules文件夹复制到/mnt备份9 M0 h( V# n4 M9 `+ n+ X
9.chroot进/mnt,执行emmc-install.sh
* I$ a$ s9 x8 `7 n* @2 F10.挂载/dev/mmcblk0p1(安装完成的系统),备份当前的Image和dtb,将x3p的备份复制进去4 X5 d! M8 m) o( ^( j
11.将x3p的/lib/modules复制到当前系统
2 t9 z# k! C. U9 j5 ^12.重启
$ z! f) E1 q- N  J# X应该直接就能进去了,并且100%获取IP" c* k8 {0 q7 v4 T2 W
内核也不会有crc错误的提示
# ^8 C; A" J! Y4 h1 g- l
. @$ y- e& O  k1 G( k8 U问题:
+ j. {, k0 s! `8 k5 s与之前的内核相同,无法控制风扇
9 y! t- {0 g" W, J(LED的控制方法见楼下)
5 j; p$ _4 Y4 ?, W, m
$ j  }( h  B6 h* `废话不多说,上图; W  ]7 ^! h% ~# P

获取IP截图

获取IP截图
/ Y1 f; T7 S1 r$ o; n1 I* n) f5 v7 j4 i: _

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:. J9 Y- k) n4 l5 \
/usr/bin/led
' \/ a6 L' l! F! p0 y
  1. #! /usr/bin/bash4 {, _# U: D8 s" U
  2. if [ ! -f "/sys/class/leds/c1/brightness" ]; then
    ) l1 f$ {7 X' O- L" o2 Y" h5 y
  3.         insmod /lib/modules/4.4.52-armada-17.10.1/leds-aw2013.ko2 {% d1 W( v  d& _1 g
  4. fi
    ) c6 ?# ?  n6 I) }- e$ ]
  5. if [ $# -eq 3 ]; then
    ) J2 Z. J2 Z2 E- @3 i, F7 w) [
  6.         echo $1 > /sys/class/leds/c1/brightness
    8 |; e- U8 a: Y* E! m/ ~' d) H' D6 i
  7.         echo $2 > /sys/class/leds/c2/brightness$ L6 _! p* a* x; C
  8.         echo $3 > /sys/class/leds/c3/brightness' x& h7 T* y9 u: s. M+ }$ ~
  9. else
    9 G% r: T2 y* W) ^; ~9 r- f1 \4 b
  10. 4 Q( N7 D7 K+ J; `3 k
  11.         echo 23 > /sys/class/leds/c1/brightness
    3 S! a. t9 D+ d+ Y; y
  12.         echo 147 > /sys/class/leds/c2/brightness
    9 z7 v& Q9 Z2 U+ N6 @! q% L: n/ n
  13.         echo 209 > /sys/class/leds/c3/brightness" ]4 R, q/ }& _! r; L9 J
  14. fi& |2 k' ~" w: \# f0 {
复制代码
, o2 [1 Z7 i" a6 a3 i5 k
使用方法:
. G( w# L% b0 k2 k& V1 [led R G B
2 a% Z  |4 o! j不传RGB值默认是Arch蓝/ [$ |6 T$ w8 s* @
为了让这个脚本开机启动,添加一个systemd脚本:
$ ~  r, l, W+ V/usr/lib/systemd/system/led.service
. `8 b5 c5 a" m$ X8 u4 E8 w
  1. [Unit]) b- R, [8 S- A
  2. Description=LED enable
    7 g) Q% ^6 E8 l& C& {
  3. Before=basic.target
    2 j2 r4 v* q9 ?" q5 j5 l7 }
  4. After=sysinit.target local-fs.target- F/ j" f, N; T& a
  5. DefaultDependencies=no
    : n% O+ F) f7 k
  6. 9 Q. x6 K. }! r* u5 h; i
  7. [Service]
    9 T( c( _7 @9 x
  8. Type=oneshot
    ! o1 p  e( H% f' k
  9. RemainAfterExit=yes
    ( N) `! d9 c8 G+ O4 l
  10. ExecStart=/usr/bin/led
    & y; z: }7 \3 O. o
  11. TimeoutStartSec=1min: X" h, a; |: u* _5 ~" L
  12. / T$ S$ o: _7 C1 Q  j
  13. [Install]# G" z) @" Y" A; w/ ?  e% U! i
  14. WantedBy=basic.target
    7 J: F  e% f  S0 E
复制代码

6 ?0 G) n' L% n+ psystemctl 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 | 显示全部楼层
获取网卡温度:
% B" R4 f2 U, r- O! u1.按照https://blog.csdn.net/han_dawei/article/details/9427033这个教程,编译一个操作网卡接口的程序;
; o( o) W) y  y' o2.按照Marvell的官方datasheet,编写以下脚本:& v& z( g8 Z+ U, u( o. {% r- R3 t
/usr/bin/phytemp# s- Y* I; M( j* H2 ]# b/ C8 `
  1. #! /usr/bin/bash  B7 }! Z9 e1 C! x& N  K6 t/ F( s
  2. mdio eth0 22 6
    4 ^9 a( G; x) p) r: C. J0 E
  3. raw=$(mdio eth0 26)
    + h6 D/ o1 U6 D. o9 F6 l
  4. mdio eth0 22 0
    8 ], T9 N- T9 }1 p+ |3 P
  5. echo $(((raw&31)*5-25)), U. ^8 O  p. q4 v% }
复制代码
. h" E: P# }4 ]' X3 i5 Q4 g) `
3.直接执行即可。
  Y, f) p! o* R0 ?' ?7 Q7 V/ \1 Z" ]1 P3 A" `! {' t+ ~
风扇控制:
' R; M& {# \0 v编写以下脚本:( p, `( R0 _, J! Q& b9 l, q! v1 j
/usr/bin/gpiofan! m% C/ M, `" J* r: @% m+ ?. o1 z4 F7 R5 M
  1. if [ $# -eq 1 ]; then
    - o6 L# a# {5 J1 c. r: Y
  2.         case $1 in
    : g/ f8 x2 ]6 c' V
  3.                 high)   echo 0 > /sys/class/gpio/gpio38/value
    ) c3 N. J+ a' @( K" ^
  4.                         echo 1 > /sys/class/gpio/gpio40/value;;0 ?: n5 t# @! v; t9 u, g
  5.                 low)    echo 1 > /sys/class/gpio/gpio38/value
    , c& }9 `3 \9 D# R, O
  6.                         echo 0 > /sys/class/gpio/gpio40/value;;. M$ d0 k# j% _2 C
  7.                 off)    echo 0 > /sys/class/gpio/gpio38/value
    # @$ |2 _4 G( `( \) }
  8.                         echo 0 > /sys/class/gpio/gpio40/value;;3 V- B0 T" V& e* D* D
  9.                 init)   if [ ! -d "/sys/class/gpio/gpio38" ]; then
    4 `' `9 v5 C/ U: m2 q7 g% D
  10.                                 echo 38 > /sys/class/gpio/export
    / D2 t5 o/ h* ^
  11.                                 echo out >  /sys/class/gpio/gpio38/direction
    / S% K+ a8 ^7 q( q) S% R' m
  12.                         fi. Y, V8 H" X" S8 U4 y: ]
  13.                         if [ ! -d "/sys/class/gpio/gpio40" ]; then  i% L8 N$ [3 V2 r( A+ I3 v1 N
  14.                                 echo 40 > /sys/class/gpio/export
    6 g0 k* h2 ]: g: I6 Q8 z
  15.                                 echo out > /sys/class/gpio/gpio40/direction
    # r8 M, P5 @8 q" F; R
  16.                         fi;;
    3 G' H7 |: i, {
  17.                 *)    echo $0 "high|low|off|init";;% b+ e3 v/ b2 K  p+ F
  18.         esac: f- M3 G: D. {6 `8 ]( T+ Z
  19. else; [/ h9 N* t8 @) @: @/ r  X
  20.         echo $0 "high|low|off|init"" \4 w) Y. O, x
  21.         exit 127
    9 J' W+ P0 j6 A4 ^. r  D  r
  22. fi
复制代码
6 g+ C+ O; B5 C
用systemd调用gpiofan init即可启动。
3 P% |9 [- Q. x* J% w, A支持以下参数:0 F, x) T+ e+ n, N
off:完全关闭; I1 O, R6 x9 d( ]% G. |5 q: M
high:高速度运行: [$ l' `3 O3 u
low:低速度运行
& O6 y$ {7 S, ?, ^init:初始化,在调用其他功能之前,必须init!4 q. K6 A2 M. _0 u6 c
4 }% {- R8 Z8 }$ o% @. j
至此,终于是完美实现功能了

5

主题

5267

回帖

7207

积分

资深垃圾佬

积分
7207
发表于 2021-3-6 10:06:23 | 显示全部楼层
+ y- v& ]: G' O+ e4 V+ n" z6 @
好贴帮顶,顺便得渣金

0

主题

27

回帖

89

积分

初级渣柚V2

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

5

主题

5267

回帖

7207

积分

资深垃圾佬

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

. i3 A% k2 t0 }$ F( _1 S好贴帮顶,顺便得渣金
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-1 21:36 , Processed in 0.075642 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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