From Network Security Wiki

KVM Installation


  • Check hardware support for Virtualization:
egrep -o '(vmx|svm)' /proc/cpuinfo
  • Install KVM:
sudo apt-get install qemu-kvm libvirt-bin virt-manager bridge-utils
sudo kvm-ok
  • Add your user to the libvirtd group:
sudo adduser `id -un` libvirtd

then logout and log back in to activate your group membership.

  • Verify:
virsh -c qemu:///system list
  • The ID Name and State fields should empty
virt-manager -c qemu:///system kvmhost

CentOS / RedHat with Multiple Virtual Networks


  • Check Virtualization support
lscpu | grep Virtualization
  • Install kvm
sudo yum install qemu-kvm libvirt libvirt-python virt-install python3-libvirt
  • Start the libvirtd service:
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
  • Verify kvm installation
lsmod | grep -i kvm
  • Configure bridged networking
virsh net-list
virsh net-dumpxml default

  • Create KVM bridge with virsh command
vim br10.xml

Add bridge details to the file:

  <forward mode='nat'>
      <port start='1024' end='65535'/>
  <bridge name='br10' stp='on' delay='0'/>
  <ip address='' netmask=''>
      <range start='' end=''/>
  • To define a network from an XML file without starting it, use:
sudo virsh net-define  br10.xml

  • To start a (previously defined) inactive network, use:
sudo virsh net-start br10
  • To set network to autostart at service start:
sudo virsh net-autostart br10
  • Check to Confirm if autostart flag is turned to yes – Persistent should read yes as well.
sudo virsh net-list --all
  • Confirm bridge creation and IP address.
ip addr show dev br10
  • Download a test server disk file on CentOS 7:
  • Customize the login
virt-customize -a CentOS-7-x86_64-GenericCloud-2111.qcow2 --root-password password:admin@123
sudo mv CentOS-7-x86_64-GenericCloud-2111.qcow2 /var/lib/libvirt/images/

Now you should be able to login to new guest as root / admin@123

  • Download a test server disk file on CentOS 8:


virt-builder --list
virt-builder centos-7.5 --format qcow2 --size 20G -o centos75.qcow2 --root-password password             # no root password
virt-builder centos-7.5 --format qcow2 --size 20G -o centos75.qcow2 --root-password password:centos      # Set root password
sudo mv centos75.qcow2 /var/lib/libvirt/images/

  • Start the Test VM:
sudo virt-install \
--name=syslog \
--description="CentOS Syslog" \
--disk path=/var/lib/libvirt/images/CentOS-7-x86_64-GenericCloud.SYSLOG.qcow2,bus=virtio,format=qcow2 \
--network=bridge=br10,model=virtio \
--network=bridge=virbr1,model=virtio \    #for internet access via host
--graphics none \
--console pty,target_type=serial \
--vcpus=1 --cpu host --ram=1024 \
--os-type=linux \
--os-variant=rhel6 \
--import --autostart --noautoconsole
  • Access Console of the VM:
sudo virsh console syslog
  • Increase bash Columns & Rows
nano .bash_profile
res() {

  old=$(stty -g)
  stty raw -echo min 0 time 5

  printf '\0337\033[r\033[999;999H\033[6n\0338' > /dev/tty
  IFS='[;R' read -r _ rows cols _ < /dev/tty

  stty "$old"

  # echo "cols:$cols"
  # echo "rows:$rows"
  stty cols "$cols" rows "$rows"

res2() {

  old=$(stty -g)
  stty raw -echo min 0 time 5

  printf '\033[18t' > /dev/tty
  IFS=';t' read -r _ rows cols _ < /dev/tty

  stty "$old"

  # echo "cols:$cols"
  # echo "rows:$rows"
  stty cols "$cols" rows "$rows"

Migrate Disk from VirtualBox to KVM

VBoxManage clonehd --format RAW windowsxp.vdi windowsxp.img
qemu-img convert -f raw windowsxp.img -O qcow2 windowsxp


kvm -m 512 -usbdevice tablet -hda ubuntu.qcow

Convert VDI,IMG,VMDK HD image formats


qemu-img convert testvm.vmdk testvm.img

KVM to Virtualbox

VBoxManage convertfromraw --format VDI testvm.img testvm.vdi

KVM to VMware

qemu-img convert -O vmdk testvm.img testvm.vmdk

Virtualbox to KVM

vboxmanage internalcommands converttoraw testvm.vdi testvm.img

Converting VMware Image To Physical Machine

Cloning of the CentOS VM to an unpartitioned HDD:


VMware Workstation, Server or Player.
CloneZilla ISO image.
Unpartitioned HDD with enough space to hold your VM image.

VMware Configuration

Use CloneZilla ISO image to boot the VM. Add physical HDD as part of your existing VM and select the option Use entire disk.

CloneZilla Cloning Process

Start VMware and boot from CloneZilla image
Don't touch keymap
Select Start_clonezilla
Select device-device option
Select Beginner mode
Select disk to local disk
Select your source and target disk and click OK, then press Enter to continue.

A series of questions will appear. Answer yes to all this prompts. After the cloning process is finished power off the VM by pressing 0 on the CloneZilla menu. The cloning process is complete. Now install your new HDD to your physical machine.

Troubleshooting Physical Machine:

Filesystem corruption alert with the following error: Unexpected Inconsistency will occur. Login withroot password and run fsck -y.

Now fix the NIC by any one method:

cd /etc/udev/rules.d 
rm 70-persistent-net.rules


nano /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR=<MAC address of the network interface>

Shrink VirtualBox HDD

Windows guest

1. Perform a hard disk defragmentation.

2. Download sdelete and run

 sdelete -c c:/

3. Shutdown the VM. Shrinking the VM: In your terminal type the following:

 vboxmanage clonehd Winxp-old.vdi winxp-new.vdi

4. Replace the new HD with the old one in VM settings.

Ubuntu Guest


  • Ensure You’re Using a Dynamic Disk
  • Install Zerofree in Ubuntu VM:
sudo apt install zerofree
  • Start Ubuntu VM in Recovery mode by pressing "SHIFT" key during bootup
  • Drop to Root Shell Prompt
  • Run Zerofree:
zerofree -v /dev/sda1
  • Shutdown VM:
sudo poweroff
  • Shrink the Disk:
VBoxManage modifymedium disk Ubuntu\ Server.vdi --compact

Virtualbox Stop Host Time Sync with Guests

First, find the name of the virtual machine:

vboxmanage list vms

Automatic time sync can be disabled with this command:

VBoxManage setextradata "VM Name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1"

Restart VM

Serial Port between Two VMs In VirtualBox

Host = Ubuntu 10.10 Guest= Windows XP and Debian Lenny

First Guest VM Serial Port Settings - Debian

Enable Serial Port check box: checked (enabled)
Port Number: COM1
Port Mode: Host Pipe
Create Pipe check box: checked (enabled)
Port/File Path: /tmp/vboxS0

Second Guest VM Serial Port Settings - Microsoft Windows XP

Enable Serial Port check box: checked (enabled)
Port Number: COM1
Port Mode: Host Pipe
Create Pipe checking box: unchecked (disabled)
Port/File Path: /tmp/vboxS0

Starting VirtualBox Machines

First start the VM with checked "Create Pipe" check box(Debian VM). Afterwards start the second machine(Windows XP VM). There will be an error if you try doing other way.

{{#widget:DISQUS |id=networkm |uniqid=Virtualization |url= }}