LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4218|回复: 12

Slackware 13 打造家庭节能BT、电驴下载机

[复制链接]
发表于 2010-3-4 00:20:25 | 显示全部楼层 |阅读模式
作者: recoilest <recoilest@163.com>
qq:139371666
日期: 2010-03-03

    本想去科技市场(我们这的电脑城)买个BT机,专门给我女儿下《巧虎》看,但是想

想柜子里边还有一堆电脑硬件(破是破,地道货),下电驴和跑samba服务也不是很耗费

硬件资源,找到一个815-E,1G PIII cpu装起来,还不错,装上slackware13系统

详细硬件列表

硬件为 :
DELL GX150  
815-E主板
内存: 256MB
网卡: Intel 8492MT (82546GB) 双口,集成 3COM  3c905C-TX/TX-M
硬盘: IDE 80G

系统环境 :

Slackware 13 完整安装
Kernel : 2.6.29.6-smp
当前用户: root
IP:10.0.188.254
硬盘分区:

  1. Filesystem           1M-blocks      Used Available Use% Mounted on
  2. /dev/root                9389M     3504M     5409M  40% /
  3. /dev/hda2               64771M    60329M     1153M  99% /srv
  4. tmpfs                     121M        0M      121M   0% /dev/shm
复制代码

我准备把下载文件放置/srv中

需要下载的软件:

mldonkey

  1. wget

  2. http://downloads.sourceforge.net/project/mldonkey/mldonkey/3.0.1/mldonkey-

  3. 3.0.1.tar.bz2?use_mirror=cdnetworks-kr-2
复制代码



开始工作:

1 Linux 安装并配置 mldonkey

  1. mkdir -p /srv/mldonkey/share/
  2. cd /root
  3. ln -sf /srv/mldonkey/share .mldonkey

  4. cd /srv/soft/soft/mldonkey-3.0.1
  5. configure --prefix=/srv/mldonkey && make && make install
复制代码


修改配置文件
我的内网是10.0.188.0/24
vi /srv/mldonkey/share/downloads.ini
修改如下配置

  1. allowed_ips = [
  2.   "10.0.188.0/24";
  3.   "127.0.0.1";]


复制代码


建立开机启动文件/etc/rc.d/rc.bt

  1. #!/bin/sh
  2. #删除临时文件确保没有临时文件,
  3. rm -r -f /srv/mldonkey/share/*.tmp
  4. export MLDONKEY_DIR=/srv/mldonkey/share
  5. export MLDONKEY_USER=root
  6. export MLDONKEY_GROUP=root
  7. export MLDONKEY_UMASK=0022
  8. export MAX_ALIVE=48
  9. export LAUNCH_AT_STARTUP=true
  10. export MLDONKEY_NICENESS=0
  11. #与samba配置对应,保证中文正常显示,否则可能乱码
  12. export LC_ALL=zh_CN.UTF-8
  13. #与samba配置对应,保证中文正常显示
  14. export LC_LANG=zh_CN.UTF-8
  15. /srv/mldonkey/bin/mlnet >> /dev/null &
复制代码


在/etc/rc.d/rc.local增加下行

  1. sh /etc/rc.d/rc.bt
复制代码



samba配置就不说了吧,参考下其他samba的配置文章
我的samba共享路径在/srv/moive

  1. cd /srv/moive
  2. ln -sf /srv/mldonkey/share/incoming/files/ incoming
复制代码

这样直接通过windows打开\\10.0.188.254\public\incoming
就会看到已经下载完成的文件了

2 windows 安装并配置 sancho
首先说明,不使用次软件一样可以下载bt和电驴,不过要使用web方式(打开地址

http://10.0.188.254:4080/传种 ... 用这个更方便
我下载的版本是0.9.4-59,第一次登陆需要设置服务端IP,我输入了10.0.188.254
其他参数均不变。
软件是支持中文的,第一次使用先通过菜单tools=>references=>sancho:Main=>参数

use locate file=>zh_CN
重启动软件,就看到中文界面。
和下载相关的主要设置在菜单 工具=>首选项=>bandwidth,将参数

max_hard_download_rate修改到2000,max_opened_connections修改到924(事实证明调

整更高也没用)
使用sancho下载可以直接传种子,或者电驴URL,但我更习惯使用其快捷按钮中的“网络

浏览器”
它可以点击后直接使用sancho下载(准确的说是提交到服务器下载,和迅雷的离线下载类

似,还有云计算的味道)
不说了,上图




因为时间原因,写的有些仓促,有什么问题大家和可以和我QQ或者Mail交流.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2010-3-4 00:40:05 | 显示全部楼层

补充一个根据samba活动状态的自动关机脚本

毕竟这是家庭使用,要考虑到节能,省电
所以我写了此脚本,确定当XXX(实际我用smbd)进程无活动连接状态持续N秒后关闭此计算机

/etc/rc.d/rc.shutdown.php
[PHP]
<?php
/************************************************
* 根据网络状态自动关机的脚本
* 参数1:无活动时长(秒)
* 参数2-256:监听应用程序名称
* 应用系统: slackware 13
* 需要root权限
************************************************/

