Quick start on setting up a armhf chroot on an existing Debian 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/

If you are using an x86 machine you can use qemu-debootstrap from the qemu-user-static package instead;

qemu-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

If you're using qemu-bootstrap and schroot, the mounting of /proc can be automated through the configuration file.

It is recommended to create a /usr/sbin/policy-rc.d to prevent daemons from starting up inside the chroot. The file should 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.