Howto run WindowsXP on a Pentium/486, using Ubuntu LTSP  

Posted

In one story, young Arun Gandhi (Mahatma Gandhi’s grandson), cavalierly threw away an old pencil stub, assuming his grandfather would get him a new pencil. Instead he received a teaching about how discarding that pencil was showing disrespect to the earth (all the elements that made up the pencil) and to the people who were involved in making it. He also received a flashlight, to go and retrieve the stub he had tossed aside, as he was not, in fact, going to get a new pencil.

The need: I had an old Pentium I machine lying around, which can barely run win95. I thought of many ways to revive it by installing damn small linux, tweaking the unsupported windows 98 and so forth. The results were unimpressive and the casual internet surfer was annoyed with the slow machine. Ofcourse, I could have stopped at configuring Ubuntu Linux through LTSP, however the greater need was to give the machine to a casual surfer comfortable with windowsXP. Hence, I had to give him a machine which felt as fast as a P4, and ran an OS they were familiar with - windowsXP, until they upgraded to Ubuntu :)

Cheapest solution: I had no intentions of discarding the machines, as all components were in good health. My 6 month old desktop is a Core 2 Duo machine with 2 GB ram, half a day of google search and I found out LTSP - Linux terminal Server project with VirtualBox to be the best bet! A thin client, basically is dumb machine which merely displays the processing done at a remote

1) Host Desktop: Core 2 Duo, 2 GB DDR2-533 Mhz Ram, 160 GB hard-disk with Ubuntu Linux 7.10 Gutsy gibbon, a floppy drive.

2) Client machines: Pentium I processor 133 Mhz, 40 MB Ram, floppy drive, ethernet card capable of remote booting, atleast a 1 MB PCI graphics card.

3) Router or switch: Assuming you have an ADSL connection, you should be having a 4 port router. or fetch a cheap switch to connect all the client machines.

Assumptions / Requirements:

1) You have a working Ubuntu 7.10 Linux desktop installation. For the windows folks, Ubuntu is a popular linux flavour and can peacefully co-exist with windows in a 10GB partition.

2) My pentium-1 didn't have a network card. I bought a Dlink DFE-520TX 100 Mbps ethernet card (the cheapest i could find lying around), and installed to the PCI slot. Whats important is , the chipset must support remote booting. A short list can be found here.

3) A licensed copy of Windows XP

4) A fast internet connection.

5) A daring sense of adventure!
Alrighty then! Lets get started.

Proposed Solution Architecture.


Step 1: Run windows XP inside Ubuntu.

Please check out this article, to run windows XP inside ubuntu, using virtual box.

Step 2: Setup LTSP in Ubuntu Gutsy.

2.1) You need a static ip. I am going to assume that the ip for your router is 192.168.1.1 To make sure you have a static IP, do the following in Ubuntu. Click on System > Administration > Network. Now click on properties. Change the drop down from dynamic to static and keep your IP as 192.168.1.2, Subnet mak as 255.255.255.0, gateway address as 192.168.1.1.


2.2) Open a terminal (Applications > Accessories > Terminal) and type

sudo apt-get install ltsp-server-standalone openssh-server

sit back and relax, this will take some time to download and install. Once you get the prompt back, type the following into the command prompt

gksudo "gedit /etc/ltsp/dhcpd.conf"

You should have entries as follows.

#

# Default LTSP dhcpd.conf config file.

#authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.20 192.168.1.250;

option domain-name "*";

option domain-name-servers 192.168.1.2;

option broadcast-address 192.168.1.255;

option routers 192.168.1.1;

# next-server 192.168.0.254;

# get-lease-hostnames true;

option subnet-mask 255.255.255.0;

option root-path "/opt/ltsp/i386";

if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {

filename "/ltsp/i386/pxelinux.0";

} else {

filename "/ltsp/i386/nbi.img";

}

}

In this step you are configuring the DHCP daemon, which will give IP addresses to all client Pentium I machines who contact our server. To test, if dhcp is configured properly, type the following command.

sudo /etc/init.d/dhcp3-server start

This command should exit with OK.

Next, execute the following command

sudo ltsp-build-client

This will take sometime, sit back and relax.

Step 3: Prepare the client machine

3.1) You have to know the chipset of the LAN card in your Pentium I. I used a similar lan card (DFE-520TX) in my server and client. You can get the chipset name from google or on a linux machine by typing the command lspci. See the highlighted row, the chipset is VIA VT6105.

Armed with this knowledge! we visit www.rom-o-matic.net

If you still havent figured out the chipset, dont worry, visit this link . Here, you should be able to find out the name of the chipset, by matching your LAN card name. Then, from the rom-o-matic site, we download the zdsk file, which will be written to a floppy and used by the Pentium I client for remote booting.

Select the NIC/ROM type, keep ROM output format as zdsk, and then click on “Get ROM”. you will be downloading a zdsk file. Assuming your floppy drive is /dev/fd0, you use the following command to write the file to the floppy.

