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

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

[复制链接]

4

主题

71

回帖

280

积分

中级渣柚V1

积分
280
QQ
发表于 2021-3-5 11:18:42 | 显示全部楼层 |阅读模式
本帖最后由 fhh 于 2021-3-23 14:04 编辑 $ z! Y0 V3 e/ M/ ~" N

9 N3 }* B) e0 W( E& T发现了几乎完美的解决方案,此贴终结1 ]. D$ H+ o5 G7 E$ [
https://bbs.nasdiyer.com/thread-7843-1-1.html8 r4 X  |1 j/ @8 `5 j9 |) f
刷机完成后,如果希望从emmc启动,只需更改bootcmd环境变量即可。
1 u/ D0 n7 p1 X
6 S) m& J0 H' I( E5 D, y- i/ A5 ?( U& Z
------------原内容------------------------------------2 h  D1 A4 y' V
首先声明一点:3 N: n0 v: h4 x0 _
猫盘掉IP并不是所谓的“网卡虚焊”
9 w  A4 N! P0 z' F% t- B0 D# R(不然为什么X3P可以正常使用)" v. {( V- b" r: N  }' x( k+ d
掉IP的真正的原因是H大提供的驱动(u-boot/Linux)存在问题,导致网卡没有被正常初始化
4 d( a7 k' Y, f. w5 G  K(比对了一下x3p的dts和H大的dts发现基本上完全不一样,可能是硬件版本区别?)
6 P# l2 M8 _1 r) @; W6 C所以,临时的解决方法如下:
, I4 g% v4 ^. L4 S1.刷X3P
, ~+ Z% f) L+ o* D9 A, i: ]% v2.将H大提供的系统img(debian/ubuntu/archlinuxarm均可,我用的是Archlinux)写入U盘
; K7 a1 k/ n; K: ~1 r3.将U盘插入猫盘,进入ttl,清除emmc的mmcblk0p2分区,将U盘的文件系统复制到这个分区;
; D+ I, ?5 E% M  D: H: z& G4.重启,在uboot中修改启动命令,从emmc的mmcblk0p2分区启动
1 W, G* z; ], q- k4 K5.启动alpine后,将U盘挂载(比如/mnt)
6 g; |' d3 e" [% E3 i3 o6.将/dev和/proc挂载到/mnt/dev和/mnt/proc
# g" N; H; c. o/ l# _7.将/boot中的Image和dtb文件复制到/mnt备份9 h) }- J* Y( u: T& w: L) i! O
8.将/lib/modules文件夹复制到/mnt备份2 e: ^. X3 G4 p$ f7 U# P& o
9.chroot进/mnt,执行emmc-install.sh
' A6 d- v. Y/ e8 r% ^10.挂载/dev/mmcblk0p1(安装完成的系统),备份当前的Image和dtb,将x3p的备份复制进去
, p* O! i) H( @$ J% v" S3 t; L1 l11.将x3p的/lib/modules复制到当前系统1 }  u: W# r- E
12.重启& X7 b1 R& z+ ]0 b0 ]/ {* Z2 d
应该直接就能进去了,并且100%获取IP
, D6 W" c/ q) s- A内核也不会有crc错误的提示
5 i& T: R  Q' r# J! P3 `0 z5 x1 l6 s& m) Z- n* ~9 J
问题:8 a9 e: N  e4 M) N1 |; \6 y
与之前的内核相同,无法控制风扇4 P$ m2 c3 r- `3 J- ]
(LED的控制方法见楼下)
& E0 ]8 C7 O3 |+ A! }2 P- Y; T+ i8 ]& e/ t5 |( F) k
废话不多说,上图7 o8 D' j' _' O

获取IP截图

获取IP截图

) J0 B7 X/ X, o8 x5 r* b3 d0 ^

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:% d: u! Y8 L+ \0 h
/usr/bin/led
1 `% F- i4 ~1 D
  1. #! /usr/bin/bash
    ! A. E- W) y  ]  |
  2. if [ ! -f "/sys/class/leds/c1/brightness" ]; then
    ' O. g" p- j" X
  3.         insmod /lib/modules/4.4.52-armada-17.10.1/leds-aw2013.ko# `: }0 q) Y* Q9 J' h4 F) c6 q
  4. fi- W; \! c; A1 U5 h5 L  A
  5. if [ $# -eq 3 ]; then6 N& B2 L  _0 R& y, Q+ N* @
  6.         echo $1 > /sys/class/leds/c1/brightness" ~7 u  {6 u% U
  7.         echo $2 > /sys/class/leds/c2/brightness5 n; k. B; s0 d4 Y) B) a3 N, \
  8.         echo $3 > /sys/class/leds/c3/brightness
    9 P0 d, Q( f1 e) `& F
  9. else
    % ?) X5 \' D; \: N  b5 _

  10. 2 w2 Z1 W- d  _; ?
  11.         echo 23 > /sys/class/leds/c1/brightness- d: w- u) U% ~2 o+ ?3 ^
  12.         echo 147 > /sys/class/leds/c2/brightness
    4 g" S6 g- x' \% H% G
  13.         echo 209 > /sys/class/leds/c3/brightness" B/ |, j. }7 a$ v* |
  14. fi) b6 l+ {' X0 r. c) G
复制代码

7 D# t# }! ^  q# B使用方法:' }. |! M+ o' N$ U/ i
led R G B0 i. t- P2 W$ _( Z$ `
不传RGB值默认是Arch蓝
* i1 |# T6 V$ o! n7 Y为了让这个脚本开机启动,添加一个systemd脚本:
. s7 X( Z) f' s3 b/usr/lib/systemd/system/led.service
9 @! T  l; q! _
  1. [Unit]
    $ }: u5 V1 A9 r* y
  2. Description=LED enable$ N$ i4 X* ^# |
  3. Before=basic.target' v2 y0 t0 Y' u3 e; H& \
  4. After=sysinit.target local-fs.target
    " ]# j; T# T, X4 ]
  5. DefaultDependencies=no3 t9 |6 e- T, d$ c+ |- j

  6. 3 p) b* v4 r! S. b2 f$ h- g9 L
  7. [Service]. G4 Q, @: o0 ~* ]$ B
  8. Type=oneshot
    $ N0 Y' `# w- T% ^( T
  9. RemainAfterExit=yes
    5 G  O( L% S  J  T2 v% a, L# L
  10. ExecStart=/usr/bin/led3 `5 p9 @5 d6 G/ k% S/ k5 c. A, h
  11. TimeoutStartSec=1min0 ^/ P5 ^* x2 ^8 M+ g; z

  12. * t0 z4 x# c! K: n- [# K/ m6 ^" _. W- Y# I
  13. [Install]
    5 Z9 [# [1 a( P- Q3 D
  14. WantedBy=basic.target5 @# q8 _* \9 y2 \# s/ ^
复制代码

2 M" v/ e/ M2 U7 R( tsystemctl 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 | 显示全部楼层
获取网卡温度:7 ?3 L4 |3 {; F( @* ^8 U
1.按照https://blog.csdn.net/han_dawei/article/details/9427033这个教程,编译一个操作网卡接口的程序;
, s3 ?" y! F1 [1 Y" g/ {2.按照Marvell的官方datasheet,编写以下脚本:
# ?: a( x2 |' b/usr/bin/phytemp; S8 P  J6 L+ q( p) [
  1. #! /usr/bin/bash7 V. [; E, n/ N2 F( Z; ~
  2. mdio eth0 22 68 g. X- ]* ^( A* ^
  3. raw=$(mdio eth0 26)' q! O4 G& ?* n, O' T+ H
  4. mdio eth0 22 03 r& T) f3 m1 \$ u2 c
  5. echo $(((raw&31)*5-25))) h: w8 U! F3 L: `* O/ A: U
复制代码
  s: b6 p, f" s( G0 V7 a7 `- e
3.直接执行即可。
5 R& U( {/ v6 b( n5 I0 {* H4 S) @/ A
风扇控制:
7 `* e: Y% ^$ `2 a& h  b. N5 o# A8 J编写以下脚本:
$ g) `: Z8 }) w4 t/ I" a! [/usr/bin/gpiofan6 Y% ?) \9 k5 i; s
  1. if [ $# -eq 1 ]; then
    4 W& p+ p% ?1 [- e9 s2 c2 K/ Y% S
  2.         case $1 in2 l7 ?" L* [) l6 k! B) b% `; E
  3.                 high)   echo 0 > /sys/class/gpio/gpio38/value
    4 ^9 ~" s6 _7 T" c+ [3 ^" m
  4.                         echo 1 > /sys/class/gpio/gpio40/value;;
    : _  D* q& I; V7 U, a
  5.                 low)    echo 1 > /sys/class/gpio/gpio38/value! k2 A+ d$ r- {, l: F7 W* D  @
  6.                         echo 0 > /sys/class/gpio/gpio40/value;;
    ( d1 x; ?6 G' v, B2 k2 H1 \
  7.                 off)    echo 0 > /sys/class/gpio/gpio38/value5 b! b. Y: D" i' w. N' W& E# e$ }
  8.                         echo 0 > /sys/class/gpio/gpio40/value;;
    . {# d7 I5 B, Q" d7 @/ U( P
  9.                 init)   if [ ! -d "/sys/class/gpio/gpio38" ]; then4 X) e/ B4 o. S$ [
  10.                                 echo 38 > /sys/class/gpio/export5 B3 c& z' f/ }2 S5 P9 g3 a5 x
  11.                                 echo out >  /sys/class/gpio/gpio38/direction$ W0 ]# a- T3 n, p: Q* h
  12.                         fi' E5 w+ I+ J7 d
  13.                         if [ ! -d "/sys/class/gpio/gpio40" ]; then0 }3 Y8 y  {) A+ y6 f8 Q* U
  14.                                 echo 40 > /sys/class/gpio/export
    ' o" j; c9 \2 u  n, u4 Q# P2 M
  15.                                 echo out > /sys/class/gpio/gpio40/direction
    ; c9 q( _. H4 k  ~, P+ h
  16.                         fi;;4 Y+ \" F0 D5 B/ `
  17.                 *)    echo $0 "high|low|off|init";;
      w" J1 X/ g8 ]0 J& K' q
  18.         esac
    ) H: C. _8 _% w
  19. else! L4 j- o  x3 e5 ]
  20.         echo $0 "high|low|off|init"
    ' g/ a3 y% @; x
  21.         exit 127
    4 ]$ r; ~  S, u0 j1 B( s6 N
  22. fi
复制代码
  }4 C2 I5 \% i! s$ Y
用systemd调用gpiofan init即可启动。
% R) g% {/ H0 d. W9 v支持以下参数:
4 w! h5 Q, `/ O off:完全关闭
* Q" a5 E; ?% U# Y$ w2 T# a4 Thigh:高速度运行
7 n2 d$ P* O% z- nlow:低速度运行
8 }0 U* I! Z$ ?: W# {% kinit:初始化,在调用其他功能之前,必须init!# ?5 Q+ b! P& u3 p

$ F2 \9 n4 c- p$ q+ M$ T: K至此,终于是完美实现功能了

5

主题

5267

回帖

7269

积分

资深垃圾佬

积分
7269
发表于 2021-3-6 10:06:23 | 显示全部楼层

5 g0 B9 p3 N2 ~0 i; v2 K* r% f" ~好贴帮顶,顺便得渣金

0

主题

27

回帖

89

积分

初级渣柚V2

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

5

主题

5267

回帖

7269

积分

资深垃圾佬

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

& Q; }( F: U' c7 W! Q' ^/ o好贴帮顶,顺便得渣金
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-10-4 23:42 , Processed in 0.146364 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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