Changes

3,979 bytes added ,  14:35, 26 July 2010
Created page with '== Build system == We use [http://wiki.laptop.org/go/OS_Builder olpc-os-builder], a tool used by OLPC to create official and customized system images. Our version contains local...'
== Build system ==

We use [http://wiki.laptop.org/go/OS_Builder olpc-os-builder], a tool
used by OLPC to create official and customized system images. Our version contains local customizations specific to Dextrose and some patches that should be upstreamed.

== Build host requirements ==

The olpc-os-builder machinery has been used successfully with systems running Fedora 11 i386 through Fedora 13 x86_64.

What the host system runs shouldn't matter much, because all the work is being done in a chroot environment, but olpc-os-builder is known to fail on Ubuntu due to a missing dependency.


== How to create a build ==

* Checkout our local tree:

git clone git://git.sugarlabs.org/dextrose/mainline.git

* One time preparation

yum upgrade
yum install libtomcrypt-devel bitfrost make gcc mtd-utils
make

* Build:

time sudo ./osbuilder.py examples/f11-xo1-py.ini

* Wait 15 minutes

* Serve hot

== Signing ==

* Put the 4 signing keys somewhere in your home:

bernie@robbie:~$ ll src/olpc/keys/
-rw-------. 1 bernie bernie 1,2K Feb 5 2009 pyo1.private
-rw-------. 1 bernie bernie 270 Feb 5 2009 pyo1.public
-rw-------. 1 bernie bernie 1,2K Feb 5 2009 pys1.private
-rw-------. 1 bernie bernie 270 Feb 5 2009 pys1.public
-rw-------. 1 bernie bernie 1,2K Feb 5 2009 pyw1.private
-rw-------. 1 bernie bernie 270 Feb 5 2009 pyw1.public

* Make sure the keys are '''NOT''' world-readable

* Edit the paths in the <tt>[signing]</tt> section of <tt>examples/f11-xo1-py.ini</tt>


== Publishing the images ==

I'm currently publishing selected builds in [http://oficina.paraguayeduca.org/~bernie/f11-xo1-py/ my public html folder].

Signed builds should be published only if they implement the OLPC anti-theft system
([http://wiki.laptop.org/go/Antitheft_HowTo OATS]). Signing does
not have anything to do with quality or endorsement (i.e. signed builds are not
necessarily bug-free).

* TODO: We don't have a place for publishing official images yet

* TODO: We don't have a procedure for releasing builds to field technicians (we may use repo.paraguayeduca.org in the future)

* TODO: We don't keep release notes for our builds (we should probably use the wiki)


== Customizing the build ==

The topic of is too vast to discuss in detail here. Start by reading http://git.paraguayeduca.org/gitweb/users/bernie/olpc-os-builder.git/blob_plain/HEAD:/doc/README README] in the olpc-os-builder tree. Then, as needed, read the various <tt>README</tt>
files contained in the [http://git.paraguayeduca.org/gitweb/users/bernie/olpc-os-builder.git/tree/HEAD:/modules modules] directory.

Being a Build Master involves knowledge of many workflows, including:

* Building Sugar in [http://wiki.sugarlabs.org/go/Development_Team/Jhbuild sugar-jhbuild].

* Dealing with yum and [http://www.rpm.org/wiki/Docs rpm].

* Understanding the [http://fedoraproject.org/wiki/Packaging/Guidelines Fedora packaging] workflow and conventions.

* Creating yum package repositories with <tt>[http://createrepo.baseurl.org/]</tt>.

* Uploading activities to [http://activities.sugarlabs.org].

* General understanding of the Linux system plumbing infrastructure: [http://www.kernel.org/ kernel],
[http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html udev], [http://www.freedesktop.org/wiki/Software/dbus dbus], [http://www.freedesktop.org/wiki/Software/DeviceKit DeviceKit], [http://www.freedesktop.org/wiki/NetworkManager NetworkManager],
[http://www.x.org/wiki/ Xorg]...

* Flashing laptops and debugging any problems

* Interaction with the Sugar and OLPC community to solve issues and minimize our divergence from the official builds.

== Upstream ==

Our upstream code comes from dev.laptop.org:

git remote add olpc git://dev.laptop.org/projects/olpc-os-builder
git fetch olpc
git log olpc/master

== Building custom kernels ==

$ git clone git://git.paraguayeduca.org/users/bernie/olpc-2.6
$ cd olpc-2.6
$ setarch i386 make ARCH=i386 xo_1-kernel-rpm