2012年3月12日 星期一

搶救 LinkStation 大作戰

前情:變成磚頭的 LinkStation HD-HG300LAN

抱著死馬當活馬醫的心態,
參考 Recover a non working "bricked" Linkstation 的搶救方法,
果然如預期般都無效。

只好把 LinkStation 給拆了...

拆開後取出硬碟,
準備一台救援用的電腦,新版的 Knoppix Live CD,
硬碟接上 PC 的排線,或是接 IDE轉USB 的轉接線。

Knoppix 以 Text Mode 啟動:(按 F2 可提示開機參數)
boot: konppix 2
系統啟動後,找尋待救援硬碟的代號
$ dmesg | grep -e hda -e hdb -e sda -e sdb
這邊找到硬碟的代號是 sdb。
試著掛載 /dev/sdb1 和 /dev/sdb3 看看,
Buffalo 在原本的磁區有做手腳,所以有一個會掛不上。
$ mkdir /mnt/sdb $ mount /dev/sdb1 /mnt/sdb1 $ mkdir /mnt/sdb3 $ mount /dev/sdb3 /mnt/sdb3
經測試確認,Debian 系統在 /dev/sdb1,原廠系統在 /dev/sdb3
所以要把兩個磁區對調,回復成出廠狀態。
$ cd /tmp $ wget http://www.geishuettner.de/docs/Linkstation/debil-0.1.tgz $ tar zxvf debil-0.1.tgz $ debil-0.1/swappart_x86 /dev/sdb /dev/sdb
這樣就完成急救步驟了。
接下來把硬碟裝回 LinkStation。

安裝 u-boot。(詳見 u-boot 安裝筆記)

經過一番研究後,發現搞掛的 Debian 系統是可以救的回來的。
既然我是按照 Linux Kernel 2.6 Installation on Buffalo Linkstation/KuroBox/HG/HS/Terastation 升級 kernel 2.6,
解鈴還須繫鈴人,就到 http://hvkls.dyndns.org/downloads 挖寶。
先查看一下 Debian 系統,kernel 2.6 的版號
$ cat /boot/version r376-v117
再下載 legacy-kernel-uboot.tar.gz
查看裡面的 version 內容
r376-v117-uboot 賓果!

只要複製 legacy-kernel-uboot.tar.gz 裡 uImage 和 kuroboxHG.dtb 這兩個 kernel image 到 /boot 下,
就可以成功啟動 kernel 2.6 的 Debian lenny/5.0 了。

我的系統終於救回來了!

因為進入 Debain 系統會自動執行 swaphd,所以再執行一次回到出廠狀態 $ swaphd 不再需要 swaphd.sh 了
$ update-rc.d -f swaphd.sh remove

附記:
Tip: 如果懶的接網路,那可先將資料複製到隨身碟,然後再掛載上去
$ mount -t ntfs /dev/sdc1 /mnt
Tip: 如果想知道掛不上的磁區內容,可以用 fix_ext2_magic 修正。
$ cd /tmp
$ wget http://www.geishuettner.de/docs/Linkstation/files.zip
$ unzip files.zip
$ fix_ext2_magic --fix /dev/sdb3
$ mount /dev/sdb3 /mnt使用完不要忘記再把 "手腳" 給做回去。
$ umount /mnt/sdb3
$ fix_ext2_magic_back --fix /dev/sdb3
曾想要 chroot 到 Debian,進行系統降級  (lenny/5.0 -> etch/4.0)

嘗試1:
Knoppix 開機後掛載 Debian 系統
$ mount /dev/sdb1
$ chroot /mnt/ /bin/bash
chroot: failed to run command `/bin/bash': Exec format error.失敗。因為在 PC (x86) 裡無法 chroot 到 LinkStation (powerpc)。

嘗試2:
硬碟 swap 回出廠狀態,以 LinkStation 開機後掛載 Debian 系統 
$ chroot /mnt /bin/bash
FATAL: kernel too old失敗。因為以 kernel 2.4 無法 chroot 到 kernel 2.6 環境。
如果忘記取消 swaphd,LinkStation 就會開不了機
此時只要進入 EM-Mode,執行 swappart_ppc 即可
$ mount_disk
$ cd /mnt/hda3/bin
$ swappart_ppc /dev/hda /dev/hda
$ reboot
參考資料:
Recover a non working "bricked" Linkstation 
Linkstation的diag led閃六下怎麼辦... 
Hacking Howto for the Linkstation HD-HxxxLAN(F) 
Linux Kernel 2.6 Installation on Buffalo Linkstation/KuroBox/HG/HS/Terastation 

使用檔案:
ADRIANE-KNOPPIX_V6.7.1CD-2011-09-14-EN.iso
debil-0.1.tgz (swappart_x86)
files.zip (fix_ext2_magic, fix_ext2_magic_back)
legacy-kernel-uboot.tar.gz (uImage, kuroboxHG.dtb)

沒有留言:

張貼留言