Quick start on setting up a armhf chroot on an armel system

First it is necessary to debootstrap the chroot. It is necessary to tell debootstrap what archive to use and (unless you have the debian-ports-archive-keyring on your host system) you will also need to tell it to install without checking the gpg sig

debootstrap --no-check-gpg --arch=armhf sid /chroots/sid-armhf ftp://ftp.debian.org/debian/

Now chroot in, and mount proc as normal.

chroot /chroots/sid-armhf
mount -t proc proc /proc

At this stage it is recommended to create a /usr/sbin/policy-rc.d to prevent daemons from starting up in the chroot. The file shuold be chmod 755. The following contents works fine (taken from pbuilder).

echo "************************************" >&2
echo "All rc.d operations denied by policy" >&2
echo "************************************" >&2
exit 101

Next you must edit /etc/apt/sources.list as the one generated by debootstrap is unusable. The list below covers both binary and source for armhf. "Unreleased" is needed to install linux-libc-dev and hence build-essential.

deb http://ftp.debian.org/debian sid main
deb-src http://ftp.uk.debian.org/debian sid main
deb http://ftp.debian.org/debian unreleased main
deb-src http://ftp.debian.org/debian unreleased main

After editing source.list run apt-get update, install debian-archive-keyring (you will get a signature check warning at this stage) apt-get update again (since apt doesn't seem to recheck signatures until you apt-get update) and you should be able to install build-essential as normal.