作为一名高清爱好者,一直想配置一台 HTPC 放家里实现高清播放外加家庭服务器功能。Nvidia 的 Ion 平台自然是高清平台的硬件首选,而家庭媒体中心的软件端则首先考虑开发的已经很成熟的开源利器 XBMC。XBMC 本身支持多种平台(Linux, Mac OS X, Windows …),从驱动程序和配置方面来说,自然是基于 Windows 搭建最省事,但最终选择 Linux 的原因是:ssh。Linux 的 ssh 让我可以很方便地通过其他电脑,甚至手机操作我的家庭媒体中心主机。
因此,我最终在硬件上选择了 Acer Aspire R3700,基于 Ion 平台的超小型主机,配置如下:
- CPU:Intel Atom™ D525
- 内存:2G DDR3 800Mhz
- 硬盘:320G Sata
- 显卡:Nvidia G320
- 网络:WLAN 802.11b/g/n
- 接口:USB 接口 6 个、HDMI 输出、多合一读卡槽
- …
除了买的主机自带了鼠标键盘之外,我还选购了 HDMI 高清线以及 MCE 遥控器。
系统方面选择了安装配置简便的 Ubuntu 10.10 系统(我开始是打算使用 Gentoo 的,但是编译着编译着我就崩溃鸟)。使用 Ubuntu 要实现的功能如下:
- 实现 XBMC 完全管理影音库,并通过 HDMI 输出到家里 46 吋的电视机
- 通过无线网络连接家庭路由器,尽量摆脱网线的束缚
- 开启 sshd,通过其他电脑或者手机 ssh 到家庭媒体主机进行系统维护操作
- 开启 transmission-daemon,利用该主机进行高清下载,并可远程控制 Bittorrent 下载
- 实现开机自动进入媒体中心,用遥控器进行媒体播放操作,避免使用键鼠的可能
系统安装
因为 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 进行完全清理。
解决 RaLink RT3090 网卡驱动问题
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
安装 NVidia 驱动
为了充分发挥 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
调试 HDMI 的音频输出
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" }
开启 iptables+ssh
由于本机是通过无线路由连接,最好先在路由器上映射好相应端口并绑定一个固定 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
要获得 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
安装 Lirc 实现遥控播放 XBMC
作为 HTPC 的一部分,脱离键鼠使用遥控器进行影院播放控制自然是必不可少,我使用的是 Microsoft Media Center 的遥控器,通过 USB 外接一个红外线接收器就可以了。
要让遥控器工作,首先得安装 lirc,运行 sudo apt-get install lirc 完成安装,首次安装完成会弹出遥控器的终端配置界面:
- 在 Remote Control Configuration 中选择 Windows Media Center Transceivers/Remotes (all)
- 在 IR transmitter, if present 中均选择 Microsoft Windows Media Center V2 (usb) : Direct TV Receiver
然后将 lircd 加入系统自启动进程,重启计算机,在终端中运行 irw,摁遥控器的方向键进行测试,如果终端内能正确识别遥控器操作说明遥控器准备就绪了。如果无法识别的话,需要 sudo dpkg-reconfigure lirc 重启进行配置,或者就是遥控器的电池电力不足(我就是因为这个傻逼原因瞎折腾了系统两个多小时)。
安装 Transmission-daemon
作为高清下载机,实现 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 插件
XBMC 的强大之处在于可以通过插件进行无限扩展,我安装了 Getlib, 7176, TheMovieDb 几个电影类的削刮器以根据文件名自动获取电影的封面和制作信息。剧集方面安装了 TheTVDb 的削刮器,另外还可以安装 xbmc-addons-chinese 里的扩展,添加 Youku 等在线视频播放,更好地扩展网络电视功能。
此外,在 XBMC 下可安装 Transmission 的插件,便可通过 XBMC 监控 Transmission 下载,例图:

安装 XBMC 皮肤: Aeon Nox
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 的流畅体验,还需要对安装后的系统进行一些优化。
- 设置开机免密码自动登录 XBMC 账户 在 System -> Administration -> Login Screen Settings 中点击 Unlock,设置 XBMC 账户为自动登录。
- 设置 XBMC 关机功能 在 XBMC 的系统设置中的省电模式里,将自动关机功能中的选项设置为关机,这样既可通过摁遥控器上的关机键实现关机。
整个系统优化完之后,就可以在 GDM 中选择默认登录 xbmc-standalone 环境,而不进入 Gnome 桌面环境,以节省不必要的系统资源占用。
截图欣赏








参考:
- HOW-TO perform a miminal Ubuntu and XBMC install on a Asus EeeBox PC EB1501
- HOW-TO set up HDMI audio on nVidia GeForce G210, GT220, or GT240
- Setting up Ubuntu 10.10 on Revo 3700
- XBMC 10.04 + 高清硬解的中文设置
End
写在最后,我已经为我的 HTPC 新添置了一块 Seagate 的 GoFlex Desk 2TB 移动硬盘以满足我下高清的需求,Acer 的 R3700 主机连续运行几天既不会有噪音也没有发热的现象。电脑之间,电脑与手机之间通过无线网络进行互联,一定要用上 801.11n 的无线路由器才能满足无线网络之间的数据高速传输。