Installing Boot to Gecko – Part 2
Earlier this week I wrote about my initial experience with attempting to install Boot to Gecko on my Samsung Galaxy S II. Previously I went through setting up the OS, installing the required dependencies, making a backup of your current installation in case something goes wrong ( which is pretty likely in my case ). The installation for the most part went pretty smoothly until I ended up hitting a problem when I actually began building.
The problem that I initially ran into was build fails due to the fact that my specific model/version isn’t supported yet. The solution here was to modify one of the build scripts to reflect my device, which wasn’t all that bad. What I had to do was add in a case for my specific version and account for file names that may be different on my version compared to what is already used. In a lot of the cases it just turned out to be modifying IF statements or appending an ‘M’ to some files ( as that is my specific version – the GT-I9100M, and the build – GINGERBREAD.UGKG2 ). After I had done this my
make config-galaxy-s2 was passing now, which was awesome.
Now it was time to begin building gonk, which from what I understand is the backend of Boot to Gecko. So I built that and it actually ended up going pretty smoothly. I then simply ran |make| after that and this is when I began seeing some errors. On a side node it looks just like building Firefox from source, which is pretty cool. The errors were pretty cryptic and about stuff that I didn’t understand so I did what I normally do under these circumstances and went to ask someone smarter than me. I went into the IRC channel and started asking about the error and I immediatley got some responses. I was told to run |make sync| and to pastebin the output. What make sync does is update all of git submodules and makes sure everything is up to date with master. I ran it and the output looked clean and fine to me, so I pastebined it to the channel. Someone quickly spotted where I went wrong. In my logs it said I that it was updating from my remote, so dseif/b2g ( which looked ok to me ) but apparently was wrong. The problem here was that I forked and then cloned instead of just cloning. The reason I shouldn’t have done this is it screws up the submodule updating apparently and I am not getting the most up to date files. The errors I was seeing were old issues that had already been fixed and what I needed to do at this point was set my origin’s remote url as the url I forked from. After I did this I re-ran make sync and I started getting updates! I went through the commands that I ran previously and they seemed to be passing now 🙂 The make command took a while to finish but it did so without any errors.
Now it was time to begin flashing! To do so all I had to do was run |make flash|. This ended up taking a while and once it was done it rebooted my phone. The moment of truth came and it didn’t boot at all, which scared me a bit 😦 I went back and reflashed my device by running the following:
adb reboot recovery
and then selected my backup that I made earlier and reflash my phone. Luckily the backup worked just fine and my phone was back in a working state 🙂
Tonight I plan on trying to figure out why my flash was failing and I will hopefully have a running boot to gecko phone by the end of the night 😀