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

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

[复制链接]

4

主题

71

回帖

280

积分

中级渣柚V1

积分
280
QQ
发表于 2021-3-5 11:18:42 | 显示全部楼层 |阅读模式
本帖最后由 fhh 于 2021-3-23 14:04 编辑 ! P+ K1 V4 d( n
6 e6 G# M- U( D
发现了几乎完美的解决方案,此贴终结
, G. @- a5 t# ~& \: Y  @https://bbs.nasdiyer.com/thread-7843-1-1.html
5 K% [1 d/ j* j- v  z6 K刷机完成后,如果希望从emmc启动,只需更改bootcmd环境变量即可。. h+ p$ x9 ^; l
: F1 `% `+ A3 [, v! n
% u% T# F7 h/ n* [) U/ r
------------原内容------------------------------------* R3 m0 E% R& E, T
首先声明一点:! ~5 i; ^4 `1 X) d0 e$ u$ |
猫盘掉IP并不是所谓的“网卡虚焊”
" f# L+ |5 C! R(不然为什么X3P可以正常使用)
. \% b4 q+ M- z3 j/ d: m2 k2 k掉IP的真正的原因是H大提供的驱动(u-boot/Linux)存在问题,导致网卡没有被正常初始化  q4 V. J9 d# x4 @. g) U$ N/ t% X
(比对了一下x3p的dts和H大的dts发现基本上完全不一样,可能是硬件版本区别?)
$ x1 k$ ?7 D* p) z4 L; F所以,临时的解决方法如下:3 v8 {) l; Q2 n  G
1.刷X3P
# [# ^. o: }/ o2.将H大提供的系统img(debian/ubuntu/archlinuxarm均可,我用的是Archlinux)写入U盘, m; k, M' \/ R* G+ c' F- v: K9 t
3.将U盘插入猫盘,进入ttl,清除emmc的mmcblk0p2分区,将U盘的文件系统复制到这个分区;, n% e, P$ C1 z2 y0 r
4.重启,在uboot中修改启动命令,从emmc的mmcblk0p2分区启动! l, d8 F/ z' Z: a
5.启动alpine后,将U盘挂载(比如/mnt)
9 ^* p' p5 g, v+ S6.将/dev和/proc挂载到/mnt/dev和/mnt/proc
6 ~" U0 O6 |) f* h; t  u/ \' i7.将/boot中的Image和dtb文件复制到/mnt备份# T1 C, _8 ^% v3 d, p" P/ h9 X: E$ |" X
8.将/lib/modules文件夹复制到/mnt备份3 ^. ]  I9 w8 k$ P/ X
9.chroot进/mnt,执行emmc-install.sh
" d* Y; {% b$ D$ o2 y+ T10.挂载/dev/mmcblk0p1(安装完成的系统),备份当前的Image和dtb,将x3p的备份复制进去
; N3 {0 d/ ~" i9 S# N% d11.将x3p的/lib/modules复制到当前系统( ?% ~# A7 n/ {
12.重启+ t3 g, S9 n8 ^( N" u- C
应该直接就能进去了,并且100%获取IP
# T+ A  k0 ]4 B! |+ Y) G内核也不会有crc错误的提示% }; `* n6 G" r3 r, Q6 w  \: a9 Z' \

  {1 C0 Z* P7 }问题:0 n- h7 _; g0 k* U- P+ I: \
与之前的内核相同,无法控制风扇$ _- i) s0 f2 d& Q/ N& c
(LED的控制方法见楼下)# O* y# [8 j- P$ n

2 J6 x3 D0 L! D6 u废话不多说,上图
) @5 @  v; ~+ v2 c! i* s. ~; c3 ^

获取IP截图

获取IP截图
2 V9 d, G6 w2 |

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:% K  R  ~! Y' ?! d" c+ ]- b
/usr/bin/led
* Q1 t# _  s$ M5 q1 Q! b
  1. #! /usr/bin/bash
    ' J) k+ U# ]0 B$ O  u% N+ t: O
  2. if [ ! -f "/sys/class/leds/c1/brightness" ]; then. U& x5 l5 v( s
  3.         insmod /lib/modules/4.4.52-armada-17.10.1/leds-aw2013.ko
    * j9 x3 q. o  L1 e* _
  4. fi
    2 L) w5 w9 l7 D3 j0 m
  5. if [ $# -eq 3 ]; then
    ; g1 O- c* A% \8 f' d
  6.         echo $1 > /sys/class/leds/c1/brightness/ m2 }; L2 m2 x- x
  7.         echo $2 > /sys/class/leds/c2/brightness6 Q+ g* `% ]$ f
  8.         echo $3 > /sys/class/leds/c3/brightness
    2 N9 o9 L8 F* t7 g. P. b; ]& H
  9. else
    ; ~4 W; W2 ^/ c) i6 L
  10. 0 a/ S+ Y) f2 u- F1 _3 S; N+ i/ ?8 d
  11.         echo 23 > /sys/class/leds/c1/brightness
    & P0 {+ g4 x9 G& N* l
  12.         echo 147 > /sys/class/leds/c2/brightness
    1 y/ t" T+ ?. [, {6 T% N
  13.         echo 209 > /sys/class/leds/c3/brightness
    $ P  y1 m$ \: i, z
  14. fi8 h' K. t& R% `: ?
复制代码

0 r. z3 i( P4 m5 i/ c使用方法:
3 h1 a6 E' h- b8 j1 Lled R G B  x% Q# I. B( ?7 b0 }( m8 k
不传RGB值默认是Arch蓝
  k) h  m6 b; e8 C为了让这个脚本开机启动,添加一个systemd脚本:7 H8 |: I! s( C9 H1 r7 h2 f, p
/usr/lib/systemd/system/led.service
2 Y2 b; k+ u! S2 e& m. H
  1. [Unit]& s6 H$ [- R% }8 q# @0 W* Z7 _8 A
  2. Description=LED enable1 W5 L$ T: o7 `5 Q+ N
  3. Before=basic.target% c' L( ?' a. a/ e3 o( y  P
  4. After=sysinit.target local-fs.target4 P# [9 C- f) r( r. w" V3 ]
  5. DefaultDependencies=no
    . w( U# o  n5 R0 _7 U; u' X. C
  6. ' V. S& u' s8 w8 ^
  7. [Service]
    * x, h( g; n$ N7 c
  8. Type=oneshot0 [* P' C  ~# m9 e
  9. RemainAfterExit=yes, o: D8 L( I4 h% S) g
  10. ExecStart=/usr/bin/led
    - ~* M8 _1 S7 C1 \) o! ~
  11. TimeoutStartSec=1min
    ) c( h/ I/ ?3 k+ Q! G6 {, R( B

  12. / ?4 v; O" f: {& S) t6 q. y
  13. [Install]
    0 `) g$ F. P/ O7 O
  14. WantedBy=basic.target' i* l% @( c: h7 F) |
复制代码

, ~) G  j8 X8 g1 gsystemctl 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 | 显示全部楼层
获取网卡温度:1 g7 f6 g" _) S; W" I+ g2 P; s
1.按照https://blog.csdn.net/han_dawei/article/details/9427033这个教程,编译一个操作网卡接口的程序;8 F- E- p+ t# q; \; U
2.按照Marvell的官方datasheet,编写以下脚本:" b- G9 k' \& E. J. U
/usr/bin/phytemp& q, @8 L8 A" M% w
  1. #! /usr/bin/bash" r, x2 ~/ `7 B+ J
  2. mdio eth0 22 6* _' X/ f% Z: `% y: x
  3. raw=$(mdio eth0 26)1 ^5 w- U( l+ ?1 H, D
  4. mdio eth0 22 0) e0 F% A  l; o: F; W( r: y5 z& v& Z
  5. echo $(((raw&31)*5-25))% I2 P3 n) d1 B$ S+ d
复制代码
: u% i" A# t2 e2 p
3.直接执行即可。" w* {. P- @* ^$ A" p7 k- l$ Q

, e9 f3 k/ ^4 t$ ?8 X/ z风扇控制:
+ s) t8 t' f2 R, g( b; i  s% _1 Q  S编写以下脚本:* s6 I! E. w$ ~. {& t6 J
/usr/bin/gpiofan
) W0 {0 G' z. m
  1. if [ $# -eq 1 ]; then' v# U: r2 S1 p. s
  2.         case $1 in
    $ I% c" ?; q) B1 W+ N' X- Q- W
  3.                 high)   echo 0 > /sys/class/gpio/gpio38/value
    , P6 o# r# z. e4 b, P
  4.                         echo 1 > /sys/class/gpio/gpio40/value;;, `# D, V& O- `9 P- k: v7 Q
  5.                 low)    echo 1 > /sys/class/gpio/gpio38/value  m6 b3 L5 q( E7 `7 S( p
  6.                         echo 0 > /sys/class/gpio/gpio40/value;;
    - I$ h/ s$ f4 i) Y$ f8 {8 ^5 U
  7.                 off)    echo 0 > /sys/class/gpio/gpio38/value' E. S  o! I4 g) e
  8.                         echo 0 > /sys/class/gpio/gpio40/value;;
    ; N' ?* _! @% j+ A$ D
  9.                 init)   if [ ! -d "/sys/class/gpio/gpio38" ]; then
    & ]' q2 o- ]% k8 w3 }
  10.                                 echo 38 > /sys/class/gpio/export
    2 m7 L* W) U) V0 ~0 ^$ j
  11.                                 echo out >  /sys/class/gpio/gpio38/direction. k! \. O0 t# R% P$ {& C/ R
  12.                         fi
    % R9 p- U/ z9 Y" c- }1 k
  13.                         if [ ! -d "/sys/class/gpio/gpio40" ]; then* _4 M1 o2 k- h7 p5 y  J
  14.                                 echo 40 > /sys/class/gpio/export: d7 g5 q! q. |4 |/ B( \8 r
  15.                                 echo out > /sys/class/gpio/gpio40/direction
    1 G# Y$ D& P7 c1 C9 g
  16.                         fi;;
    - q$ z2 e# z9 Q3 ~
  17.                 *)    echo $0 "high|low|off|init";;
    0 W# v4 `& n0 x( w" g  |' W
  18.         esac/ ?5 D) t" v6 C0 [; k
  19. else# l; S2 N/ r: q+ M% m2 Z
  20.         echo $0 "high|low|off|init"
    # }& a/ q$ {+ |2 `" b: S; d4 J/ }
  21.         exit 127
    5 ?" ^! G( o2 k* j
  22. fi
复制代码
' f* P" {/ H7 T. A' }
用systemd调用gpiofan init即可启动。
; L5 ?7 {+ p2 P, Q, G0 a支持以下参数:" q) s/ V% s; d# j$ T2 M
off:完全关闭
' `8 X" _" D! k. G% }6 Yhigh:高速度运行, Y2 Z' }  B  ~5 d
low:低速度运行7 Z; j' C2 \& z  T) o+ X6 [
init:初始化,在调用其他功能之前,必须init!2 |; R+ z1 D3 s1 t# G: |

' p  x! ^8 o4 L! f! }, E5 u% o4 }至此,终于是完美实现功能了

5

主题

5267

回帖

7200

积分

资深垃圾佬

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

" `! H- U' r% f, D) k  h, e好贴帮顶,顺便得渣金

0

主题

27

回帖

89

积分

初级渣柚V2

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

5

主题

5267

回帖

7200

积分

资深垃圾佬

积分
7200
发表于 2021-3-8 09:06:55 | 显示全部楼层
: g6 {! e* Y* O( u+ P5 N8 o
好贴帮顶,顺便得渣金
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-9 21:06 , Processed in 0.079653 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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