我的 Firefox OS系统电视机是基于Intel NUC的迷你家用电脑平台。作为我在这方面的第一个POC演示,我开始时在里面添加程序使得与 boot to gecko(B2G)系统保持一致,然后在里面架构添加Gecko,并建立Gonk以及Gecko联系,特别是基本窗口程序。我计划要在gecko找到一条捷径。 Firefox OS由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固态硬盘
安装
安装一个轻量简洁的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@<IP>
如果计算机上使用Windows系统请检查远程终端登录软件 MobaXterm
获取系统相互依赖性
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
以上是需要编译的部分
在安装程序到最后一步的时候,之前可能有一些程序是多余并不需要了,一旦我确认程序的确不需要了,现在就删除了
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分辨率,当然也可以试试看,会发生什么
重启之后应该是这样
之后再做些什么
在设置boot to gecko会遇到很多问题,这样会给我们带来许多的工作量。下面会进行更多的设置,而其中会修改一些配置信息,设置之后系统性能为什么如此糟糕,可以检查下面这些设置信息。
接入 wifi、蓝牙, volume(音量调节) 设置菜单 添加火狐应用市场 可以连接xbox/steam游戏机
使用Wayland协议 删除GTK3 建立gonk,最终不等同于依赖于安卓平台 利用树莓派2交叉编译它
WebIDE集成了所有常见的Firefox调试工具,实现了应用程序实时编辑,利用该程序远程调试
ssh -L 6000:localhost:6000 fxos@<IP>
作者目前正在完善该项目,可以关注( 点击我 )。当然对此项目感兴趣的人,也可以参考以上设置,来配置自己的硬件平台。
*参考来源: Github ,FB小编亲爱的兔子编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)