Olpc-update

From OLPC
Revision as of 16:31, 13 June 2008 by LFaraone (talk | contribs) (→‎Before you begin: clarify)
Jump to navigation Jump to search
  This page is monitored by the OLPC team.
  english | español日本語 HowTo [ID# 138260]  +/-  

What version do I have now?

To tell what build version you have, run the Terminal activity and type

cat /etc/issue

Simple Online upgrade

olpc-update is designed to work with even the worst internet connections, and will do no harm if it is interrupted during download. If you don't like your new software update, you can revert to the older version by holding down the O key on the game pad (between the right speaker and the power button) when you next turn the laptop on.

To manually upgrade your machine when a new version is released:

  1. Plug the XO into an electrical outlet
  2. Connect to the internet. If you are upgrading because you have a WPA hotspot at home, you might want to go to a Public Hotspot to connect to the internet for an online upgrade, such as a T-Mobile hotspot or a local libary.
    Firewall note: olpc-upgrade requires outgoing TCP PORT:873 to be unfiltered by the hotspot's firewall. In otherwords if the laptop has functional-access to the internet but olpc-upgrade returns the message "I don't think you're connected to the internet." check the hotspot's firewall is not blocking the outgoing TCP Port 873.
  3. Open the Terminal Activity Activity-terminal.svg or a console and type the following (press the Enter key after each line):
su -l
olpc-update build-number 

For example:

 su -l
 olpc-update 703

Where

  • in su -l, it's lower case "L", not the number "1"

Note: su does not work in terminal with some builds which require a password until you become "root". You can become "root" by pressing the "#_" icon at the top of the terminal screen. In some other builds you may need to type "sudo olpc-update build-number" instead.

  • build-number is the number of the build to be updated to.
  • The latest stable build is 703.

If the update program successfully connects to the update server some messages should display

Downloading contents of build build-number
Updating to version hash xxxx
Making clean /versions/updates/...
Trying irsync_pristine update from rsync://updates.laptop.org/build-build-number
- Cleaning tree.
- Fetching contents.
- Performing incremental rsync.
Verifying update.
Installing update in /versions/{pristine,run}/xxxx

Where xxxx is a version-specific number.

This process may take more than thirty minutes. When the process is complete, you need to reboot, unless you supplied the -r option to olpc-update.

When the XO restarts the update will be complete.


Simple Offline Upgrade

Before you begin

This page describes how to update the software image on your laptop. You can either update over the network, or from a USB flash key or disk. You must be using a B3 machine or better, and build 650 or better. NOTE: All G1G1 recipients have received C2 (also known as MP which is the latest model) these laptops have build 650. There is also a method of restoring to G1G1 (build 650) shipped defaults. If you've got an older machine or an older build, use the old Autoreinstallation image instructions (does not apply to G1G1).

If you want to wipe out your journal and all content you've generated and restore your machine to a pristine state, please use the Activated Upgrade instructions. This is recommended for upgrades to build 656.



First, identify the build to which you want to update your system. To the right is a list of our latest releases. For most people, the numbered build after "Stable" (for example, "650") is what you should update to. If you have a developer key for your machine, and feel adventurous, you can try the latest developer build. Click on the 'devel_jffs2' link beside 'devel' in the box, and use the name at the top of the page, something like "joyride-1452". Ignore all this if you already know what you want to update to!

Now, you'll want to get a root shell on the machine. Open the 'Terminal' activity on your XO (or if you cannot do so, then type CTRL+ALT+F2 and type in root), and type:

sudo -i

at the prompt. If you've set a password for the 'olpc' account, you may have to type it in. If you get an error message here, you're using a pre-update.1 build (or pre-joyride-1450); use

su -

instead to get your root shell. Either way, you should end up with a prompt with a # character in it. If olpc-update returns 'command not found', then olpc-update is not in your current working search path. (i.e. Update.1) Instead type /usr/sbin/olpc-update for the command.

Now you have two choices: update over the network, or download the build onto a USB key and update from that.


USB upgrade

At your root prompt, type:

olpc-update --version

(If the command is not found, perhaps /usr/sbin is not in your PATH, as is the case for example if you just typed "su" from the Terminal in at least some builds - you can put /usr/sbin into your PATH and try again.)

The first line of the response should be something like:

olpc-update 2.0, Copyright (C) 2007 One Laptop Per Child Association, Inc.

If you don't even have the --version option, or if it does not say that you are using at least version 2.0 of olpc-update, you will need to upgrade olpc-update before continuing.

Now use the links in the "latest releases" box above to download two files to the top directory of your USB key: osXYZ.usb and osXYZ.toc, where XYZ is the numeric part of the build you are updating to. For example, if you are updating to build 703, the files would be named os703.usb and os703.toc. If you are updating to build joyride-1452, the files would be named os1452.usb and os1452.toc.

Insert your USB key with these files on it into your XO. At your root prompt, type:

olpc-update --usb

When olpc-update is finished, you should reboot to start using your new build.

The update mechanism preserves the build from which you ran the updater as an "alternate" image from which you can boot. To swap the "primary" and "alternate" images, hold the 'O' gamepad key during boot.

Workaround: updating olpc-update

If you are using an old build, olpc-update might not be recent enough to let you update via USB, or update to a build containing a library. Here's how to upgrade olpc-update to allow you to use the processes described above.

From a root prompt on your XO (see above for information):

# wget -P /tmp/X -r -np -nd http://dev.laptop.org/~cscott/olpc-update/
# rpm -Uvh --force /tmp/X/olpc*.rpm

Or, if you are working without a internet connection on the XO-1, go to http://dev.laptop.org/~cscott/olpc-update/ and download both files to your USB drive. Then with the USB drive inserted into the XO-1:

# rpm -Uvh --force /media/USB_Drive_Name/olpc*.rpm

Now:

# olpc-update --version

should tell you that you have version 2.5 of olpc-update.

More information

The olpc-update script works by transferring only the differences between builds from a USB key or across the internet link from an updates server. This makes updating easier, mostly quicker, and almost always with less data transfer.

As an example of the data efficiency gain,

  • A full reinstallation from OS build 602 to 603 would normally take about 279Mb of download data, whereas olpc-update takes 16Mb of download data,
  • A full reinstallation from OS build 603 to 608 would normally take 262Mb of download data, whereas olpc-update takes 6.5Mb of download data,
  • An olpc-update from OS build 602 to 625 takes 33Mb of download data.

The time efficiency gain is less easy to characterize. It depends on the speed of the internet link, the speed of the updates server, and whether the update was able to use its server-friendly efficiency mode. An olpc-update from 602 to 603 cost under 17 minutes.

The current updates server is updates.laptop.org.

Usage

In summary:

  • Be connected to the internet,
  • Log in as root,
  • Type olpc-update NNN where NNN is the build number or name,
  • Wait for the update to complete,
  • Reboot.

What version am I running?

You can find the current version of your system software by typing "cat /boot/olpc_build" (a chattier version is at /etc/issue).

Be Connected

Ensure the laptop or the emulator is able to access the internet, by being connected an an access point, or via the mesh, or using an ethernet connection.

Run olpc-update

Normally you only need to run olpc-update with a build number, like this:

# olpc-update 703

or

# olpc-update joyride-1779

There are other options. For example:

# olpc-update --help
Usage: 
 olpc-update [options] --hints hints-file
 olpc-update [options] [-rf] build-number
 olpc-update [options] [-rf] --usb
 olpc-update --version
 olpc-update --help

For example:
 olpc-update 630
 olpc-update joyride-1779
 olpc-update update.1-700

Options:
  -h, --help    show this help message and exit
  -f, --full    skip incremental update attempt.
  --force       force update to an unsigned build.
  -r, --reboot  reboot after a successful update.
  --hints=FILE  name of json-encoded hints dictionary identifying the desired
                new version.
  -u, --usb     upgrade from new build on inserted USB stick.
  -v            display verbose progress information; repeat for more verbose
                output.
  -q, --quiet   don't output anything; use exit status to indicate success.
  --version     display version and license information.

Update Targets

There are several update targets available. There is usually one for each operating system build, and there are others for test builds and for Debian. To get a partial list of the available builds, use the command:

# rsync rsync://updates.laptop.org | sort

Note that this does not list all the builds available. Instead, this just lists the builds which have been requested recently; the server loads new builds on demand and garbage collects old builds.

[kevix -- could someone comment what all those do? e.g. 'olpc-update debian' would do what on my xo?]

[vik -- olpc-update debian will install a (basic) debian system. 'olpc-update debian-big' will install a more complete debian system. See Installing Debian as an upgrade. Presumably olpc-update ubuntu would install ubuntu]

Update Using Another Laptop

Warning: Advanced usage!

Q: How can I re-use the bits for multiple laptops, using a laptop?

A: Imagine that you have two laptops, one is called SOURCE and the other TARGET.

On the SOURCE laptop, add an rsyncd.conf file to /etc:

[contents]
        path = /versions/contents
        uid = root
        gid = root

[pristine]
        path = /versions/pristine
        uid = root
        gid = root

Then start rsync --daemon there.

On the TARGET laptop, use rsync to check access and identify the build that is available:

SOURCE=10.0.0.1
rsync rsync://${SOURCE}/contents

Where 10.0.0.1 is the IP address or domain name of the SOURCE laptop.

Take note of the build identifier. It will be a hexadecimal hash, 64 characters long.

On the TARGET laptop, create an appropriate 'hints' file:

export SOURCE=10.0.0.1
export BUILD=dd44...597f
python2.5
>>> import os, bitfrost.util.json as json
>>> hints = ('%(BUILD)s' % os.environ, 'normal', [('rsync','rsync://%(SOURCE)s/pristine/%(BUILD)s' % os.environ)])
>>> open('hints.json','w').write(json.write(hints))
>>> exit()

Now on the TARGET laptop, use olpc-update to upgrade or downgrade to that build:

olpc-update --hints hints.json

Several laptops can all be updated in the same way from one source with the same 'hints.json' file.

Setting Up A Local Updates Server

Q: How can I re-use the bits for multiple laptops, using a server?

A: This feature is available for testing but is not yet released.

The source code for the updates server is available at:

http://dev.laptop.org/git?p=users/cscott/upgrade-server

Basic installation instructions can be found at Upgrade Server.

Source Repository and Specification

Q: Where are the specifications?

A: See the XO updater article.

Q: Where is the source?

A: The source repository for olpc-update is

http://dev.laptop.org/git?p=users/cscott/olpc-update

It also uses code from the olpc-contents package:

http://dev.laptop.org/git?p=users/cscott/olpc-contents