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
- Reform-specific installation steps
- Download
- How to verify GPG signature
- How to flash to SD-card or USB flash drive
- non-free blobs
- Source
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) - 15.7 GB MMC TB2916 - │ │ > 4.2 MB FREE SPACE ▒ │ │ > #1 511.7 MB f ext4 /boot ▒ │ │ > 15.1 GB FREE SPACE 0 │ │ /dev/nvme0n1 - 1.0 TB WDC WDS100T2B0C-00PXH0 ▒ │ │ > 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:
- for i.MX8MQ: choose single or dual display configuration
- run
flash-kernel
- run
update-initramfs -u
- copy
flash.bin
into/boot
- choose whether to flash u-boot onto SD-card or eMMC (only valid choices will be displayed)
- 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 (82M, GPG sig) | reform-system-imx8mq-bpo.img.xz (80M, GPG sig) |
MNT Reform 2 with LS1028A Module | reform-system-ls1028a.img.xz (82M, GPG sig) | reform-system-ls1028a-bpo.img.xz (80M, GPG sig) |
MNT Reform 2 with BPI-CM4 Module | n.a. | reform-system-a311d-bpo.img.xz (80M, GPG sig) |
MNT Reform 2 with i.MX8MP Module | n.a. | reform-system-imx8mp-bpo.img.xz (80M, GPG sig) |
MNT Reform 2 with RCORE RK3588 Module | n.a. | reform-system-rk3588-bpo.img.xz (80M, GPG sig) |
MNT Pocket Reform with i.MX8MP Module | n.a. | pocket-reform-system-imx8mp-bpo.img.xz (80M, GPG sig) |
MNT Pocket Reform with BPI-CM4 Module | n.a. | pocket-reform-system-a311d-bpo.img.xz (80M, GPG sig) |
MNT Pocket Reform with RCORE RK3588 Module | n.a. | pocket-reform-system-rk3588-bpo.img.xz (80M, GPG sig) |
MNT Reform Next with RCORE RK3588 Module | n.a. | reform-next-system-rk3588-bpo.img.xz (80M, 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/d-i/reform-systemXXX.img.xz /dev/mmcblkXXX
The advantages of using bmaptool
over using dd
are:
- will only copy blocks with data and skips empty blocks (around 30% less data to write)
- verifies checksums of downloaded data to prevent corrupt images
- safety checks to make sure that image is not written to mounted disks
- able to directly download from http server without local temporary files
- automatic decompression on-the-fly
- verifies GPG signatures
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