//检测参数
$lastReturn = 0;
$noPacketCount = 0;
$intval = 30 ;//间隔秒数

/**
* 检测多个程序的网络活动状态
*/
function mexec($argv){
        $int = 0;
        if ( (is_array($argv)) && (count($argv)> 0) ){
                foreach ($argv as $key => $value){
                        $command = "netstat -anp|grep {$value}|grep ESTABLISHED";
                        exec($command, $returnArray, $returnInt);
                        if ($returnInt == 0){
                                $int=0;
                                break;
                        }else{
                                $int++;
                        }
                }
        }
        return $int;
}
/**
* Main
*/
if ( count($argv) < 3){
        echo "shutdown script \r\nusage:".$_SERVER["SCRIPT_NAME"]
." 1800 bnetd\r\n";
        exit(1);
}else{
        $shutdownSecond = 0;
        $shutdownSecond = $argv[1];
        unset($argv[0]);
        unset($argv[1]);
       
        while(true){
                if (mexec($argv) > 0){
                        $noPacketCount++;
                        if ($noPacketCount * $intval > $shutdownSecond){
                                echo date('Y-m-d H:i:s')."闲置了".$argv[1]."秒,系统即将关闭"."\r\n";
                                exec('shutdown -h now');
                                exit(0);
                        }else{
                                echo date('Y-m-d H:i:s')."无网络活动程序"."\r\n";
                        }
                }else{
                        echo date('Y-m-d H:i:s').'检测到活动程序'."\r\n";
                        $noPacketCount = 0;
                }
                sleep($intval);
        }
}
?>

[/PHP]

开启网络Magic数据包唤醒,我家是无线网络而且上下楼,不用再跑去开机了。
在/etc/rc.d/rc.local增加以下代码以确保可以唤醒
  1. #不同网卡硬件可能对此命令无效,intel网卡是“g”参数
  2. ethtool -s eth0 wol g
  3. ethtool -s eth1 wol g
复制代码
我监听samba无活动连接15分钟关闭计算机
在/etc/rc.d/rc.local增加以下代码开机自动启动此脚本
  1. php -f /etc/rc.d/shutdown.php 900 smbd >>/var/log/shutdown.log &
复制代码
我女儿看完电影15分钟,机器就自动关了,需要使用时候由客户机唤醒(IBM access conneciton 具备这样的功能),真爽。
回复 支持 反对

使用道具 举报

发表于 2010-3-4 10:07:25 | 显示全部楼层
关机的时候大家都一样,开机的时候你跟BT专用机的功耗没法比。

一般低档台式机的待机功耗也有80W,工作功耗100-200W。

而专用机的整机功耗可以做到10-30W之间,全部都在40W以内。

长期下载的话,两者能耗差异不容忽视。但是如果不长期下载的话,似乎又根本不需要一台BT机,用自己的台式机下就行了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-4 12:50:40 | 显示全部楼层
poet兄说的不错,但是对于linux应用来讲,BT只是其中一部分,当需要扩展应用时候,商业BT机是不能满足的,而且不具备网络唤醒功能,至于samba我不确定;其实这是一个使用廉价硬件,但使用并不是非常廉价的解决方案。如果讲究功耗,那么X86构架使用Atom+SSD是一个更好的方案,但是成本就高了。
为大家提供一种脱机BT方案,至于使用起来如何,仁者见仁了。
回复 支持 反对

使用道具 举报

发表于 2010-3-5 09:42:36 | 显示全部楼层
Post by Recoilest;2073092
poet兄说的不错,但是对于linux应用来讲,BT只是其中一部分,当需要扩展应用时候,商业BT机是不能满足的,而且不具备网络唤醒功能,至于samba我不确定;其实这是一个使用廉价硬件,但使用并不是非常廉价的解决方案。如果讲究功耗,那么X86构架使用Atom+SSD是一个更好的方案,但是成本就高了。
为大家提供一种脱机BT方案,至于使用起来如何,仁者见仁了。

我的意思是你的软件方案很好,硬件方案并不普遍适用。(你要求的是一台具有相对高级的BIOS功能的廉价的旧机器)

而且BT机的设想我自己也考虑和尝试了几年,从纯需求的角度来思考,我有时觉得是不是真的需要用一台旧机器去长期在线开BT?

有一台始终在线的机器感觉挺好,折腾完了确实很有成就感,我自己也是如此,休眠的目的是为了开机快,但如果为了唤醒它和操纵它同时还需要打开另外一台电脑的话,那么它带来的快速开机和节能特性还剩下多少价值呢?如果搭建BT机的本意是为了省电,结果我们却因此而开了两台电脑费了两倍的电量,这是否与现在的新电脑硬件越来越多的考虑节能想法背道而驰呢?

