How to Install a Custom Pop!_OS arm64 Image on VMware Fusion: A Developer's Journey

Explore the journey of a developer who created a custom arm64 image of Pop!_OS to run on a MacBook using VMware Fusion. This comprehensive guide, based on an original tutorial, provides step-by-step instructions and a bash script for installing Pop!_OS on an Ubuntu Server arm64 VM.

"The only way to do great work is to love what you do." - Steve Jobs

As a developer, I've always been drawn to the open-source Linux distribution Pop!_OS, developed by System76. Its foundation on Ubuntu, coupled with a range of developer-friendly tools and features, makes it an excellent choice for my work. The clean and efficient workspace, easy access to the terminal, and a strong focus on privacy, security, and customization are just a few of the reasons why I find Pop!_OS so appealing.

However, there was one major obstacle: there was no official arm64 image of Pop!_OS available. This was particularly important for me as I wanted to run it on my Mac Book using a virtual environment like VMware Fusion. The solution? I decided to create a custom image of Pop!_OS arm64 myself, allowing me to enjoy the powerful features of Pop!_OS while still having access to my Mac applications.

This guide, based on an original guide, will walk you through the process of installing a custom Pop!_OS arm64 image on VMware Fusion on MacOS. It includes a bash script that automates the process, making it easier to add Pop!_OS to your developer ecosystem.

Preparation

Before we begin, you'll need to download an Ubuntu server for ARM installer ISO. Make sure to download the 22.04 build from here.

Once you have the ISO file, open VMware Fusion and create a new VM. Here are the settings you should use:

  • Select “Create New Virtual Machine and click install from disc or image”
  • Choose the Ubuntu Server arm64 ISO you downloaded earlier choose Linux > Ubuntu 64-bit Arm.
  • Name your new virtual machine and optionally enable “Customize settings before installation” to adjust the amount of memory, CPU cores, and storage that will be assigned to the VM

Installing Ubuntu Server

Please note that these steps may change if the Ubuntu Server installer is updated. Always follow the instructions displayed on the installer itself if something does not match this guide.

  1. Start the new VM and select the “Ubuntu Server” GRUB entry. Ignore any “failed to unmount /cdrom” and/or “Firmware bug” errors, if they appear.
  2. Follow the on-screen prompts to select your desired language, keyboard layout, and install the non-minimized Ubuntu Server build.
  3. Accept the default network configuration, skip setting up a network proxy, and accept the default Ubuntu mirror.
  4. Install to the entire virtual disk and accept the default partition layout.
  5. Enter a username and password for your user. If you want SSH access to the virtual machine, enable “Install OpenSSH server”. This will make later parts of this guide easier, as it will allow you to copy-paste commands into the terminal, rather than having to type them manually.
  6. Skip installing any server-specific packages.
  7. Wait until the installation is complete (including updates), then select “Reboot Now”.
  8. Press “Enter” when prompted to remove the installation medium.

Installing Pop OS on top of Ubuntu Server

After rebooting, your virtual machine should display a terminal login prompt. If you chose to install an SSH server, you can connect to the VM via ssh. Otherwise, sign in using the username and password you entered previously.

Follow these steps to install Pop OS:

  • Remove unnecessary Ubuntu Server-specific packages with the command
sudo apt purge --autoremove ubuntu-server -y	
  • Add the Pop OS ISO signing key with the command
cd ~
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 63C46DF0140D738961429F4E204DD8AEC33A7AFF
sudo gpg --export 63C46DF0140D738961429F4E204DD8AEC33A7AFF > pop_os.gpg
sudo mv pop_os.gpg /etc/apt/trusted.gpg.d/
sudo chown root:root /etc/apt/trusted.gpg.d/pop_os.gpg
sudo chmod 644 /etc/apt/trusted.gpg.d/pop_os.gpg
sudo gpg --list-keys -k
  • Add the Pop OS APT repositories and update your system with the following commands:
sudo add-apt-repository "deb http://apt.pop-os.org/release $(lsb_release -cs) main" -y 
sudo add-apt-repository "deb http://apt.pop-os.org/staging/master $(lsb_release -cs) main" -y 
sudo apt update -y && sudo apt full-upgrade -y
  • Install the Pop-OS desktop environment with the command
sudo apt install pop-desktop-raspi -y
  • Uninstall the Raspberry Pi-specific kernel installed by the previous step with the command
sudo apt purge --autoremove linux*-raspi* -y
This will make Pop-OS use the standard Ubuntu Server kernel.
  • Fix the Pop-OS APT sources with the command
sudo sed -i 's/Enabled: yes/Enabled: no/g' /etc/apt/sources.list.d/system.sources /etc/apt/sources.list.d/pop-os-apps.sources

Alternatively, you can manually edit the files and replace Enabled: yes with Enabled: no.

  • Ensure all packages are up to date with the command
sudo apt update -y && sudo apt full-upgrade -y
  • Enter reboot to restart the virtual machine.
  • Log in to Pop-OS and complete the setup questions.

Congratulations! The Pop-OS installation is now complete!

Bash Script for Installation

To simplify the process, I've created a bash script that automates the installation process. This script includes all the commands mentioned in the tutorial. To use it, simply copy the script into a file, make the file executable, and run it.

You can find the script on my GitHub repository.

To use this script, save it to a file, for example install_pop_os_arm64.sh, then make it executable and run it:

chmod +x install_pop_os.sh
./install_pop_os.sh

Additional Tweaks

Here are a few tweaks you can do to improve the overall experience:

Installing Open VM Tools

This will allow you to resize your window, transfer files and copy-paste into the VM, among other features.

sudo apt-get install open-vm-tools-desktop

Fixing the Network Status Indicator

  • Open a Terminal instance, and run
sudo rm /etc/netplan/*.yaml
sudo nano /etc/netplan/01-network-manager-all.yaml
  • Paste the following into the file, then save and exit the editor:
# Let NetworkManager manage all devices on this system
network:  
  version: 2  
    renderer: NetworkManager
  • Run:
sudo netplan generate && sudo netplan apply
  • Reboot; the network indicator in the menu bar and in the Pop!_Shop should now work correctly.

That's it! You have successfully installed a custom Pop!_OS arm64 image on VMware Fusion on MacOS. This journey has not only allowed me to add a powerful tool to my developer ecosystem but also provided a learning experience in creating a custom Linux image. I hope you find it as useful and enlightening as I did!

Now, it's your turn. I encourage you to take the first step and start the installation process. Remember, the journey of a thousand miles begins with a single step. Happy coding!

Subscribe to Devtooler

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe