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

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

[复制链接]

4

主题

71

回帖

280

积分

中级渣柚V1

积分
280
QQ
发表于 2021-3-5 11:18:42 | 显示全部楼层 |阅读模式
本帖最后由 fhh 于 2021-3-23 14:04 编辑
+ _: b! a6 D2 F' A5 n  C& s  l) |* j9 h
发现了几乎完美的解决方案,此贴终结
. x. j/ e; a2 h0 ehttps://bbs.nasdiyer.com/thread-7843-1-1.html* f" j  D0 F6 m; ]" z( \
刷机完成后,如果希望从emmc启动,只需更改bootcmd环境变量即可。! |6 M! X7 W7 ]7 `' A

9 o0 L5 U) Y  k4 R+ _2 R
% X" [! Y* L, _; X- s6 a------------原内容------------------------------------
( P% K% ~. W9 m% F, _1 w首先声明一点:
7 |; U  i9 T1 S$ T: ~7 i猫盘掉IP并不是所谓的“网卡虚焊”
& @- `. r9 Z7 g7 P4 y1 T; L(不然为什么X3P可以正常使用)
, n0 u1 W* c! b- c4 R+ `掉IP的真正的原因是H大提供的驱动(u-boot/Linux)存在问题,导致网卡没有被正常初始化
; |5 J' r( M1 u) t3 X0 R' q(比对了一下x3p的dts和H大的dts发现基本上完全不一样,可能是硬件版本区别?)
* i  b. W1 Y$ R5 _" j所以,临时的解决方法如下:7 L( }* O2 ]8 f& t9 a/ O) X
1.刷X3P( U( f: B) }6 X+ ]8 q, ]
2.将H大提供的系统img(debian/ubuntu/archlinuxarm均可,我用的是Archlinux)写入U盘
! H9 Y/ M% T9 p6 \& r3.将U盘插入猫盘,进入ttl,清除emmc的mmcblk0p2分区,将U盘的文件系统复制到这个分区;; F& ^5 G2 _8 x9 s' N0 n! {
4.重启,在uboot中修改启动命令,从emmc的mmcblk0p2分区启动. R8 O7 }% K0 ?5 \% m  q
5.启动alpine后,将U盘挂载(比如/mnt)
: U9 J& I, x1 D  E9 H6 {6.将/dev和/proc挂载到/mnt/dev和/mnt/proc+ s  v* z. U" {$ J% k3 [
7.将/boot中的Image和dtb文件复制到/mnt备份
8 L0 S: X! `  K* X$ h8.将/lib/modules文件夹复制到/mnt备份: ~9 h& }* |- k. O. o3 F
9.chroot进/mnt,执行emmc-install.sh( s$ A9 m) _. N/ [* p# v+ G/ E/ _
10.挂载/dev/mmcblk0p1(安装完成的系统),备份当前的Image和dtb,将x3p的备份复制进去
% E3 U/ v9 y0 I6 R9 @* s* D! K11.将x3p的/lib/modules复制到当前系统
# ?% `3 Q& o, D3 Y/ a( s12.重启. ?5 ?# O0 p4 H4 t2 d
应该直接就能进去了,并且100%获取IP
+ [6 }+ U3 z+ @" `+ J+ w内核也不会有crc错误的提示, X, h, R+ [/ ^6 f" L, M
& ]' Q4 Q' z9 r! n2 Y4 T$ @
问题:% @3 p5 k' Y" ?# o; V& O
与之前的内核相同,无法控制风扇
' `3 B$ K% P! E' |- c0 y(LED的控制方法见楼下)
5 h6 K7 V$ d5 o) v& _9 I; p  _/ n
废话不多说,上图
0 ?: A# ?% v, d$ u

获取IP截图

