/boot seems too small now - 7.0 is 150 MB

Right, you are in a situation where you cannot build the initramfs (to make it smaller) because you have so little space left that you cannot build the smaller initramfs.

You could try the (dangerous if your power fails in the middle) following:

$ sudo rm /boot/initrd.img-7.0.3-mnt-reform-arm64
$ sudo update-initramfs -u

This should free up a lot of space. You can then make your other initramfs smaller as well by running: sudo update-initramfs -u -k all

1 Like

I will follow guide from Baeldung on unmasking a service.
https://www.baeldung.com/linux/systemd-unmask-services

EDIT: maybe not? I think GDM needs X11.

With the external power supply plugged in:
sudo rm /boot/initrd.img-7.0.3-mnt-reform-arm64
sudo update-initramfs -u

jsae@reform:~$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-6.19.14-mnt-reform-arm64
cryptsetup: WARNING: reform_crypt: ignoring unknown option 'luks.discard'
Using DTB: amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dtb
Installing /usr/lib/linux-image-6.19.14-mnt-reform-arm64/amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dtb into /boot/dtbs/6.19.14-mnt-reform-arm64/amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dtb
Taking backup of meson-g12b-bananapi-cm4-mnt-reform2.dtb.
Installing new meson-g12b-bananapi-cm4-mnt-reform2.dtb.
Ignoring old or unknown version 6.19.14-mnt-reform-arm64 (latest is 7.0.3-mnt-reform-arm64)

sudo update-initramfs -u -k all

jsae@reform:~$ sudo update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-6.19.14-mnt-reform-arm64
cryptsetup: WARNING: reform_crypt: ignoring unknown option 'luks.discard'
Using DTB: amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dtb
Installing /usr/lib/linux-image-6.19.14-mnt-reform-arm64/amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dtb into /boot/dtbs/6.19.14-mnt-reform-arm64/amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dtb
Taking backup of meson-g12b-bananapi-cm4-mnt-reform2.dtb.
Installing new meson-g12b-bananapi-cm4-mnt-reform2.dtb.
Ignoring old or unknown version 6.19.14-mnt-reform-arm64 (latest is 7.0.3-mnt-reform-arm64)

Checked size - relieving results!

jsae@reform:~$ df -h /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1  464M  140M  291M  33% /boot

Time to heal the problems that installing the Nvidia firmware caused:

sudo apt update
sudo apt full-upgrade

EDIT: update results

jsae@reform:~$ sudo apt update
Hit:1 http://deb.debian.org/debian unstable InRelease
Hit:2 https://updates.signal.org/desktop/apt xenial InRelease                                                 
Hit:4 https://packages.mozilla.org/apt mozilla InRelease                                                      
Ign:5 https://mntre.com/reform-debian-repo reform InRelease                                
Hit:6 https://mntre.com/reform-debian-repo reform Release                                  
Ign:7 https://mntre.com/reform-debian-repo reform Release.gpg
Ign:3 https://repo.waydro.id/waydroid waydroid InRelease
Err:8 https://repo.waydro.id/waydroid waydroid Release
  404  Not Found [IP: 142.132.224.101 443]
Error: The repository 'http://repo.waydro.id/waydroid waydroid Release' does not have a Release file.
Notice: Updating from such a repository can't be done securely, and is therefore disabled by default.
Notice: See apt-secure(8) manpage for repository creation and user configuration details.
Notice: Missing Signed-By in the sources.list(5) entry for 'https://mntre.com/reform-debian-repo'

Edit2: initial report for apt full-upgrade

jsae@reform:~$ sudo apt full-upgrade
The following packages were automatically installed and are no longer required:
  libgexiv2-2  libthrift-0.22.0  reform-qcacld2-7.0.3-mnt-reform-arm64
Use 'sudo apt autoremove' to remove them.

Upgrading:
  geoclue-2.0         libexpat1-dev           libparquet2300                  localsearch                   nautilus-data
  gir1.2-geoclue-2.0  libgeoclue-2-0          linux-base-mnt-reform-arm64     localsearch-extractor-ffmpeg  reform-qcacld2
  libarrow2300        libgtkmm-3.0-1t64       linux-headers-mnt-reform-arm64  localsearch-extractor-iso     vim
  libatkmm-1.6-1v5    libmd0                  linux-image-mnt-reform-arm64    localsearch-extractor-office  vim-common
  libexpat1           libnautilus-extension4  linux-libc-dev                  nautilus                      vim-runtime

Installing dependencies:
  libgexiv2-0.16-4                   linux-binary-7.0.4-mnt-reform-arm64   linux-image-7.0.4-mnt-reform-arm64    reform-qcacld2-7.0.4-mnt-reform-arm64
  libthrift-0.23.0                   linux-headers-7.0.4-common            linux-kbuild-7.0.4
  linux-base-7.0.4-mnt-reform-arm64  linux-headers-7.0.4-mnt-reform-arm64  linux-modules-7.0.4-mnt-reform-arm64

Suggested packages:
  debian-kernel-handbook  linux-doc-7.0

Summary:
  Upgrading: 25, Installing: 10, Removing: 0, Not Upgrading: 0
  5 not fully installed or removed.
  Download size: 113 MB
  Space needed: 286 MB / 843 GB available
  └─ in /boot:  106 MB / 304 MB available

Continue? [Y/n] 

Rebooted for new kernel. “Final” results on cleanup.
sudo reform-check

jsae@reform:~$ sudo reform-check
[sudo] password for jsae: 
I: Contents of /proc/device-tree/model: MNT Reform 2 with BPI-CM4 Module
I: `uname -a` output: Linux reform 7.0.4-mnt-reform-arm64 #1 SMP PREEMPT Debian 7.0.4-1+reform20260507T091502Z (2026-05-07 aarch64 GNU/Linux
I: Version of linux-image-mnt-reform-arm64: 7.0.4-1+reform20260507T091502Z
I: Version of reform-tools: 1.86-1+reform20260505T063908Z+1
I: Version of system image: System Image v4: 2024-06-30
I: Version of LPC firmware: MREF2LPC 25_R2 20231124
I: Version of upstream U-Boot: 2024.04
I: Version of MNT U-Boot: 2026-01-28
I: probably booting via /boot/extlinux/extlinux.conf (/boot/boot.scr also exists)
I: Mount source of /: /dev/reformvg/root (LVM vg 'reformvg' on LUKS device 'reform_crypt' on SSD)
I: Mount source of /boot: /dev/mmcblk0p1 (SD-card)
I: Suggests of reform-desktop-minimal is not installed: firmware-atheros
I: Suggests of reform-desktop-minimal is not installed: firmware-iwlwifi
I: the following files differ from how they are shipped by reform-tools (ignore /var/lib/alsa/asound.state):
??5??????   /var/lib/alsa/asound.state
I: the reform-qcacld2 package is only required for wifi on the Pocket Reform with i.MX8MP, you can safely remove it unless you plan to go back to the imx8m+
W: eMMC does not contain latest bootloader
W: You can update it to the latest version by running as root:
reform-flash-bootloader emmc
I: note that updating the bootloader on eMMC on your platform is not without risk!
I: The space where the bootloader would've been on eMMC is all zeroes.
I: SD-card contains the latest bootloader version 2026-01-28

dpkg -l | grep linux-image

jsae@reform:~$ dpkg -l | grep linux-image
pc  linux-image-6.12.25-mnt-reform-arm64      6.12.25-1+reform20250503T130928Z     arm64        Linux 6.12 for 64-bit ARMv8 machines (MNT Reform)
ii  linux-image-6.14.5-mnt-reform-arm64       6.14.5-1~exp1+reform20250508T045900Z arm64        Linux 6.14 for 64-bit ARMv8 machines (MNT Reform)
ii  linux-image-6.19.14-mnt-reform-arm64      6.19.14-1+reform20260409T045900Z     arm64        Linux 6.19.14 for 64-bit ARMv8 machines (MNT Reform)
ii  linux-image-7.0.3-mnt-reform-arm64        7.0.3-1+reform20260507T091502Z       arm64        Linux 7.0.3 for 64-bit ARMv8 machines (MNT Reform)
ii  linux-image-7.0.4-mnt-reform-arm64        7.0.4-1+reform20260507T091502Z       arm64        Linux 7.0.4 for 64-bit ARMv8 machines (MNT Reform)
rc  linux-image-arm64                         6.6.13-1+reform20240121T174844Z1     arm64        Linux for 64-bit ARMv8 machines (meta-package)
ii  linux-image-mnt-reform-arm64              7.0.4-1+reform20260507T091502Z       arm64        Linux for 64-bit ARMv8 machines (MNT Reform) (meta-package)

Unless noted otherwise, it looks like I need to follow more detailed guides on cleaning out boot images with ‘pc’ and ‘rc’ status. I think I can do those in synaptic.

sudo apt autoremove seems to only find other things to remove.

jsae@reform:~$ sudo apt autoremove
REMOVING:                       
  libgexiv2-2                   linux-headers-6.19.14-mnt-reform-arm64
  libthrift-0.22.0              linux-kbuild-6.19.14
  linux-headers-6.19.14-common  reform-qcacld2-7.0.3-mnt-reform-arm64

Summary:
  Upgrading: 0, Installing: 0, Removing: 6, Not Upgrading: 0
  Freed space: 77.4 MB

Continue? [Y/n] 

Following Johannes’s earlier advice:
sudo dpkg --purge linux-image-6.12.25-mnt-reform-arm64
I found an error that I will add to a housekeeping todo list to solve when cleaning out the ancient images. I appear to have 6.12.25 and 6.6.13 installed with some prerequisites blocking me from removing them. Even after apt full-upgrade.

jsae@reform:~$ sudo dpkg --purge linux-image-6.12.25-mnt-reform-arm64
(Reading database… 444281 files and directories currently installed.)
Purging configuration files for linux-image-6.12.25-mnt-reform-arm64 (6.12.25-1+reform20250503T130928Z)…
Usage: /usr/bin/linux-run-hooks image MAINT-SCRIPT KERNEL-VER IMAGE-PATH -- MAINT-PARAMS ...
       /usr/bin/linux-run-hooks headers MAINT-SCRIPT KERNEL-VER -- MAINT-PARAMS ...

This command is intended to be called from the maintainer scripts of
Linux kernel image and headers packages.  It executes hooks installed
in the appropriate subdirectories of /etc/kernel and
/usr/share/kernel.

The MAINT-SCRIPT argument must be the name of the maintainer script:
preinst, postinst, prerm, or postrm.

The KERNEL-VER argument must be the kernel version string as shown by
'uname -r' and used in filenames, not the package version.

The IMAGE-PATH argument must be the absolute filename of the kernel
image.

The MAINT-PARAMS arguments must be the parameters received by the
maintainer script.
dpkg: error processing package linux-image-6.12.25-mnt-reform-arm64 (--purge):
 old linux-image-6.12.25-mnt-reform-arm64 package postrm maintainer script subprocess failed with exit status 2
Errors were encountered while processing:
 linux-image-6.12.25-mnt-reform-arm64

EDIT: Johannes and the MNT team are outstanding. Deeply knowledgeable and highly dedicated.

1 Like

This looks okay.

You should be purging linux-image-6.12.25-mnt-reform-arm64 as well as linux-image-6.14.5-mnt-reform-arm64 and linux-image-arm64, yes.

The problem you see is not solved by installing newer packages. The problem is the other way round. The kernel images are so old that one of its prerequisites is too new and changed how it is intended to be invoked. Usually, this wouldn’t happen because you either use Debian stable (and then you are still running the old version of the package where it works) or you are using sudo apt full-upgrade which would’ve remove the old kernel version.

To solve this error, edit this file as the superuser: /var/lib/dpkg/info/linux-image-6.12.25-mnt-reform-arm64.postrm and either replace the call to linux-run-hooks with a call to true or change linux-run-hooks postrm "$*" $version $image_path to linux-run-hooks image postrm $version $image_path -- "$@".

This issue was observed a year ago: 20250630 sudo apt update/full-upgrade with dpkg error - #6 by josch

1 Like

Thank you, Johannes!

Two of the three images are finally purged.

linux-6.14.5-mnt-reform-arm64 is stuck. It seems to have the same error that 6.12.25 had, but using the same fix regurgitates the MAINT-SCRIPT error.

I think I can find out the solution based on the suggestions you already made that got me this far.

The error messages, for reference.

Basic purge reads like the 6.12.25 solution should work.

jsae@reform ~> sudo dpkg --purge linux-image-6.14.5-mnt-reform-arm64
(Reading database… 444280 files and directories currently installed.)
Removing linux-image-6.14.5-mnt-reform-arm64 (6.14.5-1~exp1+reform20250508T045900Z)…
Usage: /usr/bin/linux-run-hooks image MAINT-SCRIPT KERNEL-VER IMAGE-PATH -- MAINT-PARAMS ...
       /usr/bin/linux-run-hooks headers MAINT-SCRIPT KERNEL-VER -- MAINT-PARAMS ...

This command is intended to be called from the maintainer scripts of
Linux kernel image and headers packages.  It executes hooks installed
in the appropriate subdirectories of /etc/kernel and
/usr/share/kernel.

The MAINT-SCRIPT argument must be the name of the maintainer script:
preinst, postinst, prerm, or postrm.

The KERNEL-VER argument must be the kernel version string as shown by
'uname -r' and used in filenames, not the package version.

The IMAGE-PATH argument must be the absolute filename of the kernel
image.

The MAINT-PARAMS arguments must be the parameters received by the
maintainer script.
dpkg: error processing package linux-image-6.14.5-mnt-reform-arm64 (--purge):
 old linux-image-6.14.5-mnt-reform-arm64 package prerm maintainer script subprocess failed with exit status 2
Errors were encountered while processing:
 linux-image-6.14.5-mnt-reform-arm64

Change the linux-run-hooks line doesn’t appear to change anything.

jsae@reform ~> sudo dpkg --purge linux-image-6.14.5-mnt-reform-arm64
(Reading database… 444280 files and directories currently installed.)
Removing linux-image-6.14.5-mnt-reform-arm64 (6.14.5-1~exp1+reform20250508T045900Z)…
Usage: /usr/bin/linux-run-hooks image MAINT-SCRIPT KERNEL-VER IMAGE-PATH -- MAINT-PARAMS ...
       /usr/bin/linux-run-hooks headers MAINT-SCRIPT KERNEL-VER -- MAINT-PARAMS ...

This command is intended to be called from the maintainer scripts of
Linux kernel image and headers packages.  It executes hooks installed
in the appropriate subdirectories of /etc/kernel and
/usr/share/kernel.

The MAINT-SCRIPT argument must be the name of the maintainer script:
preinst, postinst, prerm, or postrm.

The KERNEL-VER argument must be the kernel version string as shown by
'uname -r' and used in filenames, not the package version.

The IMAGE-PATH argument must be the absolute filename of the kernel
image.

The MAINT-PARAMS arguments must be the parameters received by the
maintainer script.
dpkg: error processing package linux-image-6.14.5-mnt-reform-arm64 (--purge):
 old linux-image-6.14.5-mnt-reform-arm64 package prerm maintainer script subprocess failed with exit status 2
Errors were encountered while processing:
 linux-image-6.14.5-mnt-reform-arm64

EDIT: state of the images and size, which appears to still need me to stick with following up on 6.14.5 later this week.

jsae@reform ~> df -h /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1  464M  291M  140M  68% /boot
jsae@reform ~> dpkg -l | grep linux-image
pi  linux-image-6.14.5-mnt-reform-arm64       6.14.5-1~exp1+reform20250508T045900Z arm64        Linux 6.14 for 64-bit ARMv8 machines (MNT Reform)
ii  linux-image-6.19.14-mnt-reform-arm64      6.19.14-1+reform20260409T045900Z     arm64        Linux 6.19.14 for 64-bit ARMv8 machines (MNT Reform)
ii  linux-image-7.0.3-mnt-reform-arm64        7.0.3-1+reform20260507T091502Z       arm64        Linux 7.0.3 for 64-bit ARMv8 machines (MNT Reform)
ii  linux-image-7.0.4-mnt-reform-arm64        7.0.4-1+reform20260507T091502Z       arm64        Linux 7.0.4 for 64-bit ARMv8 machines (MNT Reform)
ii  linux-image-mnt-reform-arm64              7.0.4-1+reform20260507T091502Z       arm64        Linux for 64-bit ARMv8 machines (MNT Reform) (meta-package)

Apt has purged the 6.14 kernel through the latest updates without special attention when using sudo apt full-upgrade . But, the individual entries still seem to violate Johannes’ expectations.

Seems the next step is to download and look into what is inside the initrd. Perhaps I am including some modules that are inappropriate. I intend to use the approach described earlier in this thread.

jsae@reform ~> ls -alh /boot
total 282M
drwxr-xr-x  6 root root 4.0K May 23 10:14 ./
dr-xr-xr-x 18 root root 4.0K May 17 11:45 ../
-rw-r--r--  1 root root 5.6K May 23 10:14 boot.scr
-rw-r--r--  1 root root 5.6K May 17 11:46 boot.scr.bak
-rw-r--r--  1 root root 345K Apr  8 21:59 config-6.19.14-mnt-reform-arm64
-rw-r--r--  1 root root 347K May  7 02:15 config-7.0.4-mnt-reform-arm64
-rw-r--r--  1 root root 347K May  7 02:15 config-7.0.7-mnt-reform-arm64
lrwxrwxrwx  1 root root   75 May 23 10:14 dtb -> dtbs/7.0.7-mnt-reform-arm64/amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dtb
lrwxrwxrwx  1 root root   77 May 10 21:57 dtb-6.19.14-mnt-reform-arm64 -> dtbs/6.19.14-mnt-reform-arm64/amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dtb
lrwxrwxrwx  1 root root   75 May 10 22:21 dtb-7.0.4-mnt-reform-arm64 -> dtbs/7.0.4-mnt-reform-arm64/amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dtb
lrwxrwxrwx  1 root root   75 May 23 10:14 dtb-7.0.7-mnt-reform-arm64 -> dtbs/7.0.7-mnt-reform-arm64/amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dtb
drwxr-xr-x 12 root root 4.0K May 17 11:45 dtbs/
drwxr-xr-x  2 root root 4.0K May 17 11:45 extlinux/
-rw-r--r--  1 root root 1.6M Feb 21 11:10 flash.bin
-rw-r--r--  1 root root  55M May 10 21:57 initrd.img-6.19.14-mnt-reform-arm64
-rw-r--r--  1 root root  56M May 10 22:21 initrd.img-7.0.4-mnt-reform-arm64
-rw-r--r--  1 root root  56M May 23 10:14 initrd.img-7.0.7-mnt-reform-arm64
drwxr-xr-x  3 root root 4.0K Feb 18 00:31 loader/
drwx------  2 root root  16K Aug 11  2025 lost+found/
-rw-r--r--  1 root root 101K Aug 11  2025 ls1028a-mhdpfw.bin
-rw-r--r--  1 root root   98 Apr  8 21:59 System.map-6.19.14-mnt-reform-arm64
-rw-r--r--  1 root root   96 May  7 02:15 System.map-7.0.4-mnt-reform-arm64
-rw-r--r--  1 root root   96 May  7 02:15 System.map-7.0.7-mnt-reform-arm64
-rw-r--r--  1 root root  38M Apr  8 21:59 vmlinuz-6.19.14-mnt-reform-arm64
-rw-r--r--  1 root root  39M May  7 02:15 vmlinuz-7.0.4-mnt-reform-arm64
-rw-r--r--  1 root root  39M May  7 02:15 vmlinuz-7.0.7-mnt-reform-arm64

sizes

jsae@reform ~> df -h /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1  464M  292M  138M  68% /boot

You used to have 155 MB in your initramfs taken up by nvidia firmware:

These sizes look way more sane.

This is okay, no?

1 Like

Hi, Johannes!

Thank you for checking back. I am very happy that I have come back into a boot partition usage level that befits a regular MNT.

I had trouble finding a way to whittle down the images more. I suppose I took your suggested boot-image size bracket too specifically.

I hope that you are overcoming the current extreme weather in Europe.

Thank you!