2015年3月23日 星期一

傻瓜編譯法 Transmission 2.84 for Buffalo Link Station LS-WVL NAS.



這是一篇心得的文章
算是一點紀錄吧

主要是怕自己忘記
順便分享給大家

現在 NAS 很流行
話說有些人喜歡拿自己的 NAS 改來改去
我不是那種人

買NAS主要為了懶~~~
省事,省時,省電


不過現在的入門型 NAS performance 實在很強
四千元有找就有 Dual-core 1.2 GHz CPU plus 1 GB  or 512 MB 的記憶體
簡直一台小型的電腦
不但是很省電( 一般是 NB 的 三分之一 )





最重要最重要最重要就是 RAID 1  !!!!!!!!!!

簡單說 RAID 1 就是兩個硬碟內容完全相同
萬一其中一顆硬碟掛點了
還有另外一顆硬碟可以把資料救回來
有時候幹嘛這樣做呢?


硬碟的價錢有限
但是硬碟裡的照片回憶無價阿~~~


只拿來存檔案
當SAMBA 網路芳鄰檔案伺服器好像有點大材小用了點
有時候內建的 BT 軟體不滿意
或是想加個 Daemon or Server 就可以 DIY
例如加個 Proxy , 當 NAT 分享皆可


下面是我的 Buffalo NAS 組態














256 MB RAM ,  Marvell Feroceon ARM v5  1.6 GHhz CPU.


Cross compile tool-chain 可到下面的網站免費取得
http://buffalo.nas-central.org/index.php/Precompiled_C_Cross-Toolchain


Check 一下我的 GNU Lib  版本



我抓的是  Linux 版的 tool-chain
在 Windows 下面 compile Linux 東西一直讓我很不習慣~~~~~XD

接下來
就是下載免費的 VMWare player
然後裝個 Fedora 編譯
都是免費的 XDDD



這個 NAS 我主要要的是 RAID 1
其他空空如也
沒關係
root 後自己慢慢加就可以了

有這麼多 RAM 空在那裏
沒有跑點甚麼實在可惜

最主要是內建的 BT client 版本又舊又慢阿 ~~~
等官方的 Patch 那.....


當然是先 download 囉 !!!
我也是千百個不願意搞自己阿
但是我試過了 ~~~ 找不到可以跑的


這裡分享一下 Compile Transmission 的經過
用最簡單的方式
希望讓有緣人可以
看是要加啥功能都可以


這個 Transmission 用最簡單的 configuration.
沒有 UI, GTK, QT 所有其他的東西

用 Fedora 16 編譯
Tool-chain 是網路上找的
建議各位可以到下面網站註冊
配合 NAS 上面的 Glib 版本下載
新的不見的穩


輸入===> #  /lib/libc.so.6
GNU C Library stable release version 2.5, by Roland McGrath et al.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.2.0 20070413 (prerelease).
Compiled on a Linux >>2.6.17-12-generic<< system on 2007-10-15.
Available extensions:
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        GNU libio by Per Bothner
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
        Native POSIX Threads Library by Ulrich Drepper et al
        Support for some architectures added on, not maintained in glibc core.
        BIND-8.2.3-T5B

看看這些資訊就可以參考看看了

Tool-chain 下載網址
要註冊一些資訊
有依照各種CPU提供 
相當不錯
https://sourcery.mentor.com/GNUToolchain/

下載了 transmission-2.84後
有幾個 lib 要先 compile

首先,
為了可以方便可以直接撈到 compiler 所在
我家了下面敘述到 .bash_profile
PATH=/home/steve/arm-2007q3/bin:$PATH:$HOME/.local/bin:$HOME/bin
我的 cross-compiler 在 /home/steve/arm-2007q3/bin 這個位置


Build openssl:
[steve@fedora32 openssl-0.9.8zc]$ cat build.sh
CC=arm-none-linux-gnueabi-gcc ./config no-asm no-shared zlib no-krb5  -I/home/steve/zlib-1.2.8 -L/home/steve/zlib-1.2.8 && make -j4


Build libevent:
[steve@fedora32 libevent-2.0.18-stable]$ cat build.sh
./configure --enable-shared=no --host=arm-none-linux-gnueabi && make -j2


