MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Firefox OS 建置程序摘要

建置和安裝Firefox OS需要大量的時間,網路頻寬和電腦計算能力。不幸的是,一路上事情很容易出問題,所以此頁面列出了建置的目標和步驟,希望可以在用戶建置的過程中幫上忙至於每一步驟的細節,會在其他文件討論

注:Firefox OS建置過程會提及到“B2G”或“Boot2Gecko”。“Boot2Gecko”是Firefox OS專案的原始代號名稱。

建置目標:4個“映像”檔

建置的目標是建立4個可以被複製到Firefox OS設備的映像檔。

boot.img Linux核心和根檔案系統映像檔(root filesystem image),後者提供一套可用的基本Unix工具。
system.img Firefox的操作系統核心,包括部分Gonk,Gecko的接口,可執行b2g檔。
userdata.img

使用者的Gecko profile以及Gaia網頁應用程式。

recovery.img Linux核心和根檔案系統映像檔,另外還有簡單的工具,好讓使用戶能夠從問題中修復

一旦四個映像檔產生好後,它們可以被轉移到一個裝置。

Firefox OS是建立在Android開源專案上(Android Open Source Project, AOSP)。AOSP的ADBfastboot工具提供了十分好用的方法來存取和操作設備。值得一提的是adb reboot-bootloader命令可以讓已經連接上的裝置重開機,並且暫停至bootloader早期階段,在這個早期階段中可以下fastboot flash $partition $image命令,把映像檔複製到裝置之上

開機映像檔(The Boot image)

boot.img(開機映像檔)包含Linux核心和初始根磁碟分區,boot.img提供核心軟體工具和初始化腳本。為了效率考量,初始根磁碟分區會被複製到記憶體之中,因此被稱為“ramdisk”。boot.img將被複製到設備上的“啟動”(boot)分區,而在裝置的檔案系統運作時,ramdisk的內容是可以在根目錄底下看見,比如說下adb shell指令

boot.img還在根目錄下的default.prop建立了root用戶的權限

另外也可以通過檔案檢查,分割檔案到核心和ramdisk映像檔,修改從ramdisk映像抓出來的內容,並重新組裝ramdisk映像檔,然後重新建置boot.img,這樣來修改現存的開機映像檔 。例如請參考Alcatel One Touch Fire Hacking (Mini)指南。

可以在安裝開機映像檔前測試開機映像檔。首先讓裝置開機後暫停於bootloader,然後下fastboot boot /some/path/to/boot.img命令來開機進入尚未安裝的boot.img。

系統映像

系統映像檔(system.img)是Firefox OS的核心:

  • Gonk:操作系統的底層元件
  • Gecko:Firefox的HTML和JavaScript引擎
  • B2G:操作系統核心運行程序。

關於平台架構的更多資訊,請見Firefox OS平台指南。

system.img會被複製到system分區,而在檔案系統運作時會在/system/目錄底下。

:system.img提供了許多裝置會用到的二進位大型物件(BLOB),特別是RIL(Radio Interface Layer)的blob控制了設備上的蜂巢式行動網路(cellular radio network)。

用戶資料映像檔

用戶資料應像檔(userdata.img)提供了運行中載入的各種Gaia應用程式。

userdata.img會被複製到裝置的userdata分區,然後檔案系統運作時會在/data/目錄底下。值得一提的是/data/b2g/目錄含有使用者的Gecko profile,而/data/local/webapps/目錄則含有使用者實際可以用的網頁應用程式

復原映像檔

復原映像檔(recovery.img)包含了和boot.img相同的核心和類似的ramdisk。然而,recovery.img採用不同的初始化腳本,所以使用者會被導引到另一個介面,這個介面會有可以透過裝置實體按鍵來操作的復原指令。

recovery.img會被複製到recovery分區,檔案系統運作時並不會掛載復原映像檔。

構建過程:準備,設定,建置,安裝

建置和安裝Firefox OS的整個過程包括四個步驟:

準備 取得建置需要的程式和檔案,如正確的編譯器和函式庫。
配置 下載原始碼,並創建.configure檔定義環境變數,例如路徑等。
建置

建置使用者的Gaia個人檔案和Gaia網頁應用程式。

安裝 在設備上安裝檔案。

 

準備

一開始需要準備好建置需要的程式和檔案,如正確的編譯器和函式庫

這個步驟可以通過手動執行或使用腳本來完成。詳情將在建置Firefox OS的先決條件頁面討論

:在UNIX和類UNIX的機器,我們可以利用which指令,搭配需要的程式名稱當作變數,來檢查這些需要的工具是否存在。

設定

接著我們需要複製一份Firefox OS(B2G)的原始碼,通常可以透過git從B2G專案那裡複製一份,另外我們也需要產生一份.config檔,這個檔案會定義建置用的變數。

設定會執行config.sh腳本。詳情請見準備進行首次B2G建置頁面。

configure腳本需要一個參數,指定建置的裝置種類。建置名稱是和CPU架構而非裝置相關的代碼名稱,目前可取得的代碼名稱請見這裡

設定步驟也將使用Android開源專案的repo工具,來下載(或更新)建置的原始碼到/repo/project目錄下。這個步驟會下載大量的檔案並且花費不少時間。

建置

建置步驟實際上將編譯所有的原始碼,並且生成的映像檔。

建置會執行build.sh腳本。詳情請見建置Firefox OS頁面。

基本上建置十分單調,這個步驟就是從AOSP工具、到Linux核心、到Gaia網頁應用程式把一切都建置起來,而且有時候很不好判斷是那一個環節出錯導致建置失敗。

我們可以只建置全部的某一部份,例如執行建置腳本時只帶入gecko參數,就會只建置Gecko系統,相同地,只帶入gaia參數,就只會建置Gaia。這些分別建置的部份可以分別地被安裝到裝置上。

另外,也可以建置之前所討論的映像檔,例如建置系統映像檔可以這樣建置./build.sh out/platform/$target/system.img,其中$target參數和設定步驟中所提供的參數相同。

安裝

安裝的步驟會將新編譯的程式碼放置到設備上。這個步驟會執行flash.sh腳本。

如果只要安裝那些在建置步驟中分別被建置的部份,我們可以通過在執行falsh.sh時多帶入一個參數,例如./falsj.sh gaia就只會安裝Gaia網頁應用程式。

文件標籤與貢獻者

 此頁面的貢獻者: chrisdavidmills, foxbrush, Wang
 最近更新: chrisdavidmills,