Custom Kernel Configuration for LTSP
So you have got LTSP installed but those darn marketing guys still 
think they are scientists as they see their Workstations booting up, 
filled with messy messages that hardly make sense (atleast to them).
Thanx to enduring efforts of Jim Mcquillian (for LTSP) and Nigel Smith 
(for making lpp patch for 2.4.18 kernel), its now possible to replace 
the initial bootup messages with a graphical boot up screen (similar to 
the Windows 98 splash screen with scrolling bar)
In this How-To, I shall be going through the steps of installing kernel 
version 2.4.18, applying the LPP (Linux Progress Patch) and finally 
getting your client to boot up.
Pre-requisites:
1.) You should atleast be able to read/write english.

2.) Kernel version 2.4.18
http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.18.tar.gz

3.) ltsp_initrd package
http://umn.dl.sourceforge.net/sourceforge/ltsp/ltsp_initrd_kit-3.0.4-i38
6.tgz

4.) mknbi package
http://telia.dl.sourceforge.net/sourceforge/etherboot/mknbi-1.2.tar.gz

5.) lpp patch lpp-2.4.18.patch.bz2

I presume that all packages are copied in / directory. Though some of 
you may curse me for this, while writing How-To's I prefer to adopt a 
particular standard so when I receive queries via email, I know exactly 
how to address the problem.

A short naming convention has been adopted in this How-To.
[brainless]# => implies commands to be typed at the console.
-- => is a comment explaning why I am using the particular command

[brainless]# cp /linux-2.4.18.tar.gz /usr/src
-- copies the downloaded kernel to /usr/src
[brainless]# cd /usr/src
-- changes directory to /usr/src
[brainless]# tar zxvf linux-2.4.18.tar.gz
-- untars the kernel
[brainless]# mv linux linux-3.4.18-ltsp
-- moves the kernel from /usr/src/linux directory to 
/usr/src/linux-2.4.18-ltsp

[brainless]# cd /
-- self explanatory ;)
[brainless]# tar zxvf ltsp_initrd_kit-3.0.4-i386.tgz
-- untars ltsp_initrd_kit
[brainless]# cd ltsp_initrd_kit
-- self explanatory ;)
[brainless]# mv config-2.4.18-ltsp-1 /usr/src/linux-2.4.18-ltsp
-- moves the config-2.4.18-ltsp-1 file to /usr/src/linux-2.4.18-ltsp
LTSP kernel makes some changes to the default kernel allowing it to act 
as a server. Though it is possible to manually make these changes via 
make menuconfig (explained later), the config file automates the task.

[brainless]# cd /usr/src/linux-2.4.18-ltsp
-- self explanatory ;)
[brainless]# mv config-2.4.18-ltsp-1 .config
-- Please note the "." in ".config"

[brainless]# cd /
-- self explanatory ;)

[brainless]# tar zxvf mknbi-1.2.tar.gz
-- untars mknbi-1.2.tar.gz
[brainless]# cd mknbi-1.2
-- self explanatory ;)
[brainless]# make
[brainless]# make install
-- for compiling mknbi utility. Essential for booting via the network.

[brainless]# cd /
[brainless]# bzip2 -d lpp-2.4.18.patch.bz2
-- unzips the lpp (Linux Progress Patch) 
[brainless]# cd /usr/src/linux-2.4.18-ltsp
-- self explanatory ;)
[brainless]# cp /lpp-2.4.18.patch /usr/src/linux-2.4.18-ltsp
-- Copies the patch to /usr/src/linux-2.4.18-ltsp
[brainless]# patch -p1 < lpp-2.4.18.patch
-- patches the kernel with lpp patch. 

[brainless]# make xconfig
-- This is an X based kernel configuration utility. For those who hate 
X, there is "make menuconfig".
Click on - Load configuration from file.
In the pop-up box, type ".config" (without quotes) and press OK.
This shall load the custom kernel file required for LTSP.

Click on Console Drivers -> Frame Buffer Support.
Scroll below and click checkbox besides "y" option for "Enable Linux 
Progress Patch (EXPERIMENTAL)"
Scroll below again and click checkbox besides "y" option for "Virtual 
Frame Buffer Support (Only for Testing!)"

Click Ok.
Click Main Menu
Click on Save and Exit button.

Next, on the console type:
[brainless]# make dep && make bzImage && make modules && make 
modules_install
-- These are typical statements for compiling your own kernel. If you 
shall like to know what these statements actually mean and/or for 
further information, read the Kernel How-To @ www.linuxdocs.org

Kernel compilation will take some time. Typically 20-45 minutes 
depending upon your system configuration. Meanwhile, some text messages 
will continue to appear on the console. Stare at them for a couple of 
minutes. Though its not possible to know what they actually mean, it 
will give you a sense of gratification. While your kernel compiles, its 
an appropriate time to go and order pizza ;)

[brainless]# cd /ltsp_initrd_kit
-- Changes to /ltsp_initrd_kit 
[brainless]#  ./buildk
-- This is a script file which automates the task of creating your own 
etherboot image. A series of questions will now be asked. The default 
values are enclosed in [].If everything has been done in accordance to 
this how-to, simply press "enter" for each question. 

The kernel bootrom image will now be prepared at 
/ltsp_initrd_kit/vmlinuz-2.4.18

[brainless]# cp vmlinuz-2.4.18 /tftpboot/lts
-- Copies the image to your boot directory.

Next you need to edit the dhcpd.conf file on your DHCP server to point 
to the new kernel.
Its assumed out here that you already have a workstation configured via 
dhcpd and the DHCP server is the same machine where the Kernel has been 
compiled.

Here is a sample entry of my dhcpd.conf file:-
	host brainless {
		next server	 	192.168.2.213;
		hardware ethernet	00:50:BA:32:31:C6;
		fixed-address		192.168.2.81;
		filename		"/lts/vmlinuz-2.4.18";
		option root-path 	"192.168.2.213:/opt/ltsp/i386";
		       } 
[brainless]# /etc/rc.d/init.d/dhcpd restart
 
Simply reboot your client and be ready to be greeted by a nice swirling 
debian startup screen :)

This How-To is a result of conglomerate efforts of Jim McQuillian 
(jam@ltsp.org), Nigel Smith (nigel.smith@maplin.co.uk) and Scott 
Balneavs (sbalneav@ltsp.org).
If you face any problems, I shall only be glad to help you out :)
Until next time, 
adigo amigos.... :)

Anurag Phadke
anurag@netcore.co.in
Research & Development
NetCore Solutions
http://www.netcore.co.in
http://www.emergic.org