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

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

[复制链接]

4

主题

71

回帖

280

积分

中级渣柚V1

积分
280
QQ
发表于 2021-3-5 11:18:42 | 显示全部楼层 |阅读模式
本帖最后由 fhh 于 2021-3-23 14:04 编辑
6 [3 k+ X9 t: y( e% @6 c4 m  S4 ^4 r
发现了几乎完美的解决方案,此贴终结
) N, Z$ {" n; v5 d( v) M$ Shttps://bbs.nasdiyer.com/thread-7843-1-1.html
& V; G2 s, N2 ]刷机完成后,如果希望从emmc启动,只需更改bootcmd环境变量即可。
4 o. [! Z- l2 S: i0 \
3 F9 ?" ^9 X# _8 z& |
) e* w  n- T$ d1 u- E, ^, i------------原内容------------------------------------
/ |9 _% }  e% P0 h+ u4 j6 D首先声明一点:# j  d2 }; m% y
猫盘掉IP并不是所谓的“网卡虚焊”
* b( `) k' `8 f3 M, r(不然为什么X3P可以正常使用)0 }) @- q$ e+ k; L
掉IP的真正的原因是H大提供的驱动(u-boot/Linux)存在问题,导致网卡没有被正常初始化0 `. M" l/ e" y' i3 _8 o! C- X% s8 @
(比对了一下x3p的dts和H大的dts发现基本上完全不一样,可能是硬件版本区别?)$ Q8 y+ U, x) {0 p' R- d
所以,临时的解决方法如下:* f5 I9 |4 s) [& n" @8 R
1.刷X3P' C2 z( o% W3 ~7 ]& d( c/ K
2.将H大提供的系统img(debian/ubuntu/archlinuxarm均可,我用的是Archlinux)写入U盘7 O4 v9 G3 b* K. w
3.将U盘插入猫盘,进入ttl,清除emmc的mmcblk0p2分区,将U盘的文件系统复制到这个分区;
4 o4 v; h1 Z4 ^5 Q4.重启,在uboot中修改启动命令,从emmc的mmcblk0p2分区启动! F) q% K3 Y0 p3 L
5.启动alpine后,将U盘挂载(比如/mnt)# \5 [6 ]" j9 t) Z) y& o
6.将/dev和/proc挂载到/mnt/dev和/mnt/proc* v% r: h6 I  o
7.将/boot中的Image和dtb文件复制到/mnt备份
' |6 k5 v2 o1 H) G" D" v8.将/lib/modules文件夹复制到/mnt备份
" a- C1 t* Q( Y; r. o4 M+ {9.chroot进/mnt,执行emmc-install.sh$ P: y! z1 N6 w; F0 t5 P, T
10.挂载/dev/mmcblk0p1(安装完成的系统),备份当前的Image和dtb,将x3p的备份复制进去/ b- o6 O: w$ p+ x5 G( ]
11.将x3p的/lib/modules复制到当前系统
* S  @0 m% L4 t2 d6 Y12.重启6 d# ?; n, t( ~/ d$ D$ C
应该直接就能进去了,并且100%获取IP: }: G: B7 i+ [) Y4 c
内核也不会有crc错误的提示# {' t$ Y# u3 X; @" a, Q% G  v$ v3 y

2 @4 h: [) H9 {) a6 w问题:
" A# p8 r, b% q8 \& X& i与之前的内核相同,无法控制风扇% e2 g' B+ V7 W# ]/ ]
(LED的控制方法见楼下)
! N1 E, ^. i+ Z: |! Y& O7 ]5 T& v' A+ N4 j
废话不多说,上图
, O+ V: t3 s2 D/ E& [8 b

获取IP截图

获取IP截图
, R/ r5 q- u9 m' S9 y( b. V0 b2 I6 R

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:
! D9 d& J9 z% X+ z2 f/usr/bin/led! B5 C) V; v- L# E  t+ N% m' h
  1. #! /usr/bin/bash
    / o  _4 [3 q8 v7 H4 {' m
  2. if [ ! -f "/sys/class/leds/c1/brightness" ]; then6 a5 p% u7 n  Y$ O5 @3 `7 h
  3.         insmod /lib/modules/4.4.52-armada-17.10.1/leds-aw2013.ko' ]6 z) ^5 |8 S. p2 \6 R; ^2 Y% c# a
  4. fi
    # }9 |) s) I: B, y
  5. if [ $# -eq 3 ]; then# r4 ?8 ?; G, q, q
  6.         echo $1 > /sys/class/leds/c1/brightness+ Y% Q" T+ Z. e4 |8 W- ~& N
  7.         echo $2 > /sys/class/leds/c2/brightness2 w7 G. l( P- n; ?" i8 P: J+ J$ i
  8.         echo $3 > /sys/class/leds/c3/brightness7 u% b6 s: w; R+ U3 a9 c
  9. else3 B) V! H5 g3 t& d  z
  10. 4 v2 S( p8 B1 |! d1 Y$ N- s
  11.         echo 23 > /sys/class/leds/c1/brightness5 F( M6 v9 ]) t5 `6 B6 Y
  12.         echo 147 > /sys/class/leds/c2/brightness
    - D5 ~3 ?. p- ^3 G1 j" b! g; C
  13.         echo 209 > /sys/class/leds/c3/brightness
    ( W' A; R4 F# ]1 ?5 j
  14. fi
    6 V* b* H$ N4 u9 g* F. n
复制代码

. K) d( u6 `3 J8 z9 i% K4 v# I使用方法:# Q# I2 D! @/ G) `5 r
led R G B  f  v! V- P" K& R
不传RGB值默认是Arch蓝) [3 s( t6 J( d/ Q! X8 ~- }
为了让这个脚本开机启动,添加一个systemd脚本:
; M# E. \/ K+ U1 @* Z, }- r. B/usr/lib/systemd/system/led.service- W9 b  V! w2 T
  1. [Unit]1 ~# J% e# u: e  R$ q
  2. Description=LED enable; \# ^4 ]8 C( o+ _% C+ ~; c. ]3 J
  3. Before=basic.target% r2 t* x  h+ I6 ^6 D, \
  4. After=sysinit.target local-fs.target1 h& v9 ^7 {# }2 \- W4 K3 l2 K+ ]; x
  5. DefaultDependencies=no
    $ E# G1 y9 U2 Z7 ]/ _; i+ D

  6. 8 ]: M/ e9 @& Z+ {
  7. [Service]
    8 s) _: H/ u1 X6 Z* [
  8. Type=oneshot. R: K" g" C$ ?8 _- f7 F/ l
  9. RemainAfterExit=yes
    # v) N( y% B! a  C
  10. ExecStart=/usr/bin/led! {$ h, x4 o( h7 l0 ?3 |. x
  11. TimeoutStartSec=1min! J! j; W+ t; ?

  12. # M  |  z+ m/ d! E- o- g
  13. [Install]
    " @# @. y/ T8 s" X
  14. WantedBy=basic.target
    0 h) W: ?: |; L# g( k5 O/ x! D
复制代码

# s  @0 ?+ v2 {  N6 V2 vsystemctl enable led后重启即可。

33

主题

323

回帖

1343

积分

中级渣柚V3

积分
1343
发表于 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 | 显示全部楼层
获取网卡温度:
, H1 @7 H6 e( n1.按照https://blog.csdn.net/han_dawei/article/details/9427033这个教程,编译一个操作网卡接口的程序;* p, t; @7 j# N( G5 x' a7 ^
2.按照Marvell的官方datasheet,编写以下脚本:: y# h! o5 M- z% h
/usr/bin/phytemp9 X9 [. X5 z* f& ^0 v& {% d) b9 x! Z
  1. #! /usr/bin/bash. n- a' ~9 l5 G3 \4 ]1 b7 Z
  2. mdio eth0 22 6! d) g# {' }- S7 a
  3. raw=$(mdio eth0 26)& Z# V2 i; u9 Z. ~
  4. mdio eth0 22 0
    $ d, b8 |+ @0 e9 X1 |' a+ T; ~
  5. echo $(((raw&31)*5-25))1 h4 ]( |6 J) D$ W/ S+ l1 ?
复制代码

# t2 ]8 G$ f! x3.直接执行即可。, m9 Y9 q( I9 O( {! [8 b

$ [9 I4 n; i1 k6 v& Q风扇控制:
9 ^% A" K( p) r) g+ i9 a3 j" f编写以下脚本:
3 ]3 \2 ~( M5 l1 l4 s! P* C/usr/bin/gpiofan
9 `, B* J% X* z+ @6 r$ k
  1. if [ $# -eq 1 ]; then& g7 H: c1 k- ]1 l. Y5 ~( l
  2.         case $1 in5 M" Y8 f/ S8 q1 y
  3.                 high)   echo 0 > /sys/class/gpio/gpio38/value$ U4 X3 w% b# ^% {6 y7 Z
  4.                         echo 1 > /sys/class/gpio/gpio40/value;;
    9 U9 P) [6 g2 T% W0 W. Q
  5.                 low)    echo 1 > /sys/class/gpio/gpio38/value, g% z) i* I" `& A, C5 ^' \
  6.                         echo 0 > /sys/class/gpio/gpio40/value;;5 B2 v/ Y3 J. I2 D' C# Y3 X6 m
  7.                 off)    echo 0 > /sys/class/gpio/gpio38/value9 x& J5 @6 R+ `0 S8 Y- O
  8.                         echo 0 > /sys/class/gpio/gpio40/value;;
    6 a  R. T0 a* i* B1 E' Z8 k" V
  9.                 init)   if [ ! -d "/sys/class/gpio/gpio38" ]; then
    $ W; @: d4 d! J
  10.                                 echo 38 > /sys/class/gpio/export
    2 n& \' t( U1 ]- j* Z: |
  11.                                 echo out >  /sys/class/gpio/gpio38/direction+ r; A2 S! G- W6 {5 K( _
  12.                         fi' I; B9 n9 h5 a2 ~
  13.                         if [ ! -d "/sys/class/gpio/gpio40" ]; then+ H# ?6 t( K( Q( w" A
  14.                                 echo 40 > /sys/class/gpio/export% X6 w1 V$ _% D9 b
  15.                                 echo out > /sys/class/gpio/gpio40/direction$ C8 }2 d7 p' A9 z+ m, p
  16.                         fi;;
    3 P( b' p* {+ A4 }
  17.                 *)    echo $0 "high|low|off|init";;; ]* r6 _1 R0 K' J
  18.         esac- w& G! r$ e$ T' ^
  19. else6 L1 e8 H3 e2 F# |
  20.         echo $0 "high|low|off|init"
    5 ?7 |5 c( n' V+ h" f4 I, u. w
  21.         exit 127
    3 W% ~( Q- y) q3 [  k; v
  22. fi
复制代码
2 N  T* C% {( S% u
用systemd调用gpiofan init即可启动。
# O8 }; g4 c3 x6 y1 D' |支持以下参数:9 L6 _" N! H5 e! i0 H
off:完全关闭+ K' M8 g. Y$ L* _$ I0 d! S
high:高速度运行
; f/ c% R3 _, Z7 k8 {! Q4 Flow:低速度运行* O  S2 a- D; T8 T5 V8 a
init:初始化,在调用其他功能之前,必须init!
+ n' \- t( A- b5 W- }
( K, r. b( r3 q" Q& S. U' Y至此,终于是完美实现功能了

5

主题

5264

回帖

6889

积分

资深垃圾佬

积分
6889
发表于 2021-3-6 10:06:23 | 显示全部楼层
/ U$ ~0 x; c3 s2 l8 N/ v/ m
好贴帮顶,顺便得渣金

0

主题

27

回帖

89

积分

初级渣柚V2

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

5

主题

5264

回帖

6889

积分

资深垃圾佬

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

& ^7 q; z6 u7 H好贴帮顶,顺便得渣金
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-28 01:17 , Processed in 0.094993 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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