Building custom images: Difference between revisions
Jump to navigation
Jump to search
DanielDrake (talk | contribs) (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: