Building custom images: Difference between revisions

From OLPC
Jump to navigation Jump to search
(Redirected page to Build system)
 
(16 intermediate revisions by 6 users not shown)
Line 1: Line 1:
#REDIRECT [[Build system]]
{{Developers}}

== Motivation ==

This tutorial explains how you can build a completely customized OS image which can be used with:

* Emulators such as [[QEMU]] and [[VMware]]
* Laptops running in developer mode (see [[Activation and Developer Keys]] about running your xo in developer mode and [[Activated_Upgrade]] about installing OS images)

== Prerequisites ==
The following procedure has been tested on a Fedora 8 x86_64, but should work just fine on Fedora 7 and on i386.

Any Linux distribution capable of running yum should be able to run [[Pilgrim]], maybe with minor adjustments.

The intended audience of this document is an OS developer with some experience in rebuilding RPMs and managing yum repositories.

== Preparation ==

FIXME: are there any prerequisite packages to install?

git clone git://dev.laptop.org/users/cscott/pilgrim
cd pilgrim
make
sudo make install

Note: this will litter your system with pilgrim files, but you can clean it up later with <tt>make uninstall</tt>.


== Prepare your custom repositories ==

Build your custom RPMs and place them in a directory accessible via http.
It is recommended, but not necessary, to adopt the standard Fedora layout:

i386/os/ - i386 and noarch packages
i386/debug/ - debuginfo packages
source/ - src rpms

Create or update the RPM metadata information for your repositories:

createrepo i386/os
createrepo i386/debug
createrepo source


== Pilgrim customization ==

=== Adding your yum repositories ===

Edit <tt>streams.d/olpc-development-yum-install.conf</tt> and append your yum repository
(you only need the one containing the binary RPMs here). Mine looks like this:

[olpc-bernie]
name=OLPC bernie - i386
baseurl=http://www.codewiz.org/pub/olpc-bernie/i386/os/
enabled=1
gpgcheck=0

Note that I've explicitly specified <tt>i386</tt> because the <tt>$basearch</tt> variable would expand to <tt>x86_64</tt> on my host.

If you provide the full set of OS packages in your repository, then you should remove the default repositories altogether.


=== Adding repositories for the target ===

Edit <tt>streams.d/olpc-development.stream</tt>, and find the line saying
"Writing out configuration for OLPC yum repo". The repositories listed here
will appear in <tt>/etc/yum.repos.d</tt> on the target and are only used when
the image is booted on the target.

Add your yum repositories below the official ones.

This is what I do for xtest:

# keep this in sync with same repo defined in olpc-development-yum-install.conf
cat <<EOF > $INSTALL_ROOT/etc/yum.repos.d/olpc-development.repo
[olpc_development]
name=OLPC development
baseurl=http://koji.fedoraproject.org/static-repos/dist-olpc2-build-current/i386/
enabled=1
gpgcheck=0
EOF
cat <<EOF > $INSTALL_ROOT/etc/yum.repos.d/olpc-bernie.repo
[olpc-bernie]
name=OLPC bernie - \$basearch
baseurl=http://www.codewiz.org/pub/olpc-bernie/\$basearch/os/
enabled=1
gpgcheck=0
[olpc-bernie-debuginfo]
name=OLPC bernie - \$basearch - Debug
baseurl=http://www.codewiz.org/pub/olpc-bernie/\$basearch/debug/
enabled=0
gpgcheck=0
[olpc-bernie-source]
name=OLPC bernie - Source
baseurl=http://www.codewiz.org/pub/olpc-bernie/source/
enabled=0
gpgcheck=0
EOF

=== Adding and removing packages ===

The list of packages that will be installed is in <tt>streams.d/olpc-development.stream</tt>.

If your spec files are correct, you will only need to list the leaf packages here and yum will pull in all their dependencies automatically.


== Further reading ==

Read <tt>README.olpc</tt> in the root directory of Pilgrim for further information.

The short story is:

(become root)
./pilgrim-autobuild --config-dir . --stream olpc-development --dest-dir .

If you're only interest in the jffs2 image, do:

./pilgrim-autobuild --config-dir . --stream olpc-development --dest-dir . --variant devel_jffs2


FIXME: once pilgrim builds an os.img, how to update an XO box to run it?

== We want you! ==

Please send your patches to the [[http://lists.laptop.org/listinfo/devel development mailing-list]] for consideration. For large changes, just publish your git repository and provide the URL.


[[Category:Developers]]
[[Category:OS]]

Latest revision as of 16:50, 8 February 2011

Redirect to: