只放一些对自己有用的东西,不喜勿言!哈哈哈哈哈哈哈

linkstation u-boot 详解

上一篇 / 下一篇  2008-10-30 00:58:17 / 个人分类:电脑技巧

在跟這隻動物機奮戰一星期後~~終於讓他能安全的在partition 2開機了~~钱塘个人空间9TUmF7n1pY(x6LM"D
由於之前幾乎沒碰過Embbed Linux System~~
]0qMTX'v;pb{0所以缺乏在Linux上的經驗與知識. 請各位大大不要見怪.钱塘个人空间ys.F6u x\
有錯誤的地方, 也請幫忙指正. 若有引用連結不妥的地方也麻煩告知.钱塘个人空间5j^ox Vn
钱塘个人空间)|t-Q3Z*j
钱塘个人空间D2U2H!E2[X
在這分享我的苦戰過後的經驗與心得 :D
(I)|(c"a:tn$@N f0钱塘个人空间1p0{ i5@ ]G"^

&a[*tFu&h0請注意這程序只適用於HG的機器, 其他型號請供參考, 請勿直接套用. <_< 钱塘个人空间w$JG(H7GK@^#b
這些動作請在改機完成後執行.钱塘个人空间kr#u:`Z+r,J#a`

KtUv7C%T8tH0
l ^.h bli0請先確認/dev/hda1/和/dev/hda3/上的os是否能連上internet.
t*G V` P]e0
  • /etc/hosts.allow
  • /etc/resolv.conf
  • /etc/network/interfaces

D!rPL1v tPI0尤其是/etc/network/interfaces網路設定是否設對, 並測試wget是否能正常運行, 並從internet下載檔案.
j D5[7uQ3K Q0
钱塘个人空间D`/I:xC:y ku
钱塘个人空间 U`l Cft

#Ocn9\+\H u.M!A ?0NT0u-Boot動物機改機開始~~~~:lol: 钱塘个人空间~vWTd6AF l

"T,j8M I1n$v6e-r9X Q0
l.iT!y)pP1H01. 請安裝hvkls.dyndns.org的WebInstall幾uBoot loader在/dev/hda1和/dev/hda3上.
,RJ _yd [4i/t(h/w0
钱塘个人空间zK.k(hw-E2v
钱塘个人空间M`(x3i,v*hza,q7u,n
請參考
nl x:JU_ kF0Installing 2.6.* Kernels on Buffalo Linkstation · Kuro Box · Kuro HG
(? b-d"Y~UrK{4R&E0钱塘个人空间gE9bgz7t
程式碼

0R Q0GJ/CgM};Y_0#wget http://hvkls.dyndns.org/downloads/latest-openlinkhelper.tar.gz钱塘个人空间%KEh1Kz'j7W/a
#tar -C / -xvzf latest-openlinkhelper.tar.gz钱塘个人空间N8c b5^2S0|~ B2T$ux,zB
#chmod 1777 /tmp
8?4`+I_ QB+[0
u8f E`Gr0

;bahnw;Y\ypv3J0钱塘个人空间 TP7a5?"s#rwo/^9g)]w

t2f["M/A0修改AVR-EVT的設定(ps. 不確定為何要改):钱塘个人空间6NTW.`Loc,Q0Ld
程式碼
钱塘个人空间 K#d7x:P;\q*~ {
#wget http://hvkls.dyndns.org/downloads/latest-upgradehelper.tar.gz
f%``/~m r0#tar -C / -xvzf latest-upgradehelper.tar.gz钱塘个人空间SIJ7^fS_Y
#vi /etc/default/avr_evtd.sample
#xFrX!R RON0#cp /etc/default/avr_evtd.sample /etc/default/avr_evtd
J'`4y-N^H)z#J9kB/k0#/etc/init.d/avr_evtd restart
_%G_L8|0
:NR7U/o"evAG0

7tL k6} ]0钱塘个人空间qQu*ke L%p:X1C
使用/usr/local/sbin/kernel24.sh或/usr/local/sbin/kernel26.sh script來reboot切換kernel.
*Z0xt6YID2V!l0钱塘个人空间e-n3w5Xq
當使usr/local/sbin/kernel26.sh重開後, 安裝HG flavor selection, u-Boot loader~钱塘个人空间{rv hm/Q?
程式碼
钱塘个人空间Yx%q2_b)I7w
#touch /boot/variant-ug钱塘个人空间D7O G#@"m
#wget http://hvkls.dyndns.org/downloads/latest-webinstaller.tar.gz
;gyT-^'Oz0#tar -C / -xvzf latest-webinstaller.tar.gz
n:lJ] ? _A0#/usr/local/sbin/webinstaller-kernelinst.sh
l#D!Msdl0
YL_/R'v}0

c8Xwn!x6Qir+t0
%AMA z}x0請依上述動作裝在/dev/hda1/的hd kernel, 並用swaphd切換partition到/dev/hda3/裝在Debian linux上.
|&\%ApO-UJ~.]0钱塘个人空间9aD e,Tu

(B1m Fkg0pz t02. 取消Debian linux啟動時會執行的swaphd的動作.钱塘个人空间 `S_ g L#_2{LCxU
钱塘个人空间 Ee7Ki~(W&{4[#xW{
在/dev/hda1/使用swaphd和reboot, 登入/dev/hda3/的Debian linux~~
Am$g.L`*VF6v0請先確認size較大的partition是不是在/dev/hda3.
/| ?M%GsF'td0
;Y A/Vp!d:m0
程式碼
钱塘个人空间3NC#j zz-f cp3V
LinkStation:~# fdisk -l
0eF-LzC-B]0Disk /dev/hda: 250.0 GB, 250059350016 bytes
;G2R] gV [0L*hwk)S!M0255 heads, 63 sectors/track, 30401 cylinders钱塘个人空间]f [r"V
Units = cylinders of 16065 * 512 = 8225280 bytes
7E:mwIp rP.K0钱塘个人空间r J Ns3sx/]fwz4T?
  Device Boot      Start         End      Blocks   Id  System
