Install a Fedora 39 VM on an Apple Silicon MBA (ARM64)

Install Fedora 39 with Lima

$ limactl create

The shell will return a small TUI to help you create your first virtual machine

? Creating an instance "default"  [Use arrows to move, type to filter]
> Proceed with the current configuration
  Open an editor to review or modify the current configuration
  Choose another template (docker, podman, archlinux, fedora, ...)
  Exit

Navigate the > to Choose another template… and press Return. A list will appear. Using the Down-Arrow key navigate to fedora and press **Return ** again

? Choose a template f  [Use arrows to move, type to filter]
  apptainer-rootful
  default
  docker-rootful
  experimental/virtiofs-linux
  faasd
> fedora

# After selecting "fedora", press reurn again to proceed with the install 
> Proceed with the current configuration
  Open an editor to review or modify the current configuration
  Choose another template (docker, podman, archlinux, fedora, ...)
  Exit

When the installation process is finished Lima will print the command to get into the VM’s shell: As the install is from a frozen cloud image the first thing I do in the shell is run an update.
Note: if this is the only Lima instance, just entering Lima will put the terminal in the shell otherwise the command limactl shell [vm-instance-name]. If you forget the name of the instance just enter limactl list

INFO[0066] Run `limactl start default` to start the instance.
INFO[0076] READY. Run `lima` to open the shell.
$  lima
[user@computera-vm-instance]:[~/]$pwd
$ ~/
$ sudo dnf update --refresh
Fedora 39 - aarch64                                                                                                          6.0 kB/s |  16 kB     00:02
Fedora 39 openh264 (From Cisco) - aarch64                                                                                    829  B/s | 990  B     00:01
Fedora 39 - aarch64 - Updates                                                                                                 11 kB/s |  14 kB     00:01
Dependencies resolved.
======================================================================================
 Package                  Architecture              Version                    Repository                 Size
======================================================================================
Installing:
 kernel-core              aarch64                   6.6.7-200.fc39  updates      19 M
Upgrading:
 NetworkManager           aarch64                   1:1.44.2-1.fc39 updates      2.0 M
 NetworkManager-libnm     aarch64                   1:1.44.2-1.fc39 updates      1.8 M
… [skipping till the end]

Transaction Summary
======================================================================================
Install    6 Packages
Upgrade  149 Packages

Total download size: 240 M
Is this ok [y/N]: y

This upgraded 155 packages including the kernel, so at the end I restart the VM. I have learned through experimentation that a reboot command will not update the active kernal to the new one. Instead just exit the shell and shut down/restart the VM.

$ [user@computera-vm-instance]:[~/]$exit
$ limactl stop fedora-39-de
$ limactl list

NAME     	  STATUS   SSH             VMTYPE ARCH     CPUS MEMORY DISK   DIR
fedora-39-de. Stopped  127.0.0.1:60022 qemu   aarch64  4    4GiB   100GiB /Path/to/VM
$ limactl start fedora-39-de

Install typical diagnostic packages

  1. neofetch

Neofetch is a command-line system information tool written in bash 3.2+. Neofetch displays information about your operating system, software and hardware in an aesthetic and visually pleasing way.

$ sudo dnf install neofetch
$ neofetch

$ neofetch
             .',;::::;,'.                mac2net@lima-default
         .';:cccccccccccc:;,.            --------------------
      .;cccccccccccccccccccccc;.         OS: Fedora Linux 39 (Cloud Edition) aarch64
    .:cccccccccccccccccccccccccc:.       Host: QEMU Virtual Machine virt-8.2
  .;ccccccccccccc;.:dddl:.;ccccccc;.     Kernel: 6.6.7-200.fc39.aarch64
 .:ccccccccccccc;OWMKOOXMWd;ccccccc:.    Uptime: 44 mins
.:ccccccccccccc;KMMc;cc;xMMc:ccccccc:.   Packages: 660 (rpm)
,cccccccccccccc;MMM.;cc;;WW::cccccccc,   Shell: bash 5.2.21
:cccccccccccccc;MMM.;cccccccccccccccc:   Resolution: 1280x800
:ccccccc;oxOOOo;MMM0OOk.;cccccccccccc:   Terminal: /dev/pts/0
cccccc:0MMKxdd:;MMMkddc.;cccccccccccc;   CPU: (4)
ccccc:XM0';cccc;MMM.;cccccccccccccccc'   GPU: 00:04.0 Red Hat, Inc. Virtio 1.0 GPU
ccccc;MMo;ccccc;MMW.;ccccccccccccccc;    Memory: 239MiB / 3896MiB
ccccc;0MNc.ccc.xMMd:ccccccccccccccc;
cccccc;dNMWXXXWM0::cccccccccccccc:,
cccccccc;.:odl:.;cccccccccccccc:,.
:cccccccccccccccccccccccccccc:'.
.:cccccccccccccccccccccc:;,..
  '::cccccccccccccc::;,.

Here’s the colour image…

glances

Glances is a cross-platform system monitoring tool written in Python.

$ sudo dnf install glances
$ glances

What next

From this point I can install any package in the standard Fedora release repositories as well as all the available Fedora group packages. Entering dnf grouplist --hidden will tell the VM to query the Fedora repositories and list all the current packages available.

Getting under the hood

You wouldn’t have it any other way! In a contradictory fashion, the developers have produced an install of Lima that requires a bit of fiddling to customise. Linux comes with over 40 templates in YAML format which are easy to read and modify. But they are stored in a hidden folder. In addition, the virtual machines themselves, which can easily become bigger than 2 gigabytes, while stored in a different location than the templates, are also in a hidden folder. Any modifications to templates or additions made to the templates folder will be wiped out every time Lima is updated through Brew.

Working with Lima templates

On an ARM64 Mac, Lima templates are stores at:

/opt/homebrew/Cellar/lima/0.19.0/share/lima/templates

But I just ran a Brew upgrade and when it finishes Lima will be at a new location:

/opt/homebrew/Cellar/lima/0.19.1/share/lima/templates

Leave a Reply