[Arm-netbook] Kernel and Debian Installer -- how to do it yourself

Frans Pop elendil at planet.nl
Wed Mar 24 20:07:03 GMT 2010


On Tuesday 23 March 2010, Frans Pop wrote:
> The moment you've all been waiting for: installing Debian Squeeze using
> Debian Installer is, with a few limitations, as easy as installing
> Debian on any other system.

Some of you may want to build a kernel or installer images yourselves, for 
example to develop and test patches (hint). Here's an overview of the 
steps involved.

I'm not going to explain all the details (such as the need to install build 
dependencies). If additional info is needed, please ask.

To build the kernel, you need to check out our git repository and check out 
the current development branch (origin/ct-pc89e/2.6.24/from-smartq).
I used a cross-compiler on an amd64 Lenny system to build the kernel.

To build an installer image you need to check out my private branch for the 
CT-PC89E from the D-I Subversion repository:
   $ svn co svn://svn.debian.org/svn/d-i/people/fjp/ctpc89e
Note that it is not possible to cross-build D-I images; this must be done 
on an armel Sid system.

The simplest way to build the kernel as a Debian package (including kernel 
image and modules) is:
   $ fakeroot make deb-pkg

Note that to be useful the name of the package must conform to the Debian 
naming convention: linux-image-<version>-<ABI>-<flavor>. I have done this 
by setting CONFIG_LOCALVERSION to '-0-s3c' in the .config.

Next step is to build udebs for the kernel modules. This is done from the
'kernel' subdirectory of the D-I checkout.
- create a subdirectory 'armel'
- copy your kernel .deb to that subdir
- make sure that the info in linux-kernel-di-armel-2.6/kernel-versions
  matches your <version>-<ABI>-<flavor>.
- make sure that the version in massbuild.versions matches the package
  version of your kernel.deb
- build the udebs using
  $ ./massbuild kbuild -k armel
- the resulting udebs will be in massbuild.out.kernel

Next step is to build the ctpc89e-udeb and rootskel-flash udebs. Use either 
debuild or dpkg-buildpackage, just like for regular packages.
The ctpc89e-udeb package contains all of the customizations I've developed 
for the netbook. The rootskel-flash package is used in the micro-ramdisk 
that gets piggy-packed onto the installer kernel image.

Copy all the udebs you've built to installer/build/localudebs.

Next you can build the D-I images: the boot micro-ramdisk and the actual 
D-I root ramdisk. This is done from the 'installer/build' directory.
$ sudo make reallyclean
$ sudo make build_ctpc89e_boot
$ sudo make build_ctpc89e_root

Almost there. Last step is to piggy-back the boot micro-ramdisk onto the 
kernel using (from the kernel checkout):
   $ fakeroot make INITRD=/path/to/boot_ramdisk.gz bootpImage
The resulting kernel image is arch/arm/boot/bootpImage.

You can now copy the images to SD card:
- root_ramdisk.gz => boot.img
- bootpImage => zImage_dt_update
And don't forget to include the dummy datang-epc.tar.gz.

For background info in how Debian Installer works please see the following 
document: http://d-i.alioth.debian.org/doc/internals/

Cheers,
FJP
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
Url : http://lists.phcomp.co.uk/pipermail/arm-netbook/attachments/20100324/9d60fe2d/attachment.bin 


More information about the Arm-netbook mailing list