2012年3月19日 星期一

安裝 rTorrent 與使用 nTorrent

聽說 rTorrent 是目前在 Linux 下載速度最快的 bt 程式。

目前版本:
squeeze (stable) 0.8.6-1
whezzy (testing) 0.8.9-2

馬上裝最新的看看:
$ apt-get -t whezzy install rtorrent
跟 mldonkey 一樣,需要 screen 讓使用者離線仍可以繼續執行
$ apt-get install screen
新增設定檔 ( rtorrent.rc 範例 )
$ touch  ~/.rtorrent.rc 再加上編碼設定,可正確顯示檔案名稱
encoding_list = UTF-8
執行
$ screen rtorrent


使用 nTorrent 來進行遠端控制

下載程式 nTorrent-0.5.1

rtorrent 提供 xmlrpc 作為控制介面
而 xmlrpc 是使用 http 協定
所以需要透過 apache2 或是 lighttpd 提供服務
如果使用 rtorrent 0.8.6-1 以前版本,ntorrent 則會連線異常
因為 ntorrent 需求 xmlrpc-c 1.07 以上的版本

本次安裝選定 apache2
安裝 scgi 模組
$ apt-get install libapache2-mod-scgi $ ln -s /etc/apache2/mods-avalable/scgi.load /etc/apache2/mods-enable/scgi.load
/etc/apache2/httpd.conf 新增
SCGIMount /RPC2 127.0.0.1:5000
~/.rtorrent.rc 新增
scgi_port = 127.0.0.1:5000
啟動 apache2
$ /etc/init.d/apache2 restart
執行 nTorrent.exe,選取 SSH 連線,輸入 Debian User 的帳號/密碼
就可以連上了。

參考文件:
The libTorrent and rTorrent Project 
nTorrent - A graphical user interface client to rtorrent
using xmlrpc with rtorrent && ntorrent install

2012年3月17日 星期六

直上 squeeze/6.0 的 Debain 系統安裝

鑑於原系統已經被改爛了,又沒有備份的習慣,
所以只好含淚重新裝一個新的 Debian。

本次計畫直上 Debian squeeze/6.0,所以須要先安裝 u-boot。

首先,從原廠系統登入,
/mnt 應該就是 /dev/hda3,也就是被改爛的系統。
$ cd /mnt
再把 /mnt 下所有的檔案、目錄都移到 mysys.old 資料夾裡面備份。
哪天研發出解法就可以把舊系統給復活了  :-P
$ mkdir mysys.old $ mv XOXO mysys.old/
下載 Debian sarge/3.1
$ wget http://downloads.buffalo.nas-central.org/LSHG_PPC/Distributions/Debian/debian-sarge_powerpc-hdhglan-1.11.tar.bz2
解壓縮 Debian 系統
$ bunzip2 debian-sarge_powerpc-hdhglan-1.11.tar.bz2 $ tar xvf debian-sarge_powerpc-hdhglan-1.11.tar $ rm -f debian-sarge_powerpc-hdhglan-1.11.tar
切換到 /dev/hda3 的環境
$ chroot /mnt /bin/bash
設定 root 密碼
$ passwd
新增使用者與刪除 linkstation 帳號
$ adduser newuser $ passwd newuser $ deluser --remove-all-files linkstation
允許所有網域存取
$ echo "ALL : ALL" >> /etc/hosts.allow
設定網路
$ vi /etc/resolv.conf $ vi /etc/network/interfaces
重新開機,使用 u-boot 進入 /dev/hda3 系統
=> setenv bootargs root=/dev/hda3;bootm ffc00000
使用 telnet 進入系統
編輯 /etc/apt/sources.list,設定為 sarge/3.1 環境
deb http://debian.nctu.edu.tw/debian-archive/debian-security/ sarge/updates main contrib non-free deb http://debian.nctu.edu.tw/debian-archive/debian/ sarge main contrib non-free
安裝 ssh
$ apt-get install ssh
修改 /etc/ssh/sshd_config,禁止以 root 身份登入
PermitRootLogin no
登出,重新使用 ssh 登入

移除 telnet 服務
$ update-rc.d -f utelnetd remove $ rm /etc/init.d/utelnetd
修改 /etc/fstab 以修正 df 指令顯示結果。
/dev/hda3 要 mount 在 /mnt 下,不然機器會閃紅燈警告。
$ vi /etc/fstab
編輯 /etc/apt/sources.list,設定為 etch/4.0 環境
deb http://debian.nctu.edu.tw/debian-archive/debian-security/ etch/updates main contrib non-free deb http://debian.nctu.edu.tw/debian-archive/debian/ etch main contrib non-free
將 Debian 從 sarge/3.1 更新到 etch/4.0
$ apt-get update $ apt-get upgrade $ apt-get dist-upgrade $ reboot
想更新 Debian 系統到 lenny/5.0,kernel 需要 2.6.18 以上的版本

升級 kernel 2.6。(詳見 升級 LinkStation kernel 到 2.6)

kernel 更新為 2.6.25 了~
$ uname -r 2.6.25.20-svn365-dirty493
lenny/5.0 需要新的 Public Key,
安裝 debian-archive-keyring 以新增 Public Key
$ apt-get install debian-archive-keyring
編輯 /etc/apt/sources.list,設定為 lenny/5.0 環境
deb http://security.debian.org/ lenny/updates main non-free contrib deb http://opensource.nchc.org.tw/debian/ lenny main non-free contrib
將 Debian 從 etch/4.0 更新到 lenny/5.0
$ apt-get update $ apt-get upgrade $ apt-get dist-upgrade $ reboot
編輯 /etc/apt/sources.list,設定為 squeeze/6.0 環境 deb http://security.debian.org/ squeeze/updates main non-free contrib deb http://opensource.nchc.org.tw/debian/ squeeze main non-free contrib
將 Debian 從 lenny/5.0 更新到 squeeze/6.0
$ apt-get update $ apt-get upgrade $ apt-get dist-upgrade $ reboot
如果要再將 Debian 升級到 wheezy/7.0,kernel 需要 2.6.26 以上的版本

看來,要再研究如何編譯新版的 kernel 了。

wheezy 待續...

2012年3月13日 星期二

升級 LinkStation kernel 到 2.6

機器:LinkStation HD-HG300LAN

當初改機時所安裝的系統是 OpenLink,kernel 為 2.4.20。

kernel 須在 Debian etch/4.0 下升級。
若以 Debian sarge/3.1 進行升級,屆時會缺少 module-init-tools 套件。

步驟1. 確認狀態 (若出現 warning,請參照 Post-Installation)
$ [ -e /boot/variant-uboot ] && FSTW="s" || FSTW="h" $ [ -e /boot/variant-legacy ] && FSTW="h" $ grep -E "^/.* / " /etc/fstab | grep -v "/dev/${FSTW}d" && echo "fstab WARNING"
步驟2. 若有安裝 u-boot,請使用 variant-uboot 參數
$ mkdir /boot 2>/dev/null $ touch /boot/variant-uboot
步驟3. 下載 webinstaller
$ wget http://hvkls.dyndns.org/downloads/latest-webinstaller.tar.gz $ tar -C / -xvzf latest-webinstaller.tar.gz
步驟4. 安裝 kernel 2.6
$ /usr/local/sbin/webinstaller-kernelinst.sh
步驟5. 安裝完的後續
$ rm -r /boot/variant-notmp /kernel-inst 2>/dev/null 設定 avr_evtd (還沒研究出作用 :-p)

參考文件:
Linux Kernel 2.6 Installation on Buffalo Linkstation/KuroBox/HG/HS/Terastation
Linux Kernel 2.6 variants for Buffalo Linkstation/KuroBox/HG/HS/Terastation

u-boot 安裝筆記

LinkStation HD-HG300LAN 在原廠的環境 kernel 2.4.20 下安裝 u-boot:

先看一下 Flash ROM 的配置:
0xFFC00000, 3MB, firmimg.bin
0xFFF00000, 448KB, Boot loader

把電腦 IP 設定為 192.168.11.149,再把 LinkStation IP 設定為 192.168.11.150
(配合 U-Boot 1.2.0 環境變數的預設值)

DOS 視窗執行 nc:
C:\>nc -v -v -u -p 6666 192.168.11.150 6666
先把 Boot loader 用 u-boot 置換。
再刷含 kernel 2.4.33 與 telnet 的 firmimg.bin ,可於 EM Mode 登入系統救援。(詳見 Uboot firmimg.bin ppc)
最後別忘了比較一下 Flash 與檔案內容是否一致。

LinkStation 執行:
$ wget http://downloads.buffalo.nas-central.org/LSHG_PPC/Bootloader/Uboot/Precompiled/u-boot-lsppchg-flash-1.2.0-r2.bin $ wget http://downloads.buffalo.nas-central.org/ALL_LS_KB_PPC/Bootloader/UBoot/FirmimgBins/linux-2.4.33.3-list.mg.2-v3/firmimg.bin $ dd if=u-boot-lsppchg-flash-1.2.0-r2.bin of=/dev/mtdblock1 bs=1k $ cmp u-boot-lsppchg-flash-1.2.0-r2.bin /dev/mtd1 $ dd if=firmimg.bin of=/dev/mtdblock0 bs=1k $ cmp firmimg.bin /dev/mtd0 $ reboot
reboot 後 DOS 視窗輸出:
C:\>nc -v -v -u -p 6666 192.168.11.150 6666 192.168.11.150: inverse host lookup failed: h_errno 11004: NO_DATA (UNKNOWN) [192.168.11.150] 6666 (?) open U-Boot 1.2.0 (Apr 10 2007 - 19:13:32) LinkStation HG / KuroBox HG stdin : nc stdout: nc stderr: nc IDE: Bus 0: OK Device 0: Model: SAMSUNG HD300LD Firm: WK100-12 Ser#: S0A4J1TL527572 Type: Hard Disk Supports 48-bit addressing Capacity: 286168.1 MB = 279.4 GB (586072368 x 512) Boot in 01 seconds ('s' to stop)... Loading 0:1:boot/uImage ** Unable to read "boot/uImage" from ide 0:1 ** ** Unable to read "boot/kuroboxHG.dtb" from ide 0:1 ** ## Booting image at ffc00000 ... ******* Product Information ******* ---------------------------------- Product Name: HD-HGLAN(IEMITSU) VER: 2.08 Date: 2006/2/9 12:0:6 ---------------------------------- Verifying checksum... OK Uncompressing kernel...done. Loading Ramdisk at 0x07C6C000, end 0x07E6E31A ... OK Booting the kernel
#$%&@,出現錯誤訊息,想說死定了...
還是研究一下文件,看是發生啥事。

