Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Boot to Gecko aims to create a complete, standalone operating system for the open web.
Shell Python Ruby Makefile
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Boot to Gecko (B2G)

Boot to Gecko aims to create a complete, standalone operating system for the open web.

You can read more about B2G here:

follow us on twitter: @Boot2Gecko

join the Mozilla Platform mailing list:

and talk to us on IRC:

#B2G on



Additionally, if you're building the emulator, you probably need the the Mesa implementation of OpenGL. On Ubuntu, this is the libgl1-mesa-dev package.

Ubuntu 12.10 ships with gcc 4.7 by default, which causes build errors pretty early in the process. To use gcc 4.6, edit .userconfig and add

export CC=gcc-4.6
export CXX=g++-4.6

Of course, you'll need the g++-4.6 package installed.



Run to get a list of supported devices:


And then run for the device you want to build for:

./ [device name]

Udev Permissions

If you get "error: insufficient permissions for device"...

Obtain ID of device manufacturer (first 4 hexidecimal digits before colon):

$ lsusb

Add a line to /etc/udev/rules.d/android.rules (replacing XXXX with 4 digit ID):

SUBSYSTEM=="usb", ATTRS{idVendor}=="XXXX", MODE="0666"

Restart udev before re-plugging your device for it to be detected:

$ sudo service udev restart

Re-run configure:

./ [device name]

Building against a custom Gecko

It can sometimes be useful to build against a different Gecko than the one specified in the manifest, e.g. a mozilla-central checkout that has some patches applied. To do so, edit .userconfig:



Run or to build B2G.


If you want to just build gecko or some other project, just specify it:

./ gecko


Make sure your phone is plugged in with usb debugging enabled.

To flash everything on your phone:


To flash system/userdata/boot partitions on fastboot phones:

./ system
./ boot
./ user

To update gecko:

./ gecko

To update gaia:

./ gaia

Update Repos

To update all repos:

git pull
./repo sync

To update a specific repo (eg, gaia):

./repo sync gaia


To restart B2G and run B2G under gdb:


To attach gdb to a running B2G process:

./ attach


To run the Marionette test suite on the emulator:


To run specific tests (individual files, directories, or ini files):

./ gecko/dom/sms gecko/dom/battery/test/marionette/

Specify the full path if you're using a different Gecko repo:

./ /path/to/mozilla-central/dom/battery/test/marionette/
Something went wrong with that request. Please try again.