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) !