获取IP截图
9 g! L9 U- u3 N

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:* m; |: h" q0 K
/usr/bin/led. q, e5 e1 ~# s! g+ p- R
  1. #! /usr/bin/bash
    9 U$ |) ]( T  C
  2. if [ ! -f "/sys/class/leds/c1/brightness" ]; then( c- Q) w4 c' {
  3.         insmod /lib/modules/4.4.52-armada-17.10.1/leds-aw2013.ko
    4 G4 z- W: [$ Z( R; ]: g3 Q! ?2 R( z; C
  4. fi
    " q* e% R3 k: @8 @# ?; u
  5. if [ $# -eq 3 ]; then
    # |' L* W3 s. Z. G
  6.         echo $1 > /sys/class/leds/c1/brightness$ C8 v, x  b  g- x4 j
  7.         echo $2 > /sys/class/leds/c2/brightness2 [! L4 W; Y& M6 ]/ o* j
  8.         echo $3 > /sys/class/leds/c3/brightness2 y! u! P4 @8 I* ]" {+ Z7 S
  9. else6 N( ]2 x. X3 |2 ?& A0 o

  10. 0 X: ^5 M7 {* @7 t* V; p9 y
  11.         echo 23 > /sys/class/leds/c1/brightness
    - G/ S4 m  a4 `# Y! a" |
  12.         echo 147 > /sys/class/leds/c2/brightness6 X) S1 ~$ W% e( |1 u: T9 u0 Z, g
  13.         echo 209 > /sys/class/leds/c3/brightness5 v( L0 r+ b# l' P8 p; G+ q5 d9 \
  14. fi
    , i) E! D% p7 E" D
复制代码
4 j. r- ~2 t- S% r2 M  p
使用方法:
! L4 n4 F3 u9 t/ tled R G B( z$ {- u, _+ E9 i
不传RGB值默认是Arch蓝7 _6 @8 `; f% r! k' H
为了让这个脚本开机启动,添加一个systemd脚本:
+ A) h+ e1 k0 o5 W/usr/lib/systemd/system/led.service
1 q- f+ Y3 ?, T9 h' `# Z" }
  1. [Unit]
    : p) k" K' L9 x% ^
  2. Description=LED enable
    $ d1 P7 Y5 X' U& `
  3. Before=basic.target
    $ x. s( ~: [$ R5 O
  4. After=sysinit.target local-fs.target2 _. o$ h3 `9 w( p5 m' x
  5. DefaultDependencies=no. ]6 }- B9 C) q) ~+ s1 d9 T7 S
  6. 4 U! F' [( \/ `( j7 d3 [  R; g
  7. [Service]* }4 L4 c8 k9 ^7 e
  8. Type=oneshot: E, [8 @0 z8 X7 i; i
  9. RemainAfterExit=yes7 ?: U3 N5 ~) d3 B1 A5 w; Z
  10. ExecStart=/usr/bin/led* j: m8 X: ^& m8 |6 f
  11. TimeoutStartSec=1min
    4 j: ]* O& c9 y/ x2 S) _
  12. " f( Z; I" h9 n
  13. [Install]! e/ k2 a- J: h' P7 g
  14. WantedBy=basic.target" D+ D% ]+ r: [% v: b
复制代码
/ v+ l& B; P9 {& u) T& Z0 [
systemctl enable led后重启即可。

33

主题

325

回帖

1351

积分

中级渣柚V3

积分
1351
发表于 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 | 显示全部楼层
获取网卡温度:# `% J/ t# L1 M5 w* L- R
1.按照https://blog.csdn.net/han_dawei/article/details/9427033这个教程,编译一个操作网卡接口的程序;
# a3 `' g8 A# j% j5 |, Q9 u2.按照Marvell的官方datasheet,编写以下脚本:
* x3 K" {9 ?0 o/usr/bin/phytemp" L% @% c) \6 _! M9 [& @2 ]0 r
  1. #! /usr/bin/bash8 s. {6 X( G- C% D3 V
  2. mdio eth0 22 6
      c: j$ o% U3 M& }/ F
  3. raw=$(mdio eth0 26)
    6 X8 P. w/ V. a; E8 C* V  A
  4. mdio eth0 22 0/ G) Y1 [9 Q' Q
  5. echo $(((raw&31)*5-25))
    # H# v# R3 d  }8 N
复制代码
" p: W4 c& ~, \
3.直接执行即可。
2 E8 _# X1 k+ c& S! I% T4 x
9 W! x5 I; y8 y0 X风扇控制:
5 u/ n) e; N' ?6 o2 p4 G0 z* j编写以下脚本:8 |# x9 o/ E- b3 i. v2 ]9 s  S% D
/usr/bin/gpiofan$ h7 [) F9 s0 y1 o: W9 Z( |5 ]
  1. if [ $# -eq 1 ]; then
    2 [( k# k/ M' R. c; Y- y0 a3 P
  2.         case $1 in( P! P3 H# p5 [, C8 m9 [8 g9 x
  3.                 high)   echo 0 > /sys/class/gpio/gpio38/value
    3 `# M8 m8 H8 i5 ~
  4.                         echo 1 > /sys/class/gpio/gpio40/value;;/ X8 k; d( L' _; Z
  5.                 low)    echo 1 > /sys/class/gpio/gpio38/value% q, t+ i0 f8 U* ^
  6.                         echo 0 > /sys/class/gpio/gpio40/value;;4 Q/ w" q$ S: x2 P
  7.                 off)    echo 0 > /sys/class/gpio/gpio38/value
    , M! l! r9 ]5 t3 C
  8.                         echo 0 > /sys/class/gpio/gpio40/value;;
    5 O; @( @) B5 M! ]4 o
  9.                 init)   if [ ! -d "/sys/class/gpio/gpio38" ]; then
    , X2 A0 ]3 i7 l9 I8 Q' ~# C2 U
  10.                                 echo 38 > /sys/class/gpio/export% _! \0 c9 ~. \: D' \
  11.                                 echo out >  /sys/class/gpio/gpio38/direction
    ' ?1 _& B- ~! m+ W1 Z+ J
  12.                         fi+ X0 q' G, `3 s1 ?" Q1 ^( N+ N, t
  13.                         if [ ! -d "/sys/class/gpio/gpio40" ]; then3 a9 T; Y6 N+ q4 u2 f
  14.                                 echo 40 > /sys/class/gpio/export) `) \4 A  i5 @" K) ]' m8 Y0 ?
  15.                                 echo out > /sys/class/gpio/gpio40/direction
    1 d" l' h8 R  g& B2 z
  16.                         fi;;
    - ?* Y/ l$ s! U! B$ i. b5 C
  17.                 *)    echo $0 "high|low|off|init";;% ?& M) ~5 p0 k* l5 H
  18.         esac# _( W" e+ K2 l0 ^
  19. else
    " w& a5 h6 A5 z- q
  20.         echo $0 "high|low|off|init"
    2 b  H; n, [; @& t7 z
  21.         exit 127+ K4 V2 P8 D/ U+ \, Q4 V, K- O
  22. fi
复制代码

' B, O8 K3 z0 _: V7 a' {1 U* E用systemd调用gpiofan init即可启动。
+ i; N$ s, l' P. [# ?4 n. F+ Y9 S& @' {支持以下参数:
% v2 h+ R+ H1 R$ e0 ~% C off:完全关闭
8 o/ q0 M. A. D' X2 {high:高速度运行! L1 `2 C. I/ {& O/ `
low:低速度运行9 b+ W& q; R8 A
init:初始化,在调用其他功能之前,必须init!
9 s. A( X7 W! I; k( [9 l6 X5 k
# r/ [" V+ o$ [4 l# {至此,终于是完美实现功能了

5

主题

5267

回帖

7440

积分

资深垃圾佬

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

2 A, N6 @1 C7 _  H! F7 O好贴帮顶,顺便得渣金

0

主题

27

回帖

89

积分

初级渣柚V2

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

5

主题

5267

回帖

7440

积分

资深垃圾佬

积分
7440
发表于 2021-3-8 09:06:55 | 显示全部楼层
: o# O9 Z! `+ J7 b+ K
好贴帮顶,顺便得渣金
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-4-2 18:38 , Processed in 0.092872 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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