Difference between pages "Pandaboard" and "Windows 7 Virtualization with KVM"

(Difference between pages)
m (Reverted edits by 175.42.91.26 (talk) to last revision by Oleg)
 
(KVM Setup)
 
Line 1: Line 1:
The '''PandaBoard''' is a low-power, low-cost single-board computer development platform based on the Texas Instruments OMAP4430 system on a chip (SoC). The board has been available to the public since 27 October 2010. It is a community supported development platform.
+
This page describes how to set up Funtoo Linux to run Windows 7 Professional 32-bit within a KVM virtual machine. KVM is suitable for running Windows 7 for general desktop application use. It does not provide 3D support, but offers a nice, high-performance virtualization solution for day-to-day productivity applications. It is also very easy to set up.
  
The '''PandaBoard ES''' is a newer version based on the OMAP4460 SoC, with the CPU and GPU running at higher clock rates. The board has been available to the public since 16 November 2011. Like its predecessor, it is a community supported development platform.
+
== Introduction ==
  
== Features ==
+
KVM is a hardware-accelerated full-machine hypervisor and virtualization solution included as part of kernel 2.6.20 and later. It allows you to create and start hardware-accelerated virtual machines under Linux using the QEMU tools.
The OMAP4430 SoC on the PandaBoard features a dual-core 1 GHz ARM Cortex-A9 MPCore CPU, a 304 MHz PowerVR SGX540 graphics processing unit (GPU), a Texas Instruments TMS320C6400 digital signal processor (DSP), and 1 GiB of DDR2 SDRAM.  
+
  
The PandaBoard ES uses a newer SoC, with a dual-core 1.2 GHz CPU and 384 MHz GPU. Primary persistent storage is via an Secure Digital (SD) Card slot allowing SDHC cards up to 32 GB to be used. The board includes wired 10/100 Ethernet as well as wireless Ethernet and bluetooth connectivity. The board can output video signals via Digital Visual Interface (DVI) and HDMI interfaces. It also has 3.5 mm audio connectors. It has two Universal Serial Bus (USB) host ports and one USB On-The-Go port, supporting USB 2.0.
+
[[File:Windows7virt.png|400px|Windows 7 Professional 32-bit running within qemu-kvm]]
  
=== CPUinfo ===
+
== KVM Setup ==
* Pandaboard
+
<pre>
+
Processor      : ARMv7 Processor rev 2 (v7l)
+
processor      : 0
+
BogoMIPS        : 599.22
+
  
processor      : 1
+
If you are using an automatically-built kernel, it is likely that kernel support for KVM is already available.
BogoMIPS        : 582.68
+
  
Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls
+
If you build your kernel from scratch, please see [[KVM|the KVM page]] for detailed instructions on how to enable KVM. These instructions also cover the process of emerging qemu, which is also necessary. [[KVM|Do this first, as described on the KVM page]] -- then come back here.
CPU implementer : 0x41
+
CPU architecture: 7
+
CPU variant    : 0x1
+
CPU part        : 0xc09
+
CPU revision    : 2
+
  
Hardware        : OMAP4 Panda board
+
{{fancyimportant|Before using KVM, be sure that your user account is in the <tt>kvm</tt> group so that <tt>qemu</tt> can access <tt>/dev/kvm</tt>. You will need to use a command such as <tt>vigr</tt> as root to do this, and then log out and log back in for this to take effect.}}
Revision        : 0020
+
Serial          : 0000000000000000
+
</pre>
+
  
== Funtoo Linux Instalation ==
+
== Windows 7 ISO Images ==
First of all you have to prepare/format your SD card (ALL DATA WILL BE LOST!).
+
  
<pre>
+
In this tutorial, we are going to install Windows 7 Professional, 32-bit Edition. Microsoft provides a free download of the ISO DVD image, but this does require a valid license key for installation. You can download Windows 7 Professional, 32 bit at the following location:
sdcardsetup.sh
+
 