dd if=eb-5.4.3-via-rhine.zdsk of=/dev/fd0

Take out that floppy now! Connect your Pentium 1 to the router, set the boot option in bios as floppy.

Step 4: The moment of glory!

Insert the floppy into the Pentium machine. Start it.

Cross your fingers and pray … you should hear the floppy whirring.. and it will do a remote boot to ubuntu! once you are in ubunut , launch winxp from virtualbox.

With thin-clients, your total cost of hardware is reduced drastically, and you have control over software on all the machines at a single location (imagine updating only one server - instead of 20 desktops) !




This entry was posted on Monday, June 9, 2008 at 8:08 PM . You can follow any responses to this entry through the comments feed .

11 comments

Anonymous  

Why not boot off a local 1GB drive. Those a practically free these days. Net boot capable NICs are a lot harder to find. Boot into DSL or whatever and use XDCMP to log into the remote X session. Why all this fiddling around with the other stuff?

June 11, 2008 at 11:55 AM
Anonymous  

Thanks!

I was trying to keep all the software / OS related stuff at a single location (Server). In that way , I wouldn’t have to update the client OS / patch it / ensure its virus free, etc…

Anyway, your comment is cool. Didn’t think about that approach, will surely use it in cases, where i cant find a Net-boot capable NIC :)

But hey, its tougher to find a 486/Pentium with a motherboard capable of booting from a USB drive! I’d rather plug in a net-boot capable NIC.

June 11, 2008 at 11:55 AM
Anonymous  

I was specifically attracted to the article:

Howto run WindowsXP on a Pentium/486, using Ubuntu LTSP
Posted on January 1, 2008 by liferedux

…sadly, it stop short of explaining what is the difficult part to me: How to launch Virtualbox on the terminal.

I have the WinXP virtual machine running on the server. However, I click on VirtualBox on the terminal–nothing happens!
Can you please help me out?
Mduduzi.

June 11, 2008 at 11:57 AM
Anonymous  

Mduduzi,
if you have installed virtualbox from the .deb file, you should be able to start it by typing virtualbox in the terminal or selecting Applications > System > innotek VirtualBox.

do let me know if you are facing any specific errors… need more info, if i am not able to help you, i could atleast point you to the right thread on virtualbox forums.

June 11, 2008 at 12:00 PM
Anonymous  

Interesting in the method.
I am currently setting up an LTSP scenario to bring me up to speed on yet another cool technology.
All in all, I am using Xubuntu as my main method of deploying this. It is fast, light weight, and I like sticking to linux. Coool guide and keep it up.

@ DickClark
By going LTSP, you have no data running on the local box that will stay there. Also, you update the server, and you can update the clients, making doing OS updates and patching centralized. So basically, you keep up the server, and the clients will follow. It takes a little bit due to (at least in Ubuntu) you have to update the image the clients will run, but it beats having to up date (and eat bandwidth) all the clients just for one security patch.

June 11, 2008 at 12:01 PM
Anonymous  

Nice article….looking at doing something similar for a couple of old machines I’ve got lying around, as currently building a Ubuntu server…

Cheers :)

June 11, 2008 at 12:07 PM
Anonymous  

@ripperzane
Thanks! All the best with your LTSP project! Do blog about the Xubuntu setup. If its faster than a normal Ubuntu (GNOME) LTSP, I will update this article :)

@Paul
Yes Paul, this is the best way to put old machines to good use. Revive them!

June 11, 2008 at 12:17 PM
Anonymous  

Well…the answer to my question is here! I think that my old P1 will have some duty soon! Nice article and a Green way to keep those oldies back to work!

June 11, 2008 at 12:18 PM
Anonymous  

Thanks for the article - I have been working with the K12LTSP project recently in an attempt to do the same thing, and was wondering if you have gotten local (thin client) USB devices to show up in the virtual machine. This is the only thing I can’t seem to get working. I use VirtualBox a lot, but haven’t tried it for this setup.

One other thing you may look into is with LTSP, you can set up an rdesktop session as the X window manager in lts.conf for each client. Since VirtualBox has a built in RDP server, you could bypass the whole step of logging into Linux and starting the VM manually. Just start the VirtualBox VM with the VBoxVRDP or VBoxHeadless (depending on version) command through rc.local on the server.

June 11, 2008 at 12:18 PM
Anonymous  

Thank’s for the post.
I’ve been looking for ubuntu ltsp guide for newbie, and your post have helped me a lot.
All the best.

June 11, 2008 at 12:19 PM
Anonymous  

At rom-o-matic.net you can build a floppy-disk, so every (old) PC with any NIC can boot from the network.

http://www.rom-o-matic.net/gpxe/gpxe-0.9.3/contrib/rom-o-matic/

I have build a ROM to boot a BOOTP-only client in PXE mode. The thinclient bootp to the LTSP-server, TFTP the ne2100 NIC ROM, the thinclient executes the ROM and starts a PXE boot session.

http://etherboot.org/wiki/howtos

July 9, 2008 at 2:13 PM

Post a Comment