5AZ3g+K@Icf E0/dev/hda1               1          48      385528+  83  Linux
~ jm$H[/bxsI0/dev/hda2              49         114      530145   82  Linux swap / Solaris钱塘个人空间;bEf!|)~7?n&}om
/dev/hda3             115       30393   243208036   83  Linux
K_.W r]0/dev/hda4           30393       30401       72291+  83  Linux钱塘个人空间YUZQ;OG!k

c(T:O8uZ%xJB,e0钱塘个人空间l)q"e3M k?
取消Debian linux啟動時會執行的swaphd.sh的動作, 因為swaphd會修改mbr, 導致直接從u-boot開機到/dev/hda3/的partition 2被swap到partition 0, 導致u-boot欲開機的partiton錯亂.
3`I&Nmp6WHn @_0

)o)~\DJ^ s0钱塘个人空间]` \|"Q7[
所以請在/dev/hda3/的Debian Linux中使用下列命令取消開機執行swaphd.sh的動作.
R2f4zvpa0
程式碼

]Q F5g9oH(g/Q0#cd /etc/init.d/钱塘个人空间w?9y|lyC1p
#/etc/init.d/update-rc.d -f swaphd.sh remove钱塘个人空间giI`&^(uw
钱塘个人空间c3q r0m)e
钱塘个人空间4S'f@4ULr J ?U!c
未來開機切換將交由u-Boot取代.钱塘个人空间?9ey ^1u_p2e

+y3cd1HVf2\P0
1k7oMK9~8a Y E/~03. 請下載netcat.
!_2d$P)x@0
钱塘个人空间FU]&j}`}1d|A
NetCat for windows钱塘个人空间4z)R f5K0r9m
因為這是個類似Hack tool的工具, 似乎防毒軟體會認為有安全風險而發出警告, 請取消這軟體的安全風險.
(Do"@F/ZV3|$aVq a&A0钱塘个人空间XH-[(u)V
钱塘个人空间 AMwu@"] h x
4. 暫時更改監控電腦的IP至192.168.11.149.钱塘个人空间&OQ!BV#tJ+P:l
钱塘个人空间7z4} \ Px.XbG
請將欲使用netcat來監控u-Boot的電腦設在192.168.11.149.
iP?:v"X5I J*a C ds:f0钱塘个人空间1Qq`GI E1n
因為目前u-Boot 2.1.0 for HG已編譯可直接下載的flash ROM預設環境變數設在此.钱塘个人空间f,` @.| sr5y

4U ]3rx/m vuv0如果將u-Boot flash至ROM後, 不使用netcat和預設得電腦IP監控u-Boot開機, u-Boot將一直嘗試跟netcat連線而使得u-Boot功能無法運作.
pz"F#yV5W~0無法運作時會發現Power LED緩慢閃爍, 但用來切換boot command的Power Button無法工作, 需等個5~6分鐘才能因timeout而進入系統.钱塘个人空间]wxx kW7G
钱塘个人空间fk%b,CM9H4t_Y~
可用AP的DHCP手動指定功能, 將監控電腦的MAC Address固定在192.168.11.149.
r*bF'L/j4e-fa0而將HG NAS的MAC Address固定在192.168.11.150.
P.|0w[x/y[7Z(f*P0
E9oC\g v,m3uA!x0钱塘个人空间#o x'O Q0dY:cY$X
5. 寫入u-boot和firmimg至Flash ROM.
Z0sfb n1oi,StE]0

Wx/aWZWl6o0請下載钱塘个人空间j z p.WC;m1g n4q
firmimg钱塘个人空间9e[$_c+el&rw
這flash ROM能提供EM mode的維護工具, 讓發生錯誤時能緊急維修, 也能讓誤入EM mode的人不會因不知道LinkStation root密碼而被鎖在EM mode中.
"UX+j3X_s0钱塘个人空间!g p@2P0}-Z h
請下載钱塘个人空间bM$oJ/H:i4v
u-boot 2.1.0 for HG钱塘个人空间-{)PrH-K9z }oc1u
or
n0G'w!ttHC c(fL0u-Boot 2.1.0 for HG钱塘个人空间8iw3i:] x7c
這兩版版號一樣, 不過編譯日期後面的比較新, 請挑一個用~~钱塘个人空间.A/w"hd;OH
钱塘个人空间'C$a]|0w3~#Z$U/q
進入/dev/hda1/開始更新
0\V Z:{?0
程式碼
钱塘个人空间 j5WR7|#~T5w
# cat /proc/mtd钱塘个人空间&d2F5k ]qp
dev: size erasesize name钱塘个人空间k8Mh l8B Z w'\
mtd0: 00300000 00010000 "mtd0"
A(luZ.MFj }0mtd1: 00070000 00010000 "mtd1"
o(U@-F cNf[$D"|0d1x0mtd2: 00010000 00010000 "mtd2"
"Gz*ylE+l*a5e)}0mtd3: 00080000 00010000 "mtd3"钱塘个人空间X~%W*M:M
mtd4: 00400000 00010000 "mtd4"
4un5|1I%qNf0钱塘个人空间5l@5s^Y;x
#cd /mnt/share/钱塘个人空间'Q*K.r'P{ Q3v+v
#mkdir u-boot
b7t)}0O2M5gV%P0#cd u-boot钱塘个人空间Dft*|e G
钱塘个人空间bn5c2Zoc
#wget http://downloads.linkstationwiki.net/flash_development/PPC/uboot/u-boot-firmimg.bins/linux-2.4.33.3-list.mg.2-v3/firmimg.bin钱塘个人空间2P+UX7MaKV!O.L
钱塘个人空间,y K I8t d1x@
#wget http://www.genbako.com/u-boot_loader/u-boot-hg.flash.bin钱塘个人空间5fSH:t,v a$Ho
钱塘个人空间 I:n/P-i1ZQ
#dd if=u-boot-hg.flash.bin f=/dev/mtdblock1 bs=1k钱塘个人空间vX s5z:V$P)K
171+1 records in钱塘个人空间Ypg r0~H9sS4b
171+1 records out
,z7qP;w};@0#cmp u-boot-hg.flash.bin /dev/mtd1钱塘个人空间~5sH;E#O[]
cmp: EOF on u-boot-hg.flash.bin钱塘个人空间/fN_Rq'o#g)e(A

4ku{&E:o*EnWy~0# dd if=firmimg.bin f=/dev/mtdblock0 bs=1k钱塘个人空间'F,RH.sM'n
2921+1 records in
R2U*p3a;rQg DC!z02921+1 records out钱塘个人空间lQH%M%|vo
#cmp firmimg.bin /dev/mtd0钱塘个人空间1Ne(p:K'Jn
cmp: EOF on firmimg.bin钱塘个人空间N?#zp mn!{5gc
钱塘个人空间6n2tN)}!\ |vz
#reboot钱塘个人空间-Y[)H)T~E WK

'K/oG4S R] fXa0
钱塘个人空间 QL3@0H\b

3dZU*L \~.ee0
BL#{6fv&j0K5j06. 在reboot請先用Windows的DOS window開啟netcat監聽钱塘个人空间3r6V g(])xw9[~U

?4^R sH:gb WA)E _0請輸入钱塘个人空间4[b OPa?w \g&p
程式碼
钱塘个人空间u C/EvK-^
nc -v -v -u -p 6666 192.168.11.150 6666钱塘个人空间)PW4l8p VU
钱塘个人空间6p!|4C'D}2?~uq
钱塘个人空间w9[]R*fvu8D

'C^ []2E.S.G1l%V0成功監聽會看到以下訊息, 請按鍵盤s鍵, 停止boot程序.
^-p A} K*s0
程式碼

nV o9No2KC1e0>nc -v -v -u -p 6666 192.168.11.150 6666钱塘个人空间4s(Kd,I1B(a
钱塘个人空间OuX/f4gM K
U-Boot 1.1.4 LiSt 2.1.0 (Sep 21 2006 - 00:14:53) LinkStation HG / KuroBox HG
6X"\ cO+?v _x+D0stdin :   nc钱塘个人空间 }0a;z&n8q XML
stdout:   nc钱塘个人空间|'e`q Nl1AsB n
stderr:   nc
5@Z%e+Hc&r_0IDE:   Bus 0: OK
#VF"q:|y3S'i0 Device 0: Model: WDC WD2500BB-55GUC0 Firm: 08.02D08 Ser#: WD-WMAL73748391
t9a0dq]:X0           Type: Hard Disk
h h;vfbni,c(K:i0           Supports 48-bit addressing
Ibe.uR1u8j?0           Capacity: 238475.1 MB = 232.8 GB (488397168 x 512)
JI1_F l)n:@d0Boot in 09 seconds ('s' to stop)...钱塘个人空间*X)Nq;F#X4j

*x)]pHf'b:q2Ud0

1}l\'r+l `J6\0钱塘个人空间'[2D}C:I4e-qL%_

-Aqjt ` RUW h07. u-boot更改環境變數及設定並寫入ROM中.
+mt8?(J}:R0
  • printenv: 可列出目前的環境變數.
  • setenv: 可設定環境變數. 設定(setenv 'name' 'value'), 移除(setenv 'name')
  • saveenv:將環境變數寫入Flash ROM中.
  • boot:boot到default的設定去.
  • run upgrade: 使用"\mnt\share\u-boot\u-boot-hg.flash.bin"更新u-boot Flash ROM.
钱塘个人空间 Q @c`w+NQ
首先關閉netcat retry~~防止沒有開netcat時, boot process卡住的問題.
"mv2g6PaEO x5lFj0
程式碼

/kudQ9@ @8Gcv.L0#setenv 'netretry' 'no'
#M6b%M!|/y#\8W0
#nP?R3@,? y$Rfk"R0

HZ+S$}/sXr0钱塘个人空间Usy/z:l%w,t
如果想要監聽的電腦是位在其他固定的IP上(非192.168.11.149)~钱塘个人空间)D} {)M0@+I
請更改netcat要監聽的電腦的IP, 可設定serverip和ncip來更改.钱塘个人空间 B8z(~.m:G0Q+Z(l
钱塘个人空间 \3?d3d&S
舉例, 如果你監聽的電腦IP是 192.168.11.2, 你要下的命令是
TJ#M]than0
程式碼
钱塘个人空间{wpN1G lM1j$a
#setenv 'serverip' '192.168.11.2'
X(W'I@ o*m0#setenv 'ncip' '192.168.11.2'钱塘个人空间x5F[!~,xmolNd w
钱塘个人空间 w9s*~H)R
钱塘个人空间Gw@Izh&I%d

&u ^.j-Iv"C X/W0如果想要HG是位在其他固定的IP上(非192.168.11.150)~
j9h0z^)Xvh0a/R0可設定ipaddr來更改.钱塘个人空间MX'U)F!d$O+`6N,f

7lb;c9z!JB0舉例, 如果你的HG IP是192.168.11.3, 你要下的命令是钱塘个人空间g'O ~y2{Z:r:o4PW
程式碼
钱塘个人空间cdqn]
#setenv 'ipaddr' '192.168.11.3'
4?*{.O+|!?9B)ZF9c0钱塘个人空间8w/\w f I[:Il
钱塘个人空间@:`9fio|N
钱塘个人空间7W$]0j`;C?gJ7Fk
如果想要預設開機在/dev/hda3/在Debian Linux~~钱塘个人空间!|b X+t+U RzocL
你可以使用以下的命令,
JYD"RN@`I1{ X |0
程式碼
钱塘个人空间I O5P7h-E&{ A{
#setenv 'hdpart3' '0:3'
K6Wz Yd8fuF0#setenv 'hdload3' 'echo Loading ${hdpart3}:${hdfile};ext2load ide ${hdpart3} ${ldaddr} ${hdfile}'钱塘个人空间-QE f;r#r1L
#setenv 'boothd3' 'setenv bootargs root=/dev/hda3;bootm ${ldaddr}'钱塘个人空间"f"|v,v)dVe
#setenv 'hdboot3' 'run hdload3 boothd3'钱塘个人空间x/KM9dU
#setenv 'bootcmd4' 'run hdboot3;run hdboot;run flboot'
s8Lw)f;DG0#setenv 'bootcmd' 'run bootcmd4'钱塘个人空间f:zY p l

8DH~5p}[]2[(\0
钱塘个人空间].K/a w~7L5Ls

)^;IWq w0*最後一行的意思是將預設的boot設定在bootcmd4, 也就是選用/dev/hda3/ partition 2來boot.
J xJ9\$F|IXT@0
#Q\2|W$]0最後, 請記得使用saveenv將環境變數寫入Flash ROM中.钱塘个人空间nd\4e+k@{/n
程式碼

V)Ac:SKzX*?0#saveenv
&Zm-CG#GB%Dta0钱塘个人空间\]#^zz

5_*@4{0q9brbQ0
c0U _3I`(P~ W0*如果沒使用saveenv寫入, 則用來測試, 可以先使用boot指令測試看看有沒寫錯, boot後是不是開機到正確得地方. 不過reboot後, 之前寫入得資料會全部消失, 所以得全部再輸入一次.
^A7A_5e|0
2?K ? f!B*B3|9T0這樣以後重開就能直接啟動Debian Linux而不用一天到晚開機都要登入LinkStation輸入"swaphd"切換partition了. :D
V4C#~*?"HU1l0钱塘个人空间 roMaq~

"e9e-a-v q ]08. 關於u-Boot boot command切換.
"s([DY~|$yb8aw0

oxa_ E'? P Qv0u-boot使用Power Button和Reset Button來切換的.
$f,W[+E6N y0請注意Power LED燈號, 剛reboot時, Power LED燈號會閃爍, 開機延遲是10秒, 如果要使用Power Button選擇開機模式, 請在10秒內用長壓Power Button1秒鐘, 會有stop booting的效果.
  • 這時按Power Button一下, DISK FULL的紅色HDD LED會以固定頻率閃爍約5秒鐘, 表示你要用bootcmd1 hdd boot, 也就是/dev/hda1來開機.
  • 再按Power Button一下, HDD LED會以固定頻率快速閃爍2次約5秒鐘, 表示你要用bootcmd2 fail boot, 也就是link station ROM boot來開機.
  • 再按Power Button一下, HDD LED會以固定頻率快速閃爍3次約5秒鐘, 表示你要用bootcmd3 EM mode boot, 也就是要進入EM Mode開機, 做緊急維修.
  • 按Reset Button一下, HDD LED會以固定頻率閃爍約5秒鐘, 表示你要用serial console來監聽.
  • 再按Reset Button一下, HDD LED會以固定頻率快速閃爍2次約5秒鐘, 表示你要用net console來監聽.

:R }'@b tm0gn.^`*u0當選完決定開機選項後, 等待5秒HDD LED不閃爍後, 長壓Power Button約1~2秒, 钱塘个人空间U f:PB/h&j
Power LED燈號會以很緩慢的速度閃爍, 這時就會開始開機了. :P 钱塘个人空间H5?+Qc4C

TAG:

引用 删除 tHE R   /   2008-12-26 05:16:32
轉錄的話最好也寫一下出處喔…
引用 删除 Guest   /   2008-11-20 12:27:47
-3
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar