Debian Installer for MNT Reform

These disk images contain Debian Installer netboot images similar to the official SD-card images but prepared with all changes necessary to allow installation on the Reform. Due to non-free firmware blobs (see below) these custom images are likely going to remain necessary. Alternatively, you can use full system images to quickly try out a desktop installation on your Reform without making changes to your eMMC or NVMe.

Table of Contents

Manual partitioning for /boot

                                                                                
  ┌────────────────────────┤ [!!] Partition disks ├─────────────────────────┐   
  │                                                                         │   
  │ This is an overview of your currently configured partitions and mount   │   
  │ points. Select a partition to modify its settings (file system, mount   │   
  │ point, etc.), a free space to create partitions, or a device to         │   
  │ initialize its partition table.                                         │   
  │                                                                         │   
  MMC/SD card #1 (mmcblk0) - 4.3 GB SD QEMU!      -            │   
  │            >           1.0 MB       FREE SPACE             ▒            │   
  │            >     #1    4.3 GB    f  ext4          /boot    ▒            │   
  │            >           1.0 MB       FREE SPACE             0            │   
  │            /dev/nvme0n1 - 120 GB QEMU NVMe Ctrl            ▒            │   
  │            >           1.0 MB       FREE SPACE             ▒            │   
  │            >     #1    8.0 GB    f  swap          swap     ▒            │   
  │            >     #2    120 GB    f  ext4          /        ▒            │   
  │                                                            .            │   
  │                                                                         │   
  │     <Go Back>                                                           │   
  │                                                                         │   
  └─────────────────────────────────────────────────────────────────────────┘   
                                                                                
<F1> for help; <Tab> moves; <Space> selects; <Enter> activates buttons          

These images contain the custom kernel from the reform.d.n repos with all required modules baked into the initramfs. Make sure to choose manual partitioning and place the /boot partition where your SoM can read it:

CPU Module SD-card eMMC NVMe
Pocket Reform with BPI-CM4 Module ✅ mmcblk0 ✅ nvme0
Pocket Reform with i.MX8MP Module ✅ mmcblk0 ✅ mmcblk2
Reform 2 ✅ mmcblk1 ✅ mmcblk0
Reform 2 with BPI-CM4 Module ✅ mmcblk0 ✅ nvme0
Reform 2 with i.MX8MP Module ✅ mmcblk0 ✅ mmcblk2
Reform 2 with LS1028A Module ✅ mmcblk0
Reform 2 with RCORE RK3588 Module ✅ mmcblk1

Reform-specific installation steps

At the end of the installation, a few additional steps are carried out:

  1. for i.MX8MQ: choose single or dual display configuration
  2. run flash-kernel
  3. run update-initramfs -u
  4. copy flash.bin into /boot
  5. choose whether to flash u-boot onto SD-card or eMMC (only valid choices will be displayed)
  6. run reform-flash-uboot --offline

Download

You can obtain the machine name of your device (the first column) from the output of running cat /proc/device-tree/model.

Machine name Debian 12 Bookworm Stable Debian 12 Bookworm Stable (backports kernel)
MNT Reform 2 reform-system-imx8mq.img.xz (870M, GPG sig) reform-system-imx8mq-bpo.img.xz (890M, GPG sig)
MNT Reform 2 with BPI-CM4 Module n.a. reform-system-a311d-bpo.img.xz (890M, GPG sig)
MNT Reform 2 with LS1028A Module reform-system-ls1028a.img.xz (870M, GPG sig) reform-system-ls1028a-bpo.img.xz (890M, GPG sig)
MNT Reform 2 with i.MX8MP Module n.a. reform-system-imx8mp-bpo.img.xz (890M, GPG sig)
MNT Pocket Reform with BPI-CM4 Module n.a. pocket-reform-system-a311d-bpo.img.xz (890M, GPG sig)
MNT Pocket Reform with i.MX8MP Module n.a. pocket-reform-system-imx8mp-bpo.img.xz (890M, GPG sig)

How to verify GPG signature

gpgv --keyring /usr/share/keyrings/debian-keyring.gpg reform2-system.img.xz.sig /path/to/reform2-system.img.xz

How to flash to SD-card or USB flash drive

The disk image contains the bootloader (U-Boot) as well as a partition table, so it has to be written to the SD-card or USB stick directly instead of being copied to a mounted filesystem or written onto an existing partition. As a result, writing the image to your SD-card or USB stick will destroy all the data that was on it before. Be very certain that the device you are writing the image to is indeed the SD-card or flash drive you inserted and not any other disk. The following command will print the device node of any disk you attach to your machine while the command is running:

udevadm monitor --udev --property --subsystem-match=block/disk | sed -ne 's/^DEVNAME=//p'

Flash using dd

You can copy the d-i image using dd. Make sure to replace /path/to/reform2-d-i.img by the path to the d-i image you downloaded and /dev/mmcblkXXX by the block device belonging to your SD-card or USB flash drive.

xzcat /path/to/reform2-d-i.img.xz | sudo dd of=/dev/mmcblkXXX status=progress

Flash using bmaptool

If you have the package bmap-tools installed, then instead of using dd you can flash the image to your SD-card like this:

sudo bmaptool copy https://reform.debian.net/images/reform-systemXXX.img.xz /dev/mmcblkXXX

The advantages of using bmaptool over using dd are:

non-free blobs

These images contain non-free material in the form of DDR training blobs, ARM trusted firmware blobs, WiFi/BT firmware and/or HDMI/eDP firmware. The non-free blobs are loaded onto the hardware early-on during the boot process and do not run on the main processor. Sometimes the blobs are optional. For example the HDMI blobs are only necessary if you need HDMI output. If you have your U-Boot on eMMC, then you do not need U-Boot on your SD-card and would thus be able to have a DFSG-free SD-card image. If you care for that, simply zero-out the respective range of bytes between the partition table and the first partition. If you are booting from a USB flash drive instead of from an SD-card, the U-Boot binary will not be used.

For more information about the differences between the modules see https://mntre.com/modularity.html#table.

CPU Module non-free blobs
NXP i.MX8MQ (default) Synopsys DDR4 training blob, Cadence HDMI blob
NXP i.MX8MPlus Synopsys DDR4 training blob, WiFi/BT firmware
NXP Layerscape LS1028A eDP display firmware blob
RCM4 with Banana Pi CM4 (Amlogic A311D) ARM trusted firmware, WiFi firmware
RCM4 with Raspberry Pi CM4 boot blob

Source

The images are generated by the following scripts: https://salsa.debian.org/reform-team/reform-debian-installer