Running Pocket Reform OS virtually

Greetings! I ordered a pocket reform a month ago and I’m really excited for it, but I understand that I will likely be waiting several months before receiving the item. To keep myself busy until then, I thought it might be cool to try running the Rocket Reform OS in a virtual machine to play around with some things. But since I am running all x86_64 machines, it looks like I will have to use an emulator to run something with arm64 architecture.

I have never attempted something quite like this before. Has anyone else here tried setting up a virtual environment to run the PROS? Is Qemu the right tool for this sort of job? Also, is the OS image for the Pocket Reform the same as the one for the Reform? I only found the latter in the Documentation section for the site.

AFAIK there isn’t a particular Pocket Reform OS (unless something really exciting happened recently); it runs a pretty bog standard build of Debian by default, with a couple customizations for reform-specific packages and scripts (that most likely wouldn’t be necessary in a VM).
You can check out most of the changes here, mkimage.sh · main · Reform / reform-system-image · GitLab. That’s the script that builds the images for the Pocket.
My suggestion is to try installing and running the stable build of Debian (Debian -- Debian Releases) in a VM to get a feel for the OS.

To answer some of your other questions, you can find a download link to the images for pocket here: Reform / reform-system-image · GitLab.
QEMU can be used, though it may not be as user friendly as something like VirtualBox or Gnome Boxes.

1 Like

I’m sure that the OS itself will be familiar enough, but I want to try porting some source code (for an app called Famistudio) over to arm64. That’s why I would like to run that environment ahead of getting the pocket reform itself. It sounds like any arm-based version of Debian will do though (?)

To that end, can virtualbox run an arm64 os on top of an x86 system? I’ve never tried to run a virtual machine of an architecture different from the host.

Ah, sorry about that. QEMU is the tool for the job in this case. I don’t have much experience using it to emulate ARM, so I’m afraid I don’t know how to set up QEMU to do so. You should be able to use the aarch64/arm64 build of Debian.

1 Like

Thanks for the replies. I will give Qemu a try.

Try virtual machine manager as well. It is a frontend of sorts for qemu.

1 Like

Hi, I’m regularly emulating Debian in QEMU and can show you a few recipes. But if you never have handled virtual machines before, using a front end for QEMU or another more graphical emulator might be a much more user friendly option for you.

As the others already have said, to port 99.99% of GUI applications to the platforms supported by the Reform you do not need to emulate the “Reform OS” (which, as others have said, just plain Debian). In probably 99% of the cases you do not even need to emulate arm64 Debian. If your software is FOSS and if it compiles for another GNU/Linux distribution on arm64, then it will probably also compile on Debian on arm64 and if it does, it will very, very likely also run on the Reform.

The tricky part really is to set up a virtual emulated machine in the first place.

1 Like

I feel that it would be remiss not to mention the other interesting OS that people run on their reform such as 9front and Genode Sculpt. Both have their followers here. They also run on x86 systems either in a virtual machine or “bare metal”.

2 Likes

I appreciate the offer for help, and maybe I’ll take you up on it, if there is some kind of DM option on this platform.

I do have a question though. My initial research shows that Qemu emulates a limited number of arm64 hardware profiles (listed with qemu-arm64 --machine help), due to the overwhelming variability available.

Do differences between hardware profiles have any effect on compiling arm64 apps, generally speaking? Is there a profile that best represents the system inside the pocket reform (in my case, with the rk83588) that I should be using?

Sorry for these silly questions, but all this is well outside my normal domain.