|
|
发表于 2023-1-18 09:18:32
|
显示全部楼层
转发:我好像解决部分猫盘刷群晖后掉IP的问题了2 L# I; ^" `/ V
/ K( Z' b" c& a' Uaquila995; l8 a6 i" p: o
5 V8 j7 K( a% z4 i
于 2020-06-24 16:37:11 发布
: \( f/ ^4 K4 Q/ o
6 d5 a+ u! R. t! ]% i' X: V13215
- `7 ~& v# f9 `. X4 T 收藏 13* l4 `; e1 h+ E
分类专栏: 群晖3 L0 u" Z$ N- J/ M( K- Y! Q
版权
% M Y( C% O: ]" m' A7 F" H0 ^1 N" w3 Z+ S! p' Z
群晖; l: N4 q4 B. r: u/ e* T; O8 X o
专栏收录该内容( H0 w9 d, |! z
1 篇文章0 订阅
% D: S# P4 O+ n订阅专栏$ U2 q/ T- j4 E
我好像解决部分猫盘刷群晖后掉IP的问题了 S Y% O, `" g* T) I
* f/ t7 m' V* u( }% M我好像解决部分猫盘刷群晖后掉IP的问题了
/ b/ G' {/ l2 J x4 ~) Q' O9 J 0 x d, i) \% N% J- z$ r3 c
先说我的情况,xianyu上的,到手发现刷群晖后第一次没挂硬盘时可见ip,关机,上硬盘,再开机就一直见不到ip了,没敢一直重启,心疼硬盘。
9 p6 L9 k c. B3 Q* `5 q/ J( o( c. X然后刷个X3P用了一段时间,还是想用群晖。上了块固态,试了多次后,应该解决掉IP的问题了,现在挂的是500G普通盘,一直正常。% |* Y* _0 u6 E. p
* B# r* r& h8 R5 ^" ]9 B- E
跳过刷机说重点,每次重刷完群晖都是可以连上的,但重启后就不行了,所以应该不是所谓的虚焊问题,应该是某个设置没有达到,网卡没有工作。" a/ y- ~9 H( K- r* J% `
8 Q; d8 ^- k/ t% s; T然后发现的情况是,如果进到env环境(我也不知道叫什么,反正就是在xshell下一直按回车的环境),网卡是工作的,只是再进到群晖启动时没有工作。0 n4 r3 O3 H$ u& Y" V4 n7 R
$ K' J) x! }" I4 f4 z
先看了下有什么可用的命令:* ^0 W7 k6 o' R: t4 N
8 O- A" @* u! s6 d* o- Y; V- e( g$ FMarvell>> help2 r( [- T, ^# M" q; |. H& V
? - alias for 'help'4 G5 p. A5 R5 L% E. ~* J
base - print or set address offset( w8 ?8 n; u0 L# P) g5 A9 m
bdinfo - print Board Info structure
* s0 b; i6 v: _, |blkcache- block cache diagnostics and control7 k2 o9 v* \6 Y
boot - boot default, i.e., run 'bootcmd'( C; A4 V2 a/ d/ @2 S1 ?: a0 z
bootd - boot default, i.e., run 'bootcmd'- ^' {1 l: s" r9 n" }$ j
bootefi - Boots an EFI payload from memory
2 q ^5 K# R' ^: Z z; lbootelf - Boot from an ELF image in memory0 i, T5 s8 Q+ x$ L) d0 r
booti - boot arm64 Linux Image image from memory
6 M9 F% ^* w" ?/ [bootm - boot application image from memory
0 M$ G) I. p( M' ^" X============================================================
8 y: F& t/ E. ^- W- n- _3 Abootp - boot image via network using BOOTP/TFTP protocol
9 z# X5 M$ J$ Y# Y( L* O============================================================/ G, O3 r* v! \ h4 k6 |
bootvx - Boot vxWorks from an ELF image U1 C& ~$ p# u) z
bubt - Burn a u-boot image to flash/ O7 t! C% c; r0 g* O8 }
cmp - memory compare
4 g8 P4 v) z' R2 C( a: z. n8 f4 K' Vconinfo - print console devices and information8 Z/ Z2 W4 s8 \- s
cp - memory copy/ S+ O3 ?3 o. o' g+ R
crc32 - checksum calculation
/ ^) u* ~ v8 tdcache - enable or disable data cache' ^3 y. ]' ~! T( Y* m
-------------------------------------------------------------. z- y; e0 s0 I( s2 K( D* y) k
dhcp - boot image via network using DHCP/TFTP protocol( N1 e3 V. ^0 {+ l: u
-------------------------------------------------------------* n+ _* R( B! x, r6 ^
dm - Driver model low level access
& ^3 Z8 D% I2 G/ k- }3 n1 U( oecho - echo args to console
& A' g. `% O! q9 K; H' \8 T( Eeditenv - edit environment variable
3 I( G) M. N/ xenv - environment handling commands# @- d3 X) G+ ^$ n! h
exit - exit script* A* q2 W* J& E: [
ext2load- load binary file from a Ext2 filesystem
/ I g) o- ^9 sext2ls - list files in a directory (default /)+ J9 `. H4 }$ d3 V! U
ext4load- load binary file from a Ext4 filesystem/ I x& M4 u2 e8 {+ i
ext4ls - list files in a directory (default /)7 D* z' Y7 F9 J* X3 X
ext4size- determine a file's size
4 m' G) i: K5 C9 q0 o) @! qext4write- create a file in the root directory
9 E: R b( U( e9 G8 `& d$ Yfalse - do nothing, unsuccessfully
" J( e$ l% N5 qfatinfo - print information about filesystem
. C( S% E% j c( V% V J' n0 \fatload - load binary file from a dos filesystem! @" ? D k& q0 G, E' f
fatls - list files in a directory (default /)
0 ]+ N8 K0 U1 Q6 H! y$ wfatsize - determine a file's size' D; Q* x' I, b1 |1 ~4 l. k
fdt - flattened device tree utility commands
1 Q$ u4 W/ K4 V( P6 s) X8 ^fstype - Look up a filesystem type
- U) p4 w- [; n8 H* w) @; N( s0 h" Zgo - start application at address 'addr'
; g/ V2 p/ }$ o r4 g- U" d& ]gpio - query and control gpio pins; N$ ^, | ?! k6 S
help - print command description/usage6 f/ m2 i! c7 C+ g
i2c - I2C sub-system7 ]6 z" w% u0 R' K/ }
icache - enable or disable instruction cache
- ~! u' s* R, |' Giminfo - print header information for application image0 R F: d4 Q/ s. b
ir - ir - Reading and changing internal register values.* p/ N# \0 W$ W/ e9 w
l& c P) T3 L3 k' `
9 X8 x% }) n, I. Iitest - return true/false on integer compare
. J/ K% R( q8 a- p9 |load - load binary file from a filesystem8 F8 A8 z+ v& {
loadb - load binary file over serial line (kermit mode)
6 F2 P7 ?- j5 }2 `6 gloads - load S-Record file over serial line1 X! A' {$ V: z5 _( J5 E
loadx - load binary file over serial line (xmodem mode)
; z5 ^) n7 [* Z' F! l1 ]! tloady - load binary file over serial line (ymodem mode)4 F4 V0 Q5 u# Y, s
loop - infinite loop on address range
4 w( R7 Z; l q5 D1 Q0 }ls - list files in a directory (default /)+ I. Y4 ?, b# }& ^% P
lzmadec - lzma uncompress a memory region
2 B2 g ?7 L1 p0 i6 lmd - memory display! K6 Z& w3 K1 v+ Z- ]
mdio - MDIO utility commands
$ i" p! u' @# |mii - MII utility commands5 A" X! n3 s* I- M, i2 ~
mm - memory modify (auto-incrementing address)
* x t# `4 K7 [mmc - MMC sub system( Q+ J8 c& v& Y3 f# a: e
mmcinfo - display MMC info& Y% L8 V' m( a2 C9 e/ l
mw - memory write (fill) p; v& T, d2 N' W5 Z4 ^& A2 y
nfs - boot image via network using NFS protocol+ L- _5 d* O, u5 `8 P# R5 a2 i/ V: Z
nm - memory modify (constant address)0 C3 ?3 P6 s- s9 ^/ c
part - disk partition related commands( w4 `$ a! @0 @% N
ping - send ICMP ECHO_REQUEST to network host
- ?, k) K Y1 l; P$ O7 `/ t4 U/ U4 uprintenv- print environment variables& t* R* Z/ U0 a% w& E2 M
pxe - commands to get and boot from pxe files
. u5 }% q4 f, Z: zregulator- uclass operations
1 L& t8 M$ d! Zreset - Perform RESET of the CPU
. F+ Y6 y! L- Srun - run commands in an environment variable
+ o" W# O! T4 |! K% Dsave - save file to a filesystem* Y7 M: C. d& b, @
saveenv - save environment variables to persistent storage
5 N% h C4 a9 c5 qscsi - SCSI sub-system
+ p8 L+ J6 t2 E! d8 F+ a) U, `scsiboot- boot from SCSI device& k4 E. ` P9 \3 |! f
setenv - set environment variables N+ [/ N) A2 ]' F6 Y2 _
sf - SPI flash sub-system
* K1 V! z4 ]6 B L `showvar - print local hushshell variables
& W# W8 u* ~# g* o( W/ j" ksize - determine a file's size) r4 F4 w0 D6 v) t: n$ C
sleep - delay execution for some time. t2 ~5 `+ n+ C6 m+ l
source - run script from memory
9 H( t+ j3 C% w0 Psspi - SPI utility command# A5 q) K+ z2 z$ g1 ?1 j( F
sysboot - command to get and boot from syslinux files4 p. v3 F4 W# U2 G; A: c
test - minimal test like /bin/sh
4 ~& V5 p. O/ l# b) ?' W4 [/ ctftpboot- boot image via network using TFTP protocol
' V) {2 c9 B! V1 ^* o6 Z2 `& [time - run commands and summarize execution time z4 `. q- o5 {! L& g
true - do nothing, successfully
' L$ `: e; A p/ p: W( musb - USB sub-system9 i: R$ P; ^' p+ n/ k* R8 W: P
usbboot - boot from USB device
$ w8 q, }5 Y1 X5 K, \* i2 Cversion - print monitor, compiler and linker version
* H! W9 P1 Y0 q Y 1 e/ x( W3 |' o, f. V; ?! E; Z6 L
发现了gpio
& U/ r8 Z+ P* |
, i: ]' |! \6 ?( z* p P( {; J, }arvell>> gpio) E$ e8 B3 `+ C1 \. p/ W
gpio - query and control gpio pins
9 y5 V3 k. E+ B" k7 R
- N; m1 t- a% Z1 ]/ a( n/ p, [+ W! p
/ e9 ]4 a- M6 q7 @8 MUsage:
% C+ c; S; e' L3 Wgpio <input|set|clear|toggle> <pin>
- K( N; E9 @" l, }0 Z4 P @ - input/set/clear/toggle the specified pin, H) M* _% h* j$ f9 ?& a/ M L
gpio status [-a] [<bank> | <pin>] - show [all/claimed] GPIOs6 O4 x, w M2 S6 N5 ^' k: t6 {
' Q, ^# Y: {( ^6 g. j/ W( g 2 {$ Z, l6 v; c+ S9 a Y! _
Marvell>> gpio status; @+ P& O+ y) K2 F2 I7 J
Bank GPIO2:
* h6 S1 b% \8 S) GGPIO20: output: 1 [x] sata_pwr2 ^3 L& F) d0 ?' c2 z& v8 B: p2 m+ H
GPIO221: output: 1 [x] phy_reset
9 F: P1 S6 I; C* c s; d/ T1 x+ Q0 Y% N
可见的io脚
8 A% H" A, C" ^7 E) V4 k! f' w
7 V* r# o; m0 |# ]Marvell>> gpio status -a
; j/ g6 o; M3 |/ H' e& a: r' JBank GPIO1:
7 V$ y0 q+ |1 b$ M+ V+ W3 nGPIO10: input: 0 [ ]
~2 I. Z/ |( e# iGPIO11: input: 0 [ ]
4 x" ^) W1 ^; T; p+ \6 `9 x$ x1 GGPIO12: input: 1 [ ]' \) f8 Y, J4 t
GPIO13: input: 1 [ ]2 R! c; H6 w0 K# L" [5 z3 t
GPIO14: input: 1 [ ]
) V% y+ k$ I& }, xGPIO15: input: 1 [ ]: S0 Y( m: H6 Y6 u* S9 ^
GPIO16: input: 0 [ ]3 O4 E2 y) v5 v( H) B; y- S# r
GPIO17: input: 0 [ ]
0 I5 c0 k$ Q8 H% N! hGPIO18: input: 0 [ ]1 B/ D+ h2 m0 i0 R
GPIO19: input: 0 [ ]
9 W; {) J |+ E0 Z. f u" i) MGPIO110: input: 1 [ ]7 i5 I% T4 c2 K4 {, A
GPIO111: input: 0 [ ]
/ l/ T4 [# ]) ]; b5 o @% |4 iGPIO112: input: 0 [ ]8 T; d7 j5 Q2 _/ w6 Y9 Q
GPIO113: input: 0 [ ]
0 n$ D' A" o; {4 l+ s) g2 u! n, UGPIO114: input: 0 [ ]
$ W2 q9 J* W: y0 lGPIO115: input: 1 [ ]9 b$ {7 C/ J+ P& x5 _- e/ s. r' y
GPIO116: input: 1 [ ]
! G! c0 F: ~ w: S% DGPIO117: input: 1 [ ]
\" c% `; P4 A. g) ]GPIO118: input: 1 [ ]4 w, H, o8 k/ a4 f0 H3 X
GPIO119: input: 1 [ ]( n) M3 K. U+ F1 t% y( L
GPIO120: input: 0 [ ]+ k# u5 V! G( s& t) f
GPIO121: input: 0 [ ]
9 Y8 [1 `4 {2 ~+ y! cGPIO122: input: 0 [ ]
- g; L" Y' Q' SGPIO123: input: 0 [ ]
' U) ^( r9 L, g$ V5 B' a, G2 s/ ZGPIO124: input: 0 [ ]
# E$ G6 A# n3 i5 zGPIO125: input: 0 [ ] | ^- \6 V% u0 b$ E$ F! Y0 c, I
GPIO126: input: 0 [ ]
' w g, w6 w- jGPIO127: input: 0 [ ]: w7 `7 O. J3 k8 [! b! }( d
GPIO128: input: 0 [ ] F. e2 ^1 p+ |5 O: x' R
GPIO129: input: 0 [ ]
8 J- o9 y: d9 _# L0 h5 M/ s2 pGPIO130: input: 0 [ ]
) f' @( G4 q9 @4 {GPIO131: input: 0 [ ]$ @$ u) ]- Y! m5 I6 _( {, I
GPIO132: input: 0 [ ]
" L5 m& h4 [5 Z$ |9 B2 ^7 QGPIO133: input: 0 [ ]( q: t# I4 ^$ l( e+ S# T! k
GPIO134: input: 0 [ ]8 z% [3 a! I' d0 o5 {1 d
GPIO135: input: 0 [ ] U; C1 u7 C/ _) o9 z. }! x0 I
6 d5 p1 B) P; e w/ y8 N
* K, F% B3 K' s; EBank GPIO2:
3 O: X0 a" H' d0 h# f, K; z& MGPIO20: output: 1 [x] sata_pwr+ T8 n$ k4 o) w2 d3 e3 q* P% L
GPIO21: input: 0 [ ]' o" F- q$ `3 B" t
GPIO22: input: 1 [ ]
9 N& q* K! q! I P8 N6 T9 D% jGPIO23: input: 1 [ ]
/ W: c6 b$ B: m$ [8 y- w I7 {GPIO24: input: 1 [ ]
! k' k5 X- f& c* OGPIO25: input: 1 [ ]" h- X2 [2 ~+ ^ E& ~) I" V
GPIO26: input: 0 [ ]" @7 k. \8 z, q/ I) i
GPIO27: input: 1 [ ]; s) R+ b$ J% L6 C
GPIO28: input: 1 [ ]
) }. ^2 z, \) PGPIO29: input: 1 [ ]/ J( @( x) V5 B% r% K
GPIO210: input: 1 [ ] v$ h- X, [5 m! W/ l+ q* C, P
GPIO211: input: 1 [ ]
4 f; o0 _; D) o$ z2 c/ T/ uGPIO212: input: 0 [ ]
2 S$ P0 n9 Z; }GPIO213: input: 0 [ ]! k1 S, z: q3 z! f k v9 b# V
GPIO214: input: 1 [ ]
. |2 X" N0 N/ G; U$ R' W. Z+ sGPIO215: input: 1 [ ]8 H# ?* B7 A" f% ^
GPIO216: input: 1 [ ], U4 c1 {3 Q+ k/ Z' q% o, `6 r
GPIO217: input: 1 [ ]
* Y4 G- s4 ?) d, _) rGPIO218: input: 1 [ ]% g8 g6 G9 Z0 I7 m* r
GPIO219: input: 1 [ ]3 Q6 s F" p! X9 X/ @
GPIO220: input: 0 [ ]$ n9 s! ]. h) d2 F
GPIO221: output: 1 [x] phy_reset
7 @* h% m- P6 R$ UGPIO222: input: 1 [ ]; u! d5 \) N0 R1 A9 C: B" D
GPIO223: input: 1 [ ]4 [1 {" p$ n! e4 C- L7 B, y
GPIO224: input: 1 [ ]
. K; Z& i7 W2 m7 K, YGPIO225: input: 1 [ ]
; \. ?4 y+ L( W7 E& V3 w8 D3 U' iGPIO226: input: 1 [ ]1 ?1 f/ W* O) {' ^& e* ]1 H
GPIO227: input: 0 [ ]
1 \4 h6 j5 k# @; Z2 `- lGPIO228: input: 0 [ ]1 }* Z8 Q/ U2 Y
GPIO229: input: 0 [ ]4 j) @; `1 r% I
8 n* M# s* y6 X! s: O2 ]8 C/ }, Z
别的看不懂,只看到一个是硬盘的供电,一个是phy_reset,不知道干什么的。$ w3 q9 O/ c, B3 `
% w8 A3 g$ ?' O1 }. a: @Marvell>> gpio
4 l% K6 j5 `* a2 f* e! wgpio - query and control gpio pins* i9 f W9 r% w, m6 L3 [" p _
2 U7 q; }8 v* ~: l' `7 F
2 v/ G6 c4 {3 i$ i& cUsage:
8 t7 d F6 m! O: |gpio <input|set|clear|toggle> <pin>5 K9 g, ?. N- B
- input/set/clear/toggle the specified pin
" t) n3 v9 g8 [9 X7 f) igpio status [-a] [<bank> | <pin>] - show [all/claimed] GPIOs* h; k/ [5 Q0 s
) m+ n2 Y% x/ K A, J8 N
set是置1,clear是置0,toggle八成就是翻转(初中级英语,没办法,全靠猜)0 o1 e& S" t% T0 [3 P9 d. Y
) [" X1 G7 |' K) a然后看到env有地方是参数设置,类似dos的环境变量吧
! R6 I' }4 N3 x" h' z
; e: Z- R3 W$ L0 n; FMarvell>> env print2 h6 W0 @& B- a) ]" `9 i- e2 v8 a
arch=arm5 |5 f( t* \/ g) p8 K% ]
baudrate=115200
6 A2 d1 g3 ]2 [ g9 u" _ Rboard=mvebu_armada-37xx! {( n+ e+ _4 K& D
board_name=mvebu_armada-37xx
+ q7 |. T& K; _' z2 U' _3 @boot_mmc0p1= setenv bootdev mmc 0:1; ext4load ${bootdev} ${scriptaddr} /boot/boot.scr && source ${scriptaddr};- B0 h1 x& m! K8 p- \/ z
boot_mmc0p2= setenv bootdev mmc 0:2; ext4load ${bootdev} ${scriptaddr} /boot/boot.scr && source ${scriptaddr};9 f& b( E* c* E# E& \
boot_sata=scsi scan; setenv bootdev scsi 0:1; ext4load ${bootdev} ${scriptaddr} /boot/boot.scr && source ${scriptaddr};; C! I( H" K( J* n3 R" S
boot_targets=usb mmc0p1 mmc0p2 sata
6 }, _: n! r3 C- G) ?2 \boot_usb=usb start; setenv bootdev usb 0:1; ext4load ${bootdev} ${scriptaddr} /boot/boot.scr && source ${scriptaddr};
: u3 |# ?4 t" W5 S3 n0 }- b/ s! k. ?( Abootcmd=gpio input GPIO23; if test $? = 0 ;then echo "Enter button mode";run bootcmd_button;else echo "Enter nomal Mode";run bootcmd_normal;fi
" [$ F2 Y6 X- F$ g' B" W' S: Pbootcmd_button=for target in ${boot_targets};do run boot_${target}; done;
+ w4 j$ q: z5 b! ^3 v; zbootcmd_normal=run bootcmd_syno;5 l6 c) F, f- Y: V
bootcmd_syno=run syno_bootargs;sf probe;sf read $loadaddr 0x0D5000 0x306000;echo "syno: start decompressing kernel... ";lzmadec $loadaddr $kernel_addr;sf read $initrd_addr 0x3DB000 0x410000;sf read $fdt_addr 0xd2000 0x3000;booti $kernel_addr $initrd_addr $fdt_addr;
: h6 C* x" o: Vbootdelay=1
% V1 B4 V! J G: y, n/ G& D1 h5 \bootdev=scsi 0:1% R" B# B/ L L+ U6 @" b
console=console=ttyMV0,115200 earlycon=ar3700_uart,0xd0012000
" n9 ?' W/ t6 K7 Ecpu=armv8
s) B' ~$ p4 i1 J* Gethact=neta@30000
' P5 [' b$ `4 H# |ethaddr=00:11:32:11:22:00! e# R; X( J8 L5 x, G1 W
ethprime=eth0
/ p( |, a+ P! U* X9 H1 Q7 W. zfdt_addr=0x6000000
6 p. W8 P& `9 v) Yfdt_high=0xffffffffffffffff' Y u" |+ h( G8 |
fdtcontroladdr=1f6437d0' |' D5 [* O: v1 F1 W
gatewayip=192.168.1.254
- O1 I( t1 U; shostname=catdrive
6 K9 E* I( M0 ~image_name=/vmlinuz0 i/ o( `0 o# _) n, C$ b3 A P
initrd_addr=0x1100000+ v* d' f' I/ r3 g; d; i) ^5 V
initrd_size=0x2000000
0 ]( B: Q; N8 C2 h! c/ t7 \ipaddr=192.168.1.119* g1 D" c/ T7 ]1 h# `5 B2 J X
kernel_addr=0x70000001 v z, l8 ]9 L
loadaddr=0x8000000 i7 [; U! x; u# f) d! X
netdev=eth0
2 Y7 C% `& F+ F5 `' t& j7 l" H @netmask=255.255.255.06 |) K- s' S/ A9 w9 Z! ?7 c
rootpath=/srv/nfs/2 D2 ~; @( V E X/ B! z Z( G
scriptaddr=0x6d00000
* R; \, V& w( R* L6 j8 T. P9 l7 Sserverip=192.168.1.254. J$ t' `% @8 \ W
soc=mvebu
: i3 X; d: M% M0 v3 ^3 Ustderr=serial@120007 N% H+ M) n" V( B
stdin=serial@12000; o5 K0 w7 z% b# } M6 q) \6 r' U* C
stdout=serial@12000$ D: d& a5 F% b% w! V
syno_bootargs=setenv bootargs console=ttyS0,115200 ip=off root=/dev/sda1 rw swiotlb=2048 syno_hw_version=DS119j syno_fw_version=M.246 syno_hdd_powerup_seq=1 ihd_num=1 netif_num=1 syno_hdd_enable=40 syno_hdd_act_led=10 flash_size=8 vendor=Marvell; Q# e* d# o5 K8 C2 m4 j
vendor=Marvell6 B8 a8 b0 n* p* F
7 e$ g$ R7 x1 [! L. c1 {& }
! q: _$ y R m# r6 L4 z
Environment size: 2001/8188 bytes
; v' L' u; j) V1 @3 T: ?9 TMarvell>>
3 ?8 Z, q* m, V. d
" g% z" C+ \$ r* y看到有一个GPIO23,试了下,原来是reset按钮检测,没什么用。但它有两个启动项,主要是bootcmd_normal,而这又指向bootcmd_syno.; L! ~- o q# C8 M& }5 q# [4 E
bootcmd_syno=run syno_bootargs;sf probe;sf read $loadaddr 0x0D5000 0x306000;echo "syno: start decompressing kernel... ";lzmadec $loadaddr $kernel_addr;sf read $initrd_addr 0x3DB000 0x410000;sf read $fdt_addr 0xd2000 0x3000;booti $kernel_addr $initrd_addr $fdt_addr;
) |0 ~2 H' ?* m* }2 w+ i
4 S5 R/ S1 A( D4 [" G, L这里好像是群晖引导,一条一条的命令,我又不会改linux的启动呀内核呀,只能在这儿动手了+ [# m# C& }) |$ F
bootdelay=10 ,启动等待时间,1秒,太少,我都来不及按,改成10秒/ K- y( J4 Z5 c! p5 n# q
' L& l( J* i+ l/ F5 ybootcmd_syno=gpio clear GPIO221;sleep 10;gpio clear GPIO20;sleep 10;gpio set GPIO221;sleep 10;gpio set GPIO20;sleep 10;run syno_bootargs;sf probe;sf read $loadaddr 0x0D5000 0x306000;echo "syno: start decompressing kernel... ";lzmadec $loadaddr $kernel_addr;sf read $initrd_addr 0x3DB000 0x410000;sf read $fdt_addr 0xd2000 0x3000;booti $kernel_addr $initrd_addr $fdt_addr;, ^& g1 n2 q+ @; Q& k5 N- {" d
& o3 N" \$ I# E4 F, u* v9 }
注意我划掉的那部分,是先给硬盘断电,一会儿再通电,在固态硬盘可用,可能因为固态硬盘启动电流小,冲击小,当用普通盘时,有一定几率会死机,所以用普通盘时,我去掉了。
3 I( P8 i7 l( j. Z思路是:/ S3 z$ a6 A' w8 x T8 M6 c1 I
启动前先把phy那个=0,等10秒,关硬盘,等10秒,phy那个置1,开硬盘。之后正常启动。
% j* }( n) m2 H
' J* x5 L! D# b2 C) M' u8 W/ S这样有时能得到IP,但还是会有一定几率不行,所以又加上了网上流行的ping 60秒不通时重启 b0 v4 [* _$ ]* T$ D+ k# g; E
' |7 h% C8 I" m' e+ I' O% D- m控制面板,任务计划-新增-触发的任务-用户定义脚本,开机启动,开机60秒得不到ip 重启7 I# p- r f! n3 c; {$ e
#!/bin/bash
z% d9 P7 ] f9 @9 Y5 E0 xdt=`date '+%d/%m/%Y %H:%M:%S'`4 }. ?( p3 q% r) H
echo "$dt"6 ^: J' |' |; X1 r) \$ V
sleep 60* ~- |- \+ V. H) ^( n8 M* t
num=`ping -c20 114.114.114.114 | tail -2 | head -1 | cut -f 3 -d"," | cut -f 1 -d"%" | cut -f 2 -d" "`; |/ |: v/ b& V0 I+ A
echo $num
. G. @% N) A. U, Fecho $?
h. Q5 b3 A V: E6 a# Rif [ $? -eq 0 -a $num -eq 0 ]; then
% \+ k6 Q$ |, Y4 ~9 H" Z. u' R* t( g echo "$dt ok" >> /result.txt( F: E3 W# ~# {8 t- z3 N* N2 K
else
9 @$ c% {, D1 z& {! }/ d echo "$dt noip loss $num reboot" >> /result.txt r, T; V9 |- ~% K; I7 t
reboot; |: x% W( T2 S) K; v# `
fi
3 T- x3 g1 x) W * J7 x' o4 D8 Q: ]1 a& h, X
第五行,ping后边的IP自己改,我用了一个外网的IP。) e: n6 T% i7 y! D% ^" _
; @# |( x! c+ a4 a
总是思路就是,第一次刷完群晖会有ip,挂着硬盘,装系统,设置60秒脚本,重启,如果找不到IP,改bootcmd_syno,再重启等着进系统。
" R% y7 l# c" B 7 [' R. w) N. G7 \
我反正试了几天,刚上电,等一会儿根本没有IP,60秒后,会重启,这次绝对有IP。但总要用ttl+shell盯着测试太麻烦,所以又加了一个正常启动后闪led灯的脚本,从网上抄的,忘记上谁发的了,侵权见谅。8 G/ c* ~; u" I/ |& i2 I
3 u$ G3 u+ w# u2 _# j还是上边60秒的地方,再加一条% F8 G5 O1 K- P1 {
! Z) I) A# a+ W4 \- k
( s% j* J# k) b- {5 }
2cset -y -f 0 0x45 0x00 0x55% v& b9 l" m3 L$ H
i2cset -y -f 0 0x45 0x01 0x01 f! A/ S1 @4 o) y9 g: \/ ]6 k
i2cset -y -f 0 0x45 0x30 0x07- W, W' z% Q0 P, q9 u
i2cset -y -f 0 0x45 0x31 0x72) G: Y1 G' S1 O% N. `+ ]- x
i2cset -y -f 0 0x45 0x32 0x724 I& u3 t5 X1 A
i2cset -y -f 0 0x45 0x33 0x72
0 `5 J* q9 u# j#调节三个灯灯每周期上升沿和最高亮度时间2 c2 j1 ~, a: R6 \! [5 ^" d
#想要白色的话,把三个灯时间改为一样的就可以了,比如全部设为0x44
' Z! A; c7 k' ]' B6 v) Q( P, gi2cset -y -f 0 0x45 0x37 0x44$ Q1 V- ?& `, b) ~. g3 ~6 Q
i2cset -y -f 0 0x45 0x3a 0x55
, t8 E6 E& y+ L! {6 zi2cset -y -f 0 0x45 0x3d 0x667 y! B' T( [! ^: `& @; i
#调节三个灯每周期下降沿时间和关机时间& q- X2 k( A% x! Y! X4 w
i2cset -y -f 0 0x45 0x38 0x44' y+ \. p$ ^+ ]% P6 e( X3 V2 u3 m# L
i2cset -y -f 0 0x45 0x3b 0x555 N! o9 i/ p) v1 H' }( c7 ?
i2cset -y -f 0 0x45 0x3e 0x660 P2 Z4 E7 L. B) V
i2cset -y -f 0 0x45 0x39 0x40' B9 [4 ~" C% f7 S" j, R# C6 M: ?
i2cset -y -f 0 0x45 0x3c 0x40/ ?) x& w n; ?6 H/ L
i2cset -y -f 0 0x45 0x3f 0x40
/ z' x9 i6 \* ~3 t' ]3 B2 p; f# 0-255,更亮
7 L3 X* Y+ ~# M* Qi2cset -y -f 0 0x45 0x34 128: ^2 I( [: P2 @, @. F, [
i2cset -y -f 0 0x45 0x35 1285 _$ T, Q5 |0 B
i2cset -y -f 0 0x45 0x36 128
0 }1 b0 K: B' ]# J; b: ] : m% Z; |. w* Z; m
然后在这条设置里有一个“先行任务”,设置成上边的60秒,也就是60秒那条执行完才执行这条。而60秒那条,没有ip就会重启,有ip就完成了,就会执行亮灯# P$ b$ C! ]) n+ D0 s; D$ y
$ F$ K+ m9 L. l9 y
$ Y1 d- V% U$ D! d
我知道很多大神会做内核解决各种问题,我也知道看起来很小的问题,工作量是非常大的,可能要几个月才能解决,所以大神做的东西是不可能轻易免费发出来的,人家也要吃饭,不可能靠爱发电(我也在公司做简单的技术,知道技术无价的道理)。我从99年学电脑开始,绝大部分的东西都是从网上找来学的,所以非常感谢所有把知识发到网上共享的大神们。
. h7 Q5 M1 s, d5 W8 f
6 K6 v. d, O, f1 i希望大家有条件能测试一下这个方法,如果可行,请发出去让更多的人看到,如果有改进的方法,也请共享出来,因为这个方法换盘好像不方便。1 v# a) V0 ]1 |& g# E8 G
|
|