xbmc的开机自动启动

东西多了,徒增烦恼。最近换了新电脑,以前用的一台旧笔记本闲置下来。它是三年前买的一款惠普HP540,当时买的时候就属于低端配置,如今该如何处理它?这成为近日挥之不去的困扰。

这台HP 540 配置是这样的:

  • 处理器:Intel 酷睿2双核 T5670
    处理器主频(GHz):1.8
    二级缓存(KB) :2048
    前端总线频率(MHz) :800
    主板芯片组: Intel GM965+ICH8-M
    内存容量(MB) :2048
    内存描述:DDR2 667
    硬盘容量(GB) :160
    硬盘转速(转/分) :5400
    硬盘缓存(M) :8
    显示屏尺寸(英寸):14.1
    显示屏类型:TFT WXGA
    最大分辨率(dpi) :1280×800
    显卡:集成,Intel GMA X3100
    视频输出:1个VGA端口
    操作系统:Windows XP SP3 和 Ubuntu 11.10 双系统

起初我想转让,因为拿它写写论文、听听歌、看看片、上上网,绝对是绰绰有余的。可是,触摸板上的鼠标左键不灵了,显示屏下方时不时会闪一下,恐怕即使卖掉也不值钱了。后来我想给正在上幼儿园的儿子入门用,我甚至安装了一个叫作QIMO的专为学龄前儿童设计的操作系统,可是又打消了这个念头,觉得不应该让孩子过早混淆真实和虚拟世界。最后的决定是,把它改造成一台多媒体播放器,打造一个家庭影院,取代我家古旧的DVD机,用来弥补家里没有电视机、在国外不方便看国内节目的缺憾。
实现这个目标,非XBMC莫属。

XBMC是什么?很多复杂的解释经常让初学者一头雾水。就设想它是个播放器软件吧,就像千千静听或smplayer一样。在此基础上增加外围的辅助功能,例如获取相关的艺人介绍、海报等信息,用比较炫的方式展示出来。可以加上天气预报、RSS、查看邮件等附加功能。
XBMC安装起来容易,网上有太多介绍,这里推荐一个:点我。

我顺利地完成了XBMC 11.0-RC2 的安装和运行,并在ubuntu 11.10 和windows xp sp3上比较了一下。其实这事儿完全可以到此为止了,可是我的强迫症发作了。我的xbmc,打开的过程繁琐。我希望把笔记本电脑放在电视柜原来放DVD机的位置,接上家里的外接显示器和音响,平时就当DVD机用,合着盖子不再打开了。可是现在必须这样操作:
按笔记本电脑的电源开关—>等待—>登录操作系统—>等待—>打开xbmc程序—>选择节目
即使再买个无线键盘进行此番操作,我也嫌繁琐。我希望像机顶盒一样,只需按一下开机按钮。
那就折腾一下试试。
这个开机自动运行的问题,涉及几个前后相继的步骤:

1 主板设置为电源接通就自动开机。
只要一开插线板上的开关,不必按笔记本的电源键就可以开机了。这需要在bios里找到电源选项来设置。除此之外别无他法。遗憾的是,我死活找不到这个选项。咨询了惠普的工程师才确认,原来HP540的主板天生不支持这个功能……
如果只是需要开机的时候按一下电源键,我还能忍。本步跳过。

2 无须输入密码就自动登录。
在Ubuntu上设置一个无密码的标准帐户,并将自动登录开关打开。Ubuntu 11.10 会无须任何操作而默认登录这个帐户。
在windows xp上,除非只有一个没有密码的帐户,否则总需要点一下才能进去,因此windows xp完败。不过,后续遇到的问题让我一度考虑返回windows xp。此乃后话,暂且不表。后面几步均是在Ubuntu下。

3 登录后自动运行xbmc。
这一步有两种方法。
3.1 一种是登录环境选择Unity(默认,不必更改),在开机启动项里添加xbmc。添加方法:启动应用程序—>添加,名称随意,命令写为xbmc。
ubuntu添加开机自动运行程序方法可参见:点我还有我

3.2 另一种是在登录环境中选择直接进入 xbmc。方法是在终端运行指令:
sudo /usr/lib/lightdm/lightdm-set-defaults -s XBMC
或者打开 lightdm.conf文件,
sudo gedit /etc/lightdm/lightdm.conf
将user-session一项设置为 user-session=XBMC即可。
这里如果XBMC换为unity或unity-2d,就在登录时自动进入unity。
我为 3.2 能直接进入xbmc环境兴奋不已,那感觉真像个DVD机。而且,由于没有启动不必要的程序,我这个 低配置的笔记本竟然播放得十分流畅,倒是3.1有时播放起来显得捉襟见肘。

4 登录后自动挂载windows分区
我的ubuntu是用wubi安装的,储存在本地的音频视频文件都放在windows的e盘分区,这个分区默认下是不挂载的,xbmc找不到这个分区。自动挂载的方法是修改fstab:
sudo gedit /etc/fstab
在这里增加挂载的分区:
/dev/sda6 /media/WOR ntfs none 0 0
如果不知道这个分区的信息,可以用下面的指令查看:
sudo blkid

至此,从开机到看见xbmc界面,一气呵成。我在3.2的启动方式下,和老婆看了一晚上天翼高清的在线肥皂剧。
这时候,意想不到的新问题出现了:虽然笔记本电脑的盖子是合上的,但笔记本显示器竟然一直是亮着的!照理说默认应该合上盖子就黑屏,只在外接显示器上显示,既省电,又保护笔记本显示器不因过热而烧毁。但是为什么xbmc环境下不会在合上的时候自动关闭笔记本显示器呢?
也许是xbmc环境的问题?于是我换用3.1的方案在unity里测试,结果发现也一样!
那么是xbmc软件本身的问题?只好在windows xp下试了试,这次好了,只要盖上笔记本的显示屏,就乖乖地黑了。
这说明是ubuntu的问题了。
折腾到这里,我这个linux菜鸟真累了。心想,windows xp不就是需要在登录时点一下么,要不,就回windows吧。
这差点就成了最终的结论。windows下一切都很傻瓜式操作,一切顺利,直到我发现,前一晚看过的肥皂剧,windows下连不上。选择天翼高清下面的剧集之后,显示”工作中”几秒钟后,不播放任何内容。
关闭防火墙,也不行。但是播放Youtube和TED都很顺利,只是比ubuntu下显得网速慢一点。立刻回到ubuntu下的xbmc,连天翼高清一切都正常播放。再回到windows,还是不行。
怪哉怪哉。无论ubuntu还是windows,怎么就差那么一点点,就是不够完美呢?难道我要看网上视频的话就进ubuntu,看本地的就进windows?
此时已经到了折腾第二天的深夜。是夜,德国要改用夏令时,1:59的下一分钟是3:00,活活又被偷走了一个小时。我觉得还是回到定制灵活的ubuntu想办法比较有希望,于是打算向我的一位故友求助了,他是个linux高手。这个家伙很擅长用命令行来解决问题。
命令行?我突然灵光一闪。
事情,就这样成了。
只要写一条关闭笔记本显示器的命令,保存成一个文件,例如命名为CloseMonitor,登录ubuntu后像自动运行xbmc一样自动运行这个文件,就可以了。命令行是这样的:
xrandr –output VGA1 –auto –output LVDS1 –off

理论可行,现实仍然有问题。笔记本的确自动关闭自己的显示器了,但是当xbmc自动打开时,笔记本显示器又随之打开了!依然是双屏闪亮!
是不是启动顺序的问题?如果在xbmc打开后,再关闭笔记本显示器呢?我在上面这条命令之前又加了个延时命令,新的CloseMonitor文件是这样的:
sleep 2s
xrandr –output VGA1 –auto –output LVDS1 –off

这次运行的结果好多了,xbmc打开了,笔记本显示器也关上了,但是,外接显示器上的分辨率出了问题。我的外接显示器最大分辨率是1920 x 1080,而笔记本显示器是1280 x 800。现在,外接显示器上用前者的分辨率显示Unity的桌面,用后者的分辨率显示xbmc,还自以为是全屏。
筋疲力尽的我,还是找到了解决办法。把上面的指令再改一下,最终的CloseMonitor文件是这样的:
sleep 2s
xrandr –output VGA1 –same-as LVDS1 –mode 1024 x 768 –output LVDS1 –off
这里–same-as LVDS1表示是笔记本显示器的镜像。如果设为–right-of LVDS1 –auto,就是把桌面扩展到外接显示器。xrandr不加参数的话可以查看显示器支持的分辨率。
可以钻进被窝了美美地睡一觉,梦里享受完美的xbmc家庭影院了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax