Qemu-simple

From Alpine Linux
Revision as of 20:36, 28 August 2025 by Vkrishn (talk | contribs) (alpinelinux to Alpine Linux)

Setup walkthrough

Basic setup that gets you going, you would still need to read main Qemu documentations for advanced features.

Objective

  1. Install Alpinelinux.
  2. Install Qemu and its dependencies.
  3. Download Alpinelinux ISO and required files.
  4. Start a Qemu instance of Alpine Linux ISO.
  5. Test basic networking.

Test bed

WIP

  • Describe here the test bed/setup used to run the scripts below.
  1. MODEL: Dell Laptop.
  2. CPU: Intel i5 3rd/4th generation with virtualization enabled.
  3. RAM: 8GB

Install Alpine Linux

  1. Diskless installs (Ram based)
  2. SYS installs
Tip: - for further setup to work correctly, its assumed that Alpine Linux installed in done for version between v3.21.x and v3.22.x

v3.21.x-v3.22.x

Install Qemu and its dependencies

# apk add qemu qemu-img qemu-system-x86_64 qemu-ui-gtk

# modprobe tun

v3.21.x-v3.22.x

Download Alpine Linux ISO and required files

# cd ~ # wget https://cdn.alpinelinux.org/v3.22/releases/x86_64/alpine-extended-3.22.0-x86_64.iso

Start a Qemu instance of Alpine Linux ISO

  1. Basic setup (with ssh forwarding)
  2. Basic tap setup

v3.21.x-v3.22.x

Basic setup (with ssh forwarding)
#!/bin/sh
## -------------------------------------------------
## Simple setup (manually)
##  no root privileges needed
## QEMU emulator version 10.0.0 (Alpine Linux) ####
## -------------------------------------------------
ISO=alpine-extended-3.22.0-x86_64.iso
qemu-system-x86_64 -enable-kvm -m 2048M -cdrom ${ISO} \
    -device virtio-net,netdev=net0 \
    -netdev user,id=net0,hostfwd=tcp::5555-:22 \
    -nographic -display curses \
    -boot d

## ----
## on GUEST
# ifconfig eth0 10.0.2.15
# route add default gw 10.0.2.2
# busybox ping 10.0.2.2
## assuming your HOST gateway is 192.168.1.1
# echo 'nameserver 192.168.1.1' > /etc/resolv.conf
# busybox ping alpinelinux.org
## -------------------------------------------------

v3.21.x-v3.22.x

Basic tap setup
#!/bin/sh
## -------------------------------------------------
## Manual setup with defaults and no preset scripts
## Works in root
## QEMU emulator version 10.0.0+ (Alpine Linux) ####
## modprobe tun # needed if not loaded already
## -------------------------------------------------
ISO=alpine-extended-3.22.0-x86_64.iso
qemu-system-x86_64 -enable-kvm -m 2048M -cdrom ${ISO} \
    -device virtio-net,netdev=nd0 \
    -netdev tap,id=nd0,ifname=tap0,script=no,downscript=no \
    -nographic -display curses \
    -boot d

## ----
## on HOST
# ifconfig tap0 10.0.2.2
## on GUEST
# ifconfig eth0 10.0.2.15
# route add default gw 10.0.2.2
## ----
## TEST (HOST) - IMPORTANT: remove firewall if any
# nc -l 1234 > filename.out
## TEST (GUEST)
# echo -e "aaa\nbbb" > test.txt
# nc 10.0.2.2 1234 < test.txt
## TEST (HOST)
# cat filename.out
## -------------------------------------------------

See also

Resources

  1. https://wiki.alpinelinux.org/wiki/QEMU
  2. https://wiki.qemu.org/Documentation/Networking#How_to_get_SSH_access_to_a_guest
  3. https://www.qemu.org/docs/master/system/invocation.html#hxtool-5
  4. https://manned.org/pkg/alpine-3.22/qemu-doc