I would like to post my notes as a little tutorial here. I am usually using these virtual machines as cheap staging servers. The first part of this tutorial, you hopefully need to do only once: creating a fresh Debian system. In the second part we will build on this image to create many different servers.
Creating A Base Debian System
We will create a Qemu machine and install Debian Lenny on it first:
# Download Debian image
wget http://debian.osuosl.org/debian-cdimage/current/i386/iso-cd/debian-504-i386-businesscard.iso
# Create base VM image
qemu-img create -f qcow2 debian.qcow2 2G
Our disk image will have a 2 Gigabyte size limit. You can pick a different size if you need.
Now we need to power on our VM and install Debian:
# Install Debian
qemu -enable-kvm -k tr -cdrom debian-504-i386-businesscard.iso -hda debian.qcow2 -boot d
You don’t need to allocate a large swap disk, 128MB should do just fine for a file/web server. Also I wouldn’t bother creating a seperate partition for /home/.
Next let’s log in as the user (www here) we have created to make final changes:
# logged in as user
dpkg-reconfigure console-data
aptitude install ssh sudo
echo "www ALL=(ALL) ALL" >> /etc/sudoers
At this point you might want to take a backup of debian.qcow2. (Even though we will open it only read-only from now on)
Creating The Actual VM
To save time and space we will use copy-on-write disks and re-use debian.qcow2.
# Create the actual VM's disk
qemu-img create -f qcow2 -o backing_file=debian.qcow2 actual.qcow2
Actually we are done. You can log in to your VM using the following command and start installing/configuring/running:
qemu -enable-kvm -k tr -hda actual.qcow2 -net user -net nic \
-redir tcp:5022::22 \
-redir tcp:9080::80
A few things to note about the command above:
-enable-kvm is meaningful only if you have kvm kernel module installed. It improves performance a great deal, so it’s highly recommended.
- You probably need to change
-k tr according to your keyboard’s layout.
- We are setting up two TCP redirections. 22 is for SSH and 80 is for HTTP. You can add more ports if you need.
Finally, I suggest you to prefer SSHing your VM instead of logging in directly:
# SSH into the VM
ssh -p 5022 www@localhost
I hope some of you find this useful.
No related posts.
I would like to post my notes as a little tutorial here. I am usually using these virtual machines as cheap staging servers. The first part of this tutorial, you hopefully need to do only once: creating a fresh Debian system. In the second part we will build on this image to create many different servers.
## Creating A Base Debian System
We will create a Qemu machine and install Debian Lenny on it first:
# Download Debian image
wget http://debian.osuosl.org/debian-cdimage/current/i386/iso-cd/debian-504-i386-businesscard.iso
# Create base VM image
qemu-img create -f qcow2 debian.qcow2 2G
Our disk image will have a 2 Gigabyte size limit. You can pick a different size if you need.
Now we need to power on our VM and install Debian:
# Install Debian
qemu -enable-kvm -k tr -cdrom debian-504-i386-businesscard.iso -hda debian.qcow2 -boot d
You don't need to allocate a large swap disk, 128MB should do just fine for a file/web server. Also I wouldn't bother creating a seperate partition for `/home/`.
Next let's log in as the user (`www` here) we have created to make final changes:
# logged in as user
dpkg-reconfigure console-data
aptitude install ssh sudo
echo "www ALL=(ALL) ALL" >> /etc/sudoers
At this point you might want to take a backup of `debian.qcow2`. (Even though we will open it only read-only from now on)
## Creating The Actual VM
To save time and space we will use copy-on-write disks and re-use `debian.qcow2`.
# Create the actual VM's disk
qemu-img create -f qcow2 -o backing_file=debian.qcow2 actual.qcow2
Actually we are done. You can log in to your VM using the following command and start installing/configuring/running:
qemu -enable-kvm -k tr -hda actual.qcow2 -net user -net nic \
-redir tcp:5022::22 \
-redir tcp:9080::80
A few things to note about the command above:
* `-enable-kvm` is meaningful only if you have `kvm` kernel module installed. It improves performance a great deal, so it's highly recommended.
* You probably need to change `-k tr` according to your keyboard's layout.
* We are setting up two TCP redirections. 22 is for SSH and 80 is for HTTP. You can add more ports if you need.
Finally, I suggest you to prefer SSHing your VM instead of logging in directly:
# SSH into the VM
ssh -p 5022 www@localhost
I hope some of you find this useful.
Tags: qemu, share, tutorial, vm
This entry was posted
on Wednesday, July 7th, 2010 at 13:26 and is filed under Programming.
You can follow any responses to this entry through the RSS 2.0 feed.
Both comments and pings are currently closed.
[...] The first part of this tutorial, you hopefully need to do only once: creating a fresh Debian system. In the second part we will build on this image to create many different servers. More here [...]
Instead of “qemu -enable-kvm …”, you can just run “kvm …”.
Here’s a nifty blog post on creating a partitioned image file and installing Debian via chroot. This is the only place I’ve seen this type of install documented – the tricky bit was grub install onto an image file. Maybe this is easier under grub2.
http://www.wand.net.nz/~smr26/wordpress/2008/08/28/kvm-the-hard-way/
@Andrew: Nice article, thanks for sharing.