How to Install Fedora Alongside macOS on a Mac (Intel)

You cannot dual-boot Fedora and macOS; use a virtual machine like UTM to run Fedora inside macOS instead.

You cannot dual-boot on Intel Macs

You downloaded the Fedora Workstation ISO, wrote it to a USB stick, and rebooted your Intel Mac holding the Option key. The boot menu shows macOS and Recovery, but no USB drive. You partitioned the drive, tried to write the ISO, and now the system refuses to acknowledge the installer. You are staring at a screen that won't let you boot Linux. This is not a bug in Fedora. This is a limitation in how Apple designed the boot firmware on Intel Macs.

Why the firmware blocks Linux

macOS on Intel Macs uses a modified version of the UEFI firmware. Apple locked down the boot path to only recognize macOS bootloaders and recovery images. The firmware ignores third-party boot entries for Linux distributions. You cannot create a standard GRUB entry that the Mac firmware will hand control over to.

The hardware supports x86_64 Linux perfectly well. The CPU, memory controller, and storage subsystems are compatible. The bootloader gatekeeper blocks the handoff. This restriction exists to enforce Apple's hardware validation and recovery workflows. It ensures the system can always recover to a known-good macOS state. Modifying the firmware to allow Linux booting is not supported. It breaks Secure Boot, recovery mode, and system updates.

The firmware is the gatekeeper. You cannot bypass it without breaking the system. Accept the limitation and virtualize.

Virtualization is the only path

Since native dual-booting is impossible, you must run Fedora inside macOS using a hypervisor. Virtualization abstracts the hardware and presents virtual devices to the guest operating system. Fedora runs as a guest, unaware of the underlying Mac hardware. The performance is close to bare metal when hardware acceleration is enabled.

UTM is the recommended tool for most users. It is free, open-source, and works on both Intel and Apple Silicon Macs. On Intel Macs, UTM uses QEMU with KVM acceleration. VMware Fusion and Parallels Desktop are commercial alternatives that offer higher graphics performance and deeper macOS integration. They require a paid license.

Check available resources before creating the VM. The host system needs headroom to manage the virtualization layer.

sysctl hw.memsize
# Returns the total RAM in bytes.
# Divide by 1073741824 to get gigabytes.
# Allocate no more than 50% of host RAM to the VM to keep macOS responsive.

Install and configure UTM

Install UTM via Homebrew. Homebrew handles the download and places the application in the correct directory.

brew install --cask utm
# Homebrew downloads the UTM app bundle and places it in /Applications.
# UTM uses Apple's Hypervisor framework on Apple Silicon and QEMU on Intel.
# On Intel Macs, UTM leverages QEMU with hardware acceleration via KVM.

Open UTM and create a new virtual machine. Select "Install Linux" and choose QEMU. UTM detects your Intel processor and configures the VM for x86_64 architecture. Select the Fedora ISO you downloaded. UTM mounts the ISO as a virtual CD-ROM.

Configure the hardware settings carefully. Allocate two CPU cores for general desktop use. Assign 4 GB of RAM or more depending on your workload. Select VirtIO for the disk bus. VirtIO uses a paravirtualized driver that communicates directly with the host kernel. IDE or SATA emulation adds overhead and reduces I/O performance. Fedora includes the VirtIO drivers by default.

UTM creates QCOW2 disk images by default. This format supports snapshots and dynamic expansion. The file grows as you use space, rather than consuming the full allocated size immediately. QCOW2 is the best choice for daily use.

Start the installation. The Fedora installer loads from the ISO and guides you through partitioning and user setup. The process is identical to installing on bare metal.

Snapshot the VM before the first upgrade. Future-you will thank you.

Optimize the VM for performance

After Fedora boots, install the guest tools to enable dynamic resolution and clipboard sharing. UTM uses the Spice protocol for display and input. The guest agent bridges the VM and the UTM window.

sudo dnf install spice-vdagent
# Installs the agent that enables dynamic resolution and clipboard sharing.
# Without this agent, the VM window size is fixed and copy-paste fails.
# Restart the agent service after installation to apply changes.

Verify the agent is running. The service must be active for features to work.

systemctl status spice-vdagent
# Shows the current state of the guest agent service.
# Look for "Active: active (running)" in the output.
# If the service is inactive, start it with systemctl start spice-vdagent.

Inside the VM, Fedora is unaware it is virtualized. Run dnf upgrade --refresh to keep the guest current. The package manager treats virtual hardware the same as physical hardware. Configuration files in /etc/ are user-modified. Files in /usr/lib/ ship with the package. Edit /etc/. Never edit /usr/lib/.

UTM defaults to NAT networking. The VM gets an IP from UTM's internal DHCP server. macOS can access the VM, but the VM appears behind the Mac on the network. Switch to Bridged networking if you need the VM to appear as a separate device on your LAN. Bridged mode requires the VM to request an IP from your router.

ip addr show
# Lists all network interfaces and their IP addresses.
# Look for the virtual interface assigned by UTM.
# In NAT mode, the IP usually starts with 192.168.64. or 10.0.2.

Reboot the VM after installing guest tools. The display driver changes require a restart.

Verify the installation

Confirm the system booted correctly and the release version matches expectations.

cat /etc/os-release
# Confirms the Fedora release version and ID.
# Output should show PRETTY_NAME="Fedora Linux 40 (Workstation Edition)".
# This proves the installation completed and the system booted correctly.

Check the journal for any boot errors. Virtualization can expose timing issues that bare metal hides.

journalctl -xe
# Displays recent log lines with explanatory text and jumps to the end.
# The x flag adds context. The e flag shows the most recent entries.
# Scan for red lines indicating failed services or hardware errors.

Run journalctl -xe inside the VM if services fail. The logs are accurate even in virtualization.

Common pitfalls and error messages

If the VM hangs on a black screen with a cursor, the display driver is not loading. Switch the graphics device in UTM settings from VirtIO-GPU to QXL or VMVGA. VirtIO-GPU requires the guest agent to be installed and running.

You may see this error in the UTM console:

qemu-system-x86_64: -device virtio-gpu-pci: Device 'virtio-gpu-pci' could not be initialized

This happens when the virtual GPU driver conflicts with the guest kernel. Change the display type to QXL in the VM settings and reboot.

If copy-paste does not work, the guest agent is not running. Install spice-vdagent and restart the service. If the VM is extremely slow, hardware acceleration is disabled. Ensure UTM is configured to use KVM. Software emulation is unusable for a desktop experience.

Check the UTM console log before guessing. The error message tells you exactly which device failed.

Choose the right tool

Use UTM when you want a free, open-source solution that works on both Intel and Apple Silicon Macs. Use VMware Fusion when you need maximum graphics performance and are willing to pay for a commercial license. Use Parallels Desktop when you require seamless integration features like Coherence mode and have a budget for the subscription. Stay on macOS when your workflow depends on Apple-specific tools like Xcode or Final Cut Pro and Linux is only an occasional requirement. Use a dedicated Linux machine when you need bare-metal performance for kernel development or hardware passthrough that virtualization cannot provide.

Where to go next