Few pieces of software excite me with possibilities as Virtual Box. It offers many potential uses – especially for students, recipients, and counselors of The Computer Merit Badge.
Virtual Box is a cross-platform program that will let you run multiple operating systems on your real computer at the same time, without having to reboot. With computer-core counts increasing, virtualization is a great way to take advantage of these resources.
It is distributed free of charge by the Oracle Corporation, which acquired it from Sun Micro-systems. Sun (which also had owned OpenOffice and MySQL during the time of acquisition), obtained ownership of it by purchasing a small software company called Innotek GmbH.
Okay, so what is it?
Virtual Box is a program that allows its users to create and manage virtual machines (computers) on their own desktop computer. The computer on which Virtual Box is installed is called the Host. Virtual machines that are created within Virtual Box are called Guests.
What can you do with a Virtual Machine?
Once you’ve created and configured your virtual machine, you may do anything with it that you would do with a real computer. The catch is that the virtual machines when first created do not have an operating system on them. If you can install an operating system on a real computer, installing an operating system on a newly minted virtual machine is nearly an identical process. Specific “how-to” articles and videos on Virtual Box are common on the Internet, so I am not going to spend any time on this here. The following is an example of the kind of resources people have spent time creating in order to help others use Virtual Box effectively:
There are also incredibly HELPFUL projects out there, which provide virtual machines already configured. For example, VirtualBSD, is geared toward providing VMWare and Virtual Box compatible FreeBSD images – great for learning and everything else outlined below!
The remainder of this article will highlight some creative uses for virtual machines.
1. Learn to install and configure other operating systems
Don’t have an extra computer to try out that new version of Windows 7 or Redhat Linux? Don’t feel like messing with disk partitioning software (like gparted) to create a many-boot environment? Would you like to have access to many different operating systems at once, without having to reboot into each at a time? Virtual Box might just be for you.
Virtual Box is ideal for evaluating and experimenting with operating systems from the comfort of a familiar environment. You can create and destroy virtual machines with the click of a mouse. Screwed up an install or configuration? No problem – just create a new machine and start over.
2. Experiment with different programming environments
With different operating systems, come different programming environments. For example, Unix and related operating systems (Linux, FreeBSD), provide for some very nice low level C programming options. They also are ideal for learning to program websites since they come with languages like Perl and Python already installed (typically).
Future postings will be dedicated to quickly and easily setting up programming environments for learning. Virtual Box will definitely be in the toolbox for doing this the right way.
Teaching and Training
3. Provide pre-built training environments
Being able to provide pre-built environments is particularly useful in non-traditional technical training venues, like Scout Camps. As a Computer Merit Badge counselor teaching the CMB in a semi-primitive camp setting, I can remember remember the pains required to set up computer labs in the middle of the woods (no joke!). No more lugging old equipment or late nights trying to recreate the Internet among a set of old, poorly configured computers running inferior operating systems. Assuming a Scout can bring along a laptop (a stretch, even today), then it is fairly simple to ensure that all tools and environments required for instruction and testing are available to everyone.
Virtual Box can’t help in totally primitive settings, but future posts will cover how to effectively teach The Computer Merit Badge “unplugged“.
4. Distribute training images, pre-configured for self-paced learning
As pointed out above, the parent company that now owns Virtual Box distributes pre-configured virtual machines with their other products for training purposes. Not only can these pre-built environments aid in person instruction, they can also greatly enhance learning resources that are meant for self-guided and self-paced learning. No longer do people actually have to install and properly configure the software they wish to learn. They just download the virtual machine and start it under Virtual Box – one major hurdle to learning what you really want to learn is out of the way!
This means that anyone can develop a set of lessons and tutorials based on assuming a computing environment. There is an upfront cost to creating these Virtual Box images for distribution, but once done, anyone using your learning resources can use them on any Host operating system Virtual Box supports. You can serve everyone with your lessons now, no matter what operating system they have. This is a HUGE win.
Development and Testing
5. Create a development environment identical to your production set up (e.g., web development)
Virtual Box is also very handy for setting up development environments that mirror the targeted production platform. For example, experience Web Developers will typically demand a three-tiered environment. The first, and most important tier is the production tier – it’s the web server(s) that enables the web site or application that everyone sees. This tier gets updated only when all new software has been thoroughly tested and QA’d.
The second tier is for testing, and it’s supposed to perfectly mirror (as perfectly as possible) the production tier. This is to ensure that any changes made during development do not cause any problems. It’s meant to flesh out any issues that might disrupt the production site. The third tier is for development, and represents the environment in which the programmer works day-to-day.
You typically will not be hosting a website on a virtual machine (although this conventional wisdom is quickly proving to be false with a surge in VPS and virtual machine-based hosting services out there), we can say that you’re in some way paying for the production environment (e.g., through a web hosting company). You don’t want to also pay for separate environments to host your testing and development tiers.
This is where Virtual Box comes into play by providing a means to recreate the production environment pretty closely on your local machine. You can develop in your virtual machine on your laptop – you don’t even need a working internet connection since Virtual Box allows you to emulate the workflow associate with connecting to remote machines.
6. Test your programs on a variety of operating systems and environments
Virtual Box is also able to complement efforts to test the software that results from your development activities. You can have one set of virtual machines that is meant specifically for development and one (much more diverse set) of images that are meant for testing and quality assurance before releasing software.
This isn’t just useful for web development. For example, you can create Windows-based programs and test them in Windows Vista, XP, and 7 – all without rebooting your computer (and provided you have valid installation disks :).
Security and Privacy
7. Create disposable virtual machines
Because virtual machines can be created and discarded so easily, they provide the prefect environment for compartmentalizing (or sand-boxing) potentially risky activities into well defined – and deletable – virtual partitions. Be forewarned, however, even though it’s practically impossible for viruses that have infected one virtual machine to infect others or the Host computer itself, the virtual machine will still be susceptible to acting like any infected machine. For this reason, it’s important to ensure that you’re still diligent in order to prevent cross-machine infection.
8. Compartmentalize privacy and security concerns
The privacy conscious may also find virtual machines useful for created self-contained privacy zones. Instead of doing sensitive work inside of the Host machine, you are able to set up virtual machines that are able to act as secure and portable working environments. Be careful, though. A compromised Host machine might allow for these virtual machines to be downloaded directly, then anyone with Virtual Box installed might be able to start an instance of your virtual machine on their computer. If they’re serious about seeing what you’ve been up to, it won’t take them long to break in.
9. Safeguard your kids from your computer and your computer from your kids
One final use (of many) is that a concerned parent may create a virtual machine that is just for the children’s use. Virtual Box offers one to control network settings pretty easily, though this isn’t the ideal solution for protecting your kids online (though we’ll cover some strategies in the future). It might, however, protect YOUR computer from being overrun with Hello Kitty viruses. Note, it’s not hard to escape out of these virtual images, so a diligent child with half a brain might one day figure out how to get to the Host operating system. Online safety ideas will be the subject of future posts.
The one caveat is that performance will be an issue. Virtual machines are like parasites on your host computer. Each Virtual Box instance as a single, super-resource hungry process. The Host has no idea a full OS is being virtualized, but this single process is consuming memory, disk I/O, CPU, and networking on the real machine. Because of this, it’s best to have a Host computer with as many cores as possible so that each OS (including the Host) has it’s own dedicated CPU. This won’t help with demands on networking or I/O, but you can also control what each virtual machine is doing. Note that properly coordinating resources between a Host operation system and the virtual machines on it is still the subject of ongoing research for those furthering virtual machine technologies.
Virtualization is a very interesting and useful technique for taking advantage of today’s many-core computers. Virtual Box provides nearly enterprise-level virtual machine capabilities for FREE. In doing so, there are a multitude of ways virtual machines can be leveraged. The major areas include: Personal learning, Teaching, Software Development, and enhancing Privacy and Security.
Finally, I’d like to claim that Virtual Box and other emulation and virtualization technologies are most certainly part of the history of computing machinery. The idea of providing virtual machines has long been a goal, and with programs like this, we’re one step closer to the future of computing.
Future posts will explore each of these topics in-depth. Until then, I hope that you’ll be inspired to check out Virtual Box and find more interesting uses for it. Topics will include more advanced uses for Virtual Box (e.g., network multiple virtual machines on a single Host), experimenting with different programming languages and environments, and highlighting interesting “hobby” operating systems, such as the free ReactOS (a Windows XP/2003 compatible clone).