How to install Proxmox on Zimablade eMMC

In the heart of my homelab I have a Zimablade with 2x 4TB Hard Drives running some very import containers/services with Proxmox 9.

Now if you try to install Promox 9 or 8 (or any previous versions) you will be faced with some errors and not be able to complete the installation on the internal eMMC.

The original solution was discovered by a user named lookas2001 and his blog and original article unfortunately are not available at the moment but you can find archived versions on the WayBack Machine.

Original Link: https://ibug.io/blog/2022/03/install-proxmox-ve-emmc/

Solution

Now its time to focus on what we need to fix in order to bypass the above annoyance of Proxmox not being able to be installed on the eMMC. So time to patch it and get the installer working.

  1. Boot the Proxmox installer ISO.
    On the first screen, pick the second optionInstall Proxmox VE (Debug mode).
  2. The first time you get dropped into a shell, just type exit and hit Enter.
    That’s too early in the boot; you can’t do much there anyway.
  3. The second time you land in a shell, things are ready.

Now we will need to open the file Block.pm below you can see the full path

/usr/share/perl5/Proxmox/Sys/Block.pm
Bash

You can use nano or vi to open and edit the above file. In my case I chose to go with nano so I will need to run the following command:

nano /usr/share/perl5/Proxmox/Sys/Block.pm
Bash
  1. We are looking to locate the following block of code
} elsif ($dev =~ m|^/dev/[^/]+/hd[a-z]$|) {
    return "${dev}$partnum";
} elsif ($dev =~ m|^/dev/nvme\d+n\d+$|) {
    return "${dev}p$partnum";
} else {
    die "unable to get device for partition $partnum on device $dev\n";
}
Perl

Now if we take a closer look to the code above we can see that it has a template of how enumerating supported devices works and that there is no entry for the eMMC storage.

  1. So now we will be adding mmcblk to the list.
} elsif ($dev =~ m|^/dev/[^/]+/hd[a-z]$|) {
    return "${dev}$partnum";
} elsif ($dev =~ m|^/dev/nvme\d+n\d+$|) {
    return "${dev}p$partnum";
} elsif ($dev =~ m|^/dev/mmcblk\d+$|) {
    return "${dev}p$partnum";
} else {
    die "unable to get device for partition $partnum on device $dev\n";
}
Perl
  1. Make sure you save all your edits and close the file.
  2. Type exit once more to exit the shell and resume the Proxmox installation regularly and you will be able to start and complete the installation on the eMMC storage.