树莓派上安装XBMC并部署PT下载

一直关注树莓派,最近在淘宝上买了一款刚刚升级的B+版本,UK出品主板230元,其它带风扇外壳、TF卡、无线网卡等合一起共计320元,想用来兼顾学习、高清播放器和下载机用的。

官方系统下载要这里,“树莓派实验室”博客提供下载索引,我选择用Win32DiskImager来写IMG系统到TF卡,我下载的最新版是v0.9.5

先试了在Raspbian系统下安装XMBC,第一次搜到这个方法“树莓派系统(raspbian)安装XBMC的方法”,安装后运行时提示跟评论的一样“xbmc needs hardware accelerated opengl rendering. install an appropriate graphics driver.”,无法使用。

然后在Twitter上提到这个,有推友说可能是源不对,后来又在“Install script for XBMC in Raspbian”找到了一个新的源和安装脚本,直接用脚本安装中间出错,一步步的安装并与安装原理网页对比发现有脚本有两处错误:
1. $USER=`awk -F: “/:$(id -u):/{print \$1}” /etc/passwd` // 本来想设变量USER为当前用户pi,语法有错
2. #Make keyboard work下面的两行执行后99-input.rules文件里字符内容的双引号没了,导致键盘不响应

后来还是按安装原理网页逐一执行的,但运行起来后发现在XBMC里CPU经常占用100%,还动不动就卡死。

现在是另找一个旧TF卡安装Raspbian系统用来学习,还给它部署了中文,方法见这里。原理是安装中文字库“sudo apt-get install ttf-wqy-zenhei”,再安装输入法“sudo apt-get install scim-pinyin”,然后运行scim激活输入法,再进入“sudo raspi-config”把默认语言改成“zh_CN.UTF-8”。

新买的TF卡则直接安装Raspbmc系统,并部署成PT下载(自动识别NTFS分区):
1. 从官网下载Raspbmc系统img文件,在Windows下用Win32DiskImager写到TF卡上。
2. 进入系统先配置wifi,等系统自动安装完成,然后在另一台电脑上通过ssh连接到树莓派,因为不知道怎么退出正在运行的XBMC进入操作系统界面和执行ssh命令。
3. 在ssh远程终端先更新系统“sudo apt-get update”,发现如果不先做这一步的话直接安装transmission会出错。
4. 这个页面有比较详细的安装transmission方法,我把用来的命令大概说一下:
sudo apt-get install transmission-daemon //安装软件
sudo /etc/init.d/transmission-daemon stop //安装后PT自动运行,配置之前先停掉
sudo vi /etc/transmission-daemon/settings.json //这里是配置文件,考虑到PT要部署防吸血,我多配了几步
dht-enabled改为false禁用DHT功能
download-dir改成/media/XXX/YYY,即外挂硬盘目录,XXX通常是分区标签,YYY是下载目录
encryption改为2强制加密,可以禁止迅雷等的吸血
peer-port改成对外开放的监听端口,路由器上做这个端口的转发就可以成为HighID用户
pex-enabled改为false禁用PEX功能
port-forwarding-enabled我改成true,因为我是通过路由器做端口映射的,但发现为false也能成为HighID
rpc-username和rpc-password改成web登录的用户名和密码,密码先用明文,系统会自动加密
rpc-whitelist-enabled改成false,这样可以通过任何电脑通过web进行PT管理。
rpc-enable改成true,这样上面对rpc的设置能生效,即9091才会开放,可以用web进行管理。
其它的看情况改,不熟悉的最好不要动。
5. 修改PT运行的用户为当前用户pi:sudo vi /etc/init.d/transmission-daemon,“USER=debian-transmission”改为“USER=pi”,“start-stop-daemon –start \”改为“start-stop-daemon –start –nicelevel 5 \”。
6. 给pi用户授权PT的各个配置文件的权限:
sudo chown pi:pi /etc/transmission-daemon/settings.json
sudo chown pi:pi /etc/init.d/transmission-daemon
sudo chown -R pi:pi /var/lib/transmission-daemon/info
经过查找发现PT保存种子的位置在:/var/lib/transmission-daemon/info/torrents
7. 运行“sudo /etc/init.d/transmission-daemon reload”重新加载配置文件
8. 运行“sudo /etc/init.d/transmission-daemon restart”重新启用PT。

这时应该可以在本地通过浏览器打开http://IP:9091登录进行PT管理了,如果想在局域网之外的地方管理PT下载,首先需要在路由器上对9091做端口映射,接着修改树莓派的防火墙添加开放的端口。默认情况下wan0进来的都是被禁的,这里是参考,/etc/network/if-up.d/secure-rmc文件下面两行之间加需要开放的端口:
iptables -A INPUT -s $NETMASK -i $IFACE -j ACCEPT
iptables -A INPUT -i $IFACE -j DROP

比如我需要开放PT的端口是3456,则加下面几行:
iptables -A INPUT -s $NETMASK -i $IFACE -j ACCEPT
iptables -A INPUT -p tcp –dport 3456 -j ACCEPT // PT TCP
iptables -A INPUT -p udp –dport 3456 -j ACCEPT // PT UDP
iptables -A INPUT -p tcp –dport 9091 -j ACCEPT // PT WEB
iptables -A INPUT -i $IFACE -j DROP

重启树莓派和完全路由器端口映射后就大功告成了。

PS1. 使用xbmc播放视频过程经常出现字幕是方块的情况,有时回退再播放又好了,通常出现方块时都是卡了一下。网上找了一下说是out-of-graphic-memory问题,也就是gpu内存少了,可以试试修改/boot/config.txt的gpu_mem为192~256之间,太大会影响系统性能。

PS2. Raspbain在终端输入sudo raspi-config来进入设置界面,而Raspbmc没有这个命令,解决办法是sudo rm /home/pi/.configureduser然后重启。

PS3 2015-07-17. 在Raspbmc的升级版OSMC按上面的方法安装transmission-daemon后改成osmc用户启动发现总是启动失败,最后结合官方的配置文件说明,总算解决了。原理是还要把transmission-daemon.service中的User由debian-transmission改成osmc,这样启动后会从osmc当前目录的.config/transmission-daemon目录下读取setting.json,部署完后发现需要重启系统才能正常启动transmission-daemon,因此写成以下的自动安装脚本:
[bash]
#!/bin/bash

#remove and clear first
sudo apt-get remove -y transmission-daemon
sudo rm -rf /var/lib/transmission-daemon

#install
sudo apt-get install -y transmission-daemon
sudo /etc/init.d/transmission-daemon stop

#edit setting same as above
sudo vi /etc/transmission-daemon/settings.json
#modify User from debian-transmission to osmc
sudo vi /etc/init.d/transmission-daemon
sudo vi /lib/systemd/system/transmission-daemon.service

#change owner to osmc
sudo chown osmc:osmc /etc/transmission-daemon/settings.json
sudo chown osmc:osmc /etc/init.d/transmission-daemon

#clear config folder
rm -rf ~/.config/transmission-daemon
mkdir ~/.config/transmission-daemon
ln -s /etc/transmission-daemon/settings.json ~/.config/transmission-daemon/settings.json

#try to reload and restart
sudo /etc/init.d/transmission-daemon reload
sudo /etc/init.d/transmission-daemon restart

#need to reboot if failed
echo reboot if failed to reload or restart..
[/bash]

Tags:

Leave a Reply