.. title: Bootstraping Debian 9 (Stretch) for arm64
.. date: 2017-02-11 09:06
.. tags: linux, debian, arm64
.. slug: debian-stretch-arm64
.. type: text

Recently I got hold of a very low cost 64 Bit ARM platform, the `NXP
Freedom LS1012A board
<http://www.nxp.com/products/software-and-tools/hardware-development-tools/freedom-development-boards/qoriq-frdm-ls1012a-board:FRDM-LS1012A>`_.
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.

.. image:: /images/stretch.jpg
   :alt: Toy Story 3 Stretch
   :align: center
      
.. TEASER_END

Just as my post :doc:`debian-armhf-bootstrap` 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:

.. code-block:: console

  [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.
