Installing debian with the installer

Debian Jessie does not support the D01 directly, but can be installed on this board using a modified kernel/installer build, detailed here.

We have support for PXE/TFTP booting a 'netboot' image, then installing to HD in the normal way. There is nothing special about the installer image except for the updated kernel.



If doing this on a network where you do not control the main DHCP server then it's fiddly because you need a second DHCP server on a private segment to do the PXE boot. Then either forwarding configuration to the rest of the net for the downloads, or swap the ethernet cable over after the initial boot and before network config and downloading packages.

  1. Create folder structure under your TFTP root path, and copy files into it like this:

    ├── boot
    │   └── grub
    │       └── grub.cfg
    ├── grub.efi
    ├── hip04-d01.dtb
    ├── initrd.gz
    └── vmlinuz-3.14-trunk-armmp


  1. Power up the board. Keep hitting the 's' key until you get into the bootloader (may take a few goes - the nominal '2second' gap is quite hard to hit.
  2. Choose '2' to enter into the UEFI schell
  3. Add a 'PXE boot' option by inputting these commands in turn:

    a      //Boot Manager
    1      //Add Boot Device Entry
    3      //PXE on MAC Address:...   (the number varies according to what is installed onthe HD already)
    PXE      //Description for this new Entry
    5      //Return to main menu
    2      //PXE
    • Unfortunately the UEFI image does not remember this setting so you need to do this every time to PXE boot.
  4. Choose '2' to boot over PXE. You should see a menu with just one item. 'Debian-installer 3.14 kernel'. Hit return to boot it.
  5. Now in debian installer proceed with a normal install. You will get a warning about 'missing modules', but ignore that. You cannot do a raid/LVM install without those modules but otherwise things work fine.



The jessie grub2 package is new enough to work. But the grub.efi file has to be generated (it is a concatenation of a set of efi modules). These commands should do the trick:

echo "configfile /boot/grub/grub.cfg" > startup
dpkg --add-architecture armhf
apt-get update
sudo apt-get install grub-efi-arm-bin
modules="boot chain configfile configfile efinet ext2 fat gettext help hfsplus loadenv lsefi normal normal ntfs ntfscomp part_gpt part_msdos part_msdos read search search_fs_file search_fs_uuid search_label terminal terminfo tftp linux"
grub-mkimage -v -o grub.efi -c startup -O arm-efi -p "efi" $modules


The kernel can be cross-built. You need an armhf cross-toolchain installed. See

apt-get build-dep linux
cd  linux-3.14.0-D01
dpkg-buildpackage -aarmhf -B -d

That should produce several udebs. They all need to be copied in the the build/localudebs dir in the debian-installer build.


Cross-building is not supported. Debian-installer has to be natively built.

  1. dget

  2. Copy all the kernel udebs into debian-installer-20150108/build/localudebs
  3. Create debian-installer-20150108/build/sources.list.udeb to point at those udebs and the main archive. Note the copy path is absolute so it will need to be changed for your machine/layout:

deb [trusted=yes] copy:/PATH/TO/linaro/installer/d-i/debian-installer-20150108/build/ localudebs/
deb unstable main/debian-installer
  1. apt-get install build-dep debian-installer
    cd debian-installer-20150108/build
    fakeroot make build_netboot

Boards/D01/DebianInstaller (last modified 2015-05-01 22:35:11)