Test netinst image for arm64 on APM X-Gene / Mustang

As shipped, Debian Jessie (8.0) did not include kernel support for the USB controller on APM X-Gene based machines like the Mustang. At the time of writing this (May 2015) some of that support has gone upstream into the mainline Linux kernel, but there is another patch still needed (as posted by Mark Langsdorf from Red Hat).

This lack of kernel support means that installing Debian is more awkward than it could be on these machines. They don't have optical drives fitted normally, so the neat isohybrid CD images that we have made in Debian so far won't work very well at all. Booting via UEFI from a USB stick will work, but then the installer won't be able to read from the USB stick at all and you're stuck. :-( The best way so far for installing Debian is to do a network installation using tftp etc.

The image here includes a patched kernel, plus a locally-built version of debian-installer using that kernel (but no other changes). The necessary changes should hopefully make it into the Jessie kernel in time for the 8.1 point release, then this image will be made obsolete by the normal Jessie images for that point release.

Requiremeents

To use this image, your Mustang will need to be running the latest UEFI-based firmware; I've tested using Mustang software release 1.15.10, which reports as:

Boot firmware (version 1.1.0 built at 11:31:29 on Apr 22 2015)
TianoCore 1.1.0 UEFI 2.4.0 Apr 22 2015 11:30:25

This includes the needed definitions for the on-chip USB3 controller in the DTB that is embedded in the UEFI firmware.

Due to the way the Mustang firmware works (it looks like it modifies some of the DTB as it boots so it can give details about CPU setup etc.), supplying an updated DTB later looks like it could be prone to failure. So updating the firmware is very much the recommended route here. Check on https://myapm.apm.com/ for firmware/software downloads if necessary.

How to use?

Download this ISO image, verify it if desired, then write it directly to a USB stick using dd or cp:

# dd if=debian-8.0.1-beta-arm64-NETINST-1.iso of=/dev/sdX bs=4M

then plug the USB stick into your Mustang. Use a serial conection to the machine for the console, 115200-8-N-1. Turn the machine on, break into the boot sequence and start a (UEFI) Shell from the UEFI menu. You will be presented with a display something like this (the exact details may vary depending on the disks and filesystems you have connected):

   UEFI Interactive Shell v2.0
   EDK II
   UEFI v2.40 (X-Gene Mustang Board EFI Apr 22 2015 11:32:34, 0x00000000)
   Mapping table
   FS1: Alias(s):CD9a0a:;BLK6:
   PciRoot(0x8)/Pci(0x0,0x0)/USB(0x0,0x0)/CDROM(0x0)
   FS2: Alias(s):CD9a0b0:;BLK8:
   PciRoot(0x8)/Pci(0x0,0x0)/USB(0x0,0x0)/HD(1,MBR,0x00000000,0x0,0x6D000)/CDROM(0x0)
   FS3: Alias(s):HD9a0c:;BLK9:
   PciRoot(0x8)/Pci(0x0,0x0)/USB(0x0,0x0)/HD(2,MBR,0x00000000,0x6D000,0x800)
   FS0: Alias(s):HD7a0a1:;BLK1:
   PciRoot(0x6)/Pci(0x0,0x0)/Sata(0x0,0x0,0x0)/HD(1,GPT,74AE74A1-3B14-40D4-BABE-720E53186DAA,0x800,0x1DC800)
   BLK11: Alias(s):
   VenHw(6C9CEEF0-A406-11E3-A5E2-0800200C9A66)
   BLK10: Alias(s):
   VenHw(02118005-9DA7-443A-92D5-781F022AEDBB)
   BLK13: Alias(s):
   VenHw(F40A3869-92C4-4275-8501-4491A1A20C19)
   BLK12: Alias(s):
   VenHw(B225ED30-6DFD-43A9-BF6B-5753358F2F70)
   BLK5: Alias(s):
   PciRoot(0x8)/Pci(0x0,0x0)/USB(0x0,0x0)
   BLK7: Alias(s):
   PciRoot(0x8)/Pci(0x0,0x0)/USB(0x0,0x0)/HD(1,MBR,0x00000000,0x0,0x6D000)
   BLK0: Alias(s):
   PciRoot(0x6)/Pci(0x0,0x0)/Sata(0x0,0x0,0x0)
   BLK2: Alias(s):
   PciRoot(0x6)/Pci(0x0,0x0)/Sata(0x0,0x0,0x0)/HD(2,GPT,EE5144F7-7DD0-48D7-A030-D8D49B21C2BF,0x1DD000,0x5D22000)
   BLK3: Alias(s):
   PciRoot(0x6)/Pci(0x0,0x0)/Sata(0x0,0x0,0x0)/HD(3,GPT,6F7C838E-B56F-4B1D-9D7B-7738961188F8,0x5EFF000,0x2540800)
   BLK4: Alias(s):
   PciRoot(0x6)/Pci(0x0,0x0)/Sata(0x0,0x0,0x0)/HD(4,GPT,68AD2397-DC7B-4E85-930B-39709E6E64C7,0x843F800,0x31F46000)
   Press ESC in 1 seconds to skip startup.nsh or any other key to continue.
   Shell>

Next, select the USB stick "CDROM" filesystem - look for the USB(0x0,0x0)/CDROM(0x0) entry (FS1 in my case). Then, start the installer by typing the path to it on the command line:

   Shell> fs1:
   FS1:\> efi\boot\bootaa64.efi

This will then show a Grub bootloader screen:

               GNU GRUB  version 2.02~beta2-22

   *Install
    Advanced options ...
    Install with speech synthesis

There's one last step needed here to get the installer going - you need to tell the installer kernel the speed and location of the console. (This hopefully will be fixed in the near future, but will need another DTB update.) Hit e to edit the boot entry for the Install option, and edit the linux entry to remove the --- quiet text and add console=ttyS0,115200n8:

        GNU GRUB  version 2.02~beta2-22

  setparams 'Install'

      set background_color=black
      linux    /install.a64/vmlinuz console=ttyS0,115200n8
      initrd   /install.a64/initrd.gz

Hit Ctrl-x now, as prompted at the bottom of this screen, and you're off and running. For help with the rest of the installer from this point, read the Fine Manual.

Any questions?

Ask me - 93sam@debian.org

Icon  Name                                  Last modified      Size  
[PARENTDIR] Parent Directory - [SUM] MD5SUMS 2015-05-19 11:12 72 [CRT] MD5SUMS.sign 2015-05-19 11:13 819 [SUM] SHA1SUMS 2015-05-19 11:12 80 [CRT] SHA1SUMS.sign 2015-05-19 11:13 819 [SUM] SHA256SUMS 2015-05-19 11:12 104 [CRT] SHA256SUMS.sign 2015-05-19 11:13 819 [SUM] SHA512SUMS 2015-05-19 11:12 168 [CRT] SHA512SUMS.sign 2015-05-19 11:13 819 [ISO] debian-8.0.1-beta-arm64-NETINST-1.iso 2015-05-19 11:10 219M
Apache/2.4.26 (Unix) Server at ftp.acc.umu.se Port 80