ARM

Revision 13 as of 2009-12-29 13:09:06

Clear message

ARM is a processor architecture used in a variety of applications, such as:

  • Handheld Computers (Nokia n9xx/n8xx/n7xx, Sharp Zaurus, etc.)
  • Network Devices (Thecus N series, Linksys NSLU2, etc.)
  • Project development boards (Gumstix, Beagleboard, etc.)
  • Subnotebooks (press releases indicate these will exist)

Ubuntu jaunty targets the ARM EABI, with an expectation of minimum compliance with the ARMv5t instruction set. Optimised libraries for ARMv6 and ARMv7 are expected to be available where there is significant performance gain.

Ubuntu karmic targets armv6.

Ubuntu lucid targets armv7 and higher only, See https://wiki.ubuntu.com/ARM/Thumb2.

Status

  • Several builds have been installed, and are processing the queue
  • Kernels are being worked on for various targets, including -versatile (for QEMU)
  • Optimisation investigation is underway

FAQ

  • How do i build an armel rootfs from scratch

Please see the ARM/RootfsFromScratch page

  • How do I install Ubuntu on my device

Once enough of the archive is built, any of your favorite methods for installing Ubuntu should work for ARM, if your device can boot from CDROM or USB. If your device needs special processing, please check the manufacturer's documentation for installing linux.

  • How does this differ from Debian's armel port?

The primary difference is that Ubuntu targets a base of ARMv5t rather than a base of ARMv4t. As with the rest of Ubuntu, typically the source packages are identical, so the primary differences are the same as the differences between Debian and Ubuntu generally.

  • How does this differ from the work of mojo.handhelds.org

The primary differences are 1) Ubuntu uses "armel" as the architecture where mojo uses "arm" and 2) Ubuntu has a single architecture target where mojo may have several (e.g. armv5el-vfp vs. armv6el-vfp). The mojo team were clear leaders in this area, and the vast majority of patches (branding excepted) are high-priority review candidates for inclusion.

  • Where can I get help?

If it's ARM specific, stop by #ubuntu-arm on freenode. If it's not ARM specific, the regular Ubuntu support channels will provide better support.

  • What kernel flavours are available?

Currently, kernels are available for iop4xx, orion5x, iop32x, and versatile targets. Kernels are planned for omap targets.

  • What about VFP?

The base system build does not require VFP, so as to work on a wider variety of hardware. Libraries that show signfiicant improvement will have optimised VFP routines available.

  • How can I help?
    • As a user: Try Ubuntu ARM on your device. Report any bugs to https://launchpad.net/ubuntu/+bugs. Report working hardware to ARM/DeviceSupport

    • As a developer: Try Ubuntu ARM for your use case. Fix anything that doesn't work. Submit the patches for upload.
    • As a porter: Review applications not yet available for armel. Find out why. Port it, and submit the patches. Known issues are tracked at ARM/PortingIssues

    • As a tester: Try following the Ubuntu test cases on an ARM device. Report any regressions from other architectures.
    • As an author: Document installation procedures for various devices.
  • How to run Ubuntu ARM build rootfs in qemu?

There are several ways to do this. Only one of them covered here.

  • Get kernel from here

  • Build your own rootfs, either qemu image or rootfs tarball will be fine ARM/RootfsFromScratch

    • For qemu image: $ sudo qemu-system-arm -M versatilepb -kernel ./vmlinuz-2.6.28-versatile -hda MYUBUNTU_ARM.img -m 256M -append "root=/dev/sda1 rw"
    • For tarball, you will need to extract them to a usb key.
    • $ sudo tar zxvf MYUBUNTU_ARM.tar.gz -C /media/<disk>

    • $ sudo qemu-system-arm -M versatilepb -kernel ./vmlinuz-2.6.28-versatile -hda /dev/sdx -m 256M -append "root=/dev/sda1 rw"