A while ago Ubuntu added support for Raspberry Pi and so recently I decided it was time to try something other than Raspbian on my Raspberry Pi 3 Model B+ board. Since this was an older (and thus less powerful) RPi board that I planned to use in headless mode, I chose to install Ubuntu Server instead of Ubuntu Desktop.
Note that Ubuntu has a guide that lists the steps at a high level to install Ubuntu Server on RPi, which turned out to be not detailed enough for me to get my install working.
Install steps that worked
The steps that eventually worked for me are listed below:
Download and install the Raspberry Pi Imager for Windows from here.
Plug in a microSD card into a Windows computer. The Ubuntu guide lists 4GB as sufficient and 8GB as recommended. I initially used a 4GB microSD card that was quite slow, so I switched to a fast 64GB microSD card for my final install. (Learn more about SD card speeds here.) Since my Windows computer does not have a microSD card reader slot, I used a Anker USB-C 2-in-1 SD card reader which worked out ok.
In the Imager, choose the OS you want and the SD card drive to install it to. I chose Ubuntu Server 20.04.1 LTS 64-bit to install on my microSD card. The Imager pulls the image from the web to install the first time, so the writing step can be slow. The OS image is cached locally, so if you repeat the same install the writing step will be fast. After writing, the Imager also does a verifying step to ensure the install was done correctly.
Eject the microSD card from the computer and reinsert it. Create an empty file named ssh on the card - this enables SSH access to the RPi board on its first boot.
Eject the microSD card from the Windows computer and insert it into the RPi board. Connect the RPi board to your home wireless router using a LAN cable. Finally connect the RPi board to power. I used a Adafruit 5V 2.5A microUSB power supply for this.
Give the RPi a few minutes to finish its first boot up and setup. Open up your wireless router’s web interface and look for a new wired connection. This is your RPi board, note down its IP address.
SSH to the RPi board from the Windows computer using ssh ubuntu@<IP address> and the password is ubuntu. I used WSL to do this.
After this, SSH to the RPi should work normally. To start things off on a good footing, I ended the install with a sudo apt update ; sudo apt upgrade ; sudo reboot.
You now have the entire universe of Ubuntu packages and tools accessible from a ARM64 computer. 🙂
What did not work: Install from wifi
Initially, I tried to bring up the RPi board using wifi. This involved modifying the network-config file on the microSD card from Windows and adding the network name and password. Once the RPi board had finished one reboot, I could see its wifi IP address in my wireless router’s interface. But SSH to this IP address would hang indefinitely. I tried this many times, with both Ubuntu Server 20.04.1 64-bit and 32-bit installs, and only once did I get to the Ubuntu change-default-password stage and then the interface went off. Not sure what the problem here is, probably something to do with the wifi driver. So eventually, I switched to using a ethernet LAN cable and the bring up worked as described above.