Can't boot into SD Card - Rock Pi 4B+

Hi, I am using my Rock Pi 4B+ running Armbian v25.11 rolling. The sole reason is that the official Ubuntu Server 20.04 image is too old to have CUPS from OpenPrinting instead of Apple. Now, it works well, and I want to back it up. At first, the official backup script refused to work because the Armbian image makes a msdos disk. I already converted my eMMC to a GPT disk, and while it does work…

root@iskysprintserver2:~# ./rockpi-backup.sh 
Welcome to rockpi-backup.sh, part of the ROCK Pi toolkit.

  Enter rockpi-backup.sh -h to view help.
  For a description and example usage, see the README.md at:
    https://rock.sh/rockpi-toolbox 

--------------------
Checking disk...
The backup file will be saved at /root/iskysprintserver2-backup-251105-1930.img
After this operation, 2513 MB of additional disk space will be used.

and the resulting file is only 17MB. Not even close to the Armbian original image size of 1.4 GB. So, of course, logically I wanted to load another OS on my SD card so I can copy bit by bit of the eMMC. However, my Rock Pi kept booting into the eMMC. I tried holding the recovery button (which is not documented for some reason), which didn’t do anything.

The issue has been around since I was using the official Ubuntu Server 20.04, though, of course, the backup script worked before, so I had no reason to fix it.

When you have a SD card and an eMMC at the same time, I think it’s expected that it will boot from the eMMC. See this link; RK3399(OP1 on 4B+ is a variant of it) will try to boot from eMMC before the SD card. Therefore, if you want to boot from SD card and extract the data from eMMC, I think there may be two methods:

  1. Write a bootloader to the SPI flash[0] and see if you can select booting from SD card rather than eMMC in U-Boot. (!! I cannot guarantee this method will work, or maybe your 4B+ does not have a SPI flash)
  2. Use an eMMC reader(like this one[1]). Booting from the SD card without the eMMC, and inserting the reader with the eMMC. You should then be able to access the eMMC module.

The two methods are just not possible. eMMC is soldered onto the board, and you’re right, I don’t have SPI flash. Is it possible to read from Maskrom? Just copy the eMMC bit by bit into an image file. I know I would get a 64GB image file that mostly consists of empty sectors due to fragmentation, but I can just process that image file further on my machine.

I’m having an issue reading LBA from the eMMC with Maskrom. I’ll have it on another post since that one seemed to deserve its own post and is unrelated to this one