Build zlib:
[steve@fedora32 zlib-1.2.8]$ cat build.sh
CC=arm-none-linux-gnueabi-gcc CFLAGS=-O2 ./configure  && make -j2


Build CURL:
[steve@fedora32 curl-7.39.0]$ cat build.sh
./configure --host=arm-none-linux-gnueabi   --with-ssl=/home/steve/openssl-0.9.8zc  CFLAGS=" -I/home/steve/zlib-1.2.8 -I/home/steve/openssl-0.9.8zc/include "  LDFLAGS="-L/home/steve/openssl-0.9.8zc -L/home/steve/zlib-1.2.8 -ldl "


呼~~~
Linux 的東西就是這樣
dependency 太多
每次要build target 要先把祖先都給拜過一遍
運氣不好還得改祖先的程式才 OK

終於終於
最後最後
Build transmission 2.84

[steve@fedora32 transmission-2.84]$ cat build.sh
 ./configure --host=arm-none-linux-gnueabi --enable-shared=no --enable-static=yes LIBEVENT_LIBS="-L/home/steve/libevent-2.0.18-stable/.libs -levent" LIBEVENT_CFLAGS=-I/home/steve/libevent-2.0.18-stable/include  --with-zlib=/home/steve/zlib-1.2.8 --with-zlib-includes=/home/steve/zlib-1.2.8  OPENSSL_CFLAGS=-I/home/steve/openssl-0.9.8zc/include OPENSSL_LIBS=-L/home/steve/openssl-0.9.8zc LIBCURL_CFLAGS=-I/home/steve/curl-7.39.0/include/ LIBCURL_LIBS="-L/home/steve/curl-7.39.0/lib/.libs -lcurl"


這個 Transmission 可以是麻雀雖小
功能都有
DHT
uTP
加密傳輸( 有 open SSL )
Local peer discovery (區網用)
PEX(peer exchange)
或者是磁力連結


讓我證明一下
粉好
跟 NAS 上面的 libs 相處融洽愉快
版本都對

# ldd ./transmission-2.84
        libcurl.so.4 => /usr/lib/libcurl.so.4 (0x40026000)
        librt.so.1 => /lib/librt.so.1 (0x4006d000)
        libdl.so.2 => /lib/libdl.so.2 (0x4007c000)
        libz.so.1 => /usr/lib/libz.so.1 (0x40087000)
        libm.so.6 => /lib/libm.so.6 (0x400a3000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x40152000)
        libgcc_s.so.0 => /lib/libpthread.so.0 (0x40166000)
        libc.so.6 => /lib/libc.so.6 (0x40186000)
        libssl.so.0.9.8 => /usr/local/ssl/lib/libssl.so.0.9.8 (0x402b5000)
        libcrypto.so.0.9.8 => /usr/local/ssl/lib/libcrypto.so.0.9.8 (0x402f9000)
        /lib/ld-linux.so.3 (0x40000000)


其實也可以全部 compiler 成 super static
就可以把相容性困擾盡量降到最低
(但是 libgcc_s , libgcc_s, libc 等還是要拉)

最後補一下我的啟動 Script

./transmission-daemon --auth --config-dir /etc/transmission-daemon --watch-dir /home/download -m -o -y --utp


以上個人認為最小化也功能完整的編譯的一些過程
歡迎不吝切磋指教

依照這個過程方法
嫌驢子慢也可以換一隻
但是可別把 NAS 當動物園
養一堆驢或 BT
畢竟不是 PC 阿
(但是未來 NAS 可能隨便就跟 PC 一樣快了吧 )


設定檔自己 google 一下怎麼動囉~
相信比 build 這個 transmission 的資料多很多 


話說這個 Transmission daemon 跑起來後
如何遠端觀看下載狀況或加下載 ?
有個畫面精美的 Transmission Remote GUI.
可以讓你在 Windows 上面方便的觀看還有控制 Transmission daemon.
免費好用喔 !!
改天介紹


Transmission Remote GUI.
https://code.google.com/p/transmisson-remote-gui/


Transmisson 的官網
http://www.transmissionbt.com/



















沒有留言: