Installing with the Debian Installer

It's now possible to install armel directly with d-i, using one of the daily snaphots. Oystein Viggen describes his success and what he had to do differently in a message to the debian-arm list.

nslu2 users should instead get an image from http://slug-firmware.net/ , if you need to use the onboard ethernet. See http://www.cyrius.com/debian/nslu2/ for instructions on using d-i with a slug.

Thecus N2100/Allnet ALL6500 and IO-Data Glantank users should follow the installation guides under http://www.cyrius.com/debian/iop/ using the installer images from the top-most link above.

The options below are for installing without d-i.

Debian repositories

armel port is available directly from normal Debian mirror network. Check from mirrorlist a mirror near you that carries armel.

In /etc/apt/sources.list put something like:

deb http://ftp.de.debian.org/debian lenny main
deb http://ftp.de.debian.org/debian unstable main

Installing armel to qemu with d-i

Generally, you need to follow Aurelian Jarno's instructions http://www.aurel32.net/info/debian_arm_qemu.php with some small changes we'll document here.

You need a recent (sid?) qemu for this to work. Download kernel and d-i initrd:

wget http://people.debian.org/~joeyh/d-i/armel/images/daily/iop32x/netboot/initrd.gz
wget http://ftp.XX.debian.org/debian/pool/main/l/linux-2.6/linux-image-2.6.25-2-versatile_2.6.25-7_armel.deb
dpkg-deb -x linux-image-2.6*_armel.deb .
cp boot/vmlinuz-*-versatile vmlinuz-versatile

Create a hard disk image and boot d-i;

qemu-img create -f qcow2 hda.img 10G
qemu-system-arm -M versatilepb -redir tcp:2222::22 -kernel vmlinuz-versatile -initrd initrd.gz -m 256 -hda hda.img -append 'root=/dev/ram mem=256M'

Install as usual. After install boot with the following command line:

qemu-system-arm -M versatilepb -kernel vmlinuz-versatile -hda hda.img -append "root=/dev/sda1"

Building EABI ready Kernel

You need to enable the following options to enable both EABI and OLDABI

CONFIG_ARM_THUMB=y
CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y

To simplify things, make sure you have all essential kernel modules built-in, since oldabi modprobe can't load EABI modules nor the other way around.

Creating a EABI chroot using debootstrap

If you have a machine running oldabi arm port, you can CrossDebootstrap to create a armel chroot:

debootstrap --verbose --arch armel --foreign lenny /armel-chroot http://ftp.de.debian.org/debian
chroot /armel-chroot /debootstrap/debootstrap --second-stage

to put an armel chroot into the directory /armel-chroot. For the "--second-stage" part one needs a kernel compiled with options listed in previous section.

If you have a non-debian EABI system, you need to download and debootstrap manually (perl required):

# replace 1.0.9 with latest debootstrap version:
wget http://ftp.nl.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.9_all.deb
ar -x debootstrap_1.0.9_all.deb
cd /
tar xvzf  /full-path-to-work/work/data.tar.gz
debootstrap --arch armel lenny /data/debian/armel http://ftp.nl.debian.org/debian

There is also a prebuilt rootfs (currently unavailable). Or this older alternative prebuilt rootfs.

Migrating arm installation to arm EABI installation

There is no proper way yet. The following instructions worked for me, but no guarantees at all.

  1. Create a chroot like above.
  2. store your current package selections with "dpkg --get-selections > file"

  3. enter your chroot and set the selections to match: "dpkg --set-selections < file"

  4. test install all the same applications to your chroot: "apt-get --no-act dselect-upgrade"
  5. backup
  6. boot into single user mode and make sure there is no processess running
  7. bind-mount / somewhere under the armel chroot, and move the directories (this is the scary part)

# mount -o bind / /chroot/armel/mnt/
# chroot /chroot/armel/
# cd /mnt
# mkdir old
# mv bin sbin lib usr var old # relocate the old binary directores
# cp -a /bin /sbin /lib /usr /var . # copy the armel binaryes and library directories to root
# mv /sbin/start-stop-daemon.REAL /sbin/start-stop-daemon

At this point, make *sure* you have everything you need to boot and access your system under /mnt.

Exit the armel chroot and *REBOOT*. If it breaks, you get to keep the pieces.

If you are lucky, you have now a armel system. Finish the installation by pulling in the rest of packages you had installed:

apt-get dselect-upgrade

TODO: recover old /var selectively.

Links

* http://lists.debian.org/debian-arm/2007/01/msg00034.html

ArmEabiHowto (last edited 2008-09-14 14:15:58 by nchip)