OS images

From OLPC
Jump to navigation Jump to search

The operating system used for OLPC is work-in-progress and so-called images are available from

http://olpc.download.redhat.com/olpc/streams/development

Downloads

As the operating system for OLPC is under development, there are several builds available. The latest build might not always be stable since developers are experimenting with new features. Each build is labeled with a unique version number. When reporting problems on mailing lists, please make sure you list the build number you are using.

Latest Stable

Latest stable build is build59. --Blizzard 23:35, 8 Aug 2006 (EDT)

Image variants

Images are available in two variants

  • Normal images
    • These are in the images/ subdirectory of a build.
    • Intended for production use; does not contain tools or software suitable for developers of the OLPC operating system
    • Also available in two sub-variants: ext3, which is a filesystem image, and tree, which is an archive of the directory structure
  • Developer images
    • These are in the images-rpm/ sub-directory of a build
    • Contains tools useful for developers of the OLPC operating system
      • Presently includes: yum, rpm, vim-minimal, openssh-server, xterm, which, file, tree, wget, xorg-x11-twm, gdb
    • WARNING: Do not attempt to update the kernel on images-rpm builds - the initrd will be wrong. We're working on fixing this through including an olpc-mkinitrd package.


Passwords

The images have no password set at build time. This means you can log in as root using no password. Always remember to change the password as the first thing when start using an image.

As the image-rpm variant ships with an SSH server you thus need to set the password to be able to login from a remote host. This is a feature of sshd.

Password handling is subject to change before official release.

Using Images

For development we right now offer images that runs the OLPC operating system off a USB storage device. We're working on getting this to work on the NAND flash of the hardware too. Instructions to come.

Images on USB storage devices

To try out an image, simply download the appropriate .img.bz2 file, e.g.,

olpc-stream-development-42-20060714_1709-rpm-ext3.img.bz2

unzip it, and transfer it to a USB storage device via dd, e.g.,

# bunzip2 olpc-stream-development-42-20060714_1709-rpm-ext3.img.bz2
# dd if=olpc-stream-development-42-20060714_1709-rpm-ext3.img of=/dev/sdb bs=512
# sync

Remember to

  • Do this as the super user / root
  • Replace /dev/sdb with the device file of the USB storage device. The images do contain a partition table, so do not write to a partition such as /dev/sdb1
  • Make sure any old partitions from the storage device is unmounted.
  • The USB storage device must be 512MB or bigger. All existing data on it will be wiped.

Now you should be able to boot the OLPC operating system off the USB storage device.

Installing in an existing partition on a USB storage device

Useful notes:

  • Make sure your root partition is ext3, not ext2

If you don't want to completely wipe the USB stick or hard drive, you can also try transferring the partition within the image file into an existing partition on your storage device. Using dd to transfer the image directly onto the device completely replaces the existing data and partition table. Instead, you can use loopback mounts to copy the partition across and then set-up grub on the device.

For example, I have a 200GB USB hard disk partitioned into 3 partitions:

 * sdb1 - 10GB (for the root filesystem)
 * sdb2 - 1.5GB swap partition
 * sdb3 - the rest as a storage partition.

Retrieve and unzip the appropriate OLPC image file as above. This file contains a partition table, which describes exactly one partition. What we want to do is to mount that partition (using a loopback device) and copy the contents to the USB hard disk, then make that hard disk bootable.

First, we need to setup the image file on a loopback device so we can inspect that partition table:

# losetup /dev/loop0 olpc-stream-development-59-20060808_1153-rpm-ext3.img 

Now, use fdisk to look at the contents:

# fdisk -l -u /dev/loop0
 Disk /dev/loop0: 504 MB, 504626688 bytes
 16 heads, 32 sectors/track, 1924 cylinders, total 985599 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Device Boot      Start         End      Blocks   Id  System
 /dev/loop0p1        32      985599      492784   83  Linux

In this case, the partition we want starts at sector 32, and each sector is 512 bytes = 16384 bytes into the image file. Now, we can set up a second loopback device to load this partition and mount it:

# losetup /dev/loop1 -o 16384 olpc-stream-development-59-20060808_1153-rpm-ext3.img
# mount -text3 /dev/loop1 /media/tmp/

Now, copy the files to your USB hard disk:

# cp -a /media/tmp/* /media/usbdisk/