# sdcardsetup.sh script
+
http://msft-dnl.digitalrivercontent.net/msvista/pub/X15-65804/X15-65804.iso
 +
 
 +
{{fancynote|Windows 7 Professional, 32-bit Edition is a free download but requires a valid license key for installation.}}
 +
 
 +
In addition, it's highly recommended that you download "VirtIO" drivers produced by Red Hat. These drivers are installed under Windows and significantly improve Windows 7 network and disk performance. You want to download the ISO file (not the ZIP file) at the following location:
 +
 
 +
http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/
 +
 
 +
== Create Raw Disk ==
 +
 
 +
In this tutorial, we are going to create a 30GB raw disk image for Windows 7. Raw disk images offer better performance than the commonly-used QCOW2 format. Do this as a regular user:
 +
 
 +
<console>
 +
$ ##i##cd
 +
$ ##i##qemu-img create -f raw win7.img 30G
 +
</console>
 +
 
 +
We now have an empty virtual disk image called <tt>win7.img</tt> in our home directory.
 +
 
 +
== QEMU script ==
 +
 
 +
Now, we'll create the following script to start our virtual machine and begin Windows 7 installation. Note that this script assumes that the two ISO files downloaded earlier were placed in the user's <tt>Downloads</tt> directory. Adjust paths as necessary if that is not the case. Also be sure to adjust the following parts of the script:
 +
 
 +
* Adjust the name of <tt>VIRTIMG</tt> to match the exact name of the VirtIO ISO image you downloaded earlier
 +
* Adjust the <tt>smp</tt> option to use the number of CPU cores and threads (if your system has hyperthreading) of your Linux system's CPU.
 +
 
 +
Use your favorite text editor to create the following script. Name it something like <tt>vm.sh</tt>:
 +
 
 +
<syntaxhighlight lang="bash">
 
#!/bin/sh
 
#!/bin/sh
 +
export QEMU_AUDIO_DRV=alsa
 +
DISKIMG=~/win7.img
 +
WIN7IMG=~/Downloads/X15-65804.iso
 +
VIRTIMG=~/Downloads/virtio-win-0.1-74.iso
 +
qemu-kvm --enable-kvm -drive file=${DISKIMG},if=virtio -m 2048 \
 +
-net nic,model=virtio -net user -cdrom ${WIN7IMG} \
 +
-drive file=${VIRTIMG},index=3,media=cdrom \
 +
-rtc base=localtime,clock=host -smp cores=2,threads=4 \
 +
-usbdevice tablet -soundhw ac97 -cpu host -vga vmware
 +
</syntaxhighlight>
 +
 +
Now, make the script executable:
 +
 +
<console>
 +
$ ##i##chmod +x vm.sh
 +
</console>
  
if [ ! "$1" = "/dev/sda" ] ; then
+
Here is a brief summary of what the script does. It starts the <tt>qemu-kvm</tt> program and instructs it to use KVM to accelerate virtualization. The system disk is the 30GB raw image you created, and we tell QEMU to use "virtio" mode for this disk, as well as "virtio" for network access. This will require that we install special drivers during installation to access the disk and enable networking, but will give us better performance.
        DRIVE=$1
+
        if [ -b "$DRIVE" ] ; then
+
                dd if=/dev/zero of=$DRIVE bs=1024 count=1024
