迅雷一直没有出linux版,wine不想去弄。linux下虽然也有各种bt软件,无奈我试用后却发现速度远比不上迅雷,甚至有些资源根本找不到。而有些迅雷的专用链接,更是没法下(原谅我2M的小水管,却喜欢看美剧)。随着各种电视盒子、智能路由的出现,迅雷弄了一个远程下载,即xware。远程下载其实就是在电视盒子、路由器上架一个极简的迅雷核心,然后通过迅雷提供的网页端来控制,实现下载。由于电视盒子多半是android系统,智能路由也是android或linux核心,所以迅雷要想支持各种设备,就必须提供各种版本的xware,其中就有一个glibc 32bit版本。这个版本即可支持在大部分linux系统(32或64位)运行。

  要运行xware,有几个条件:

  1. 下载好xware
  2. 运行xware
  3. 绑定xware
  4. 挂载一个存储设备

  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。里面的文件如下:

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_httpserver

  运行xware很简单,进入当前目录,运行./portal即可。运行出输出如下:

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.

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.

try again...(has tried 1 time(s)).
getting xunlei service info...
Connecting to 127.0.0.1:9000 (127.0.0.1:9000)

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 ];
then
#加参数 -s是关闭
su $USERNAME -c "$XWARE_DIR/portal -s"
code=$? if [ $code -eq ];
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 ];
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

ubuntu14.04折腾迅雷xware的更多相关文章

  1. ubuntu14.04+nvidia driver+cuda8+cudnn5+tensorflow0.12

    文章在简书里面编辑的,复制过来貌似不太好看,还是到简书的页面看吧: http://www.jianshu.com/p/c89b97d052b7 1.安装环境简介: 硬件: cpu:i7 6700k g ...

  2. Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]

    目录 [TOC] 1.CDH介绍 1.1.什么是CDH和CM? CDH一个对Apache Hadoop的集成环境的封装,可以使用Cloudera Manager进行自动化安装. Cloudera-Ma ...

  3. ubuntu14.04下的NVIDIA Tesla K80显卡驱动的安装教程

    搞深度学习如何能够不与浑身是“核”的显卡打交道呢? 人工智能的兴起除了数据量的大量提升,算法的不断改进,计算能力的逐步提高,还离不开软件基础设施的逐步完善.当下的主流的深度学习工具软件无论是Caffe ...

  4. ubuntu14.04显卡驱动问题(amd5600k集显7650d)

    安装ubuntu的时候,多次莫名其妙地黑屏,起初以为是最新得ubuntu14.04安装包不稳定,所以一直尝试了很多次. 重启-->安装-->黑屏(硬盘仍在转动,屏幕上什么都没有)--> ...

  5. 在ubuntu14.04上配置cuda_caffe_cudnn_anaconda_digits

    参考网上的很多网站,以这篇为主:http://blog.csdn.net/yhl_leo/article/details/50961542 这篇算是自己对caffe学习的一个总结系列的开头.首先因为c ...

  6. 在Ubuntu-14.04.3配置并成功编译Android6_r1源码

    折腾了一周,终于把Android6_r1的源码编译成功.先上图,这是在ubuntu中运行的Android模拟器: 由于我是在win8中安装虚拟机VMware,然后在虚拟机中安装Ubuntu进行编译,所 ...

  7. 戴尔笔记本win8.1+UEFI下安装Ubuntu14.04过程记录

    瞎扯:笔记本刚买不久就想装ubuntu来着,但结果发现BIOS启动方式为UEFI,网上一搜索发现跟曾经的双系统安装方法不一样,看详细教程感觉相当复杂,并且也有点操心折腾跪了这新本本所以一直没有动手.但 ...

  8. VisualBox ubuntu14.04 64位 android4.4.4源码编译总结

    转载请保留出处:http://www.cnblogs.com/wi100sh/p/4337907.html 折腾了好几天,今天终于编译通过,用了4个多小时,太不容易了.如下图所示: 软件环境 虚拟机: ...

  9. Ubuntu14.04 安装配置Hadoop2.6.0

    目前关于Hadoop的安装配置教程书上.官方教程.博客都有很多,但由于对Linux环境的不熟悉以及各种教程或多或少有这样那样的坑,很容易导致折腾许久都安装不成功(本人就是受害人之一).经过几天不断尝试 ...

随机推荐

  1. [React Testing] Children with Shallow Rendering

    When testing React components, we often want to make sure the rendered output of the component match ...

  2. c++11 : static_assert和 type traits

    static_assert提供一个编译时的断言检查.如果断言为真,什么也不会发生.如果断言为假,编译器会打印一个特殊的错误信息. 1 2 3 4 5 6 7 8 9 10 11 12 13 templ ...

  3. linux程序自启动和新建linux服务的方法

    1 linux创建自启动程序    自启动的两种方法,都经过自己测试.1.1 自启动程序方法1:    在etc/rc.local在里面加入/home/robin/code/autoruntest & ...

  4. Neral的前言

    大家好,我是Neral,我准备写一个js库. 在动笔之前,我一直都处在很忐忑的状态,因为我写代码讲究的是一种感觉,那是看到自己写的代码之后大脑中就出现之后的无数个编码分支的快感,但是,如果很长一段时间 ...

  5. Fiddler使用笔记

    http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html#basic   1.filter的使用,跟踪某个网站的访问,例如:hr. ...

  6. Swift - IBOutlet返回nil(fatal error: unexpectedly found nil while unwrapping an Optional value)

    在Swift 中 ViewController 默认构造方法不关联同名的xib文件 在使用OC的时候,调用ViewController的默认构造函数,会自动关联到一个与ViewController名字 ...

  7. easyui之combobox(不定时补充)

    1,combobox的valuefeild和textfeild这两个属性,可以理解为键值对,即:键valuefeild:值textfeild textfeild是文本框内显示的值,如果要取文本框内的值 ...

  8. POJ3662 Telephone Lines( dijkstral + 二分 )

    POJ3662 Telephone Lines 题目大意:要在顶点1到顶点n之间建一条路径,假设这条路径有m条边,其中有k条边是免费的,剩余m-k条边是要收费的, 求这m-k条边中花费最大的一条边的最 ...

  9. 子类重载父类的方法“parent:方法名”

    在PHP中不能定义重名的函数,也包括不能再同一个类中定义重名的方法,所以也就没有方法重载.单在子类中可以定义和父类重名的方法,因为父类的方法已经在子类中存在,这样在子类中就可以把从父类中继承过来的方法 ...

  10. xcode5.1上真机调试报告No architectures to compile for...的解决办法

    由于手头上只有一台IPAD一代,近期升级到IOS5.0了(人家apple只让升级到此为止)而开发环境Xcode版本是5.1,默认情况下XCode编译出来的代码最低能跑在IOS6.0下, 于是GOOGL ...