Difference between revisions of "Dextrose/Building"

From Sugar Labs
Jump to navigation Jump to search
(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...')
 
Line 33: Line 33:
 
== Signing ==
 
== Signing ==
  
* Put the 4 signing keys somewhere in your home:
+
* Put the 3 signing keys somewhere:
  
 
  bernie@robbie:~$ ll src/olpc/keys/
 
  bernie@robbie:~$ ll src/olpc/keys/
Line 45: Line 45:
 
* Make sure the keys are '''NOT''' world-readable
 
* 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>
+
* Edit the paths in the <tt>[signing]</tt> section of your ini file (e.g. <tt>examples/f11-0.88-xo1-py.ini</tt>
  
  
 
== Publishing the images ==
 
== 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 correctly implement the [http://wiki.laptop.org/go/Antitheft_HowTo OLPC anti-theft system]). Signing does not have anything to do with quality or endorsement (i.e. signed builds are not necessarily bug-free or supported).
 
 
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 ==
 
== 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>
+
The topic of  is too vast to discuss in detail here. Start by reading
files contained in the [http://git.paraguayeduca.org/gitweb/users/bernie/olpc-os-builder.git/tree/HEAD:/modules modules] directory.
+
[http://git.sugarlabs.org/projects/dextrose/repos/mainline/trees/master/doc/README README]
 +
in the olpc-os-builder tree. Then, as needed, read the various <tt>README</tt> files contained in the
 +
[http://git.sugarlabs.org/projects/dextrose/repos/mainline/trees/master/modules modules] directory.
  
 
Being a Build Master involves knowledge of many workflows, including:
 
Being a Build Master involves knowledge of many workflows, including:
Line 97: Line 88:
 
  git log olpc/master
 
  git log olpc/master
  
== Building custom kernels ==
+
== Building custom OLPC kernels ==
  
  $ git clone git://git.paraguayeduca.org/users/bernie/olpc-2.6
+
  $ git clone http://dev.laptop.org/git/olpc-2.6/
 
  $ cd olpc-2.6
 
  $ cd olpc-2.6
 
  $ setarch i386 make ARCH=i386 xo_1-kernel-rpm
 
  $ setarch i386 make ARCH=i386 xo_1-kernel-rpm

Revision as of 14:57, 26 July 2010

Build system

We use 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 3 signing keys somewhere:
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 [signing] section of your ini file (e.g. examples/f11-0.88-xo1-py.ini


Publishing the images

Signed builds should be published only if they correctly implement the OLPC anti-theft system). Signing does not have anything to do with quality or endorsement (i.e. signed builds are not necessarily bug-free or supported).


Customizing the build

The topic of is too vast to discuss in detail here. Start by reading README in the olpc-os-builder tree. Then, as needed, read the various README files contained in the modules directory.

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

  • Dealing with yum and rpm.
  • Creating yum package repositories with [1].
  • Uploading activities to [2].
  • General understanding of the Linux system plumbing infrastructure: kernel,

udev, dbus, DeviceKit, NetworkManager, 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 OLPC kernels

$ git clone http://dev.laptop.org/git/olpc-2.6/
$ cd olpc-2.6
$ setarch i386 make ARCH=i386 xo_1-kernel-rpm