VMware
modify |
VMWare (Workstation, Player) is an emulator released as commercial software. The player version is distributed free of charge (Gratis). It runs on either Win32 or Linux host machines, allowing you to run OLPC images within the virtual machine. A Mac version is also available, VMWare Fusion, however this is not provided free of charge (a free 30-day evaluation is available).
You can decide either to emulate an XO via downloaded images, or to build a developer's desktop image starting from a stock Fedora 7. Both approaches are discussed here.
Caveats
On Linux, VMWare setup requires a package of kernel modules (as do all high-speed emulation options we are aware of)
Features
VMWare's primary advantages for OLPC developers are:
- You may already have it
- It's fast (generally slightly faster than Qemu with KQemu)
- It's got a slick GUI front-end (for the full versions)
- There is (paid) support available from VMWare for their products
That said, VMWare is comparatively less well supported by the project. We are attempting to improve support, but we will generally prioritize Qemu support before VMWare support.
Snapshots
Allow you to take a complete copy of a system at any point in time (even while running) in order to checkpoint changes and allow you to return to the previous state.
Note that this is not an overlay system such as Qemu's copy-on-write system, it copies the whole disk (and memory), so will take considerably more hard-disk space.
File Sharing
You can use your host machine to edit files and "upload" them to your virtual XO via and IP-based file-transfer mechanism:
- source-code-control (git, bzr, svn)
- sftp, scp
- rsync
- editor-based virtual file-systems
Direct file-sharing support is available in commercial versions of VMWare with the VMWare tools installed on the client OS.
Emulating the XO
An emulated XO image is recommended for developers working on Activities (as distinct from Sugar and other core libraries). It is also recommended for those who want to test their software or who may not have enough computer power to run a developer's image.
The XO images have the advantage of being faster than a "developer's desktop" image. They are also much easier to maintain (sugar-jhbuild can be quite time consuming). You should be sure to use source-code-control storing to another machine (such as your host machine) for all of your code so that you do not lose work when updating to a newer image.
Compatibility
- Official OLPC build 616 is known to work under VMWare workstation 5 on Linux AMD64 with networking and (non-csound) sound with a workaround (sound service needs to be restarted)
- Official OLPC build 602 is known to work under VMWare workstation 6 on Vista and MacOS using VMWare Fusion.
- Official OLPC build 557 is known to work under VMWare with networking (tested on Linux AMD64 host w/).
- A kernel driver (Ensoniq ES1371) has been added to allow sound support https://dev.laptop.org/ticket/3034.
Setup
The VMWare/VirtualBox images are converted from the official images using a simple downloading script. You can either download and convert the official images yourself or use a pre-converted image.
Mac Users may want to check out this article.
Pre-converted Images
Pre-converted images are made available periodically to support those who do not have Qemu's tools installed on their workstations. Choose the .zip file for the version you require.
- "Joyride" versions are the current development builds, that is, the most bleeding-edge builds available
- "Ship.2" versions are the builds targeted for release on real mass-production laptops used by real children (think of them as stable-enough to test for shipping)
- "Official" versions are the builds which have been found stable enough to be released for general consumption (note: currently these builds are not being converted specifically, the ship.2 builds of the same number are the official releases)
Choose a reasonably recent version (within the last few weeks) when possible.
See: Configuration and Usage -- describes how to set up the new image for development work
Building an Image from Scratch
We don't actually do this ourselves (we have a script that does it), but here are the basic steps involved...
- Download an official devel-ext3 image (<thefile>.img.bz2)
- bunzip2 <thefile>.img.bz2
- use the qemu-img function from Qemu to convert the image into a vmdk file
- qemu-img convert <thefile>.img -O vmdk <thefile>.vmdk
Now create a new VMWare "Machine" (if you have a commercial VMWare client):
- "New Virtual Machine", "Typical", OS Type "Other Linux 2.6.x kernel"
- Network Address Translation (NAT) networking (recommended, try others if you like)
- Disk configuration (irrelevant, we're going to overwrite it)
If you do not have a commercial VMWare client, you can manually create an olpc.vmx file:
#!/usr/bin/vmware config.version = "8" virtualHW.version = "3" memsize = "128" ide0:0.present = "TRUE" ide0:0.fileName = "olpc.vmdk" ide1:0.present = "TRUE" ide1:0.fileName = "/dev/cdrom" ide1:0.deviceType = "atapi-cdrom" floppy0.fileName = "A:" ethernet0.present = "TRUE" ethernet0.connectionType = "nat" usb.present = "TRUE" sound.present = "TRUE" sound.virtualDev = "es1371" displayName = "OLPC" guestOS = "other26xlinux" ethernet0.addressType = "generated" uuid.location = "56 4d d1 99 5c 64 a3 6f-ef c7 aa 86 a8 cc ed 46" uuid.bios = "56 4d d1 99 5c 64 a3 6f-ef c7 aa 86 a8 cc ed 46" tools.remindInstall = "TRUE" ethernet0.generatedAddress = "00:0c:29:cc:ed:46" ethernet0.generatedAddressOffset = "0" checkpoint.vmState = "olpc.vmss" ide0:0.redo = ""
Start VMWare Player, open this .vmx file. Allow VMWare to create a new UUID.
Edit "Machine" Settings:
- Memory 512MB (recommended for development work, 256 more closely simulates an XO)
- Remove the auto-generated hard-disk
- Add a new hard disk, "Existing Disk Image", choose <thfile>.vmdk
- Ensure that audio is enabled
Tips
To get access to the root console, that is, virtual console 1:
- You can use CTRL-ALT + space then F1, that is, hold down CTRL-ALT while you press the spacebar and then the F1 key. You can do the same with F3 to get back to your normal X session.
Use full-screen mode:
- ctrl-alt-enter to enter/exit full-screen mode
OLPC Clones
VMware Workstation has a nifty feature called "Linked Clones." This enables users to deploy virtual machines based on the "template virtual machine" that take up very little space. For example, I can make a OLPC virtual machine, turn it into a template, make a clone, and the clone will take up ~6 megs of disk space when not running. When running, it will consume more diskspace as ram.
Why?
It is now extremely easy to test mesh networking and networking activities in general. The folks at OLPC Austria have done something similar with qemu, but that requires additional software to manage a virtual ethernet network. VMware workstation provides more networking support out the box.
In addition, the clones would take less disk space than it would to run multiple instances of qemu images.
Creating the Template OLPC Virtual Machine
- Follow the above steps for creating a OLPC virtual machine, but when done, do not boot it up. This is extremely important! Booting it up and making a clone of that will cause unpredictable behavior such as no setup username screen ever displaying.
- Now, edit the virtual machine's settings and go to the options tab. Choose "Advanced" and check the "Enable template mode" checkbox and hit OK.
- Go to the snapshot manager for this virtual machine and choose to take a snapshot in its powered off state. Give it a useful name like, "OLPC Base Template" with a description of perhaps "Not booted yet." Save this.
- You now have a template VM for cloning!
Deploying Clones From The Template OLPC Virtual Machine
- With the OLPC VM still selected, Goto VM -> Clone.
- In the 'Clone Virtual Machine Wizard' that pops up, select next.
- Choose the existing snapshot (It will be called "OLPC Base Template" if you followed the above instructions exactly) and hit next.
- Choose "Create a linked clone" - This will greatly save on disk space.
- Give the clone a name and a place to live in and click through.
- Now you can boot the clone!
VMWare Tools
- install the VMWare tools if you prefer
- Note, experiences of most developers seem to suggest this isn't necessary, and it's a bit involved
Ed Borasky, 5 December 2007: I've downloaded ship2 build650 and built a virtual machine from it following the above instructions. Unfortunately:
- The image of 1 GB is almost full. The VMware tools RPM won't install -- there isn't enough space.
- I can build a new virtual disk (2 GB) and copy the original image to it, using a Fedora 8 rescue CD. After that, I can install the VMware tools RPM.
- Once you have the RPM installed, you have to run a Perl configure script. Well, the XO doesn't have Perl. So you have to install Perl. After that, you discover that the script needs "gcc", "make" and kernel headers. I got "gcc" and "make" in there, but the repositories don't seem to have the right kernel headers.
- I am about to try this with the latest Joyride build -- I think I can get all the dependencies installed, although I still will need a larger virtual disk than the stock 1 GB.
- The good news is that even without VMware tools, the virtual machines come up in Workstation and the Player. I have not been able to connect to a host sound card yet, but that's probably a VMware configuration issue and not something in the emulated XO guest.
Developer's Desktop Emulation
For development on the core Sugar system (as distinct from activities), you likely need an emulated sugar-jhbuild system so that you can keep up to the most recent versions of all core packages.
System Requirements:
- Windows hosts: if your machine was considered 'fast' two years ago, you'll do fine
- Mac hosts: don't even think about this on a G4 or even a G5: use an Intel-Mac
- Memory: 2GB is a realistic minimum. 3GB is recommended.
The quickest way to get started creating a jhbuild (developer's desktop) is:
- The next steps will take the better part of a day to complete, if not more on a slower machine (You'll be running an emulator within an emulator!)
- Create a new virtual machine and do a base Fedora 7 (or Ubuntu) install on it
- Do not install any extra packages (will be done later)
- Make sure you give the disk at least 15GB max size. If you have the disk space, preallocate it now. That will give you a twofold increase in performance
- If you have more than 1GB of RAM, set the virtual machine to 800MB, if not give it 400MB.
- Give the image access to all your CPUs too, if you have them (default is one).
- There is a preinstalled 'virtual appliance' F7 available via vmware.com, but you'll need to increase its disk size first. It maxes out at 4.7GB. 2GB short of a working sugar-jhbuild environment.
Once you have your working Fedora 7 or Ubuntu image under emulation, see the instructions for setting up Sugar with sugar-jhbuild for your new (emulated) platform:
The update
step will download approximately 1.6GB of data (using compression so probably around 400MB in actual download). The build phase will also take a few hours. On a 2.4Ghz Core2 duo iMac with 3GB ram it took about two hours.
See:
- Developer's Handbook Setup -- describes the process of setting up a working environment