作为一名高清爱好者,一直想配置一台HTPC放家里实现高清播放外加家庭服务器功能。Nvidia的Ion平台自然是高清平台的硬件首选,而家庭媒体中心的软件端则首先考虑开发的已经很成熟的开源利器 XBMC 。XBMC本身支持多种平台(Linux, Mac OS X, Windows …),从驱动程序和配置方面来说,自然是基于Windows搭建最省事,但最终选择Linux的原因是: ssh 。Linux的ssh让我可以很方便地通过其他电脑,甚至手机操作我的家庭媒体中心主机。
因此,我最终在硬件上选择了Acer Aspire R3700,基于Ion平台的超小型主机,配置如下:
除了买的主机自带了鼠标键盘之外,我还选购了HDMI高清线以及MCE遥控器。
系统方面选择了安装配置简便的Ubuntu 10.10系统(我开始是打算使用Gentoo的,但是编译着编译着我就崩溃鸟)。使用Ubuntu要实现的功能如下:
因为Acer Aspire R3700本身不内置光驱,安装系统可以通过制作LiveUSB进行U盘引导安装。我制作了LiveUSB到一张SD卡上,直接放入机器的内置读卡器进行引导安装的。具体如何制作LiveUSB以及安装Ubuntu系统就不冗述了,可参考Ubuntu的LiveUSB制作教程: Installation From USB Stick Quick 。
注:我在系统设置时添加了一个名为xbmc的普通账户,系统主机名为HAL。下文均使用此用户名和主机名代替。
分区上我新建了一个220G的空白分区挂载在 /library
目录下,用于存放高清电影文件,文件格式上采用了xfs,采用如下命令进行格式化:
sudo mkfs.xfs -l size=64m -d agcount=4 -i attr=2,maxpct=5 -L library /dev/sdx
在 /etc/fstab
中添加 /library
分区挂载行:
/dev/sdb5 /library xfs noatime,nodiratime,allocsize=512m 0 2
其中 allocsize=512m
的作用是每次写入文件时xfs分区会预先分配512Mb的空间供一次写入,以减少文件碎片。对于动辄数G的高清文件来说,512Mb不算大支。
安装好系统之后首先运行 sudo apt-get update
更新源。然后删除一些不必要的自带软件,如Openoffice, Evolution Mail, Brasero等。具体看个人需要删除,例如要删除Openoffice,运行 sudo apt-get autoclean openoffice.org
进行完全清理。
Ubuntu 10.10自带的无线网卡RaLink RT3090驱动存在不能正常关机的问题,需要安装第三方源的编译包,运行如下命令:
## 添加第三方驱动源
sudo add-apt-repository ppa:markus-tisoft/rt3090
## 更新源信息并安装第三方无线网卡驱动
sudo apt-get update
sudo apt-get install rt3090-dkms
编辑 /etc/modprobe.d/blacklist.conf
文件,添加如下几行,将系统自带驱动模块加入黑名单:
# blacklist other Ralink modules in favour of 3090 DKMS mod
blacklist rt2860sta
blacklist rt2870sta
blacklist rt2800pci
blacklist rt2800usb
blacklist rt2x00lib
blacklist rt2x00pci
blacklist rt2x00usb
为了充分发挥Ion平台的高清硬解效能,安装NVidia的私有驱动是必须的。运行 sudo apt-get install nvidia-current
安装好驱动程序。安装好的XBMC会出现明显的CPU占用率过高的问题,解决的办法时安装好NVidia的驱动之后,编辑 /etc/X11/xorg.conf
文件,加入 NoFlip
设置:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "ION"
Option "NoFlip" "1" # 加入此行
EndSection
Ubuntu下调试音频的HDMI输出有点复杂,具体我参考了 HOW-TO set up HDMI audio on nVidia GeForce G210, GT220, or GT240 进行调试,这里简述下我的调试过程:
alsamixer
,F6切换到HDA NVidia声卡输出,打开Master, PCM, Front, Mic, S/PDIF, S/PDIF Def。/etc/modprobe.d/sound.conf
,加入以下这行:
options snd-hda-intel enable_msi=0 probe_mask=0xffff,0xfff2
/etc/pulse/default.pa
,加入以下这行:
load-module module-alsa-sink device=hw:1,3
/etc/asound.conf
,加入以下几行:
#pcm.!default hdmi:Nvidia
pcm.dmixer {
type dmix
ipc_key 1024
ipc_key_add_uid false
ipc_perm 0660
slave {
pcm "hw:1,3"
rate 48000
channels 2
period_time 0
period_size 1024
buffer_time 0
buffer_size 4096
}
}
pcm.!default {
type plug
slave.pcm "dmixer"
}
由于本机是通过无线路由连接,最好先在路由器上映射好相应端口并绑定一个固定IP以方便维护,在此不再冗述。既然系统已经搭建好了,可以去掉键鼠通过开启sshd服务进行远程操作维护。为了更安全的系统,iptables+sshguard也是不可或缺的。
运行命令安装iptables, ssh和sshguard:
sudo apt-get install iptables openssh-server sshguard
修改 /etc/ssh/sshd_config
:
Port 2727 # 将默认的22端口修改为任意其他端口,例如2727。
然后是设置iptables规则,编辑 /etc/iptables
(没有可新建):
# Generated by iptables-save v1.4.7 on Sat May 22 20:03:22 2010
*raw
:PREROUTING ACCEPT [21639:19095836]
:OUTPUT ACCEPT [22904:4573912]
COMMIT
# Completed on Sat May 22 20:03:22 2010
# Generated by iptables-save v1.4.7 on Sat May 22 20:03:22 2010
*filter
:INPUT DROP [7:2223]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [9409:1846937]
:sshguard - [0:0]
-A INPUT -s 127.0.0.1/32 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 设置内网IP权限访问,默认允许
-A INPUT -s 192.168.1.100/32 -j ACCEPT
-A INPUT -s 192.168.1.101/32 -j ACCEPT
# 打开transmission-daemon端口6666,其中9091是transmission web的端口
-A INPUT -p tcp -m tcp --dport 6666 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9091 -j ACCEPT
# 允许路由器的UPnP
#-A INPUT -s 192.168.1.1 -j ACCEPT
# 设置sshd端口号(2727)的访问,先经sshguard判断访问是否异常
-A INPUT -p tcp -m tcp --dport 2727 -j sshguard
-A INPUT -p tcp -m tcp --dport 2727 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags RST RST -j DROP
COMMIT
# Completed on Sat May 22 20:03:22 2010
然后直接运行 sudo iptables-restore < /etc/iptables
导入iptables设置。悲剧的是,Ubuntu不会自动保存iptables设置,所以必须在开机时载入设置,编辑 /etc/network/interfaces
文件,在末尾加入以下两行:
pre-up iptables-restore < /etc/iptables
post-down iptables-save > /etc/iptables
运行 sudo apt-get install rcconf
并通过 rcconf
将ssh加入系统启动自运行进程。然后重启电脑,就可以通过其他主机来进行操作、维护了。
要获得XBMC之前,我们先需要添加第三方源,运行如下命令完成XBMC安装:
sudo add-apt-repository ppa:team-xbmc
sudo apt-get update
sudo apt-get install xbmc xbmc-standalone
首次运行XBMC会发现中文无法识别的问题,需要做的是拷贝一个中文字体进来,例如我喜欢使用Google制造的Droid Sans Fallback字体,运行:
sudo cp DroidSansFallback.ttf /usr/share/xbmc/media/Fonts/arial.ttf
sed -e "s/language>english<\/language/language>Chinese (Simple)<\/language/" -i ~/.xbmc/userdata/guisettings.xml
sed -e "s/font>Default<\/font/font>Arial<\/font/" -i ~/.xbmc/userdata/guisettings.xml
作为HTPC的一部分,脱离键鼠使用遥控器进行影院播放控制自然是必不可少,我使用的是 Microsoft Media Center的遥控器 ,通过USB外接一个红外线接收器就可以了。
要让遥控器工作,首先得安装lirc,运行 sudo apt-get install lirc
完成安装,首次安装完成会弹出遥控器的终端配置界面:
然后将lircd加入系统自启动进程,重启计算机,在终端中运行 irw
,摁遥控器的方向键进行测试,如果终端内能正确识别遥控器操作说明遥控器准备就绪了。如果无法识别的话,需要 sudo dpkg-reconfigure lirc
重启进行配置,或者就是遥控器的电池电力不足(我就是因为这个傻逼原因瞎折腾了系统两个多小时)。
作为高清下载机,实现Bittorrent下载的远程管理是必不可少的,首选Transmission这个跨平台的Bittorrent下载利器,尤其是它的daemon模式,支持web远程操作,而且web端的操作针对iPhone等手持设备做了UI优化。运行 sudo apt-get install transmission-daemon
安装。按照 网站上的设置 说明更改settings.json文件配置。
由于transmission-daemon默认使用的是debian-transmission用户名运行,需要将其改为我的用户名xbmc进行更好的管理。修改 /etc/init.d/transmission-daemon
文件:
#USER=debian-transmission #注释此行,修改为自定义的用户名
USER=xbmc
XBMC的强大之处在于可以通过插件进行无限扩展,我安装了Getlib, 7176, TheMovieDb几个电影类的削刮器以根据文件名自动获取电影的封面和制作信息。剧集方面安装了TheTVDb的削刮器,另外还可以安装 xbmc-addons-chinese 里的扩展,添加Youku等在线视频播放,更好地扩展网络电视功能。
此外,在XBMC下可安装Transmission的插件,便可通过XBMC监控Transmission下载,例图:
XBMC下最漂亮的皮肤莫过于Aeon系列,Aeon下面有Aeon65, Aeon MQ2和Aeon Nox三个mod。个人更偏向于使用 Aeon Nox ,系统资源占用少于前二者且皮肤功能异常强大,整个UI也非常漂亮(见下文“截图欣赏”)。
安装方法很简单,去XBMC的扩展库里找到Aeon Nox安装就行了,下载过程可能有点慢,毕竟这个皮肤解压后的体积高达60MB。不过皮肤安装后的问题是缺少中文字体支持,解决方法是:
复制一个中文字体到 ~/.xbmc/addons/skin.aeon.nox/fonts
目录,并重命名为Arial.ttf(简单起见)。
然后修改 ~/.xbmc/addons/skin.aeon.nox/720p/Font.xml
文件,将 filename
中的字体全部替换为Arial.ttf。
为了更好地实现HTPC的流畅体验,还需要对安装后的系统进行一些优化。
整个系统优化完之后,就可以在GDM中选择默认登录xbmc-standalone环境,而不进入Gnome桌面环境,以节省不必要的系统资源占用。
写在最后,我已经为我的HTPC新添置了一块Seagate的GoFlex Desk 2TB移动硬盘以满足我下高清的需求,Acer的R3700主机连续运行几天既不会有噪音也没有发热的现象。电脑之间,电脑与手机之间通过无线网络进行互联,一定要用上801.11n的无线路由器才能满足无线网络之间的数据高速传输。
原文:http://www.cnblogs.com/huolarry/p/4298395.html