Kompilowanie i instalowanie systemu Firefox OS wymaga dużo wolnego czasu, szybkiego łącza internetowego i wysokiej mocy obliczeniowej komputera. Niestety podczas tak długiego procesu coś może pójść nie tak. Na tej stronie znajdują się informacje, które pomogą przebyć tę długą drogę.
Notatka: Podczas czytania artykułów dotyczących kompilowania Firefox OS natkniesz się na określenia "B2G", lub "Boot2Gecko". "Boot2Gecko" jest oficjalną nazwą kodową systemu Firefox OS.
Główny cel: uzyskanie czterech plików .img
boot.img | Zawiera rdzeń Linuxa, system plików i podstawowe narzędzia Unixowe. |
system.img | Znajduje się tam główny rdzeń systemu Firefox OS, czyli Gonk, Gecko i plik wykonywalny b2g. |
userdata.img | Tutaj zawarty jest profil Gecko i aplikacje Gaia. |
recovery.img | Tak samo jak boot.img, zawiera rdzeń Linuxa i system plików, ale odpowiada za udostępnienie użytkownikowi narzędzi do naprawy uszkodzonego urządzenia. |
Kiedy te cztery obrazy zostaną stworzone, mogą zostać przesłane do urządzenia.
Firefox OS jest tworzony na podstawie Android Open Source Project (AOSP). Narzędzia AOSP takie jak adb
lub fastboot
pozwalają na zaawansowane zarządzanie urządzeniem. Przykładem może być komenda adb reboot-bootloader
, która sprawia, że urządzenie zrestartuje się i zatrzyma rozruch systemu na wczesnym etapie, co umożliwi przesłanie obrazu systemu poprzez wpisanie komendy fastboot flash $partition $image
.
Pierwszy obraz: boot.img
Zawiera rdzeń Linuxa, odpowiadający za uruchamianie podstawowych programów i wykonywanie skryptów. Zostanie przesłany na partycję "boot" i dostęp do niego będzie możliwy poprzez użycie komendy adb shell
. Ponieważ jest najważniejszą częścią systemu, aby go modyfikować, potrzeba uprawnień root.
Możliwe jest również modyfikowanie istniejącego już obrazu boot.img, poprzez przeglądanie, kopiowanie, ponowne kompilowanie jego elementów. Takie operacje zostały opisane na tej stronie: Alcatel One Touch Fire Hacking (Mini) Guide.
Obrazy boot.img
mogą zostać przetestowane przed przesłaniem ich. Gdy urządzenie będzie w trybie bootloadera, wystarczy użyć narzędzia fastboot
do uruchomienia obrazu boot.img. Nie trzeba wtedy instalować obrazu na urządzeniu, tak, jak miałoby to miejsce w przypadku komendy fastboot boot /ścieżka/do/boot.img
.
Drugi obraz: system.img
Obraz systemu (system.img
) zawiera główne elementy systemu Firefox OS:
- Gonk: nisko-poziomowy dostęp systemu do komponentów urządzenia.
- Gecko: silnik przeglądarki Firefox, przystosowany do obsługi urządzeń mobilnych.
- B2G: główny proces systemowy.
Więcej informacji o budowie systemu znajdziesz na stronie Firefox OS platform.
Obraz systemu zostanie przesłany na główną partycję urządzenia (utworzoną przez obraz boot.img
), a wszystkie pliki systemowe będą znajdowały się w folderze /system/
.
Notatka: Obraz systemu zawiera również plamy binarne (binary blobs), które mogą zostać wykorzystane przez urządzenie do kontrolowania radia komórkowego.
Trzeci obraz: userdata.img
Obraz z danymi użytkownika zawiera aplikacje Gaia, które są wykorzystywane podczas pracy systemu.
Obraz userdata.img
zostanie umieszczony na partycji userdata
, a jego zawartość będzie widoczna w folderze /data/
wtedy, gdy system plików urządzenia będzie z niego korzystał. Trzeba również wspomnieć, że folder /data/b2g/
zawiera profil platformy Gecko, a zawartością folderu /data/local/webapps/
są wszystkie aplikacje, które znajdują się w pamięci urządzenia.
Czwarty obraz: recovery.img
Obraz przywracania systemu zawiera taki sam rdzeń, jaki ma obraz boot.img
. Różnicą jest sposób wykonywania skryptu, co pozwala użytkownikowi na aktywowanie skryptu przywracającego system poprzez użycie fizycznych przycisków na urządzeniu.
Obraz recovery.img
zostanie umieszczony na partycji recovery
i nie może on zostać zmodyfikowany podczas działania systemu.
Proces kompilacji
Cały proces kompilacji systemu Firefox OS składa się z następujących etapów:
Przygotowania | Uzyskanie wszystkich programów potrzebnych do przeprowadzenia procesu kompilacji. Do tych programów zaliczają się kompilatory, biblioteki itp. |
Konfiguracji | Pobranie kodu źródłowego i utworzenie pliku .configure , w którym zawarte będą zmiennie, ścieżki i inne wartości, które zostaną wykorzystane w procesie kompilacji. |
Tworzenia | Tworzenie profili platformy Gecko i aplikacji Gaia dla urządzenia. |
Instalowania | Zainstalowanie na urządzeniu wcześniej przygotowanych plików. |
Przygotowanie
Należy przeprowadzić konfigurację wstępną, aby upewnić się, że komputer ma wszystkie narzędzia, potrzebne do skompilowania systemu. Do takich narzędzi zalicza się m.in. kompilator.
Ten krok można wykonać przy użyciu skryptu. Szczegóły zostały omówione na tej stronie.
Notatka: Na Unixowych systemach można sprawdzić obecność wymaganego oprogramowania, poprzez komendę which
. Parametrem komendy which
jest sprawdzany program.
Konfiguracja
Aktualny krok zaczyna się wraz z uzyskaniem plików systemu Firefox OS. W uzyskaniu tych plików może pomóc narzędzie git
. Konfiguracja obejmie cały kod źródłowy i utworzy plik .config
, w którym znajdą się zmienne dla kompilowanego systemu.
Konfiguracja rozpocznie się po uruchomieniu skryptu config.sh
. Szczegóły zostały omówione na stronie Preparing for your first B2G build.
Skrypt konfiguracyjny potrzebuje parametrów urządzenia, na którym ma zostać zainstalowany system Firefox OS. Nazwa tworzonego systemu jest nazwą kodową powiązaną z architekturą CPU, a nie z konkretnym urządzeniem. Lista nazw kodowych znajduje się tutaj.
Podczas konfiguracji używane jest również narzędzie Android Open Source Project repo
. Pozwala ono na pobranie lub zaktualizowanie kodu używanego podczas procesu kompilacji.
Kompilacja
W tym kroku zaczyna się kompilacja kodu źródłowego i uzyskanie czterech obrazów.
Kompilacja uruchomi się po aktywowaniu skryptu build.sh
. Szczegóły zostały omówione na stronie Building Firefox OS.
Możliwe jest skompilowanie tylko części systemu Firefox OS. Można to zrobić poprzez dodanie do skryptu kompilującego jednego parametru. Na przykład, jeżeli chcemy uzyskać tylko element gaia, to dodajemy parametr gaia
.
Możliwe jest również skompilowanie obrazów omówionych na początku tej strony. Jeżeli chcemy skompilować obraz system.img
, możemy to zrobić komendą ./build.sh out/platform/$target/system.img
(parametr $target
jest taki sam, jak w procesie konfiguracji).
Instalacja
Należy uruchomić skrypt flash.sh
, aby nowo skompilowany kod trafił do pamięci urządzenia.
Możliwe jest zainstalowanie tylko poszczególnych części systemu. Żeby to zrobić, trzeba dodać parametr do skryptu flash.sh
. Na przykład, żeby zainstalować tylko aplikacje Gaia, wystarczy wpisać ./flash.sh gaia
.