How to Install Alpine Linux on macOS Using QEMU: A Step-by-Step Guide

Mar 17, 2025

How to Install Alpine Linux on macOS Using QEMU: A Step-by-Step Guide

Learn how to set up and boot Alpine Linux on macOS using QEMU. Follow this step-by-step guide to create a virtual machine with Alpine Linux efficiently.

Subject Matter Expert

Tanmay Soni
Tanmay SoniSenior Software Engineer - I

Virtualization is a powerful technology that allows you to run multiple operating systems on a single host system. QEMU, an open-source emulator, is an excellent tool for creating virtual machines on macOS. In this guide, we will walk you through the process of preparing an Alpine Linux image and booting it up using QEMU on your macOS system. Alpine Linux is known for its lightweight nature and security, making it an ideal choice for virtualization

Prerequisites:

  • Prior to beginning, please verify that you have already installed QEMU on your system. You can refer to the following tutorial for guidance: Getting Started with QEMU: Your Gateway to Virtual Machines.
  • Additionally, ensure you have downloaded an Alpine Linux ISO file to your system.
    You can download it from here.
  • You will also need to download the QEMU_EFI image, which can be obtained from this link.

Steps to Prepare the Alpine Linux Image and Boot the VM:

Create Disk Images:

Before you can boot the Alpine Linux VM, you need to create a disk image to install the operating system. Use the following command to create a 5GB disk image file named alpine.qcow2:

 $ qemu-img create -f qcow2 alpine.img 5G

Additionally, you'll want to create a variable storage disk image named varstore.img. This 64MB virtual disk acts as dedicated storage for temporary data and configurations used by your Alpine Linux virtual machine. In order to create vartstore.img you need to follow this command:

 $ qemu-img create -f qcow2 varstore.img 64M

Start the Alpine Linux Installation:

Use the following command to start the Alpine Linux installation:

 $ qemu-system-aarch64 -m 1024 \
   -drive if=pflash,format=raw,file=QEMU_EFI.img \
   -drive if=pflash,file=varstore.img \
   -drive if=virtio,file=alpine.img \
   -cdrom alpine-linux.iso -boot d -netdev user,id=eth0 \
   -device virtio-net-pci,netdev=eth0
  • -m 1024 specifies the VM's memory size (1GB).
  • -drive if=pflash,format=raw,file=QEMU_EFI.img line refers to the pflash disk image for EFI firmware.
  • -drive if=pflash,file=varstore.img line designates the variable storage disk image.
  • -drive if=virtio,file=alpine.img is for the main Alpine Linux disk image.
  • -cdrom alpine-linux.iso mounts the Alpine Linux ISO as a CD-ROM.
  • -boot d specifies to boot from the CD-ROM.
  • -netdev user,id=eth0 -device virtio-net-pci,netdev=eth0 configures a user-mode network connection.

Install Alpine Linux:

Once the installation is successful, and you are in the VM for first time then please run the below command to setup your VM to use Alpine-Linux.

 setup-alpine

Follow the on-screen instructions to install Alpine Linux on the virtual machine. You can choose to install it on the virtual disk you created (/dev/vda).

Boot the VM:

Once the installation is complete, shut down the VM using ^ + d, or enter poweroff and then boot the VM with your newly installed Alpine Linux using the following command - 

 qemu-system-aarch64 -m 4G -nographic \
 -drive if=pflash,format=raw,file=QEMU_EFI.img \
 -drive if=pflash,file=varstore.img \
 -drive if=virtio,file=alpine.img \
 -netdev user,id=eth0,hostfwd=tcp::2222-:22 \
 -device virtio-net-pci,netdev=eth0

Conclusion:

You have successfully prepared an Alpine Linux image and booted it up on your macOS system using QEMU. This lightweight and secure Linux distribution is ideal for various virtualization tasks. Explore Alpine Linux's package management system, build custom VMs, and enjoy the flexibility and performance of QEMU for virtualization on macOS.

Source: This blog is authored by Faiz Ahmed, Principal Technical Consultant at GeekyAnts. Originally published on Hashnode: Read here.

Subscribe to Our Newsletter

More from the engineering frontline.

Dive deep into our research and insights on design, development, and the impact of various trends to businesses.
Insight
Taming Elasticsearch at Scale
Oct 13, 2026

Taming Elasticsearch at Scale

Optimize Elasticsearch for millions of records with better pagination, leaner payloads, efficient filtering, faster ingestion, and frontend techniques that keep search responsive with increase in data.

Insight
Deep Linking for Mobile Apps(React Native) with NestJs, AWS CloudFront, S3 & ALB: A Complete Guide
Oct 13, 2026

Deep Linking for Mobile Apps(React Native) with NestJs, AWS CloudFront, S3 & ALB: A Complete Guide

Build a self-hosted deep linking and referral system for React Native without a third-party SDK. This guide covers Android App Links, iOS Universal Links, an S3 and CloudFront setup, and a NestJS backend that routes users to the right app store.

Insight
How We Engineered a Three-Path Reward Processing System for a Real-Time Sports Platform
Oct 12, 2026

How We Engineered a Three-Path Reward Processing System for a Real-Time Sports Platform

This blog explains how a real-time sports platform uses synchronous, asynchronous, and scheduled processing paths to handle rewards without slowing down the player experience.

Insight
Building an MCP-Powered QA Agent
Oct 12, 2026

Building an MCP-Powered QA Agent

Build an MCP QA agent that runs Playwright tests, validates APIs, and analyzes failures through a controlled, auditable tool layer with human approval.

Insight
From Test Failure to Root Cause: Building an AI-Assisted Playwright Failure Analysis Pipeline
Oct 9, 2026

From Test Failure to Root Cause: Building an AI-Assisted Playwright Failure Analysis Pipeline

This blog explains how an AI-assisted Playwright pipeline can analyze test failure evidence, identify probable root causes, and support human-validated debugging.

Insight
The Model Context Protocol: From First Call to Production
Oct 8, 2026

The Model Context Protocol: From First Call to Production

This blog explains how Model Context Protocol (MCP) works, from tool discovery and execution to OAuth authorization, security controls, and production deployment.

Insight
Stop Automating Everything: A Balanced Quality Engineering Approach to Testing
Oct 8, 2026

Stop Automating Everything: A Balanced Quality Engineering Approach to Testing

Balanced quality engineering places automation, API testing, exploratory work, and AI where each gives the most value, so teams ship faster without trading away user-perceived quality.

Footer

The Right Conversation Can

Save You Six Months.

Book a Call