Bootstraping Debian 9 (Stretch) for arm64
Recently I got hold of a very low cost 64 Bit ARM platform, the NXP Freedom LS1012A board. As all of the NXP boards, it is very well supported in the NXP Yocto framework, but sometimes it makes sense to have a Debian system available for quick prototyping.
Just as my post Quick and easy bootstrap of Debian 8 (Jessie) for armhf described how to bootstrap a Jessie root file system for the "armhf" (ARMv7a 32Bit) architecture, it seemed like it must be very easy to do the same for 64 Bit. Indeed it turns out to be very easy as there is now a qemu-debootstrap command automating the qemu setup described in the previous post:
[dzu@harry ~]$ sudo qemu-debootstrap --arch arm64 stretch debian-arm64 http://ftp.debian.org/debian I: Running command: debootstrap --arch arm64 --foreign stretch debian-arm64 http://ftp.debian.org/debian W: Cannot check Release signature; keyring file not available /usr/share/keyrings/debian-archive-keyring.gpg I: Retrieving InRelease I: Validating Packages I: Resolving dependencies of required packages... I: Resolving dependencies of base packages... I: Found additional required dependencies: libaudit-common libaudit1 libbz2-1.0 libcap-ng0 libdb5.3 libdebconfclient0 libgcrypt20 libgpg-error0 liblz4-1 libncursesw5 libsemanage-common libsemanage1 libsystemd0 libudev1 libustr-1.0-1 I: Found additional base dependencies: dmsetup gnupg-agent libapparmor1 libassuan0 libbsd0 libcap2 libcryptsetup4 libdevmapper1.02.1 libdns-export162 libelf1 libfastjson4 libffi6 libgmp10 libgnutls30 libhogweed4 libidn11 libidn2-0 libip4tc0 libip6tc0 libiptc0 libisc-export160 libksba8 liblocale-gettext-perl liblognorm5 libmnl0 libnetfilter-conntrack3 libnettle6 libnfnetlink0 libnpth0 libp11-kit0 libpsl5 libseccomp2 libsqlite3-0 libtasn1-6 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libunistring0 libxtables12 pinentry-curses xxd I: Checking component main on http://ftp.debian.org/debian... I: Retrieving libacl1 2.2.52-3 I: Validating libacl1 2.2.52-3 I: Retrieving adduser 3.115 ... I: Extracting mount... I: Extracting util-linux... I: Extracting liblzma5... I: Extracting zlib1g... I: Running command: chroot debian-arm64 /debootstrap/debootstrap --second-stage I: Keyring file not available at /usr/share/keyrings/debian-archive-keyring.gpg; switching to https mirror https://mirrors.kernel.org/debian I: Installing core packages... I: Unpacking required packages... I: Unpacking libacl1:arm64... I: Unpacking libattr1:arm64... I: Unpacking libaudit-common... I: Unpacking libaudit1:arm64... I: Unpacking base-files... ... I: Configuring blends-tasks... I: Configuring tasksel-data... I: Configuring libc-bin... I: Configuring systemd... I: Base system installed successfully.
As described in the previous post, one needs to set (or clear) the root password and assemble a correct /etc/apt/sources.list file, but that is standard and not reiterated here.
Unfortunately for the LS1012A Freedom board it turns out that the ethernet driver is in the staging part of the Linux kernel and can thus not be compiled statically into the kernel. Booting over NFS is therefore somewhat more complicated and will be described in a future post.