+
                SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`
+
                echo DISK SIZE - $SIZE bytes
+
                CYLINDERS=`echo $SIZE/255/63/512 | bc`
+
                echo CYLINDERS - $CYLINDERS
+
                {
+
                echo ,9,0x0C,*
+
                echo ,,,-
+
                } | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE
+
                mkfs.vfat -F 32 -n "boot" ${DRIVE}1
+
                mke2fs -j -L "rootfs" ${DRIVE}2
+
        fi
+
fi
+
</pre>
+
  
Follow the general steps from [[Funtoo on ARM#Installing Funtoo]].
+
To assist us in installing the VirtIO drivers, we have configured the system with two DVD drives -- the first holds the Windows 7 installation media, and the second contains the VirtIO driver ISO that we will need to access during Windows 7 installation.
  
These steps include:
+
The <tt>-usbdevice tablet</tt> option will cause our mouse and keyboard interaction with our virtual environment to be intuitive and easy to use.
* Extract stage3 to the 2nd partition of the SD card
+
* Extract portage snapshot (required to emerge things and ntp(see below))
+
* Setup fstab
+
* Setup root password
+
* Configure hostname and networking (optional, but recommended)
+
* Enable SSH access (optional, but recommended)
+
* Enable serial console access (optional, but recommended)
+
* Correct RTC "bug" with swclock
+
  
 +
{{fancyimportant|1=
 +
For optimal performance, adjust the script so that the <tt>-smp</tt> option specifies the exact number of cores and threads on your system -- on non-HyperThreading systems (AMD and some Intel), simply remove the <tt>,threads=X</tt> option entirely and just specify cores. Also ensure that the <tt>-m</tt> option provides enough RAM for Windows 7, without eating up all your system's RAM. On a 4GB Linux system, use <tt>1536</tt>. For an 8GB system, <tt>2048</tt> is safe.}}
  
=== Enabling serial console access ===
+
== Starting Windows 7 Installation ==
These are instructions specific for Pandaboard.
+
nano -w /mnt/SD_root/etc/inittab
+
s0:12345:respawn:/sbin/agetty 115200 ttyO2 vt100
+
  
=== Kernel and bootloader ===
+
Now, it's time to start Windows 7 installation. Run <tt>vm.sh</tt> as follows:
Here you can find kernel and bootloader files for a quick start.
+
Put these on first partition of your SD card. Archive name boot.tar.xz
+
  
* http://www.mediafire.com/?h5m1mnqqdrnyb
+
<console>
 +
$ ##i##./vm.sh
 +
</console>
  
Of course you can build your own kernel and U-Boot files, but these are provided here so you don't have to go through the cross-compiling pains and can use your Pandaboard to do native compiling once running.
+
Windows 7 installation will begin. During the installation process, you will need to enter a valid license key, and also load ''both'' VirtIO drivers from Red Hat when prompted (Browse to the second DVD, then win7 directory, then x86).
  
=== Modules and firmware ===
+
After some time, Windows 7 installation will complete. You will be able to perform Windows Update, as by default, you will have network access if your host Linux system has network access.
Put these inside /lib folder on second partition. Archive name modules.tar.xz
+
  
* http://www.mediafire.com/?h5m1mnqqdrnyb
+
Enjoy your virtualized Windows 7 system!
  
[[Category:ARM]]
+
[[Category:Tutorial]]
[[Category:Pandaboard]]
+
[[Category:First Steps]]
 +
[[Category:Virtualization]]
 +
[[Category:KVM]]

Revision as of 08:15, March 4, 2014

This page describes how to set up Funtoo Linux to run Windows 7 Professional 32-bit within a KVM virtual machine. KVM is suitable for running Windows 7 for general desktop application use. It does not provide 3D support, but offers a nice, high-performance virtualization solution for day-to-day productivity applications. It is also very easy to set up.

Introduction

KVM is a hardware-accelerated full-machine hypervisor and virtualization solution included as part of kernel 2.6.20 and later. It allows you to create and start hardware-accelerated virtual machines under Linux using the QEMU tools.

Windows 7 Professional 32-bit running within qemu-kvm

KVM Setup

If you are using an automatically-built kernel, it is likely that kernel support for KVM is already available.

If you build your kernel from scratch, please see the KVM page for detailed instructions on how to enable KVM. These instructions also cover the process of emerging qemu, which is also necessary. Do this first, as described on the KVM page -- then come back here.

Important

Before using KVM, be sure that your user account is in the kvm group so that qemu can access /dev/kvm. You will need to use a command such as vigr as root to do this, and then log out and log back in for this to take effect.

Windows 7 ISO Images

In this tutorial, we are going to install Windows 7 Professional, 32-bit Edition. Microsoft provides a free download of the ISO DVD image, but this does require a valid license key for installation. You can download Windows 7 Professional, 32 bit at the following location:

http://msft-dnl.digitalrivercontent.net/msvista/pub/X15-65804/X15-65804.iso

Note

Windows 7 Professional, 32-bit Edition is a free download but requires a valid license key for installation.

In addition, it's highly recommended that you download "VirtIO" drivers produced by Red Hat. These drivers are installed under Windows and significantly improve Windows 7 network and disk performance. You want to download the ISO file (not the ZIP file) at the following location:

http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/

Create Raw Disk

In this tutorial, we are going to create a 30GB raw disk image for Windows 7. Raw disk images offer better performance than the commonly-used QCOW2 format. Do this as a regular user:

$ cd
$ qemu-img create -f raw win7.img 30G

We now have an empty virtual disk image called win7.img in our home directory.

QEMU script

Now, we'll create the following script to start our virtual machine and begin Windows 7 installation. Note that this script assumes that the two ISO files downloaded earlier were placed in the user's Downloads directory. Adjust paths as necessary if that is not the case. Also be sure to adjust the following parts of the script:

  • Adjust the name of VIRTIMG to match the exact name of the VirtIO ISO image you downloaded earlier
  • Adjust the smp option to use the number of CPU cores and threads (if your system has hyperthreading) of your Linux system's CPU.

Use your favorite text editor to create the following script. Name it something like vm.sh:

#!/bin/sh
export QEMU_AUDIO_DRV=alsa 
DISKIMG=~/win7.img
WIN7IMG=~/Downloads/X15-65804.iso
VIRTIMG=~/Downloads/virtio-win-0.1-74.iso
qemu-kvm --enable-kvm -drive file=${DISKIMG},if=virtio -m 2048 \
-net nic,model=virtio -net user -cdrom ${WIN7IMG} \
-drive file=${VIRTIMG},index=3,media=cdrom \
-rtc base=localtime,clock=host -smp cores=2,threads=4 \
-usbdevice tablet -soundhw ac97 -cpu host -vga vmware

Now, make the script executable:

$ chmod +x vm.sh

Here is a brief summary of what the script does. It starts the qemu-kvm program and instructs it to use KVM to accelerate virtualization. The system disk is the 30GB raw image you created, and we tell QEMU to use "virtio" mode for this disk, as well as "virtio" for network access. This will require that we install special drivers during installation to access the disk and enable networking, but will give us better performance.

To assist us in installing the VirtIO drivers, we have configured the system with two DVD drives -- the first holds the Windows 7 installation media, and the second contains the VirtIO driver ISO that we will need to access during Windows 7 installation.

The -usbdevice tablet option will cause our mouse and keyboard interaction with our virtual environment to be intuitive and easy to use.

Important

For optimal performance, adjust the script so that the -smp option specifies the exact number of cores and threads on your system -- on non-HyperThreading systems (AMD and some Intel), simply remove the ,threads=X option entirely and just specify cores. Also ensure that the -m option provides enough RAM for Windows 7, without eating up all your system's RAM. On a 4GB Linux system, use 1536. For an 8GB system, 2048 is safe.

Starting Windows 7 Installation

Now, it's time to start Windows 7 installation. Run vm.sh as follows:

$ ./vm.sh

Windows 7 installation will begin. During the installation process, you will need to enter a valid license key, and also load both VirtIO drivers from Red Hat when prompted (Browse to the second DVD, then win7 directory, then x86).

After some time, Windows 7 installation will complete. You will be able to perform Windows Update, as by default, you will have network access if your host Linux system has network access.

Enjoy your virtualized Windows 7 system!