高性价比 NAS+HTPC 折腾记

最近组装了一台 NAS+HTPC 合体的机器,自认为还有比较好的性价比,在折腾了两个星期之后,终于差不多搞定所有功能。这台 HTPC 使用 XBMC 作为媒体中心,使用 OpenMediaVault 作为 NAS 系统,这篇博客主要记录 OpenMediaVault 和 XBMC 的安装过程和问题。另外,因为折腾的时候有些地方来来回回搞了好多次,记录的顺序可能并不严谨。

通过 XBMC 可以直接索引所有电影,使用 themoviedb.org 来获取电影海报、介绍、演员等信息,使用 IMDb 来获取电影的评分。使用 OpenMediaVault 来管理存储,设置共享文件夹等。

在设置成功 VA-API 后,XBMC 就可以使用显卡的硬件加速了,在播放 1080P 时,CPU 占用基本在 20% 左右,还算比较不错了。

当然,在一开始我也可以选择使用 Windows 系统,XBMC 也有 Windows 版本,在 Windows 上基本也不用操心驱动程序的事情,而且 Windows 上设置 Samba 共享也是很方便的。

注意:本篇文章都是以 AMD E350 APU 来讲安装过程的,如果你用的主板并不是 E350,或者型号与我使用的不完全一致,可能安装过程会有不同。另外,因为 OpenMediaVault 是基于 Linux 的,所以这需要你懂一些 Linux 知识。

PS. 另外,本篇文章的操作都是直接使用 root 账户进行,如果你在安装的时候使用了非 root 账户,那么多数操作可能需要加 sudo 来运行。

硬件

  • 机箱:万由 N400 4盘位 NAS 机箱
  • 主板:梅捷 SY-E350-U3M
  • 内存:芝奇 G.Skill DDR3 1333 4G
  • 电源:肯亿 200W 小 1U 电源
  • 系统磁盘:SSK SFD201 USB3.0 16G U盘

因为都是在促销,或者优惠的时候购买的,不包邮费总价在 1400 元左右。

软件

  • 基础系统:Debian Squeeze
  • NAS 系统:OpenMediaVault
  • 媒体中心:XBMC 10.1 Dharma

安装系统

创建 OpenMediaVault 安装盘

因为是用的 NAS 机箱,上面是没有光驱位的,而且我也没有现成的光驱可以用,因为需要用 U 盘来引导安装系统。

首先需要准备一个 512M 以上的 U 盘,然后从 openmediavault.org 下载最新版本的 OpenMediaVault,再使用下面的命令将镜像恢复到 U 盘上:

sudo dd if=openmediavault_0.2.5_i386.iso of=/dev/disk1 bs=4096

注意:disk1 是在我的机器上 U 盘所在的位置,另外,在 dd 恢复镜像的时候,要使用 /dev/disk1,而不是 disk1s1,disk1s1 就会将镜像恢复到某个分区而不是整个 U 盘了。

启动盘注意事项

因为是用的 USB 3.0 的 U 盘,我在安装系统的时候,把 U 盘插在了 USB 3.0 的接口上,但是在系统安装程序启动之后,USB 3.0 的 U 盘没有自动识别出来,因此要将 USB 3.0 的 U 盘插在 USB 2.0 的口上。

在安装的过程中,可以将 Debian 源的地址修改为网易的源镜像,这样安装软件的速度更快一些,网易源的地址为:

http://mirrors.163.com/debian/

安装基本软件

先安装一些基本的软件,包括 X.org,Gnome,GDM3,Vim 和 less:

apt-get install xorg gnome-core gdm3 vim less

Gnome 和 GDM3 其实到后面都不会用到,但是在运行一些需要图形界面的工具时,例如 glxinfo、fglrxinfo,就需要有 X 支持了。

设置 debian-multimedia 源

为了让一些包默认使用 debian-multimedia 的源,先将 debian-multimedia 的源添加到 /etc/apt/sources.list

deb http://www.debian-multimedia.org squeeze main non-free 

并将所有其他源行首添加 # 注释掉,运行 apt-get update 更新源。

在更新完成之后,再将其他源行首的 # 删掉,再次运行 apt-get update 更新源。

安装 debian-multimedia keyring

apt-get install debian-multimedia-keyring

设置 XBMC 用户

添加一个用户 xbmc 用户来运行 XBMC:

useradd -m -s /bin/bash xbmc
passwd xbmc

设置用户 openmediavault 密码

在后面的设置过程中,可能需要管理员权限,而这个时候是用的 openmediavault 这个用户,我不清楚这个用户的默认密码是什么,所以需要先设置这个用户的密码:

passwd openmediavault

启用 SSH

在安装完 OpenMediaVault 之后,就可以直接访问它的 Web 界面了,建议启用 SSH 以便直接在本机进行操作,省去使用键盘看着电视操作的麻烦。

OpenMediaVault 默认的管理员用户名为 admin,密码为 openmediavault

安装显卡驱动

Debian 源里的 ATI 闭源驱动 fglrx 貌似有点问题,因此建议从官方下载后再安装。

官方驱动安装说明:

删除默认驱动

apt-get remove --purge xserver-xorg-video-radeon
apt-get remove fglrx-driver fglrx-control fglrx-glx fglrx-atieventsd fglrx-modules-dkms fglrx-glx-ia32

安装编译环境

官方驱动在安装过程中有一些东西需要编译,因此需要安装一下编译环境,以及相关的依赖包:

apt-get install build-essential ia32-libs linux-headers-$(uname -r)

下载并安装显卡驱动

注意,安装显卡驱动需要在 X 下面进行,因此可以在启动时,登入到 Gnome,用 Gnome 中的 Terminal 来安装。

另外,在登入时,建议选择 root 账号。

wget http://www2.ati.com/drivers/linux/ati-driver-installer-11-12-x86.x86_64.run
chmod +x ati-driver-installer-11-12-x86.x86_64.run
./ati-driver-installer-11-12-x86.x86_64.run

在安装时,选择自动模式即可,自定义模式似乎有些问题。

在安装完成后,使用 aticonfig 命令来生成默认的 X.org 配置文件:

aticonfig --initial

配置视频硬件加速

apt-get install libkms1
wget http://www.splitted-desktop.com/static/libva/libva//pkgs/amd64/libva1_0.31.1-1+sds5_amd64.deb
wget http://www.splitted-desktop.com/static/libva/xvba-video/xvba-video_0.8.0-1_amd64.deb
dpkg -i libva1_0.31.1-1+sds5_amd64.deb
dpkg -i xvba-video_0.8.0-1_amd64.deb

设置一下 /etc/environment:

vi /etc/environment
LIBVA_DRIVER_NAME=xvba
LIBVA_DRIVERS_PATH=/usr/lib/va/drivers

安装完成后,进入到 X,在 Gnome Terminal 里检查是否安装成功:

xbmc@openmediavault:~$ vainfo
libva: libva version 0.31.1-sds1
Xlib:  extension "XFree86-DRI" missing on display ":0.0".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/va/drivers/fglrx_drv_video.so
Xlib:  extension "XFree86-DRI" missing on display ":0.0".
libva: va_openDriver() returns 0
vainfo: VA API version: 0.31
vainfo: Driver version: Splitted-Desktop Systems XvBA backend for VA-API - 0.8.0
vainfo: Supported profile and entrypoints
      VAProfileH264High               : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD

这表示视频硬件加速已经安装成功了。

配置声音以及 HDMI 音频

安装声音服务

apt-get install alsa-base alsamixergui

要添加 xbmc 用户到 audio 用户组:

usermod -a -G audio xbmc

设置 HDMI 音频

使用 aplay -l 命令,可以列出系统中的声卡,HDMI 音频即是 card 0: Generic [HD-Audio Generic], device 3: ATI HDMI [ATI HDMI]

root@openmediavault:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 3: ATI HDMI [ATI HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: SB [HDA ATI SB], device 0: ALC887 Analog [ALC887 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: SB [HDA ATI SB], device 1: ALC887 Digital [ALC887 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

记下 card 和 device 后面的数字,这个要写在 /etc/asound.conf 里面,用来配置默认音频:

root@openmediavault:~# vi /etc/asound.conf
pcm.!default {
    type hw
    card 0
    device 3
}

取消 HDMI 音频默认静音

使用 amixer scontrols 命令,可以找出 HDMI 音频的控制器,

root@openmediavault:~# amixer scontrols
Simple mixer control 'IEC958',0

使用 amixer sset IEC958 unmute 可以来设置音频取消静音:

root@openmediavault:~# amixer sset IEC958 unmute 
Simple mixer control 'IEC958',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [on]

amixer sset IEC958 unmute 添加到 /etc/rc.local 可以在系统启动时就取消 HDMI 音频的静音了。

安装 XBMC

使用 mplayer 测试 VA-API

可以先安装一下 mplayer 来测试 VA-API 是否安装成功:

apt-get install libavformat-dev libavutil-dev libpostproc-dev libswscale-dev libmpeg2-4-dev libass-dev libmpcdec-dev libflac-dev libwavpack-dev python-dev gawk gperf nasm libcwiid1-dev libbluetooth-dev zlib1g-dev libsmbclient-dev libiso9660-dev libssl-dev lsb-release libvdpau-dev libmicrohttpd-dev libmodplug-dev librtmp-dev libcrystalhd-dev curl python-dev libyajl-dev libxtst-dev libfaad-dev yasm subversion libva-dev
wget http://www.splitted-desktop.com/static/libva/mplayer-vaapi/mplayer-vaapi-latest-FULL.tar.bz2
tar xpvf mplayer-vaapi-latest-FULL.tar.bz2
cd mplayer-vaapi-20110127
./checkout-patch-build.sh
cd mplayer-vaapi
make install

使用 mplayer 测试 vaapi 是否可用:

mplayer -vo vaapi -va vaapi -lavdopts threads=N moviename.mkv

如果能正常播放,说明 VA-API 安装成功。

编译安装 XBMC 10.1 Dharma

安装依赖:

apt-get install debhelper python-support cmake autotools-dev autoconf automake unzip libboost-dev zip libtool libgl1-mesa-dev libglu-dev libglew-dev libmad0-dev libjpeg-dev libsamplerate-dev libogg-dev libvorbis-dev libfreetype6-dev libfontconfig-dev libbz2-dev libfribidi-dev libsqlite3-dev libasound2-dev libpng-dev libpcre3-dev liblzo2-dev libcdio-dev libsdl-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libenca-dev libjasper-dev libxt-dev libxmu-dev libxinerama-dev libcurl4-gnutls-dev libdbus-1-dev libhal-storage-dev libhal-dev libpulse-dev libavahi-common-dev libavahi-client-dev libxrandr-dev libavcodec-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev libmpeg2-4-dev libass-dev libmpcdec-dev libflac-dev python-dev gawk gperf libcwiid1-dev libbluetooth-dev zlib1g-dev libsmbclient-dev libboost-thread-dev libiso9660-dev libssl-dev lsb-release libmicrohttpd-dev libmodplug-dev librtmp-dev libcrystalhd-dev curl python-dev libyajl-dev libplist-dev libusb-dev libudev-dev  autopoint libmms-dev libmysqlclient-dev

下载 XBMC 10.1 Dharma 代码:

wget --no-check-certificate https://nodeload.github.com/xbmc/xbmc/zipball/10.1-Dharma -O xbmc-10.1.zip
unzip xbmc-10.1.zip
cd xbmc-xbmc-9f3aec3

编译和安装:

./bootstrap
./configure --prefix=/usr/local/xbmc --enable-vaapi
make -j2
sudo make install

如果需要蓝光导航支持的话,需要加上 libbluray,先编译安装 libbluray 库:

git clone git://git.videolan.org/libbluray.git
cd libbluray/
./bootstrap
./configure --prefix=/usr
make
make install

那么在前面 configure XBMC 的时候,就要添加 --enable-libbluray 参数:

./configure --prefix=/usr/local/xbmc --enable-vaapi --enable-libbluray

配置 XBMC

禁用 GDM3

因为要使用 XBMC 作为默认的 X 界面,所以需要禁用掉 GDM3:

apt-get install chkconfig
chkconfig —level 2345 gdm3 off

设置 xbmc 用户自动登录

编辑 /usr/bin/autologin,填入以下内容:

#!/bin/bash
/bin/login -f xbmc

并添加可执行权限:

chmod +x /usr/bin/autologin

编辑 /etc/inittab,找到 1:2345:respawn:/sbin/getty 38400 tty1,修改为:

1:2345:respawn:/sbin/getty -n -l /usr/bin/autologin 38400 tty1

设置 xbmc 用户自动启动 XBMC

编辑 /home/xbmc/.profile,在最后添加以下内容:

PATH=/usr/local/xbmc/bin:$PATH

if [ -z “$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
    startx
fi

修正 XBMC 里不能关机、重启、休眠

apt-get install policykit-1 upower acpi-support
vi /var/lib/polkit-1/localauthority/50-local.d/custom-actions.pkla
## 填入以下内容:
[Actions for xbmc user]
Identity=unix-user:xbmc
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*;org.freedesktop.udisks.*
ResultAny=yes
ResultInactive=no
ResultActive=yes

设置 xbmc 用户的 X 初始化文件

编辑 /home/xbmc/.xinitrc,填入以下内容:

exec /usr/bin/ck-launch-session /usr/bin/dbus-launch --exit-with-session /usr/local/xbmc/bin/xbmc-standalone

并修改权限:

chown xbmc:xbmc /home/xbmc/.xinitrc

修正 XBMC 主题中文的问题

XBMC 中的多数主题自带的字体都不支持中文显示,因此需要使用一个带中文的字体来替换主题自带的字体,我使用的主题是 Rapier,使用 YaHei.Consolas.1.12.ttf 这个字体来替换主题自带的字体。

先将 YaHei.Consolas.1.12.ttf 复制到主题所在目录的 font 文件夹中:

cp YaHei.Consolas.1.12.ttf /home/xbmc/.xbmc/addons/skin.rapier/fonts

然后使用 bash 脚本来直接删除原来的字体,并用原来的文件名软连接到新的替换字体:

CN_FONT=YaHei.Consolas.1.12.ttf
for f in `ls *.ttf`; do if [ "$f" != $CN_FONT ]; then rm $f; ln -s $CN_FONT $f; fi; done

设置视频硬件加速

进入“设置》视频》播放”,进行以下设置:

* 取消选中 Allow hardware acceleration (VDPAU)
* 选中 Allow hardware acceleration (VAAPI)

进入“设置》系统》视频输出”,进行以下设置:

* 垂直空白同步:总是开启

设置声音输出

进入“设置》系统》音频输出”,进行以下设置:

* 音频输出设备:hdmi
* 直通输出设备:hdmi

另外,由于我的电视不支持“AC3 数字音效”和“DTS 数字音效”,所以也要取消选中这两个选项。

安装 Web 界面

我使用 iPhone 来控制 XBMC,试用了几个 Web 界面之后,觉得 wTouch 这个界面用起来比较爽。

首先需要在程序扩展里,安装“Web 界面》wTouch”。

然后在“设置》系统》网络》服务”中进行以下设置:

* 选中“允许通过 HTTP 控制 XBMC”
* 设置“Web 界面”为“wTouch”
* 选中“允许异地程序控制 XBMC”

在 iPhone 中使用 Safari 打开 XBMC 的 IP + 设置中的端口,例如 192.168.2.100:8080,点击 Safari 底部中间的动作按钮,选择“添加至主屏幕”,这样以后就可以像使用一般应用程序一样来使用 wTouch 来控制 XBMC 了。

wTouch 主要使用触摸来操作,使用还是比较方便的,可以在 wTouch 界面中点击右上角的“Help”,来查看使用帮助。

XBMC 中文扩展库

中文扩展库项目地址:

cd /home/xbmc
wget http://xbmc-addons-chinese.googlecode.com/files/repository.googlecode.xbmc-addons-chinese.zip

在扩展中,从 zip 安装

可以自行选择添加需要的扩展,已有扩展列表见

其他设置

HDMI 输出不能全屏的问题

先添加一个脚本 /usr/bin/atiscan 来设置 HDMI 输出,脚本来源

#!/bin/bash
#
# Suggest you put this script into you home directory, eg 
# mkdir -p ~/bin
# gedit ~/bin/atiscan
# copy paste this in
# chmod +x ~/bin/atiscan

# CONFIG STUFF YOU WILL EDIT
# You can let the script query you for this stuff, though once you have run it once, 
# suggest you edit the script and hard code the settings
DISPLAY_TYPE='dfp1'
WIDTH=1920  
HEIGHT=1080

# SCRIPT STARTS

if [ "" == "$WIDTH" ]
then
    echo "please enter your display width (eg 1280, 1920 etc)"
    read WIDTH
fi
if [ "" == "$WIDTH" ] 
then
    echo "empty widt, dying"
    exit 1
fi
if [ "" == "$HEIGHT" ]
then
    echo "please enter your display width (eg 1280, 1920 etc)"
    read HEIGHT
fi
if [ "" == "$HEIGHT" ] 
then
    echo "empty height, dying"
    exit 1
fi

# DISPLAY TYPE
if [ "" == "$DISPLAY_TYPE" ] 
then
    echo "First we need to check which type of display it is"
    types="crt1 lvds tv cv tmds1 crt2 tmds2 tmds2i dfp1 dfp2 dfp3 dfp4 dfp5 dfp6"
    for t in $types
    do
        aticonfig --query-dispattrib=$t,positionX  
    done
    echo"

    The one that didnt error is the right one

    If you are running more than one monitor/display then take your pick!

    "
    echo "Please enter the one you want to set to $WIDTH x $HEIGHT"
    read DISPLAY_TYPE   
fi


if [ "" == "$DISPLAY_TYPE" ] 
then
    echo "empty display type, dying"
    exit 1
fi


#POSITION
aticonfig --set-dispattrib=$DISPLAY_TYPE,positionX:0
aticonfig --set-dispattrib=$DISPLAY_TYPE,positionY:0
aticonfig --set-dispattrib=$DISPLAY_TYPE,sizeX:$WIDTH
aticonfig --set-dispattrib=$DISPLAY_TYPE,sizeY:$HEIGHT

在添加完脚本后,可以让这个 atiscan 在启动 XBMC 之前运行,修改 /home/xbmc/.xinitrc,在 xbmc-standalone 前一行,添加一句 /usr/bin/atiscan,.xinitrc 的内容就会变成像下面这样:

/usr/bin/atiscan
exec /usr/bin/ck-launch-session /usr/bin/dbus-launch --exit-with-session /usr/local/xbmc/bin/xbmc-standalone

格式化硬盘为 ext4 时的选项

如果硬盘只做为电影存储的盘,那么有必要将 block size 设置偏大一些,否则一块 2T 的硬盘,inode 所占的空间大概要在 100GB 左右。

参考:

备份系统

因为系统是装在 U 盘上的,可以直接在另外的电脑上,或者 PE 系统,使用 GHOST 来备份,也可以使用 tar 命令来将系统分区备份成一个文件:

tar czpvf /backup$(date "+%Y-%m-%d").tar.gz --exclude=/proc --exclude=/media --exclude=/mnt --exclude=/dev --exclude=/sys --exclude=/tmp --exclude=/lost+found --exclude=/backup$(date "+%Y-%m-%d").tar.gz /

还原时同样使用 tar 命令:

tar -xvpzf /backup.tar.gz -C /
mkdir /proc /lost+found /mnt /sys /media

截图欣赏

后记

其实,XBMC 在 Linux 上使用并不太完美,最不折腾的方案还是用 Windows + XBMC + 远程桌面 来管理,Windows 的共享也不是特别麻烦,特别是作为 HTPC,并不需要特别严格的权限管理。

不过,总算是折腾完了,目前运行也算良好。

希望此文对正在折腾 NAS+HTPC 的你有所帮助。

参考资料

— EOF —

发表评论?

25 条评论。

  1. 赞啊,我准备也尝试下。

  2. 看到参考资料,我知道这是多么一个折腾的东西了,

  3. 现在在用的是asus M4A78HTPC RC版体,用了块3核心的AMDCPU,耗电校大,E350不错,功耗低,各种接口都有了.系统方面在win7+迅雷下载,或者在ubuntu 下用xbmc看电影.为什么不在win7下用xbmc,因为在win7下太卡了.

  4. 我用的是zotac的zbox,不过你这样似乎更精简一点,只用u盘做系统。你的媒体文件是放在my book live上的吧?

    • 我的媒体文件是放在 HTPC 里的,因为本身 HTPC 也是用的 NAS 机箱,现在装了一块 1.5T 的硬盘。My Book Live 专职下载机~

      当然把媒体文件放在另外的机器上也是可以的,反正是 Linux,直接 mount 到 HTPC 上再由 XBMC 索引即可。

  5. XBMC 有直接对 XvBA 的访问了,没必要再折腾 xvba-vaapi 了吧:

    http://www.phoronix.com/scan.php?page=news_item&px=MTAyODU

  6. 很好的指导文章,
    一个问题,lm-sensors 怎么样配置才能正常工作?

  7. 请问装下来系统盘多大?因为我的DOM只有2G,担心不够用

  8. 如何安装在DOM中呢? 我想买一个4G的DOM盘,不知道够不够用。
    和LZ的硬件是一模一样的

  9. openmediavault 和xmbc是同时运行的?

  10. 哈,你做了个openelec 加强版的

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>