Virtual machine to use Linux - virtual-machine

I am using Windows 8, and I need to install Linux. I have searched a lot, but I still cannot decide which virtual machine is the best for Linux. I am thinking between VMware and VirtualBox. Could anyone advise me which virtual machine I can use for installing Linux and for free, or give me any helpful links?
Thank you!

As you mentioned, you could use VMWare Workstation or VirtualBox. However, VMWare workstation is not free. You could have an option of using VMWare Player, but you'd have to start elsewhere and I would not recommend that. Here's a pretty good article comparing them:
http://www.infoworld.com/d/virtualization/review-vmware-workstation-9-vs-virtualbox-42-203277
Additionally, if you have 64-bit Windows 8 Professional or Enterprise and recent hardware, you can just use Hyper-V, which works quite well and will cost you nothing. Here's an article that will help you get it installed:
http://www.techrepublic.com/blog/windows-and-office/get-started-with-windows-8-client-hyper-v-the-right-way/
As far as recommendations, if you truly want free, you are looking at either Hyper-V or Virtual Box. If you use Hyper-V, that is Microsoft specific and works quite well -- on windows machines only. If you want to end up with a virtual machine that you could use over on different systems/platforms, I would use Virtual Box.
If you are willing to spend the money, I'd most recommend VMWare Workstation. It is cross-platform and works really well and generally has more features, plus it will have better performance that Virtual Box, which you can expect to be the slowest of the bunch.

Related

One click virtual machine demo?

I want to give a demo for my customers use virtual machine, but I don't want the customer to install the virtual machine software, can I make a demo which bundle the virtual machine software and my virtual machine, then just a click to run the virtual machine. It will be cool. is there any tool can do that?
I'm not aware of a virtual machine that doesn't need to be installed. If using Windows, the Microsoft Virtual PC is a relatively compact, free, quick-to-install option for a VM.
One other option would be to install an OS and your demo onto a USB flash drive. As long as the computer used can boot from USB (which is pretty common in newer computers), then you can have complete control over the OS in this fashion.
EDIT: Sun VirtualBox is free VM software. You do have to install it, but I've found that it works well, plus it's free.
You could try using Portable VirtualBox as per this forum thread. I have not tried it myself but it seems like some people have had luck with it.

What's your choice for testing your program in a virtual machine?

When testing our software on several different systems (98-XP-Vista-Seven-Linux-etc), I think that the best choice is to use virtualized systems.
What's your choice: VMware, Virtual Box or MS Virtual PC/Server? and why?
We use VMWare here at work. Really any VM software that supports snapshots (or some way of saving the state of the machine) will work well. Snapshots make it easier for testing installs and rolling back. It can also help if you program goes and modifies files for returning back to a known-good state.
Virtual Box is the way to go. It has snapshots and is platform independent (Good for Mac users who want to test on other OS's). And it is free.
If it's available, Hyper-V on Windows Server 2008 is a powerful and full-featured entry including snapshot trees and all the niceties you'd expect with a quality UI.
If you're planning on using the VM on your local dev machine so you can (e.g.) bring it home on your laptop to work from there, then the more client-oriented virtualization software is probably the way to go.
If you're planning on using the virtualization in a primarily professional environment, a number of Hyper V machines in a computer lab that you can remote into is a powerful paradigm that we've been using at my office for a few months now.
My own preference is to use a local VM (Virtual PC is the easiest one for me) as my development environment because I can bring my work laptop home and use the VM there also (I don't VPN into the office). I then use the lab's Hyper-V machines for tests, deployments, etc because they have a better story for taking and restoring snapshots.
Go VMware. My reason is simple: before VMware released VMWare player and VMware server (the virtualisation platform formerly known as VMware GSX), the market for VM hosts was limited and expensive.
When VMware released these for free, all the other manufacturers (yes, I'm looking at Microsoft here) had to follow suit, so if it wasn't for the beneficence of VMware, we'd still be looking at having to buy our VM host software.
So, support VMware for being the good guys.
Oh, and their enterprise products are the business, they work well with Linux, have some excellent memory-saving tricks (here's the tech details), multiple snapshots and snapshots off a base image, and have features such as VMotion (load spreading) that other products don't support nearly as well (if at all).
Microsoft's VirtualPC. It free and simple.
One bit of functionality that is nice is the differenced VHDD that makes it easy (and space wise cheep) to keep backing up/reverting the image
VMWare, that's what we use here. We have both the full blown ESX for virtual servers and the VMWare workstations for development / testing. ESX resource management is very good, and easy to configure.
I've used VMWare (when the company would pay for it), VMWare Server (when the company would not), VirtualBox (because it's free, decent, and supports snapshots), Parallels on the Mac (which I bought), and Xen.
All work fine.
My current workhorse is VirtualBox, largely because it's free, supports snapshots, and runs on the various host platforms I have to use.
VMWare works pretty well, but for high cpu server apps we have found that Microsoft's Hyper-V works better because it has better cpu reservation abilities.
The key is that the system has snapshots, so you can easily roll back to several states (most do) and we have found that both VMWare and Hyper-V have excellent API's allowing us to kick off our automated tests when a new build completes.
Microsoft Virtual PC for Microsoft OS's, Virtual Box for *nix.
Virtual PC seem to be slightly faster and more stable, but it does not support linux.
We might have used VMWare if it was free,but our company would not spend the money.
Virtual box is great. It does have some stability issues if you run it inside Mac OS X. if you need a single solution to run multiple OS's this would be the one.
Linux/OpenSolaris on top of Virtual Box on top of Linux.

Pros and Cons of Developing on a VM on a PC

I recently build myself a semi beef up PC (Q9450, 8GB DDR2 1066, 1TB HDD, Dual 8600GT, Vista Ultimate and Dual 22' Monitors) and I'm evaluating whether i should develop on a VPC/VMWare session on top of Vista or not?
One benefit I can see is that I can run the same VM on my Vista laptop so my development environment is the same on any of my machines. I also plan on purchasing a MBP before the end of the year as well.
Found a couple of articles online that semi-help Here
Any other thoughts would be really appreciated?
For webdevelopment I like to have the serverpart separeted out into a VM. My current setup is a Macbook Pro with several Debian VM's inside. I like the isolation aspect of it. I can try new software on the servers and have the ability to revert them back if something is messed up.
I do the programming via network-share (samba) in Textmate on the host system.
Another advantage of a VM is having a clean installed base. I use my desktop and laptop for lots of things aside from development. You never know when a piece of software you install is going to conflict, or if the little tweaks and what not you play around with are going to trash your OS. Reinstalling/configuring all your tools so they are exactly the way you want them can take quite some time. If you have a backup of your Development VM Image you can mess up your PC as much as you want but still be able to code without downtime. It also allows you to run Win/Visual Studio/Etc on a box that you would otherwise prefer Linux or MacOS on.
You can also make multiple copies of the same Image and use each one for a separate project.
Being able to transition between a laptop/desktop/server/remote connection, and always be in the same environment is also very helpful.
One problem I found (at least when using VMWare Server) is that no matter how fast your machine is, the screen refresh rate is still around ~30hz. That makes for a slightly unpleasant experience after using it for a while.
Where I'm working at now I use a VM for all of my development because I don't have admin rights to my base copy of XP.
Pros:
I like using a VM's because it give you some flexibility - you can switch between machines - have programs running on both and have a cool environment to work on.
Cons:
You have to boot up multiple operating systems. This takes time, memory and resources.
Clipboard operations on VM's can be interesting at times. Sometimes copying to clipboard does not work or gets mixed up between VM's. (Using VMWare).
File operations can be interesting when you plug in USB drives and other external devices. VM's sometimes do not see the devices, sometimes it does.
If your VM image become corrupt - you can easily loose everything in it.... unless it is backed up.....
It's great for presenting development talks, you can revert to a snapshot and give the talk from the exact same starting point each time.
Bulk-up your RAM on your future MacBookPro if VMWare will be used. I haven't (yet) and the performance with several other (mac-side) apps open really starts to feel sluggish.
All the best.
I was doing some work with Visual Studio recently with a Windows XP vm on Linux and somehow the guys who made the vm (vmware) made the windows machine actually run faster. We did some time tests to make sure and it wasn't major, but a few things (autocomplete for example) really did pop up faster.
If you are on Windows, Virtual PC is pretty decent for development work. VMWare Virtual Server is not really designed for use as a desktop and you will get very tired of it with any prolonged use. Sun's VirtualBox is another option competing with Virtual PC. VMWare has a workstation product but it is not free.
Typically, I do development on the real desktop (non-virtual) and then deploy or test to virtual machines which I can snapshot and roll back easily.
For a long time, we were developing on very early versions of Visual Studio 2005 and the associated .Net bits that went along with it. To protect our real machines from the various problems associated with pre-release software, we did all of our development work inside virtual machines. It worked amazingly well. I've been considering moving back to that model as it makes upgrading the physical hardware a snap (not to mention making it easier to deal with hardware failures by just replacing the entire machine): you just copy the VM image over.
On my current machine (A Core2Duo with 4GB of RAM), the performance drop when running one VM is almost not noticeable. Running two VMs, however, is painful.
I also can't figure out how to get VMWare Server to work across two monitors well.
I wouldnt want to develop in a VM so much as test things in a VM. For instance, it might be nice to set up a couple VM's to emulate an n-tier architecture, or a client-server setup or finally simply to test code on multiple OSs
It depends what you are developing and in what language.
VM's tend to take a fairly hard hit on disk access, so compiling may slow down significantly, especially for large C/C++ projects. Not sure if this would be such an issue with .NET/Java.
If you are doing anything that is graphics intensive (3D, video, etc) then I would steer clear of a VM too.
I don't know if it is so useful as a development platform unless you are doing something that ties into software you don't want to have installed on your regular working machine or that needs to work around a certain event that you need to be able to reset on a regular basis. It can also be handy when you are working with code that risks crashing your computer as it will at least only crash your VM.
It is brilliant for testing different configurations and setups- working with installers and so on, that is where virtualisation really shines as far as I am concerned, being able to roll things back whenever you need to and run through stuff repeatedy is amazingly useful for identifying problems before your end users run into them.
While doing development at home, I have to VPN into my company to be able to use the collaborative tools that are on the intranet. I also have a desktop + laptop that are hooked together through Synergy.
The problem that I have is that our VPN software wants things to be so secure that it will force all network routing through the VPN gateway -- even if I'm using additional NICs to network my desktop and laptop through a separate private network. The end result is that I can't use Synergy between my desktop and laptop and VPN into my company at the same time.
The solution suggested to me by a co-worker was to setup a VM instance on my desktop and use that for all my VPN needs. Works like a charm!
Speaking from personal experience developing java in an Ubuntu VM on Windows 7, I've found this to be quite productive. Mainly because my local IT support on the ground supports Windows 7, so I can do things like access all the local file shares and printers in Windows, and then config my Ubuntu VM to my heart's content.
Huge productivity benefits around remote access and desktop sharing. Windows allowed me to very quickly and easily use tools like logmein.com and join.me to access my machine from home and to desktop share the VM with other people in the company (both work seamlessly with the VM in a nearly full screen window). Neither of these services are supported on Linux, and I wouldn't want to deal with all the associated VNC/X setup and network config on Ubuntu.
My machine is fairly beefy. Quad core, with 16Gb RAM - 8Gb for the VM. Java dev in the VM is pretty quick.

How practical is Virtual PC on a personal development machine?

Is virtual PC practical on a home personal development computer. I do some custom .net programming at home and I was wondering if in terms of performance and overall use, Virtual PC is useful. Do the applications inside Virtual PC session run slower. It will help me with my personal dev machine. Would you recommend any other products?
In my estimation virtual machines are one of the best tools that a developer can have. I have my base dev machine and on it I run VPC for different platforms to test installations and application functionality. For web development I keep VPC;s running each of the major browsers that I support, so I continually test my websites on various browsers. I even still maintain an old VB6 app and I have replicated my old VB6 build environment to a VPC image. Make sure you have lots of RAM. My machine runs with 4GB and that works well for most everything I need. I also have Sourcegear Vault set up for source code management. I have the clients loaded on the various VPC's that I use for development and they all check data in and out from my central SQL Server box. It works great.
It really depends on what your home computer is like. I've used VPC to test different versions of Visual Studio (e.g. to make sure that a solution is VS2005 compatible, and to check out VS2010).
I wouldn't want to use it all the time, but then I am working on a laptop. Given a really meaty multicore home desktop (preferrably with hardware support, of course, and lots of memory) it could be reasonably practical for day-to-day use.
VMWare Player is free and some people find it faster - I haven't used it enough to compare the two properly myself. If you're spend a lot of time "in" the VM, it would probably be worth giving both a proper test-drive.
VPC is a very good choice. I use it to test deployments and for presentation purposes.
If you have a PC with a new Intel chip and at least 2 gigs of RAM it actually works just as fast as a regular PC would :).
I recommend 4 gigs of ram though, they're cheap as hell these days and it really matters.
I've had some success with this; I had to develop some older .NET 1.1 software on Vista, which wasn't supported. I had to run XP in a virtual PC container in order to get the project done.
The biggest issue was available RAM; I'd recommend maxing out your home PC to use as much as it can- this will likely be less than 4GB unless you're running a 64Bit OS. I found that getting an extra gig of ram made life much better. Ram is cheap right now, so I'd start there if it didn't work well enough for me at first.
Yes applications will run slower but the hit isn't as big as you might expect. It is pretty reasonable to do development on a virtual machine. Obviously the performance is relative to how fast your computer is, a mulitcore machine will do nicely.
If you develop driver or core routines, where every mistake can and usually will result in a crash. A VM is the best you can use.
I tried Virtual PC and VMWare. They are both pretty good for such stuff.
Virtual PC should be fast enough, unless your driver or code is really time sensitive. A cross-platform, free alternative to Virtual PC is Virtual box.
If you've got a VirtualPC license already, by all means use it. If not, you might have a look at Sun's VirtualBox. It's Free/Libre and cross-platform. I use it to run windows and linux on mac os x and linux and have been quite happy with it.
You can run your dev tooling natively on your pick of O/S. and use VM's to test on other environments. Get lots of memory if you're going to do this, say 2GB or more - if you haven't already.
AMD chips have some facilities (nested page tables etc.) that improve VM performance. 2nd gen Opterons and some Athlon 64 chips will support this for reasonable money. You can even get brand-name hardware like an HP XW4550 with this sort of chip for fairly reasonable money. I'm not sure to what extent Intel has caught up with this yet.
Assuming your host machine has enough raw power then a virtual machine works fine. I have a 2.5GB ram, 2Ghz duel core work laptop and don't want to install vs2008 for personal development so have a virtual machine for that. I've given it 1 GB of dedicated memory at the moment and it runs great, no problems. If needed I'll up the ram allocation but for now I'm happy.
Hope this helps :-)
I use VirtualBox for all development and find the performance much better than VPC. My machine is about a 2 year old dual core with 4gb ram and performance is not noticeably slower than running natively. The virtual machines are Vista and the host OS is Windows 2008. I would definitely recommend using virtual machines as creating a fresh new machine for a new project is very easy.
I have a toshiba notebook with 2Gig of Ram. I am wondering if its worth to install Virtual box and use it to browse web, do quicken, some small dev work etc.? How would I install Windows OS on virtualbox virtual session? Are there good tutorials out there? Would 2gig of ram be enough to run virtual sessions on notebook computer with following configuration:
2 gig of ram
Intel Pentium 4 cpu
60 gig hdd

Any Tips for Doing *All* Your Work in a Single Virtual Machine?

I bought a new Vista PC recently but was having lots of problems getting everything to work on it, so I continued doing most of my work (development and other) on a slow XP machine that I've had for years.
Until now, that is - I used VMware Convertor to take an image of my old XP machine, and now I'm running it on my Vista machine, and doing pretty much all my work within that XP virtual machine. I'm using VMware Worstation.
So each morning I boot up my Vista machine, and then I boot up my XP virtual machine and spend the whole day working in the XP virtual machine.
Yes, you can probably guess: I'm the complete opposite of a VMware power user... I've not figured out snapshots, linked clones, or anything more than the absolute basics of running a VM. But I set this system up OK, and it's working well. Everything's running a lot faster than it was on my old machine anyway.
However, I'm concerned about the VM getting corrupted or something and causing me to lose everything. Of course I can back the whole VM up, and I can back up files from on the VM, and I will, but I'm wondering if it might be easier and safer to use a mapped drive or public folder or something for all my work, so that if the XP VM goes kaput, my files will all be available from the Vista machine.
This would also be good because I could share files easily between the Vista and the XP machine (I do use Vista for the odd thing). But I'm wondering if it'll make it much slower to read and write files from my XP machine? (e.g. if I'm compiling a big Java project, which will involve lots of IO at once.)
The information on how to set these things up is readily available, but I haven't found it so easy to figure out the best approach for what I'm doing. Most people are using VMs for much more advanced purposes than mine.
Also I'm wondering if there are any other tips or important considerations for this doing-all-your-work-in-one-VM type of setup? e.g. what's likely to go wrong, and how can I avoid it? Anything else?
I have an Ubuntu Linux box at home which has three VMs, all totally self-contained.
The first is for my wife's business, she needs access to all the MS Office stuff and MYOB.
The second is for work, they're too tight to buy me a laptop and I'm not going to let them install their hideous security and auto-update products on my real box.
The third is my Visual Studio development VM.
It runs like a dream (although only ever tested one VM at a time). And I just backup all the VM files from Ubuntu (along with my Linux work as well) which basically gives me images of the VM hard drives.
Surely if you are doing all your work in a VM, it's time to think about changing your host machine to one that's usable, no?
As others have pointed out, it is time to think about changing your host OS to one you are comfortable with and can get your work done on. Depending on what you do on a day to day basis on your machine, I can bet Vista is going to be anything more than a big hurdle. Why tax your work and yourself by running VMware on top of a beast that Vista is only to do all your work inside the VMware?
Having said that, I do suggest that you look into VMware snapshots and cloning. Those two are powerful features, not least the former in your case, which can be used to avert, in addition to solving, a lot of common problems you can run into while running any OS inside a VMware.
I perform a crude backup once in a while where I compress the VMware image on disk with toolsk like 7-zip, and store them on backup media. However, for backups or restore points within the system, VMware's Linked Cloning is definitely a handy feature -- since Windows is susceptible to getting corrupt/infected often, with linked cloning, you can be pretty sure that you can easily revert back to the last state before the corruption took place, and continue your work unimpeded from there.
I have been using VMWare at work for a couple of years now. I use it for development and testing. As long as your base PC is good enough it is a really good way to separate your "PC Life".
I would certainly be storing your data files on a server somewhere. This can be either a mapped drive, source control, or whatever. When you start using snapshots it is really easy to wipe a session, so treating your base PC as a kind of NAS avoids this problem.
I have now decided to start using VMWare at home. I have a VM for business apps (Office, QuickBooks etc), one for Visual Studio development and several others for web servers, sql servers etc. My base PC has 8GB RAM & a 2.8GHz quad core processor, so running four or more VMs is no problem.
I'm wondering if it might be easier and safer to use a mapped drive or public folder or something for all my work
Please please please, use a version control system (that is also backed up) if you're working mainly with text files. A mapped drive or public folder is accessible, but not the best way.