And finally, we need to set up grub on the disk to boot from the first partition. We do this using the GRUB shell. Note that in this example, we're installing on (hd1), because the external disk is the 2nd disk connected to the system. When it boots on the OLPC board, it will be the primary disk and grub will treat it as (hd0)

# grub
Probing devices to guess BIOS drives. This may take a long time.
# grub> root (hd1)
root (hd1)
Filesystem type unknown, using whole disk
# grub> root (hd1,0)
root (hd1,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd1)"...  15 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done.
# grub> ^C
#
  • When I tried booting from this drive on the OLPC, GRUB started but didn't load its configuration correctly - just dropping me into the grub shell instead. I needed to run 'root' and 'setup' again on the actual board to get GRUB to set itself up right. If anyone knows how to avoid this step, please fix the instructions.

Images in QEMU

The easiest way to test the images is to use qemu or some similar emulator. It is available for various host systems:

QEMU on Linux

On Fedora Core 5, QEMU is included in extras and is very easy to install. As root just type

yum install qemu

and it should be installed. You may have to start the service for it. As root run:

service qemu start

Once you have an image downloaded, it is very easy to use qemu to launch the OLPC environment:

qemu -hda olpc-stream-development-7-20060609_1600-ext3.img

The simulator will start up at this point. When the screen turns green saying One Laptop Per Child at the bottom, press the spacebar to get the grub menu. It's important that you choose the OLPC Simulator option. The default for these images is to boot for the OLPC Hardware, not the Simulator.

We have heard multiple people say that QEMU doesn't work with these images on the debian-derived distributions. We also haven't heard of any solutions to these problems. The symptom is that the kernel hangs during boot.

Marcin: On Ubuntu Dapper it hangs with qemu 0.8.0 (from distro), but works with 0.8.1 from i386 binary tarball.

Vedran: It also hangs on Debian unstable with qemu 0.8.1-1 (from distro), but works with 0.8.1 from i386 binary tarball.

QEMU on Windows

See Using QEMU on Windows XP

QEMU on Mac

Bert: I successfully ran OLPC on OSX using the following method on a Powerbook G4 (867 MHz), albeit very slowly

  • Download and install Q.app (kju-app.org, I got 0.8.1a35)
  • Download a disk image (build 59 worked, 73 did not), double-click to unzip.
  • Double-click Q.app
  • Click (+) to add a new PC
    • Name: OLPC
    • Operating System: Q Standard Guest
    • Click (Create PC)
  • Configure Settings:
    • General: No file sharing
    • Hardware - Hard disk: Select your unzipped disk image
    • Advanced - QEMU Arguments: type "-redir tcp:2222::22" (without quotes)
    • Click (Create PC)
  • Double-click "OLPC" to run:
    • press space to get into GRUB, choose Simulator, press "e" to edit commands, select "kernel" line, press "e", add "single" option, hit return, then "b" to boot
    • set some root password (necessary for SSH), sync
    • reboot (only power-off button worked for me)
  • once it's up, from a terminal, log into OLPC using "ssh -p 2222 root@localhost"

Images in VMware Player

VMware Player is another convenient way to test the image on your windows machine. You can convert the image to a VMware virtual disk file with qemu-img command included qemu distribution.

$ qemu-img convert olpc-stream-development-59-20060808_1153-rpm-ext3.img  -O vmdk olpc.vmdk

Additionally, you need a config file to run the virtual disk. This is an example(save it as olpc.vmx).

#!/usr/bin/vmware
config.version = "8"
virtualHW.version = "3"
memsize = "128"
ide0:0.present = "TRUE"
ide0:0.fileName = "olpc.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "/dev/cdrom"
ide1:0.deviceType = "atapi-cdrom"
floppy0.fileName = "A:"
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat"
usb.present = "TRUE"
sound.present = "TRUE"
sound.virtualDev = "es1371"
displayName = "OLPC"
guestOS = "other26xlinux"

ethernet0.addressType = "generated"
uuid.location = "56 4d d1 99 5c 64 a3 6f-ef c7 aa 86 a8 cc ed 46"
uuid.bios = "56 4d d1 99 5c 64 a3 6f-ef c7 aa 86 a8 cc ed 46"
tools.remindInstall = "TRUE"
ethernet0.generatedAddress = "00:0c:29:cc:ed:46"
ethernet0.generatedAddressOffset = "0"

checkpoint.vmState = "olpc.vmss"

ide0:0.redo = ""

Note: Don't forget to select OLPC Simulator option on booting.