Imaging for XO-1.5

From OLPC

Jump to: navigation, search

XO-1.5 only. Tested by User:Quozl using os304 on 2010-08-05.

How to build your own operating system image file, by extracting an image from a laptop and using our tools to convert to the format required by the firmware.

You might do this in order to rapidly deploy a customised image, using fs-update or NANDblaster for XO-1.5.

Imaging laptops is not supported for major deployments by OLPCA's deployment support team. However, it is suitable for limited testing. Take particular notice of the need to prevent side-effects of imaging.

Contents

Know the image size

  • identify the .zd file you are starting with,
  • read the first line of the file to determine the amount of space taken by the image,
$ head -1 os304.zd
zblocks: 20000 7331

These values are hex. They represent a block size of 131072 decimal, and a block count of 29489 decimal. These are used below.

Prepare image

Using the internal microSD or an external SD card, install an OLPC build using fs-update, add your customisations, and then prepare the image for cloning:

Delete the ".olpc-configured" files which tell olpc-configure it does not have to run again. This allows some of the files deleted below to be checked for and replaced.

sudo rm -f /.olpc-configured
rm -f /home/olpc/.olpc-configured

Destroy any saved volume settings, forcing defaults:

sudo rm -f /etc/alsa/asound.state

If the installed build is later than 12.1.0 build os9, destroy the saved hostname (ticket #11710):

sudo rm -f /etc/sysconfig/network

If the installed build is ealier than 10.1.2 build os851, destroy the saved wireless MAC address:

sudo rm -f /etc/udev/rules.d/70-persistent-net.rules

Destroy the SSH host key, forcing regeneration on next boot:

sudo rm -f /etc/ssh/ssh_host_rsa_key{,.pub}

Destroy the Sugar settings, forcing a first boot name prompt, and fixing collaboration:

rm -rf /home/olpc/.sugar

If a developer key was ever requested using the Browse activity, or you are not sure, clear the developer key request file:

rm -rf /home/.devkey.html

If the laptop was ever registered with a school server, or you are not sure, clear the registration by destroying the GConf settings:

rm -rf /home/olpc/.gconf*

Immediately shutdown without restarting sugar, to avoid the .sugar directory being recreated:

sudo poweroff

Avoid allowing the image to boot. The steps above must be repeated if the image is allowed to boot before being captured.

The next step depends on whether you chose to build the image on internal microSD, or an external SD card. See the appropriate subsection below.

Capture Internal microSD

  • boot an OLPC build from external SD or use a USB booted Linux (such as Tiny Core Linux)
  • prepare an output directory with enough space to hold the image,
    • if you are booting an OLPC build from external SD, you must first mount a USB stick larger than the build you are imaging, e.g. mount /dev/sda1 /mnt
    • if you are booting from media that is not mounted after boot, as is the case with Tiny Core Linux, you will need to mount it, e.g. mount /dev/sda1 /mnt
  • capture the image:
$ dd if=/dev/mmcblk0 of=/mnt/fs.img bs=131072 count=29489

After doing this you will have an fs.img file that contains the raw blocks of the internal microSD.

Capture External SD

  • remove the SD card and insert into a running system, identify the block device from /proc/partitions,
  • capture the image:
$ dd if=/dev/mmcblk1 of=fs.img bs=131072 count=29489

After doing this you will have an fs.img file that contains the raw blocks of the external SD card.

Convert to ZD

  • install some development tools:
# yum install git make gcc zlib-devel libtomcrypt-devel
  • clone the git repository of the bios crypto source package and build it:
$ git clone --depth=1 git://dev.laptop.org/bios-crypto
$ cd bios-crypto/build
$ make zhashfs
  • convert the fs.img file to .zd format (this takes a fair while if run on XO-1.5 hardware, but block number progress feedback is provided):
$ ./zhashfs 0x20000 sha256 fs.img fs.zsp fs.zd

Installing

fs-update

  • place the fs.zd file on a USB stick,
  • at Ok prompt use fs-update to install the image:
ok fs-update u:\fs.zd

The total block count shown after fs-update completes should match the block count determined earlier.

NANDblaster

  • place the fs.zd file on a USB stick,
  • insert USB stick in sending XO,
  • at Ok prompt use nb-update to transmit the image:
ok nb-update

See NANDblaster for more information.

Personal tools
  • Log in
  • Login with OpenID
About OLPC
About the laptop
About the tablet
Projects
OLPC wiki
Toolbox