如何配置一台Firefox OS电视机

2016-02-15 +6 300525人围观 ,发现 5 个不明物体 极客

firefox.jpg

想不想配置一台开源免费操作系统的电视机,如果你感兴趣,那么就请阅读下文吧。

我的 Firefox OS系统电视机是基于Intel NUC的迷你家用电脑平台。作为我在这方面的第一个POC演示,我开始时在里面添加程序使得与 boot to gecko(B2G)系统保持一致,然后在里面架构添加Gecko,并建立Gonk以及Gecko联系,特别是基本窗口程序。我计划要在gecko找到一条捷径。FirefoxOS由Gonk、Gecko和Gaia三部分组成,Gecko是系统的平台部分,包括渲染引擎;Gonk包括内核和驱动;Gaia是用户界面。

B2G是“Boot To Gecko”的缩写,是Mozilla公司基于Web标准开发的完全开放的移动操作系统,从系统本身到应用程序完全由HTML5、CSS和JS来写的。当你建立 mozilla-central(启动程序=b2g),b2g是一个正常的程序目标。当然我们也可以利用 GTK3替代 gonk。当然,大量的功能将会丢失,但我们再来看看,正如标题所提到的,这只是第一步。

硬件平台

Intel NUC NUC5PPYH

基本硬件规格

Intel Pentium processor N3700
4GB DDR3L RAM
Intel HD Graphics集成显卡
Intel SSD 320 Series 40GB固态硬盘

Image

安装

安装一个轻量简洁的Linux系统(archlinux是我的首选)
建立 b2g(利用--enable-application=b2g命令建立mozilla-central)
建立gaia(GAIA_DEVICE_TYPE=tv)
全屏状态下,b2g中运行gaia
安装archlinux系统

可以参考安装指南,当然在安装中最好不要跳过一些认为没必要步骤。

一些建议

使用GPT分区计划
一个启动和关闭需要安装USB驱动设置BIOS,可以使用UEFI引导系统安装操作系统
U盘写入速度 >190 MB/s
我设置一个简单的分区512MB EFI、4GB交换分区、系统分区30GB,之后建立 mozilla-central

这样做完之后回到安装之后

建立基础的系统

首先先建立网络,如果有WiFi可以连接

wifi-menu -o

保存好配置文件,当然也可以起一个好听的名字“my-super-profile”,以后也可以完成自动连接

netctl enable my-super-profile

设置一个用户名

useradd -m -G wheel -s /bin/bash fxos
passwd fxos

设置登录密码

visudo

注释

%wheel ALL=(ALL) ALL

切换 fxos用户

su fxos
cd ~/

或启用SSH和远程登录

pacman -S ssh
systemctl enable sshd
systemctl start sshd

在计算机上面远程登录

ssh fxos@

如果计算机上使用Windows系统请检查远程终端登录软件MobaXterm

准备安装gecko

获取系统相互依赖性

sudo pacman -Syu
sudo pacman -S wget python2 git gconf

获取服务支持(感谢 archLinux的服务支持)

wget -O bootstrap.py 

https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py

 && python2 bootstrap.py

你会在安装途中遇到提示问题,如下

:: Proceed with installation? [Y/n]

可以选择Yay \o/并继续下去,对于更复杂的情况,下面是我的推荐选项

Please choose the version of Firefox you want to build:
1. Firefox for Desktop
2. Firefox for Android
Your choice:
1
:: There are 25 members in group base-devel:
:: Repository core
   1) autoconf  2) automake  3) binutils  4) bison  5) fakeroot  6) file
   7) findutils  8) flex  9) gawk  10) gcc  11) gettext  12) grep  13) groff
   14) gzip  15) libtool  16) m4  17) make  18) pacman  19) patch
   20) pkg-config  21) sed  22) sudo  23) texinfo  24) util-linux  25) which
Enter a selection (default=all): all
WARNING! This script requires to install packages from the AUR This is potentially unsecure so I recommend that you carefully read each package description and check the sources.These packages will be built in /tmp/tmpEClkJO.
Do you want to continue? (yes/no) [no]yes
:: There are 4 providers available for libgl:
:: Repository extra
   1) mesa-libgl  2) nvidia-304xx-libgl  3) nvidia-340xx-libgl  4) nvidia-libgl
Enter a number (default=1): 1
Enter a number (default=1): 1
:: There are 2 providers available for libx264.so=148-64:
:: Repository extra
   1) libx264  2) libx264-10bit
Enter a number (default=1): 1

准备工作就是这些了

建立gecko

