Compare Revisions

Building B2G for Samsung Galaxy S2

Change Revisions

Revision 217212:

Revision 217212 by avrelaun on

Revision 14019:

Revision 14019 by jhammink on

Building B2G for Samsung Galaxy S2
Building B2G for Samsung Galaxy S2
NeedsMarkupWork, Mobile, B2G
NeedsMarkupWork, Mobile, B2G

Revision 217212
Revision 14019
t7    <p>t7    REDIRECT <a class="redirect" href="/docs/en/Mozilla/Boot_to_G
8      It is assumed you've already <a href="Setting_Up_Boot_to_Ge
>cko_Build_Environment" rel="internal" title=" 
>_Environment">setup your build environment and cloned the reposit 
9    </p>
10    <p>
11      It is advisable to follow the instructions in the order pre
12    </p>
13    <div class="note">
14      <strong>Note:</strong> There are several models with the na
>me Samsung Galaxy S2. The one that works with these instructions  
>is the GT-i9100. Other variants, including GT-i9100G are not supp 
>orted (yet) as the hardware is different. See <a class="link-http 
>s" href="" title="htt 
>ps://">issue 215</a> 
15    </div>
16    <h2>
17      Putting Your Phone in Development Mode
18    </h2>
19    <p>
20      Before you plug your phone into your USB port, put it USB d
>ev mode. 
21    </p>
22    <p>
23      Under Settings &gt; Applications &gt; Development, turn on 
>USB debugging. 
24    </p>
25    <p>
26      Then, plug it in.
27    </p>
28    <h2>
29      Creating a local copy of the original Android system
30    </h2>
31    <p>
32      The phone ships with numerous binary blobs that B2G require
>s as well. It is therefore recommended, to create a local copy of 
> the phone's Android system directories: 
33    </p>
34    <p>
35      <code>$ mkdir sgs2-android<br>
36      $ cd sgs2-android<br>
37      $ adb pull /system system<br>
38      $ adb pull /system/vendor vendor</code>
39    </p>
40    <h2>
41      Building and flashing the kernel
42    </h2>
43    <p style="margin-left: ;">
44      Do NOT run any of the following commands as root!&nbsp; Fro
>m the directory to where you've cloned your git repositories:<br> 
45      <br>
46      <code>$ cd B2G<br>
47      $ make sync</code>
48    </p>
49    <p style="margin-left: 40px;">
50      <strong>Important:</strong> Do not proceed until the <code>
>adb pull</code> commands from the previous section have completed 
>.&nbsp; You can run the <code>make sync</code> command in paralle 
>l with <code>adb pull</code>, but the <code>make config-galaxy-s2 
></code> command below kills the <code>adb</code> server, which wi 
>ll cause the pulls to abort prematurely. 
51    </p>
52    <p>
53      Next, you will setup your build directory with the binary b
>lobs necessary for building for your device. <code>ANDROIDFS_DIR< 
>/code> should be set to the path you saved the Android system fil 
>es to above. With your device connected via USB and running: 
54    </p>
55    <p>
56      <code>$ export ANDROIDFS_DIR=sgs2-android</code><br>
57      <code>$ make config-galaxy-s2</code><br>
58      or for ICS<br>
59      <code>$ make config-galaxy-s2-ics</code>
60    </p>
61    <div class="note">
62      <strong>Note:</strong> If you receive an error similar to: 
><code>cat: sgs2-android/system/build.prop: No such file or direct 
>ory. Your device has unknown firmware!</code>, check to see if th 
>e default adb is in your $PATH, and if so, set it to the gonk adb 
> instead (usually located in <code>/glue/gonk/out/host/linux-x86/ 
>bin</code>). You can also try to |<code>export ANDROIDFS_DIR=$PWD 
>/sgs2-android| if you still have the same error (for preventing a 
>ny unwanted chdir).</code> 
63    </div>
64    <p>
65      Now we can build the kernel:
66    </p>
67    <p>
68      <code>$ make kernel</code>
69    </p>
70    <p>
71      Once that's done, reboot the phone into download mode:
72    </p>
73    <p>
74      <code>$ adb reboot download</code>
75    </p>
76    <p>
77      Once you see the download screen, flash the kernel with the
> following command (these instructions assume that you have alrea 
>dy <a href="/en/Mozilla/Boot_to_Gecko/Setting_Up_Boot_to_Gecko_Bu 
>ild_Environment#Installing_Heimdall" title="https://developer.moz 
>Environment#Installing_Heimdall">installed heimdall</a>). 
78    </p>
79    <p>
80      <code>$ heimdall flash --kernel boot/kernel-android-galaxy-
81      or for ICS<br>
82      $ heimdall flash --kernel boot/kernel-android-galaxy-s2-ics
83    </p>
84    <p>
85      If you see an error from libusb: -3, then:
86    </p>
87    <p>
88      <code>$ sudo heimdall flash --kernel boot/kernel-android-ga
89      or for ICS<br>
90      $ sudo heimdall flash --kernel boot/kernel-android-galaxy-s
91    </p>
92    <h2>
93      Backing up the original Android system on the phone
94    </h2>
95    <p>
96      Before you flash B2G onto the phone, it's highly recommende
>d to create a backup of the original Android system on the phone. 
> This is so that you can always go back to Android and retrieve t 
>he binary blobs in case you lose your local copy in <code>ANDROID 
>_FSDIR</code> (that was our <code>/sgs2-android</code> directory& 
>nbsp; we created in the previous step). 
97    </p>
98    <p>
99      If the phone is switched on and running android, boot the p
>hone into recovery mode with 
100    </p>
101    <pre>
102$ adb reboot recovery
104    <p>
105      Alternatively, if the phone is switched off, press and hold
> Power, Home, and Volume Up. 
106    </p>
107    <p>
108      With the phone in recovery mode, follow the on-screen instr
>uctions to make a backup image. The backup image will be stored o 
>n the phone's internal SD card. 
109    </p>
110    <h2>
111      Building and flashing B2G
112    </h2>
113    <p>
114      Now we can build B2G. When you're building for the first ti
>me, you will also have to build the Gonk target (this is not requ 
>ired on subsequent builds):<br> 
115      <code>$ make gonk</code>
116    </p>
117    <p>
118      Then, you can build and flash B2G in one go, but <strong>MA
119      <code>$ make flash</code>
120    </p>
121    <p>
122      <a class="external" href="
>lC_I/TydgNEkHvAI/AAAAAAAAAMs/G2DJfdUkIts/s320/Make.tiff"><img alt 
>="" class="default" src=" 
123    </p>
124    <p>
125      ALTERNATIVELY, if you prefer to do each step on your own:
126    </p>
127    <p>
128      <code>$ make</code>
129    </p>
130    <p>
131      Once you're done building, reboot the phone into download m
>ode and flash the B2G image onto the phone: 
132    </p>
133    <p>
134      <code>$ adb reboot download<br>
135      $ make flash-only</code>
136    </p>
137    <h4>
138      <a class="external" href="
>img alt="" class="default" src=" 
139    </h4>
140    <h3 class="editable">
141      Reset your adb
142    </h3>
143    <p>
144      Now is a good time to point adb to the right place.&nbsp; I
>t should be in 
145    </p>
146    <pre>
149    <p>
150      The best way is to add that directory (above adb) to your p
>ath so makefiles can find it. 
151    </p>
152    <h3>
153      Building and flashing the Gaia frontend only
154    </h3>
155    <p>
156      Gaia is part of the B2G image, but it can be updated separa
157    </p>
158    <p>
159      Assuming you're in the root of B2G repo, pull files from th
>e remote repo and merge them to your local repo: 
160    </p>
161    <p>
162      <code>$ cd gaia</code><br>
163      <code>$ git pull origin master</code><br>
164      <code>$ cd ..</code>
165    </p>
166    <p>
167      Then you can update Gaia on the phone with the following co
168    </p>
169    <p>
170      <code>$ make install-gaia</code>
171    </p>
172    <h3>
173      Building and flashing Gecko only
174    </h3>
175    <p>
176      In case you make changes to Gecko and want to put those on 
>the device, you don't have to go through the entire flash cycle.  
>The following steps will live-update Gecko running on the phone: 
177    </p>
178    <p>
179      <span style='font-family: "Courier New",Courier,monospace;'
>>$ make install-gecko</span><br> 
180      <span style='font-family: "Courier New",Courier,monospace;'
>>$ make kill-b2g</span> 
181    </p>
182    <h2>
183      Forcing the Git repo into clean state
184    </h2>
185    <p>
186      Sometimes it's necessary to do this - but cloning a fresh r
>epo and running <code>make sync</code> takes too much time. 
187    </p>
188    <p>
189      <code>$ make mrproper</code>
190    </p>
191    <p style="margin-left: 40px;">
192      <strong>Important:</strong> This will reset your B2G reposi
>tory completely. It will appear as if you just checked out. You w 
>ill lose all local modifications and files not tracked by Git! 
193    </p>

Back to History