Qemu-simple

From Alpine Linux
Revision as of 15:22, 25 August 2025 by Vkrishn (talk | contribs) (Qemu simple walk-through)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 Alpinelinux 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 2nd generation with KVM enabled.
  3. RAM: 8GB

Install Alpinelinux

  1. Diskless installs (Ram based)
  2. SYS installs
Tip: - for further setup to work correctly, its assumed that alpinelinux 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 Alpinelinux 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 Alpinelinux 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 (alpinelinux) ####
## -------------------------------------------------
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 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+ (alpinelinux) ####
## 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