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

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

[复制链接]

4

主题

71

回帖

280

积分

中级渣柚V1

积分
280
QQ
发表于 2021-3-5 11:18:42 | 显示全部楼层 |阅读模式
本帖最后由 fhh 于 2021-3-23 14:04 编辑
% A4 p7 q  Y' C1 Y% L: c  u7 q
3 r/ a7 E9 Y' o, m6 G( j发现了几乎完美的解决方案,此贴终结
3 O8 ?& s* k9 d2 l7 O5 ahttps://bbs.nasdiyer.com/thread-7843-1-1.html5 V+ n0 z# x5 {; f; c  {
刷机完成后,如果希望从emmc启动,只需更改bootcmd环境变量即可。
% x+ X& \& B+ P$ U; S$ O5 m& c. U( i& P1 Z4 k  w# E% Y

5 H0 v5 ^1 c) U------------原内容------------------------------------8 w$ A& z# L) q& ?2 E
首先声明一点:
. t# g2 |& D' Z  B+ J猫盘掉IP并不是所谓的“网卡虚焊”
* F) h2 i% r# }& y, f; B- I(不然为什么X3P可以正常使用)- G1 u1 t, W; J
掉IP的真正的原因是H大提供的驱动(u-boot/Linux)存在问题,导致网卡没有被正常初始化6 m# i' ^  _; u; R  z' k
(比对了一下x3p的dts和H大的dts发现基本上完全不一样,可能是硬件版本区别?)
+ q9 c4 T0 o4 ?: d9 v$ H; H所以,临时的解决方法如下:
) z- X# K7 w& P( A1.刷X3P
, R, y' S0 N0 |& X2.将H大提供的系统img(debian/ubuntu/archlinuxarm均可,我用的是Archlinux)写入U盘
" ]: z6 ?5 a1 n6 O  ~3.将U盘插入猫盘,进入ttl,清除emmc的mmcblk0p2分区,将U盘的文件系统复制到这个分区;% R' Z/ q* D4 d' X# m) g
4.重启,在uboot中修改启动命令,从emmc的mmcblk0p2分区启动
1 \* k6 v, O9 S: f& S1 R6 l5.启动alpine后,将U盘挂载(比如/mnt)9 [2 o/ D9 ~5 Y
6.将/dev和/proc挂载到/mnt/dev和/mnt/proc! U, m& A8 a0 H) o' k% p$ B6 e
7.将/boot中的Image和dtb文件复制到/mnt备份" x7 C  t( s- @% Q( w8 C
8.将/lib/modules文件夹复制到/mnt备份
6 W1 c- r& r; `+ R9.chroot进/mnt,执行emmc-install.sh
) p: L3 ^( D! _5 v10.挂载/dev/mmcblk0p1(安装完成的系统),备份当前的Image和dtb,将x3p的备份复制进去) }1 v) j* L7 c* }: C
11.将x3p的/lib/modules复制到当前系统+ t. F4 R" w2 [
12.重启- W5 x8 }; V, P/ A
应该直接就能进去了,并且100%获取IP- Z8 B) Q1 s2 t: a) D9 q! ]) l
内核也不会有crc错误的提示
* g# x* ^  Z' e2 ]# [% B( @  y, \1 H1 h" A9 S3 e
问题:
5 T# J4 ?# q) G& z与之前的内核相同,无法控制风扇
- U( @) ]7 Y; ]- H( z1 b: Y(LED的控制方法见楼下)! @" H+ g5 U0 s- s" o# n: e
( Y* ?, l, c1 i% i' x2 L! I9 C- {
废话不多说,上图
! s* I$ }7 p/ p" ?

获取IP截图

获取IP截图

9 q/ @6 _; f) B( Q9 n. Q- J3 e

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:8 p. |7 C8 c, F  I
/usr/bin/led8 I# B4 _6 i, h
  1. #! /usr/bin/bash
    ! W4 s! U# M- ~8 e
  2. if [ ! -f "/sys/class/leds/c1/brightness" ]; then" n9 A1 x+ d3 ?1 O, ?; y4 V
  3.         insmod /lib/modules/4.4.52-armada-17.10.1/leds-aw2013.ko+ U% x. Z# e4 f( v$ R
  4. fi
    4 v( T, F7 O- _
  5. if [ $# -eq 3 ]; then$ m7 V- a( h5 [  E
  6.         echo $1 > /sys/class/leds/c1/brightness  G& O0 f$ ^' r6 I- y
  7.         echo $2 > /sys/class/leds/c2/brightness
    + [( ]7 a" v0 I7 f6 }
  8.         echo $3 > /sys/class/leds/c3/brightness3 k6 A( K' M+ y$ F/ D5 H1 B& ^" r
  9. else
    6 B( J" ]" ]; ~2 p3 j

  10. & m' D+ {1 }2 T+ \# H( c" E( r
  11.         echo 23 > /sys/class/leds/c1/brightness/ m$ k1 s4 S5 s% i# Z. w& O
  12.         echo 147 > /sys/class/leds/c2/brightness$ z. a4 w& q4 ?
  13.         echo 209 > /sys/class/leds/c3/brightness% Y3 ]: p  k- t8 m5 R
  14. fi
    9 y# u: k6 w1 I$ s+ U
复制代码

" B# g" A& I1 G' P- Q4 R& T使用方法:
& F% r% ?2 |' }7 ^" Aled R G B
! v' |4 n# i2 k3 w! C0 y不传RGB值默认是Arch蓝
. Z7 a9 M# ^, ~4 T  ?6 ?6 D, F为了让这个脚本开机启动,添加一个systemd脚本:' z$ N2 }2 h8 P
/usr/lib/systemd/system/led.service/ l% ]: H9 H' p+ Q9 G
  1. [Unit]
    1 J6 |( @  w9 W( @
  2. Description=LED enable
    $ n$ s8 x% Q* L0 A1 u
  3. Before=basic.target3 L0 i' {& Y  n$ _4 l
  4. After=sysinit.target local-fs.target0 ^# D  O$ x. z; W6 e; X4 r! m
  5. DefaultDependencies=no
    5 ]; R0 C$ I! n% l, P% T% w
  6. 0 `6 V6 ]0 e9 h& i8 R4 J+ [
  7. [Service]
    ) X$ \& ]' l9 \% D7 N) F: y4 l/ }
  8. Type=oneshot
    3 _) ^( }2 r- |) t; P5 s! t
  9. RemainAfterExit=yes
      `' v7 O& g, p' O& {, |
  10. ExecStart=/usr/bin/led. k" c7 f# y9 b& q* H$ B$ a/ j
  11. TimeoutStartSec=1min: m' R' A  ^( h: W$ V0 f* j
  12. ( i( @# o4 \8 r' s+ C* o
  13. [Install]6 x! e: a) Z" k( ~7 n
  14. WantedBy=basic.target
    / _. a. j  N! i! n- s
复制代码

( b, h( `4 C' }1 Nsystemctl 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 | 显示全部楼层
获取网卡温度:
/ z, u& X0 K1 D( \. K# S2 ]1.按照https://blog.csdn.net/han_dawei/article/details/9427033这个教程,编译一个操作网卡接口的程序;
: r5 w5 n! U4 l; W/ T9 y) ?2.按照Marvell的官方datasheet,编写以下脚本:
4 o+ L4 d4 c: n/usr/bin/phytemp
! T* N! z6 }- D# b/ G) F! ^, C
  1. #! /usr/bin/bash
    : `' [/ `. L# L! c$ r" b
  2. mdio eth0 22 61 O3 x/ O6 y+ ?3 ^, [
  3. raw=$(mdio eth0 26)8 \+ N0 Z) X" m" J& h" w7 V& A
  4. mdio eth0 22 0( |4 S, T( P- t1 |  c3 p
  5. echo $(((raw&31)*5-25))
      |9 c0 O0 L( r' h; ]% M
复制代码
0 Q- r" P" e8 D& `
3.直接执行即可。8 |7 T1 n, b, q! Y, V4 Y3 B4 I

' m/ I. o) g+ ]0 P风扇控制:
8 \; [9 u9 K" S3 }" Y# A+ w# h0 b编写以下脚本:+ x6 Y- k9 |% t& C7 e
/usr/bin/gpiofan, e  w+ U- Y, b
  1. if [ $# -eq 1 ]; then
    ' P; P3 k" ?. f2 t. c' ]- U
  2.         case $1 in5 q; Z4 m- g, G% c( c
  3.                 high)   echo 0 > /sys/class/gpio/gpio38/value
    ; e: t: R  u0 |3 x# _. k
  4.                         echo 1 > /sys/class/gpio/gpio40/value;;* q0 ~, T) P2 Y
  5.                 low)    echo 1 > /sys/class/gpio/gpio38/value
    0 e2 n. w5 `9 x0 ?9 f( G7 B9 e
  6.                         echo 0 > /sys/class/gpio/gpio40/value;;
    - F+ v& o# ]( d( [% T
  7.                 off)    echo 0 > /sys/class/gpio/gpio38/value/ w" r/ \0 j5 b$ i' R4 x; g
  8.                         echo 0 > /sys/class/gpio/gpio40/value;;
    0 }2 E% ~+ K0 d& O) I
  9.                 init)   if [ ! -d "/sys/class/gpio/gpio38" ]; then3 Z) u! T1 g7 a3 p
  10.                                 echo 38 > /sys/class/gpio/export2 v- _; M4 M( ]' c! H+ u, w
  11.                                 echo out >  /sys/class/gpio/gpio38/direction
    ; B$ j& C4 I  G* q6 R
  12.                         fi
    6 b; a# L2 \1 D# t  J
  13.                         if [ ! -d "/sys/class/gpio/gpio40" ]; then
    : g, b4 A1 w1 o* p1 a% {
  14.                                 echo 40 > /sys/class/gpio/export: I1 Y# j* F# f  l. B
  15.                                 echo out > /sys/class/gpio/gpio40/direction
    2 z9 U6 U$ R( {
  16.                         fi;;7 l- c; G) g" x" |6 t+ c
  17.                 *)    echo $0 "high|low|off|init";;" a% g8 Y$ Q+ i6 y) I
  18.         esac
    ( h! m6 p/ Y1 P# o! K& u5 {
  19. else) Y* [* h1 |$ P/ g
  20.         echo $0 "high|low|off|init"
    4 L6 F& q. [; n5 C3 F
  21.         exit 1276 G  x+ m' `6 T/ o) u* i( P! I
  22. fi
复制代码
! t* O6 J1 K) K  |
用systemd调用gpiofan init即可启动。0 g$ g' z) `" x  x0 w
支持以下参数:( m6 E; E4 s! u% Y' y
off:完全关闭$ {. t8 f8 T5 ~" c+ I' }
high:高速度运行
, x, G1 {  p7 y: o" I3 Klow:低速度运行
! ?6 }$ a! A7 W$ i9 A. |1 b0 Kinit:初始化,在调用其他功能之前,必须init!. S' K" r  \& Y$ r) f

- j1 V( Y/ s7 y  F至此,终于是完美实现功能了

5

主题

5267

回帖

7186

积分

资深垃圾佬

积分
7186
发表于 2021-3-6 10:06:23 | 显示全部楼层
4 F3 K; _; i# p2 @8 _( t. d
好贴帮顶,顺便得渣金

0

主题

27

回帖

89

积分

初级渣柚V2

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

5

主题

5267

回帖

7186

积分

资深垃圾佬

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

. x8 V. S! C* ~9 a; z. [- d' I. G好贴帮顶,顺便得渣金
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-4-4 10:30 , Processed in 0.067477 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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