Step By Step Howto Qemu on Breezy Badger
*note: KQEMU is the QEMU Accelorator
REMEMBER: If it's not covered here RTFM....
Step 1) Compile and setup of Qemu and KQemu
Step 2) Installation of GuestOS [ Windows 98se in this example ]
Step 3) Setup of Tun/Tap network interface on host and guest OS.
Step 4) NAT setup to allow guestOS access to the internet.
Brief Description:
QEMU is an Open-Source Emulator that emulates x86 arch as well as
several others.... allowing for guestOS's to be installed inside the
host OS.
QEMU is available for Linux, Mac, and Windows. We'll be covering the Linux Package in this HowTo.
For more information on QEMU visit the projectpage @
What you'll need:
+ QEMU source tarball from
+ KQEMU binary tarball from
+ linux-headers package
+ IPTables ( should already be installed ) package
+ libsdl1.2-dev package
+ Tun/Tap package
+ uml-utilities package
+ windows98 install cd and valid windows98 serial.
+ GCC-3.4 package
Ok, so this is the first HowTo i've wrote in quite a long time. First for ubuntu, and Qemu..
################################################## ##############
[ Step 1 ] - Compilation and Installation of KQEMU and QEMU
Outlined here is the steps taken to compile and setup Qemu and Kernel Module KQemu
A) Download the latest source tarball of QEMU from current version is 0.8.1
B) Download the latest binary of KQEMU from
C) Move the tarballs to your /usr/local/src directory and deflate
#> sudo mv qemu-version.tar.gz /usr/local/src/
#> sudo mv kqemu-version.tar.gz /usr/local/src/
deflate...
#> sudo gunzip qemu-version.tar.gz; sudo tar -xvf qemu-version.tar
#> sudo gunzip kqemu-version.tar.gz; sudo tar -xvf kqemu-version.tar
D) Install linux-headers for your current kernel version.
If you don't know your current kernel version you can do `uname -r` at the shell to find out...
#> sudo apt-get install linux-headers-`uname -r`
E) Install GCC-3.4 [ qemu complains on GCC-4 ] and libsdl1.2-dev
#> sudo apt-get install gcc-3.4 libsdl1.2-dev
locate the installed gcc-3.4 binary using whereis
#> whereis gcc-3.4
it should be located in /usr/bin/ if not found at all installation failed. repeat step E.
make a note of it's location. you're going to need it in step F
F) Configure and Compile QEMU and KQEMU
change directories to your qemu-source you deflated in step C
#> cd /usr/local/src/qemu-version
#> sudo ./configure --cc=/usr/bin/gcc-3.4 [ remember the location of it from step E? ]
once configuration is completed run make and make install to compile and install... do so as follows
#> sudo make
#> sudo make install
verify that QEMU installed correctly...
#> whereis qemu
change directories to your kqemu-source you deflated in step C, and configure make and make install
#> cd /usr/local/src/kqemu-version
#> sudo ./configure
#> sudo make
#> sudo make install
verify that device node /dev/kqemu exists
if not...execute following commands
#> sudo mknod /dev/kqemu c 250 0
#> sudo chmod 666 /dev/kqemu
Active module KQEMU
#> sudo modprobe kqemu
Verify that it loaded properly
#> lsmod | grep kqemu
If it failed to show up. issue a dmesg | tail to see what the error was
#> dmesg | tail
Anyway... continuing...
[ Step 1 Completed ]
################################################## ################
[ Step 2 ] Installing Guest OS
*notes: you can use either the actual install CD or an ISO made from the original install disk, I used an iso.
you can also use the dd command with the seek option to create your hard disk image file, in place of qemu-img create
for convenience we're going to use the qemu-img binary installed with QEMU
*help: Run qemu/qemu-img without any arguements to view it's help
A) Create the Hard Drive Image File to use as HDA
choose the directory you wish to store your disk images you can use mkdir to create a new one. I use ~/qemu
#> cd ~/qemu
A brief rundown of what we're executing here....
qemu-img create [filename] [-f format( raw, vvfat, cloop,... )] [size G(gigs), M(megs) ]
#> qemu-img create win98.img -f raw 2G
Ok, we've created the 2G image file to install windows98se into....now
we load QEMU to boot from the cdrom/iso file specified to start
installation
#> qemu -hda win98.img -cdrom /dev/cdrom -boot d -localtime -net nic -net tap
Now QEMU should boot from CD, just follow the steps to complete the installation...
Once installation has completed now we can move onto Step 3
[ Step 2 Complete ]
################################################## ################
[ Step 3 ] Setting up TUN/TAP network interface on HostOS and GuestOS
A) Install uml-utilities via apt
#> sudo apt-get install uml-utilities
B) Load kernel module tun
#> sudo modprobe tun66.202.65.50
C) Create the /dev/net/tun device node
#> mkdir /dev/net
#> mknod /dev/net/tun c 10 200
D) Setup the tap0 interface, with an ip address i use 192.168.100.1 for this.
Create the tap0 interface using tunctl
#> sudo tunctl
Give it an IP-Address
#> sudo ifconfig tap0 192.168.100.1 up
Make sure it was configured properly...
#> ifconfig
You should see tap0 with an inet addr: 192.168.100.1 and a Mask: 255.255.255.0
If there is no mask set...sometimes this happens don't know why but it's happend....do this
#> sudo ifconfig tap0 192.168.100.1 netmask 255.255.255.0 up
Ok, we're done with the HOST side of this
E) Setting up the GuestOS's network configuration
If you don't have QEMU booted into windows already then do so by this command...
#> qemu -hda win98.img -boot c -net nic -net tap &
Once windows has loaded goto your Control panel and open Network Settings
At the configuration tab Select TCP/IP and click properties
In the Properties window
- Select the IP Address Tab
select specify an IP address
enter 192.168.100.2 as your ip address
enter 255.255.255.0 as your subnet mask
- Select the Gateway Tab
add a new gateway as 192.168.100.1
- Select Ok
Select Ok
Now you will be promted for a restart....restart and you should be able to ping the guestOS from the hostOS
F) Testing the network connection
from a terminal
#> ping 192.168.100.2 -c 4
You should reach 192.168.100.2 if not, verify you followed every step.
Make sure you can Ping the Host from the guest
on Windows from a dosprmpt
#> ping 192.168.100.1 -n 4
You should reach 192.168.100.1 if not, verify you followed every step correctly.
[ Step 3 Complete ]
################################################## ###############
[ Step 4 Setting up NAT to allow GuestOS access to the internet ]
*note: i'm going to go ahead and assume you have iptables already installed.
A) Load Required Kernel Modules
#> sudo modprobe ip_tables
#> sudo modprobe iptable_nat
#> sudo modprobe ip_nat_ftp
#> sudo modprobe ip_nat_irc
B) Enable IP-Forwarding
as root run
#> echo "1" > /proc/sys/net/ipv4/ip_forward
If you get your IP Address Dynamically e.g. PPP0 (Dial-up)
as root run
#> echo "1" > /proc/sys/net/ipv4/ip_dynaddr
Enable SNAT (MASQUERADE) functionality on eth0/ppp0
*note: replace eth0 with ppp0 for dialup
#> sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
C) Setup DNS on guestOS
*note: this is for windows98se, methods aren't listed for other OS's
You can retrieve your DNS Server Ip's from your /etc/resolv.conf file after connected to the internet.
#> sudo cat /etc/resolv.conf
In windows, goto control panel -> networking -> TCP/IP Properties -> DNS Configuration
Select Enable DNS
Set Host to your gateway address, i set mine to 192.168.100.1 for my gateway
Set Domain to your Domain i just set it to one of the DNS servers IP Address's
Add your ISP DNS Servers to the DNS List..
Ok, reboot! everything should work fine now..
[ Step 4 Complete ]
After following these steps you should have a working Qemu using the
KQEMU accelerator as well as Tun/Tap Virtual Network forwarding Requests
from the guest to the internet.
If something isn't working, double check to make sure you set it up correctly.
阅读(1198) | 评论(0) | 转发(0) |