拜讀文件後發現:
u-boot 如果沒有被暫停,會執行 "boot" 指令。
(按 "s" 再按 "Enter" 即會暫停,出現 u-boot 的提示符號 "=>")

使用 u-boot 預設變數轉換 "boot" 指令後就是:
=> run echo Loading 0:1:boot/uImage; ext2load ide 0:1 800000 boot/uImage; ext2load ide 0:1 7f0000 boot/kuroboxHG.dtb; ...
原來 u-boot 預設值就是嘗試從 /dev/hda1 的 /boot 載入 kernel image 檔。
原廠系統當然沒有 kernel image,所以才會出現錯誤訊息。

所以我們只要執行 run flboot 就可以進入原來的 /dev/hda1 系統了
( run flboot 是讀取 ffc00000 的firmimg.bin )
=> run flboot 或者 => setenv bootargs root=/dev/hda1;bootm ffc00000
指令
boot    - boot default, i.e., run 'bootcmd'
bootm   - boot application image from memory 
ext2load- load binary file from a Ext2 filesystem and into memory at the specified address.  

變數
bootcmd=run bootcmd1
bootcmd1=run hdboot;run flboot
hdboot=run hdload boothd
flboot=setenv bootargs root=/dev/hda1;bootm ffc00000 
hdload=echo Loading ${hdpart}:${hdfile};ext2load ide ${hdpart} ${ldaddr} ${hdfile};ext2load ide ${hdpart} 7f0000 boot/kuroboxHG.dtb
hdpart=0:1
hdfile=boot/uImage
ldaddr=800000

切換到 /dev/hda3,kernel 2.4 系統的指令
=> setenv bootargs root=/dev/hda3;bootm ffc00000
升級 kernel 2.6 後,預設從 /dev/hda3 啟動,則要修改變數:
=> hdpart=0:3 => boothd= 'setenv bootargs root=/dev/hda3;bootm ${ldaddr}' => saveenv
進入 EM Mode,使用 "mount_disk" 指令可掛載 hda1和 hda3。
$ mount_disk
參考文件:
Linkstation上U-BOOT 
U-boot Default Environmental Variables and Values 
U-boot bootloader
Kurobox support in stock 2.6 kernels
Uboot firmimg.bin ppc
Information/HGFlashROM
使用檔案: 
nc111nt.zip 
u-boot-lsppchg-flash-1.2.0-r2.bin 
firmimg.bin 

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)

2012年3月1日 星期四

變成磚頭的 LinkStation HD-HG300LAN

我的 LinkStation HD-HG300LAN服役也快六年了,
平常就是拿來當 NAS (Network-attached storage),
並用 mldonkey 養養小動物。

最近對 mldonkey 抓 BT 的效能並不滿意,所以想裝 transmission 來玩玩。

先進行更新,準備安裝:
$ apt-get upgrade
太久沒更新了,出現錯誤。
...The following signatures couldn't be verified because the public key is not available...
原來 public key 還會過期喔,果然太久沒更新了
新的Key: https://ftp-master.debian.org/keys.html

接下來對 /etc/apt/sources.list 編輯。
我的 LinkStation kernel 2.4 只能更新到 etch (Debian 4.0)
所以改成直接指定 Debian 的版本:

ㄚ勒...etch 太舊,已經被搬到 archive.debian.org 了
/etc/apt/sources.list 要改成這樣:
deb http://archive.debian.org/debian/ etch main non-free contrib
一直沒嘗試升級 kernel 2.6,所以就參照網路文件,大膽的嘗試升級,也很順利的成功了。
再接再厲,再把系統升級到 lenny (Debian 5.0),重開機,就出現令人膽寒的 Diag 閃六下了...
莫非 LinkStation 已經變成俗稱的磚頭 (brick) 了?

上網再查才發現,kernel 2.6 只能把 Debian 版本維持在 etch。
如果升級到 lenny 以上的版本,重新開機後將會卡在某開機步驟。

燒壞的光碟還能當杯墊,變磚頭的 LinkStation 能拿來做啥呢?



LinkStation 能否擺脫磚頭的命運呢?
請看下集: 搶救 LinkStation 大作戰