Qemu-simple: Difference between revisions

From Alpine Linux
m (update section test bed)
(improve test, add resolv.conf)
Line 58: Line 58:
# ifconfig eth0 10.0.2.15
# ifconfig eth0 10.0.2.15
# route add default gw 10.0.2.2
# 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
# busybox ping alpinelinux.org
## -------------------------------------------------
## -------------------------------------------------

Revision as of 05:12, 26 August 2025

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 3rd/4th generation with virtualization 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 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+ (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