It is assumed you've already setup your build environment and cloned the repositories.
Note: The known working model numbers of Nexus S devices are GT-I9020A and GT-I9023. The list of variants is available on the Nexus S Wikipedia page.
Backing up the vendor OS
Unlike with other devices, Android ROMs for the Nexus S are provided by Google. It is therefore not necessary to back up this device.
Note: If you are using the new repo (github.com/mozilla-b2g/B2G.git), follow the instructions in the README instead.
Do NOT run any of the following commands as root! From the directory to where you've cloned your git repositories:
$ cd B2G
$ make sync
Next, you will setup your build directory with the binary blobs necessary for building for your device. This step will download the blobs from Google and clone the ICS version of Gonk:
Now, build gonk backend and the system itself:
$ make gonk
Unlocking the bootloader when flashing for the first time
Boot the phone directly into the bootloader by pressing the Volume Up and Power button at the same time. Connect the phone to your computer and unlock the bootloader with the following command:
$ fastboot oem unlock
On the device, confirm this step by selecting "Yes" with the Volume Up button and then pressing the Power button. The phone is now unlocked and is almost ready to be flashed with B2G.
Select the "Reboot" option from the bootloader screen with the Volume Up button and then presss the Power button to reboot. Unlocking the phone causes a factory reset, so you'll have to go through the "first-use" steps as if this was a brand-new phone. Next, go into Settings and select Applications and then Development and then check Debug Mode. This will allow you to commuicate with the phone over USB.
Finally, you can flash the phone and install B2G. Just type:
$ make flash-only
Important: Make sure to boot into Android or B2G before executing the above command or else this will fail with a "device not found" message.
Building and flashing the Gaia frontend only
Assuming you're in the root of B2G repo, pull files from the remote repo and merge them to your local repo. To just update gaia on the device:
$ cd gaia
$ git pull origin master
$ cd ..
$ make install-gaia
$ make kill-b2g
Building and flashing Gecko only
$ make install-gecko
$ make kill-b2g
Forcing the Git repo into clean state
Sometimes it's necessary to do this - but cloning a fresh repo and running
make sync takes too much time.
$ make mrproper
Important: This will reset your B2G repository completely. It will appear as if you just checked out. You will lose all local modifications and files not tracked by Git!