这个时候我们往往就会想到要引入家电概念,引入遥控器,并且把这个机器接上电视机,给予他独立的输入和输出,这样在无须打开另外一台电脑的时候它也具备了价值。然而事情越来越复杂,折腾越来越多了。因为遥控器需要唤醒,而且视频输出需要考虑分辨率的问题,那么需要写程序同遥控器配合,动态改变分辨率同电视机搭配。

继续折腾的过程中,我自己就渐渐的发现,虽然我已经搞定了遥控器和视频音频输出,但如果提供种子还要打开另外一台电脑,于是就再编译一个浏览器上去。利用这个机器直接上网,直接本地就下种子了,为了上网,还得为遥控器提供一个输入法。都是折腾对吧?然后再做到用它上网用他下载用他打游戏。。。开一个samba就可以让自己台式机访问上面的资源这个就不需要说了,——最终折腾完了之后,我就发现一般的应用我几乎不想开自己电脑了。网络唤醒变得意义不大,遥控器唤醒成为了最主要的功能,也是一切折腾的痛苦之源。

最后,发现好像我们并不需要同时开两台电脑去做本来一台电脑就能完成的事情。

仅供讨论,并无批判之意。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-5 11:10:13 | 显示全部楼层
技术确实是解决不了很多生活和社会矛盾,我们只有扬长避短了。我有时候也在考虑,这样确实很折腾人,但似乎和我的个人习惯有关,我不会在工作用的笔记本上装游戏,QQ,讯雷,或者看电影;家庭娱乐用的电脑只看电影和玩游戏,如果在家需要临时性工作,我就关了娱乐电脑,开我的笔记本;而BT机上不单单是BT应用,还有DDNS客户端,Pvpgn游戏服务端,svn备份等。
可能我文章的标题误导了poet兄,这台BT机上并不是只有BT应用,只为了下BT而单独整套计算机来做,确实很浪费。而且我也不把它当成家用电器来看待。
我喜欢玩游戏,尤其周末几个朋友都会带着笔记本到我家玩星际和魔兽,不能来我家的会在公网上连到这个服务器上,而pvpgn正解决了这个问题,最近闲了我把《架设自己的内外网互联的战网服务器》再写篇文章,有类似需求的可以参考下。
我这人就喜欢折腾,然后把折腾的经验告诉到大家。如果谁比我还能折腾,也可以参考下。
咱是搞技术的,需求因人而异,有没有必要,咱就不讨论了吧。
回复 支持 反对

使用道具 举报

发表于 2010-3-5 11:48:27 | 显示全部楼层
pc机不像想像中费电的,家里有个计量插座,我曾对几台机器做过测试,平台1:
amd 5200+ 780g 500g硬盘,开启cnq降频,cpu频率锁定在1ghz,功率50w,调到默认2.7ghz 开多线程编译或者压缩,功率100w左右,加上9800gt显卡,主机功率最低控制在70w,(cpu 98gt都开节能)
如果用现在的245/785g主板,功耗还会低一些。intel e5200平台可能功耗比amd平台稍低。

平台2:atom 330 945gc,功耗在40瓦左右,当然如果是945gs功耗低10w左右。
回复 支持 反对

使用道具 举报

发表于 2010-3-8 17:01:38 | 显示全部楼层
samba无连接的时候就关闭,不就是放弃了下载了?
samba不会总是连接上的吧~~
回复 支持 反对

使用道具 举报

发表于 2010-3-8 17:03:27 | 显示全部楼层
这个……与做一个vnc进行远程访问有什么不同?或者ssh……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-9 09:32:39 | 显示全部楼层
Post by gnwd;2073968
samba无连接的时候就关闭,不就是放弃了下载了?
samba不会总是连接上的吧~~

是的,这是一个弊端,不一定适用所有的需求,可依据实际情况来决定,我这样的做的目的是,利用看电影的时间来下载,以节约电能。
实际上,脚本上还有其他参数,这些参数是关键应用.毕竟这不是在机房.我是这样考虑的.当然你关掉这个脚本,实现7*24也可以.
Post by gnwd;2073968
这个……与做一个vnc进行远程访问有什么不同?或者ssh……

是的,通过vnc或者rdp访问操作系统,也可以实现离线下载,但这样的方案具有更好的易用性 :
1 同样是离线下载,迅雷要会员收费 (那显然速度更快);
2 大部分嵌入式商业产品,不具有客户端,只能通过网页来操作下载.
3 你也为了兴趣二次开发.
Mldonkey仍然有它的不足,速度确实不如讯雷,就像poet兄的说法,如果使用讯雷10分钟下完一个文件,那么使用Mldonkey需要30分钟,就要白白浪费20分钟左右的电能消耗.如果这点解决了,我相信这个方案还是值得推广的.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表