Tools Index

Qemu

1. Host System

Load modules, in this case kvm of intel cpu;

        # modprobe -a kvm-intel tun virtio
        

Add users to kvm group;

        # usermod -a -G kvm c9admin
        # usermod -a -G kvm username
        

2. Disk images

img
Raw disk image, allows dd to a physical device.
raw
Raw disk image, allows dd to a physical device.
qcow2
Qcow disk image file used by qemu.

Create hard disk image, there is different types, this describes how to create a qcow2 type;

        $ qemu-img create -f qcow2 crux-img.qcow2 15G
        

You can mount disk image;

        $ sudo modprobe nbd
        $ sudo qemu-nbd -c /dev/nbd0 /crux-img.qcow2
        

To disconnect image disk (ndb);

        $ sudo qemu-nbd -d /dev/nbd0
        

Information about preparing partitions and storage administration. You can use image as a normal disk, example how to use parted to create a gpt system table;

        # parted /dev/nbd0
        (parted) mklabel gpt
        (parted) mkpart ext4 0% 100%
        (parted) set 1 boot on
        
        # kpartx -a -s -l -u /dev/nbd0
        
        # mkfs.ext4 /dev/mapper/nbd0p1
        

Mount partition;

        # mount /dev/mapper/nbd0p1
        

2. Network

Network configuration;

slirp
Default virtual NAT'd network.
tun/tap
Good performance to create virtually any type of network topology.
vde
The VDE networking backend.
        KERNEL=="tun", GROUP="kvm", MODE="0660", OPTIONS+="static_node=net/tun"
        

2.1. Public Bridge

Create bridge, create new tap and add it to bridge;

        # DEV="br0"
        # TAP="tap5"
        
        # ip tuntap add ${TAP} mode tap group kvm
        # ip link set ${TAP} up
        
        # ip link set ${TAP} master ${DEV}
        

See scripts/system-qemu.sh, as template. Run virtual machine that uses above tap device;

        $ ISO=~/crux-3.2.iso
        $ IMG=~/crux-img.qcow2

        $ qemu-system-x86_64 \
            -enable-kvm \
            -m 1024 \
            -boot d \
            -cdrom ${ISO} \
            -hda ${IMG} \
            -net nic,model=virtio -net tap,ifname=${TAP},script=no,downscript=no
        

2.2. Routing

Create interface with correct permissions set for kvm group.

        # sysctl -w net.ipv4.ip_forward=1
        # iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
        

Guest System

Start qemu with 512 of ram, mydisk.img as disk and boot from iso

        $ ISO=~/crux-3.2.iso
        $ IMG=~/crux-img.qcow2

        $ qemu-system-x86_64 \
            -enable-kvm \
            -m 1024 \
            -boot d \
            -cdrom ${ISO} \
            -hda ${IMG} \
            -net nic,model=virtio -net tap,ifname=${TAP},script=no,downscript=no
        
Tools Index

This is part of the c9 Manual. Copyright (C) 2016 c9 team. See the file Gnu Free Documentation License for copying conditions.