SlideShare a Scribd company logo
Firefox OS 介紹
Outline
Overview
體驗
How to build
   Requirements for Linux
   Supported devices
   Emulator
開發
   build system
   boot process
   hardware module
市場的可能性
結論
參考資料
Overview
Firefox OS 是一個由 Mozilla 所主導的新移
動作業系統,專案代號是 Boot to Gecko
(B2G) 。和 Android 一樣,它也是用 Linux
的核心,然後開機到以 Gecko 引擎為基礎
的環境裡,使用者可以在這個平台上執行完
全以 HTML 、 JavaScript 和其他的開放網
路應用程式介面所開發的應用程式。
體驗
Mozilla 現在提供了一個最快的體驗方式,
就是安裝 Firefox ,然後搭配
Firefox OS Simulator 這個附加元件就可以
了。
體驗
體驗
How to build - Requirements
An installed 64 bit GNU/Linux
distribution (we recommend Ubuntu
12.04).
At least 4 GB of RAM/swap space.
At least 20 GB of available hard disk
space.
How to build - Requirements
需要預先安裝的套件基本上跟 Android 非常相似
  autoconf 2.13
  bison
  bzip2
  ccache
  curl
  flex
  gawk
  git
  gcc / g++ / g++-multilib (4.6.3 or older)
  make
  OpenGL headers
  X11 headers
  32-bit ncurses
  32-bit zlib
  yasm
  …
How to build – Supported
           devices
目前支援的裝置分為 3 個 Tier , Tier 1 是主力
開發的部分, Tier 2 是比較多人使用,而 Tier 3
是不保證能順利運作的
Tier 1: Unagi, Otoro, Pandaboard, Emulator
(ARM/x86), Desktop (Firefox + addon )
Tier 2: Samsung Nexus S, Samsung Nexus S
4G
Tier 3: Samsung Galaxy S2, Samsung Galaxy
Nexus
How to build - Emulator
下載 Build system
 git clone git://github.com/mozilla-
 b2g/B2G.git
列出可支援的裝置: ./config.sh
要編譯 Emulator ,所以輸入 ./config.sh
emulator-x86
漫長的等待…
How to build - Emulator
sudo ln –s /usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/libGL.so
sudo ln –s /usr/lib/i386-linux-gnu/libX11.so.6
/usr/lib/i386-linux-gnu/libX11.so
編輯 gecko/nsprpub/pr/src/Makefile.in 將 133 行的
OS_LIBS += -lrt 註解掉。
build system 基本上是採用 Android 的機制,輸入
./build.sh ,這個 script 會載入必要的環境變數,並用
lunch 設置要編譯的 product ,然後開始編譯。
又是一段漫長的過程。
How to build - Emulator
編譯完成以後,就可以輸入 ./run-
emulator.sh
模擬器跟 Android 一樣是使用 QEMU
開發 – build system
Build system 基本上與 Android 一致,使用
lunch 來決定要編譯出哪個產品,這部分可以參
考 config.sh 與 setup.sh 。
主要的差異在於 gecko , gecko 是 Mozilla
browser 的引擎,原來是用 C++ 開發,以
autoconf/automake 來編譯。因此這邊並不是
以 Android.mk 來編譯,事實上這個檔案也是空
的。應該要看的是 client.mk ,編譯時是在同層
的 objdir-gecko 進行編譯。
開發 – boot process
   從 bootloader 到 kernel 到
   init/init.rc ,這部分都跟 Android 相同。
   在 Android 的 init.rc 裡,原來是執行
   zygote 的, Firefox OS 則是改為
   b2g.sh
service b2g /system/bin/b2g.sh
    class main
    onrestart restart media
開發 – user space 架構




  圖片取自 Mozilla developer 網站
開發 – Hardware module
Graphics: Gecko -> GLES 2.0 + EGL -> screen
Audio: 使用 Android 的 mediaserver
像 sensor/ 陀螺儀…等走的路子是沿用 Android
的機制,也就是在 hardware 目錄下去修改。
這裡有一份追蹤手機振動的文章,從 gaia 層
navigator.vibrate() 到 gecko/HAL ,寫的很
清楚。 http://j.mp/UVG92M
很大一部分都沿用自 Android
市場的可能性
目前已經公開有合作的對象是大陸的 ZTE
中興移動,而通訊商是巴西的 Telefonica
更多的消息可能在今年二月底於
Barcelona 舉辦的 MWC 被公布…
結論
在架構與 Android 相去不遠的情況下,或
許可以吸引系統組裝廠商投入這個 OS 市
場。
Firefox OS 提供了不少方便的工具,像是
rilproxy 等,或許可以拿來在 Android 開
發環境下使
用。 http://tech.mozilla.com.tw/posts/
1231/hacking-firefox-os-emulator-for-ril
參考資料
Mozilla Firefox OS
謀智台客
https://developer.mozilla.org/en-
US/docs/Mozilla/Firefox_OS/Architectur
e
raspberry pi + firefox os http://eva-
quirinius.blogspot.nl/2012/08/running-
firefoxos-b2g-on-raspi-with.html

More Related Content

What's hot

StackOps step by-step guide
StackOps step by-step guideStackOps step by-step guide
StackOps step by-step guide
slmagicbox
 
[精彩回顾]Linux新手教程
[精彩回顾]Linux新手教程[精彩回顾]Linux新手教程
[精彩回顾]Linux新手教程
NJU OPEN
 
Android系统移植技术详解
Android系统移植技术详解Android系统移植技术详解
Android系统移植技术详解zzc89522
 
20121111 linux intro
20121111 linux intro20121111 linux intro
20121111 linux introChang Mt
 
Proxmox: 建立自己的虛擬主機
Proxmox: 建立自己的虛擬主機Proxmox: 建立自己的虛擬主機
Proxmox: 建立自己的虛擬主機維泰 蔡
 
Docker初识
Docker初识Docker初识
Docker初识
hubugui
 
cygwin安裝與vim
cygwin安裝與vimcygwin安裝與vim
cygwin安裝與vim
PO HSUAN HUANG
 
Clonezilla Live Backup Data
Clonezilla Live Backup DataClonezilla Live Backup Data
Clonezilla Live Backup Data
michael hsu
 
Ruby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacRuby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for Mac
MarsZ Chen
 
Virtualbox
VirtualboxVirtualbox
Virtualbox
fangdun cai
 
Dl
DlDl
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for Ubuntu
MarsZ Chen
 
GNU Build System
GNU Build SystemGNU Build System
GNU Build System
imacat .
 
Docker 淺入淺出
Docker 淺入淺出Docker 淺入淺出
Docker 淺入淺出
Miles Chou
 
Docker應用
Docker應用Docker應用
Docker Build
Docker BuildDocker Build
Docker Build
Miles Chou
 
Bootstrap個人網站 20141117
Bootstrap個人網站 20141117Bootstrap個人網站 20141117
Bootstrap個人網站 20141117
均民 戴
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-docker
Bruce Huang
 
Ubuntu 下安装 svn 服务器
Ubuntu 下安装 svn 服务器Ubuntu 下安装 svn 服务器
Ubuntu 下安装 svn 服务器wensheng wei
 
利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版xingsu1021
 

What's hot (20)

StackOps step by-step guide
StackOps step by-step guideStackOps step by-step guide
StackOps step by-step guide
 
[精彩回顾]Linux新手教程
[精彩回顾]Linux新手教程[精彩回顾]Linux新手教程
[精彩回顾]Linux新手教程
 
Android系统移植技术详解
Android系统移植技术详解Android系统移植技术详解
Android系统移植技术详解
 
20121111 linux intro
20121111 linux intro20121111 linux intro
20121111 linux intro
 
Proxmox: 建立自己的虛擬主機
Proxmox: 建立自己的虛擬主機Proxmox: 建立自己的虛擬主機
Proxmox: 建立自己的虛擬主機
 
Docker初识
Docker初识Docker初识
Docker初识
 
cygwin安裝與vim
cygwin安裝與vimcygwin安裝與vim
cygwin安裝與vim
 
Clonezilla Live Backup Data
Clonezilla Live Backup DataClonezilla Live Backup Data
Clonezilla Live Backup Data
 
Ruby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacRuby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for Mac
 
Virtualbox
VirtualboxVirtualbox
Virtualbox
 
Dl
DlDl
Dl
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for Ubuntu
 
GNU Build System
GNU Build SystemGNU Build System
GNU Build System
 
Docker 淺入淺出
Docker 淺入淺出Docker 淺入淺出
Docker 淺入淺出
 
Docker應用
Docker應用Docker應用
Docker應用
 
Docker Build
Docker BuildDocker Build
Docker Build
 
Bootstrap個人網站 20141117
Bootstrap個人網站 20141117Bootstrap個人網站 20141117
Bootstrap個人網站 20141117
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-docker
 
Ubuntu 下安装 svn 服务器
Ubuntu 下安装 svn 服务器Ubuntu 下安装 svn 服务器
Ubuntu 下安装 svn 服务器
 
利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版
 

Similar to Firefox OS Overview

Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
National Cheng Kung University
 
GNU Autoconf / Automake #1
GNU Autoconf / Automake #1GNU Autoconf / Automake #1
GNU Autoconf / Automake #1
imacat .
 
Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture lusecheng
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
Shengyou Fan
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率Zhen Li
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率Zhen Li
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
Nelson Tai
 
Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchangChang Mt
 
unix toolbox 中文版
unix toolbox 中文版unix toolbox 中文版
unix toolbox 中文版Jie Bao
 
[精华回顾]讲座:How To Install Linux
[精华回顾]讲座:How To Install Linux[精华回顾]讲座:How To Install Linux
[精华回顾]讲座:How To Install Linux
NJU OPEN
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
Philip Zheng
 
Architect Document
Architect DocumentArchitect Document
Architect DocumentNeo Chen
 
Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Yiwei Ma
 
和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂
imShining @DevCamp
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
azole Lai
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub維佋 唐
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
Bo-Yi Wu
 
Kick start无人值守批量安装linux
Kick start无人值守批量安装linuxKick start无人值守批量安装linux
Kick start无人值守批量安装linuxYiwei Ma
 
自动化运维管理
自动化运维管理自动化运维管理
自动化运维管理frankwsj
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MR
twMVC
 

Similar to Firefox OS Overview (20)

Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
GNU Autoconf / Automake #1
GNU Autoconf / Automake #1GNU Autoconf / Automake #1
GNU Autoconf / Automake #1
 
Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
 
Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchang
 
unix toolbox 中文版
unix toolbox 中文版unix toolbox 中文版
unix toolbox 中文版
 
[精华回顾]讲座:How To Install Linux
[精华回顾]讲座:How To Install Linux[精华回顾]讲座:How To Install Linux
[精华回顾]讲座:How To Install Linux
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
 
Architect Document
Architect DocumentArchitect Document
Architect Document
 
Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)
 
和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
 
Kick start无人值守批量安装linux
Kick start无人值守批量安装linuxKick start无人值守批量安装linux
Kick start无人值守批量安装linux
 
自动化运维管理
自动化运维管理自动化运维管理
自动化运维管理
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MR
 

Firefox OS Overview

  • 2. Outline Overview 體驗 How to build Requirements for Linux Supported devices Emulator 開發 build system boot process hardware module 市場的可能性 結論 參考資料
  • 3. Overview Firefox OS 是一個由 Mozilla 所主導的新移 動作業系統,專案代號是 Boot to Gecko (B2G) 。和 Android 一樣,它也是用 Linux 的核心,然後開機到以 Gecko 引擎為基礎 的環境裡,使用者可以在這個平台上執行完 全以 HTML 、 JavaScript 和其他的開放網 路應用程式介面所開發的應用程式。
  • 4. 體驗 Mozilla 現在提供了一個最快的體驗方式, 就是安裝 Firefox ,然後搭配 Firefox OS Simulator 這個附加元件就可以 了。
  • 7. How to build - Requirements An installed 64 bit GNU/Linux distribution (we recommend Ubuntu 12.04). At least 4 GB of RAM/swap space. At least 20 GB of available hard disk space.
  • 8. How to build - Requirements 需要預先安裝的套件基本上跟 Android 非常相似 autoconf 2.13 bison bzip2 ccache curl flex gawk git gcc / g++ / g++-multilib (4.6.3 or older) make OpenGL headers X11 headers 32-bit ncurses 32-bit zlib yasm …
  • 9. How to build – Supported devices 目前支援的裝置分為 3 個 Tier , Tier 1 是主力 開發的部分, Tier 2 是比較多人使用,而 Tier 3 是不保證能順利運作的 Tier 1: Unagi, Otoro, Pandaboard, Emulator (ARM/x86), Desktop (Firefox + addon ) Tier 2: Samsung Nexus S, Samsung Nexus S 4G Tier 3: Samsung Galaxy S2, Samsung Galaxy Nexus
  • 10. How to build - Emulator 下載 Build system git clone git://github.com/mozilla- b2g/B2G.git 列出可支援的裝置: ./config.sh 要編譯 Emulator ,所以輸入 ./config.sh emulator-x86 漫長的等待…
  • 11. How to build - Emulator sudo ln –s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so sudo ln –s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so 編輯 gecko/nsprpub/pr/src/Makefile.in 將 133 行的 OS_LIBS += -lrt 註解掉。 build system 基本上是採用 Android 的機制,輸入 ./build.sh ,這個 script 會載入必要的環境變數,並用 lunch 設置要編譯的 product ,然後開始編譯。 又是一段漫長的過程。
  • 12. How to build - Emulator 編譯完成以後,就可以輸入 ./run- emulator.sh 模擬器跟 Android 一樣是使用 QEMU
  • 13. 開發 – build system Build system 基本上與 Android 一致,使用 lunch 來決定要編譯出哪個產品,這部分可以參 考 config.sh 與 setup.sh 。 主要的差異在於 gecko , gecko 是 Mozilla browser 的引擎,原來是用 C++ 開發,以 autoconf/automake 來編譯。因此這邊並不是 以 Android.mk 來編譯,事實上這個檔案也是空 的。應該要看的是 client.mk ,編譯時是在同層 的 objdir-gecko 進行編譯。
  • 14. 開發 – boot process 從 bootloader 到 kernel 到 init/init.rc ,這部分都跟 Android 相同。 在 Android 的 init.rc 裡,原來是執行 zygote 的, Firefox OS 則是改為 b2g.sh service b2g /system/bin/b2g.sh    class main    onrestart restart media
  • 15. 開發 – user space 架構 圖片取自 Mozilla developer 網站
  • 16. 開發 – Hardware module Graphics: Gecko -> GLES 2.0 + EGL -> screen Audio: 使用 Android 的 mediaserver 像 sensor/ 陀螺儀…等走的路子是沿用 Android 的機制,也就是在 hardware 目錄下去修改。 這裡有一份追蹤手機振動的文章,從 gaia 層 navigator.vibrate() 到 gecko/HAL ,寫的很 清楚。 http://j.mp/UVG92M 很大一部分都沿用自 Android
  • 18. 結論 在架構與 Android 相去不遠的情況下,或 許可以吸引系統組裝廠商投入這個 OS 市 場。 Firefox OS 提供了不少方便的工具,像是 rilproxy 等,或許可以拿來在 Android 開 發環境下使 用。 http://tech.mozilla.com.tw/posts/ 1231/hacking-firefox-os-emulator-for-ril
  • 19. 參考資料 Mozilla Firefox OS 謀智台客 https://developer.mozilla.org/en- US/docs/Mozilla/Firefox_OS/Architectur e raspberry pi + firefox os http://eva- quirinius.blogspot.nl/2012/08/running- firefoxos-b2g-on-raspi-with.html