The problem we faced: We needed a customized build for all our XOs that would have the default language set to Nepali, the default jabber server set to a local server, a set of activities to match the grade level of students, and some other settings. We've been working with OLPC developers to get a script that would automatically apply these configurations at installation time so we didn't have to do it manually for every machine. Additionally, we wanted to make sure that teachers with limited technical knowledge could comfortably re-flash the XO if needed.

The solution: After some experimentation and help from Ties, I found a really easy way to achieve this custom build (provided you have access to the firmware). It’s not really a "custom build" per se, but it gets the job done.

Here’s how:

  1. Get an XO and install the activities you want. Then change the language and jabber server to meet your needs.
  2. You can either use the USB method or the sugar command to install activities.
  3. Change the jabber server by editing the default sugar profile.
  4. Change the language by either editing the .i18n file or by using the sugar-control-panel -s language <your language> command.

Next, go to the /home/olpc/.sugar/default directory and delete the file named config. The reason for this is that the next time you use this image on other XOs, they will be prompted to choose their own nickname, instead of using your name. This file is checked by Sugar to determine if a user has been configured; if it's missing, Sugar will ask the user to give their XO a name and choose a color, etc.

Now, reboot the XO, press the x button, and enter the firmware.

Use the save-nand command to create a NAND image of this machine on a USB stick. This will generate an .img and a .crc file associated with the image.

Result:
We now have an image that can be installed on other XOs with the language, activities, and server settings we wanted. All we need to do is install this image on all other XOs to replicate the exact same settings. This process has simplified things and is easy enough for anyone to follow. We are using build 698 as a base, so we still have to go into the firmware and perform a copy-nand to install the image. It would be great if someone could make a fs.zip for this build so that the entire installation process could be as simple as pressing four game keys.

What are the drawbacks of doing this? I’m not sure! If anyone has insights, please leave a comment