Even if you’ve been living under a rock for the last few years you’ve probably heard about virtualization, but you may not have taken the plunge quite yet. LiveCD images are a great way to toy around with new operating systems, but using virtualization can make it an even nicer experience. The VMWare Player is free, and allows you to run pre-configured virtual images (appliances).
After my recent experience installing Puppy Linux on an old laptop, I wanted to experiment a bit more using my desktop but didn’t want to give up my normal Ubuntu desktop experience. Being able to run two operating systems at the same time is useful.
Google will help you discover how to do this, however my goal is to provide specific Puppy 4.00 instructions, and possibly inspire someone to try out virtualization if they haven’t done so yet.
There were two search results that I found useful. The first talks about Puppy Linux 2.17.1 and there are a few things that are different in the 4.00 version. The second is more VMWare related, discussing how to get a LiveCD image running under VMWare. The same information is duplicated on the VMWare site itself.
The very first step is to download the Puppy Linux puppy-4.00-k126.96.36.199-seamonkey.iso file. The file is only 87.1MB so it shouldn’t take too long. If you want to just burn a CD and then boot the LiveCD go head, you’re done stop reading now. If you are interested in playing with VMWare then you can skip burning the CD, but you will need to download VMWare Player. There are versions available for Windows and Linux (intel). The last bit you need to download is the LiveCD VMWare virtual appliance which I’ve hosted locally as it is only 4k.
Now unzip the virtual appliance (4k zip) somewhere. Then inside of the directory, rename the .nvram, .vmdk and .vmx files to have the same prefix name – I used “puppy4” but its really up to you. If you want, you can rename the directory these files are stored in as well.
We need to modify the .vmx file as it points at the other files, there are three lines we need to change (this should seem pretty obvious):
ide0:0.fileName = “puppy4.vmdk”
displayName = “PuppyLinux 4.00”
nvram = “puppy4.nvram”
Now copy the puppy-4.00-k188.8.131.52-seamonkey.iso file to overwrite the empty livecd.iso file.
At this point we’re ready to run VMWare Player and point it at the .vmx file to start up our first virtual image. Puppy 4.00 won’t work out of the box under VMWare (or at least it didn’t for me) so we need to watch carefully and interrupt the Puppy Linux boot process. We need to supply some extra kernel parameters on the boot (puppy acpi=off):
Puppy should now boot and prompt for a keyboard choice (whatever you want), then it will ask about how to do graphics – you need to select Xvesa as the display type, not Xorg which is the default. Assuming all has gone well you’re now running effectively the LiveCD but inside of VMWare Player.
If we want to avoid having do do the setup each time, we can go further and install Puppy Linux onto the virtual drive that is packaged in that 4k appliance zip. The first step to doing this is to partition the 2Gig virtual drive in preparation for installation. Do this using GParted which is part of the Puppy LiveCD:
I decided to use a fraction of the 2Gig drive as Puppy doesn’t require a lot of storage. I used a 300MB ext2 partition, and a 128MB swap space – this mimics what I have on the laptop. The swap is not required as Puppy uses very little RAM and the appliance image being used should default to 256MB of RAM.
Now that the virtual drive has been partitioned, we can run the Puppy Universal Installer.
This will present you with a lot of install target options. I’ve used both the “USB Flash drive” and “Internal (IDE or SATA) hard drive” successfully. In the context of this virtual appliance, we want to select the “Internal (IDE or SATA) hard drive” as that is how the virtual disk appears to Puppy. The next thing we should see is a dialog indicating that the installer has found our newly paritioned drive. We want to click on the icon next to the “Install Puppy to hda1:” at the top.
When prompted for Frugal or FULL, we want to choose FULL. By doing this we force puppy to lay down a more traditional Linux filesystem and make it possible to use Grub for booting.
The installer will do its thing, then ask if we want to install Grub (we do). Generally for this part accept the defaults, with one exception: when asked where to install, select the MBR.
Now we’re done with the puppy installer, but we want to modify the grub config manually to add the acpi=off flag to the kernel parameters. While we’re doing this it may also be a good idea to uncomment the timeout line to allow this system to automatically start instead of waiting for us to hit enter in Grub.
We need to use the Puppy mount icon to mount the drive, this is the icon that looks like a USB thumb drive (third icon from the upper left corner).
Once we’ve mounted hda1, simply navigate to the /mnt/hda1/boot/grub/menu.lst and click on it once – this will open an editor on the file. Add the acpi=off to the line with the kernel parameters and save. Unmount had1 using the mount tool. Now we tell Puppy we want to power off – when prompted, don’t save.
VMWare Player should terminate on power off. We then need to edit the .vmx file to remove the livecd.iso such that we can boot from the newly installed virtual drive. This requires a one line change:
ide1:0.present = “FALSE”
Now run VMWare Player again, and select the Puppy Virtual Machine, it should appear in the list of Recent Virtual Machines. Again we will be prompted for keyboard and graphics config, but this time we’re working against a persistent file system so our choices will be remembered for future runs.
You’ll probably have to run the network wizard inside of Puppy to get connected to the internet (assuming you have VMWare Player configured to allow this as well). Again, this will be persisted to the next run as we’re working against a live system.
Using the Puppy Package Manager (desktop icon labelled install) you can add Firefox and plenty of other add ons. So, that’s it – you’re done. You can use the same base VMWare image to try out any LiveCD without leaving the comfort of your host OS.