VMware
2009 Wrap Up
Dec 29th
It’s been a long year, and a longer decade (don’t give me that crap about it being another year), but it’s coming to a close. I just got back to Louisville from my Christmas vacation in Asheville, NC. Most of my mother’s side of the family met up and we rented out a B&B for a few days (don’t worry, they had internet). The first day, we took a tour of the Biltmore House, which claims to be the “largest home in America,” and they’re probably right.
The biggest news from me is likely my new car, which you can (depending on when you’re reading this) probably still see in the Flickr stream to the right. It’s a silver 2007 Civic EX Coupe (5 speed). My old car, the 94 Saturn, is now being used by my younger brother. The Civic has a center console that I think would nicely house a carputer if I ever get around to building one. The cars been getting a few miles on it with a few back-and-forths to Lexington and the trip to Asheville and seems to be working fine. It even has a particularly nerdy startup message (again, see Flickr).
Also, I’ve moved this site back to my personal server and Wordpress 2.9. Squarespace was a great service, but I just can’t afford to pay for hosting at the moment. The SS page still exists, but only for another day or so, I’ll be doing everything here now.
This year consisted of two internships at VMware and one Summer semester of classes. It saw the purchase of my latest overpowered desktop (Dragon, which is now in need of a Motherboard RMA due to a faulty temperature sensor) and my shiny 13″ MacBook Pro (Whelp, whose sensors seem to be working quite nicely). This was also the year I purchased a “proper” smartphone, the Palm Pre, which despite it’s problems is still a nice phone. I had my house robbed, which I’ve since more or less recovered from, lost two roommates, and gained another.
Overall, it’s been a good year. On the plate for 2010 is wrapping up this B.S. at school (and my degree, while I’m at it) and then deciding if I want to deal with another year of it for a Master’s degree.
Building a Development Environment with VMware
Oct 4th
Today, I decided to try and start back up with Palm webOS development (which I’m further putting off by writing this post) but before I could do that, I needed to set up my development environment. This time, rather than install it in my host operating system, which can change fairly often, I decided to create a dedicated virtual machine to do all of my webOS development in. There are a couple of advantages of this. First, my development environment remains stable and constant even when my host operating system changes or is upgrades. Secondly, I can have a 32 bit development environment when the rest of my desktop is 64 bit. This is helpful, because Palm currently only provides an i386 *.deb for the Mojo SDK, and while you can get it to work on a 64 bit system, I can avoid having to do these workarounds. Finally, it’s easy to pick up my entire development environment and take it with me from computer to computer, without having to worry about redownloading and libraries or tools on the new machine.
Since I’m using Ubuntu 9.04 x86_64 edition, most of this guide is tailored to Linux hosts, but should work fairly well on Windows or Mac hosts as well.
1. Install a Virtualization Platform
The first step was to set up my virtualization software. If you don’t already have something installed to do this, take a look at VMware Player 3.0, which is currently in the RC stages. You can get it here. Player 3 is improved over the previous versions in that it is now a fully fledged desktop virtualization product. In the past, it was only able to run virtual machines others had created, but it is now capable of creating them as well.
2. Install your Guest OS
Once you have VMware set up, you need to install your guest operating system that you will do your development on. For my example, I chose to use Ubuntu 8.04.3 LTS, which is an older release, but is an LTS release and also the version that Palm has targeted its SDK at. After downloading the image from http://releases.ubuntu.com/hardy/ setting up the virtual machine is very easy. All you have to do is create a new VM from Player’s UI, and give it the Ubuntu *.iso image when it asks for it. VMware will automatically set up the VM for you from there, including installing Ubuntu.
3. Set up your Environment
Next, just set up anything you need for the development you’ll be doing. In the case of Palm’s Mojo SDK, this means installing sun-java6-jre through apt, then installing the palm-sdk and palm-novacom packages from Palm’s webpage. You can also install an SDK if you prefer. I installed Eclipse 3.4.2, which was the version recommended by Palm. I then added the Palm and Aptana plugins.
4. Set up Remote Access
Finally, you can configure your virtual machine to be accessible remotely. The best way to do this (for a Linux guest) is via SSH. Install the package openssh-server in your virtual machine, then you can access it from your host through that. If you configure VMware to leave virtual machines running in the background you can close out of Player then run your IDE of choice over ssh by running something along these lines:
ssh -X user@vmipaddress /path/to/ide
which for my particular setup, winds up being:
ssh -X zach@172.16.156.129 /opt/eclipse/eclipse
You can save that command as either a bash alias or shell script, and make a launcher for it. Eclipse will then load up and run looking just like a native application, but it’s actually still keeping everything in the virtual machine, so you can still bundle up your entire environment easily.
There are some additional tricks you can do to futher integrate guest and host. One such thing that can come in handy is mounting your host’s hard drive in the guest via sshfs which will let you easily move files between guest and host.
Hopefully this will help you keep your development environment clean and stable, no matter how much you decide to tweak your host
Clusterf*ck: Mass Virtualization
Jul 30th
Sometime after I get back to Kentucky, I’m thinking of building a server for running virtual machines using VMware Server 2.0. The idea is to virtualize as many of my machines as possible. Virtual servers, in particular, benefit from this by being able to be easily moved or cloned. Rather than having to take a server down for upgrades, you have the ability to clone the VM, apply the upgrade to the clone, then switch them out, resulting in nearly zero downtime.
In addition to running web and mail servers, I could also virtualize the backends to some other applications, namely Deluge and MythTV, so that the computers they ran on didn’t need to be on 24/7. MythTV is a little tricky due to the lack of support for PCI passthrough in VMware, but I could of course use USB tuners. I could also use a virtual machine as my primary desktop, and use a small, low powered, thin client to access it over VNC or SSH.
I recently looked into the hardware I’d want for such a server and came up with the following:
- Intel Core 2 Quad Q6600 2.4GHz CPU
- Intel BOXDG31PR Micro ATX Motherboard
- Kingston 4GB (2×2GB) DDR2-800 Memory
- Seagate 1TB SATA2 Hard Drive
- APEX DM-387 Slim Micro ATX Case
The build would be another slim micro ATX build, similar to Cervantes and have a quad-core CPU, 4GB of ram, and a terabyte of storage. In total, it came to a little under $600 for the entire build (I love how cheap hardware is getting) but I think I’ve decided to hold out for Nehalem before I build it. With native quad cores and hyper threading, Nehalem should work well for this kind of project.
Poster Session
Jul 24th
Today I had my “Poster Session” at VMware. All interns are expected to create a poster showcasing what they had done over the summer, so mine focused mostly on VDI and VDM. I was suprised at the attention that my poster attracted, as several people stopped by to ask me questions about the project. Mine was one of the projects that had a more obvious application, versus other projects that would be considered mostly “under the hood” improvements.
The interns whose posters receive the most votes get a free trip to VMWorld, this September in Las Vegas.
XPe on ESX 3.x
Jul 11th
So, after I posted my method for building and testing XPe images in Workstation, I was asked to get my XPe VMs working in ESX as well. ESX uses an older version of VMware’s Virtual Hardware, so XPe VMs I created with my previous method will not run if transferred directly to an ESX machine.
Creating the virtual hardware component is pretty straightforward, and follows the same general process as my previous guide. For your convenience, I’ve uploaded my component that I created running XP on ESX.
However, just the component isn’t enough for ESX. ESX 3.x doesn’t support virtual IDE hard drives. Likewise, Windows XPe doesn’t support SCSI drives. So, you’ll have to install the VMware SCSI driver. During a normal XP installation, you can do this by pressing F6 during installation and loading the drivers from a floppy, but because you build XPe rather than installing it, you have to componetize the driver. Again, I’ve already done this for you.
If this doesn’t work for you, you can download the floppy image containing the driver from VMware.com, extract it, and then import the vmscsi.inf file into the XPe Component Designer.
Once you have both the vmware4 and vmscsi components added to your XPe profile, run dependency checks to pull in the required components and build the image like you did in the last guide. After that, move the Virtual Machine onto your ESX box (assuming you didn’t create it there) and fire it up.
The Game
Jun 27th
Today I got to experience the Bay Area Phenomenon known as “The Game.” The Game is a combination scavenger hunt, logic puzzle, and race. At each point in the hunt, you are given some puzzle to solve. However, you generally aren’t given any kind of instructions and you need to solve the puzzle to obtain a clue as to where you have to go next. For example, one puzzle I encountered today was just a sheet of paper with a maze filled with letters. I solved the maze from start to finish, but the path I took through it didn’t hit any letters that made sense, but when I looked over the puzzle again after I finsihed, I saw that the path I took through the maze spelled out “MOD3.” So, I went back and took every third letter, which then spelled out a riddle that I needed to solve in order to move on, and that was one of the more straightforward puzzles.
While my team didn’t finish first, we did make a decent attempt and had a lot of fun doing so. While one instance of “The Game” is usually played over the entire Bay Area, our game was restricted to downtown Palo Alto, so we were able to complete it on foot.
Green is my favorite color
Jun 19th
I’m genuinely impressed at how environmentally friendly a company VMware is. For starters, there’s the free shuttle service that they run, which cuts down on the number of people that drive to work. Then there’s their little electric carts for traveling between the different complexes in Palo Alto.
There aren’t many trash cans in the buildings, and when there are, they’re often sitting next to a much larger recycling bin. The Promontory Cafeteria, in particular, generates no trash: everything is recyclable or biodegradable. There’s also a large selection of vegetarian and vegan food options every day.
Then there’s the virtualization aspect. VMware’s software allows for the consolidation of servers and workstations by allowing several operating systems to run at a time. By using VMware’s software, companies can reduce the number of separate servers that they need, meaning less wasted CPU cycles and wasted energy. The particular project that I’m working on can reduce an entire computer lab down to a single server.
Developing Components for XPe
Jun 18th
I spent most of the day further researching XP Embedded, specifically with respect to developing custom components. As the software I’m working on is meant to run on embedded devices, it would be a good idea for us to provide an XPe component in addition to our regular installer.
For the moment, I accomplish this by having the component run the installer at first boot, but I’m hoping to come up with a more elegant solution in the next couple of days.
Component design is another aspect of XPe Tools that could use some work. With most software for Windows being distributed in exe or msi form, I was suprised that there was no utility to build a component from one of those files. Instead, the best way to accomplish that would be to use a third party tool, such as InCtrl5, that will monitor changes to the filesystem and registry during the installation of any given piece of software.
Another odd thing I noticed today is that the Target Designer seemed to be crashing on me every few minutes. I just upgraded it to SP2, and I’m wondering if that’s the problem.
Using VMware to Build and Run XP Embedded
Jun 17th
XP Embedded Studio isn’t actually a horrible application at it’s core. Now, the user interface and documentation are God-awful, which is why I’m writing this post. As you saw in my last two entries, I’ve been working with XPe for the last few days, and there has been plenty of frustration to go along with it. What should have been a fifteen minute task wound up taking several days. However, one week and a few dozen BSODs later, I present this how to:
More >
More Frustrations
Jun 12th
Trying again to deal with XPe only lead to more frustrations today. I managed to get the virtual disk marked as bootable, and the virtual machine did start up, but then I was faced with another problem. As is, the image would complain that it couldn’t find System32driverspci.sys, so, I rebuilt the image and included the PCI subsystem that contained the needed file. After rebuilding the image and again booting to it, the image bluescreened as soon as it started loading. Removing pci.sys fixed the bluescreen, but reverted to the other problem. I still have some tinkering to do, but I don’t know how successful it will be.
During some of my sporadic downtime when Windows was crashed, loading, or rebooting, I took a look at the iPhone SDK and emulator. Some of the webapps for the iPhone are really impressive, notably Facebook and Meebo. I even found a plugin/theme for Wordpress to make a site more iPhone friendly and set it up for Collegegeek.org. I haven’t started coding anything yet, but the first step will be to start learning some Objective C.
Flickr
Last.fm
Twitter
Facebook