迅雷一直沒有出linux版,wine不想去弄。linux下雖然也有各類bt軟件,無奈我試用後卻發現速度遠比不上迅雷,甚至有些資源根本找不到。而有些迅雷的專用連接,更是無法下(原諒我2M的小水管,卻喜歡看美劇)。隨着各類電視盒子、智能路由的出現,迅雷弄了一個遠程下載,即xware。遠程下載其實就是在電視盒子、路由器上架一個極簡的迅雷核心,而後經過迅雷提供的網頁端來控制,實現下載。因爲電視盒子多半是android系統,智能路由也是android或linux核心,因此迅雷要想支持各類設備,就必須提供各類版本的xware,其中就有一個glibc 32bit版本。這個版本便可支持在大部分linux系統(32或64位)運行。php
要運行xware,有幾個條件:linux
xware能夠到迅雷的論壇去下載(http://luyou.xunlei.com/forum.php?mod=forumdisplay&fid=51&filter=typeid&typeid=1),在產品發佈裏,下載最新的glibc_32版本便可。如Xware1.0.31_x86_32_glibc.zip。下載好後解壓到一下目錄中,如Xware1.0.31。裏面的文件以下:android
xzc@xzc-HP-ProBook-4446s:~/Xware1.0.31$ ls -lh
總用量 4.2M
-rwxrwxr-x 1 xzc xzc 4.1M 8月 27 2014 EmbedThunderManager
-rwxrwxr-x 1 xzc xzc 24K 8月 27 2014 ETMDaemon
-rwxrwxr-x 1 xzc xzc 111K 8月 27 2014 portal
-rwxrwxr-x 1 xzc xzc 23K 8月 27 2014 vod_httpserverc++
運行xware很簡單,進入當前目錄,運行./portal便可。運行出輸出以下:shell
xzc@xzc-HP-ProBook-4446s:~/Xware1.0.31$ ./portal
initing...
try stopping xunlei service first...
killall: ETMDaemon: no process killed
killall: EmbedThunderManager: no process killed
killall: vod_httpserver: no process killed
setting xunlei runtime env...
port: 9000 is usable.ubuntu
YOUR CONTROL PORT IS: 9000服務器
starting xunlei service...
etm path: /home/xzc/Xware1.0.31
execv: /home/xzc/Xware1.0.31/lib/ETMDaemon.網絡
getting xunlei service info...
Connecting to 127.0.0.1:9000 (127.0.0.1:9000)
the active key is not valid.ui
try again...(has tried 1 time(s)).
getting xunlei service info...
Connecting to 127.0.0.1:9000 (127.0.0.1:9000)this
THE ACTIVE CODE IS: xxxbbb
go to http://yuancheng.xunlei.com, bind your device with the active code.
finished.
運行時須要根據你的網絡狀況而定,有時try again...N屢次才能連上迅雷的服務器,也有過連不上的。連不上再從新運行一次就好。
接着須要綁定你的設備到網頁版迅雷遠程控制。登陸http://yuancheng.xunlei.com(沒賬號就註冊一個),而後將上面運行獲得的一個code(THE ACTIVE CODE IS: xxxbbb),這裏是xxxbbb。輸入這個code,你剛剛運行的迅雷就與遠程下載綁定了。
而後,就是熟悉的迅雷界面了
如今,迅雷基本算是跑起來了。可是還有一個問題,下載的文件存在哪裏呢。遠程下載只是一個網頁客戶端,它沒有辦法知道你電腦上硬盤的狀況。它只能經過與運行在電腦上的迅雷通信才能瞭解電腦上有多少空間,有哪些盤。但是迅雷開發xware的初衷並非給電腦用的,而是給各類盒子、路由使用的。這些設備幾乎是沒有硬盤或者只有固定很小的空間,沒有辦法用來下載的。但它們都是linux核心,同時不少設備也提供了USB接口把U盤、移動硬盤接入。這些設備幾乎都會掛載到/media目錄下。因此xware只會檢測掛載到/media目錄下可寫的設備。好比我把個人U盤插到電腦上,點擊遠程下載中的新建,便可看到迅雷已經檢測到個人U盤,並在裏面自動建立了一些必要的文件夾。
xzc@xzc-HP-ProBook-4446s:~$ df
文件系統 1K-blocks 已用 可用 已用% 掛載點
/dev/sda6 24475012 5982676 17226008 26% /
none 4 0 4 0% /sys/fs/cgroup
udev 3760900 4 3760896 1% /dev
tmpfs 754340 1324 753016 1% /run
none 5120 0 5120 0% /run/lock
none 3771696 652 3771044 1% /run/shm
none 102400 64 102336 1% /run/user
/dev/sda7 26866740 5797352 19681564 23% /home
/dev/sda1 307032 37920 269112 13% /boot/efi
/dev/sdb1 7135728 4606340 2529388 65% /media/xzc/APACER
xzc@xzc-HP-ProBook-4446s:~$ ls /media/xzc/APACER -lh
總用量 48K
drwx------ 2 xzc xzc 4.0K 12月 13 22:18 GHO
drwx------ 3 xzc xzc 4.0K 3月 13 23:22 system_tools
drwx------ 2 xzc xzc 4.0K 4月 15 20:57 TDDOWNLOAD
drwx------ 2 xzc xzc 4.0K 4月 15 20:57 ThunderDB
電腦上使用迅雷確定但願直接下載到硬盤上啊。那麼咱們可使用mount --bind來將一個文件夾掛載到/media下,這樣迅雷就能夠下載了。對,沒錯,一切都OK。但是又有一個問題,假如我正在下載,忽然要用到U盤。接到電腦上,迅雷二話不說,直接在U盤上建立兩個文件夾,這讓我情何以堪。要讓迅雷忽略個人U盤,沒有別的辦法,只有取消迅雷在U盤上的寫權限。可是U盤我還要往裏面拷東西啊。因此咱們只好給迅雷建立一個用戶,而後用這個用戶運行迅雷。這樣,迅雷在個人U盤上就沒有寫權限了。
先建立一個叫thunder的用戶
sudo useradd --no-create-home --user-group thunder
而後把xware的目錄改成thunder全部,這樣thunder纔有權限運行xware(直接經過sudo給權限也行)
su chown thunder:thunder -R Xware1.0.31
再建立一個用來掛載的目錄和一個下載的目錄,這些目錄也歸thunder全部,否則它沒權限寫,怎麼行。而這個下載目錄你當前的用戶也是有權限讀的,否則下載的東西你無法看,有什麼用?
sudo mkdir /home/xzc/TDDOWNLOAD -p sudo mkdir /media/thunder/TDDOWNLOADS -p sudo chown thunder:thunder /home/xzc/TDDOWNLOAD sudo chown thunder:thunder /media/thunder/TDDOWNLOADS
而後咱們把下載目錄掛載到另外一個目錄
sudo mount --bind /home/xzc/TDDOWNLOAD /media/thunder/TDDOWNLOADS/
再從新以thunder用戶運行迅雷(先獲取root權限,再轉換到thunder用戶能夠免去輸入thunder的密碼,由於剛剛就沒給thunder建立密碼,輸入什麼都不對的)
sudo su thunder -c ./portal
這樣,迅雷會檢測到/media/thunder/TDDOWNLOADS目錄,下載的東西倒是放到/home/xzc/TDDOWNLOAD中去了。如今,若是你點「新建」任務,能夠看到剩餘空間,則說明掛載成功。
折騰到此,總算是能夠下載了,不過既然是在linux下,怎麼也得寫個腳本吧
#!/bin/sh XWARE_DIR=./Xware1.0.31 USERNAME="thunder" DOWN_DIR=/home/xzc/TDDOWNLOAD MOUNT_DIR=/media/thunder/TDDOWNLOADS if [ $# -gt 0 ]; then #加參數 -s是關閉 su $USERNAME -c "$XWARE_DIR/portal -s" code=$? if [ $code -eq 0 ]; then umount $MOUNT_DIR echo "xware stop sucess..." else echo "xware stop fail,code $code" fi else #不加參數默認是啓動 su $USERNAME -c $XWARE_DIR/portal code=$? if [ $code -eq 0 ]; then mount --bind $DOWN_DIR $MOUNT_DIR echo "xware start sucess..." else echo "xware start fail,code $code" fi fi
這樣,把這個文件放到Xware1.0.31的上一層,名爲xware.sh。這個腳本會自動掛載文件夾,或者取消掛載,須要root權限。
運行 sudo ./xware.sh
關閉 sudo ./xware.sh -s
2015-04-16:
專門爲迅雷添加的新用戶竟然在登陸界面顯示,這必須得隱藏啊。
xzc@xzc-HP-ProBook-4446s:~$ cat /etc/lightdm/users.conf
#
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then LightDM will
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
#
[UserList]
minimum-uid=500
hidden-users=nobody nobody4 noaccess thunder
hidden-shells=/bin/false /usr/sbin/nologin
能夠看到有hidden-users這一配置,只要在這裏添加對應的用戶,就會被隱藏。不過,因爲ubuntu的一個bug一直沒有修復,這個配置不會生效。
可是上面有個minimum-uid,若是玩家的uid小於這個值,則也會被隱藏。因此,須要改一下thunder的uid:
sudo usermod thunder -u 499
如今在登陸界面應該看到thunder用戶了。
2015-06-14
昨天把系統上全部32bit庫刪除了,今天運行xware時提示portal not found。這纔想起系統有還有這麼個軟件要用32bit庫,因而又要裝回來。
sudo apt-get install gcc-multilib(g++不須要,否則要裝g++-multilib)
裝完再運行提示libz.so.1未找到,再裝lib32z1,運行。
別人說裝下面的就能夠了:
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1