下载项目代码(如果你有需要当然可以随意使用 mozilla-central 以及 source snapshot)

git clone 
https://git.mozilla.org/integration/gecko-dev.git

进入目录

cd gecko-dev

利用你自己喜欢的编译器例如 vi或nano ,编写一个配置文件,之后保存并命名为.mozconfig

editor .mozconfig

粘贴以下内容

. "$topsrcdir/b2g/config/mozconfigs/common"
mk_add_options MOZ_MAKE_FLAGS="-j4 -s"
ac_add_options --enable-application=b2g
ac_add_options --disable-libjpeg-turbo

之后开始建立文件

./mach build

接下来需要一段时间,可以去喝些咖啡或啤酒

建立gaia

获取gaia

cd ~/
git clone https://github.com/mozilla-b2g/gaia
cd gaia

再次配置文件

editor build/config/custom-settings.json

在文件中填充内容

{
  "lockscreen.enabled": false,
  "lockscreen.locked": false,
  "devtools.debugger.remote-enabled": true
}

开始建立 gaia

make NOFTU=1 GAIA_DEVICE_TYPE=tv USE_LOCAL_XULRUNNER_SDK=1 XULRUNNER_DIRECTORY=/home/fxos/gecko-dev/obj-x86_64-unknown-linux-gnu/dist REMOTE_DEBUGGER=1

以上是需要编译的部分

Runtime的部分

在安装程序到最后一步的时候,之前可能有一些程序是多余并不需要了,一旦我确认程序的确不需要了,现在就删除了

sudo pacman -S nodejs npm xorg-server xorg-utils xf86-video-intel xorg-xinit ttf-dejavu pulseaudio pulseaudio-alsa pavucontrol

你会遇到一个提示来输入安装驱动程序

:: There are 2 providers available for xf86-input-driver:
:: Repository extra
   1) xf86-input-evdev  2) xf86-input-libinput
Enter a number (default=1): 2

引导至 gecko,以全屏模式启动 b2g ,登录一个已知服务器,编辑 ~/bash_profile

editor ~/.bash_profile

粘贴下面程序登录该服务器

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx

如果希望开机后自动登录服务器,输入下面命令

sudo systemctl edit getty@tty1

修改tty1控制台并粘贴下面命令

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin fxos --noclear %I $TERM

最后全屏启动 b2g ,之后编辑 .xinit 文件

editor ~/.xinitrc

粘贴下面命令

# set hdmi as sound output
pactl set-card-profile 0 output:hdmi-stereo+input:analog-stereo &
# start b2g and debug server
exec /home/fxos/gecko-dev/obj-x86_64-unknown-linux-gnu/dist/bin/b2g --profile /home/fxos/gaia/profile -screen 1919x1080 -start-debugger-server 6000

不幸的是使用1919×1080分辨率不是打错了,如果使用1921×1080分辨率,当然也可以试试看,会发生什么

重启之后应该是这样

Image

之后再做些什么

在设置boot to gecko会遇到很多问题,这样会给我们带来许多的工作量。下面会进行更多的设置,而其中会修改一些配置信息,设置之后系统性能为什么如此糟糕,可以检查下面这些设置信息。

接入 wifi、蓝牙, volume(音量调节)
设置菜单
添加火狐应用市场
可以连接xbox/steam游戏机

更重要的事情

使用Wayland协议
删除GTK3
建立gonk,最终不等同于依赖于安卓平台
利用树莓派2交叉编译它

已知的问题

WebIDE集成了所有常见的Firefox调试工具,实现了应用程序实时编辑,利用该程序远程调试

ssh -L 6000:localhost:6000 fxos@

作者目前正在完善该项目,可以关注(点击我)。当然对此项目感兴趣的人,也可以参考以上设置,来配置自己的硬件平台。

*参考来源:Github,FB小编亲爱的兔子编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

相关推荐

这些评论亮了

  • @ 我是月亮 春晚都没看。。直接停了!网络直播够看了。
    )9( 亮了
  • 西普教育-实验吧 回复
    沙发
    )8( 亮了
  • 繁星满天Sky 回复
    Firefox OS不是都宣告死亡了吗?
    )8( 亮了
  • amaya (4级) 给我五包辣条 今晚我就是你的 回复
    @ langyajiekou  给家里老人买的电视盒子,每天看个新闻,年纪大的也没法处理出现的故障
    )8( 亮了
  • 我是月亮 回复
    一年就看一次电视,还是春晚...... :arrow:
    )6( 亮了
发表评论

已有 5 条评论

取消
Loading...

特别推荐

推荐关注

活动预告

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php