Steve's blog

Steve About
Steve's blog,
The Words of the Sledge

Subscribe to the RSS feed.


  • Home
  • Debian
  • PlanetDebian
  • Search PlanetDebian
  • Friends

  • Matthew Garrett
  • Jonathan McDowell
  • Jo McIntyre
  • Martin Michlmayr
  • Andrew Mobbs
  • Mike Pitt
  • Daniel Silverstone
  • Andy Simpkins
  • Neil Williams

    Monday, 27 September 2010

    Armel buildds and porter box hosted at ARM

    One of the nice things that I've been involved with since starting to work at ARM in Cambridge is setting up newer, faster machines to help with the armel port. We have six machines hosted in the machine room here now:

    • abel is a porter box
    • arnold, alain, alwyn and antheil are running buildd software
    • arne is a hot spare (currently on my desk, but ready to go back in the rack any minute now)


    All of these machines are Marvell DB-78x00-BP development boards, each configured with a 1GHz Feroceon processor (ARM v5t), 1.5GB of RAM and a 250GB drive attached via SATA. They're nice machines, reasonably powerful yet (as with many ARM-based machines) they draw very very little electrical power even when working hard. These very boards were used for a while by the folks at Canonical to help build the Ubuntu armel port, but now we've got them.

    In terms of configuration, these machines are not quite fully supported in Debian yet, though. The kernels we're using are locally-built, based on the Debian linux-source-2.6.32 package but with a .config (marvell.config) that's tweaked slightly to add the support for these boards. There aren't any source changes needed, so I'm hoping to get support added directly in Debian, either as a new kernel flavour or (preferred) as a patch to an existing flavour. I've had conflicting advice about whether the latter is possible, so I'm going to have to experiment and find out for myself.

    UPDATE 2010-09-28: I've tested, and it seems that the boards will need a new flavour after all, as the config is incompatible with the closest other config (kirkwood). Ah well...

    I had no end of trouble trying to get make-kpkg do the right thing, so on advice from Ben I built the kernel using "make deb-pkg", a standard target in the Linux kernel's build system:

    fakeroot make -j2 deb-pkg DEBFULLNAME="Steve McIntyre" KDEB_PKGVERSION=buildd23

    Annoyingly, that wouldn't work when cross-compiling either so I had to build the kernel natively.

    To make the resulting kernel image package install properly (and, just as importantly, allow for future easy upgrades for the DSA folks), I also needed the following tweaks to the Debian system:

    • depmod:
      • Need to make sure that depmod is run so the new kernel can find and load modules at boot. Added trivial script in /etc/kernel/postinst.d/depmod to do this.
    • initramfs-tools:
      • Needed to copy the file /etc/kernel/postinst.d/initramfs-tools into place from my amd64 machine; I'm guessing this would be there automatically on a new-enough version of initramfs-tools on the armel machines, but we're still using Lenny as a base system for now even if I'm using a Squeeze-based kernel.
    • flash-kernel:
      • #594878: support for these boards. Hector did most of the work, and I've worked on it a little more.
      • #550584: kernel postinst hook script (/etc/kernel/postinst.d/zz-flash-kernel) to create uImage and uInitrd files from the kernel zImage and the initramfs.

    Finally, I've tweaked the uboot config on the machines to use the uImage and uInitrd files that are generated:

    Marvell>> setenv IDE ide reset
    Marvell>> setenv loadkernel ext2load ide 0:1 0x2000000 /uImage
    Marvell>> setenv loadinitramfs ext2load ide 0:1 0x3000000 /uInitrd
    Marvell>> setenv bootboth bootm 0x2000000 0x3000000
    Marvell>> setenv bootcmd setenv bootargs \$\(bootargs\)\;$(IDE)\;$(loadkernel)\;$(loadinitramfs)\;$(bootboth)
    Marvell>> saveenv

    And that's it, as far as I can see.

    I'll now wait for people to tell me what I've got wrong above... :-)

    13:59 :: # :: /debian/arm :: 0 comments