How I Spent My Summer Vacation: Bringing Linux to Nicaragua, Part II
You most likely will get a TFTP error of some kind. Your client has grabbed an IP address--static or dynamic, depending on your dhcpd.conf file--and should tell you what it is. Verify that everything fits your network. If you go back and revisit the boot sequence, you can see that it's time to configure TFTP on the server.
In SuSE, this step is dead easy. Open YaST -> Network Services -> TFTP Server. Select Activate and leave the default directory of /tftpboot. Don't worry if it doesn't exist, YaST will create it for you. Click Finish, and you have TFTP configured. If you navigate to the root (/) directory, you should see the appearance of /tftpboot. If you're using a different distro, you may have to install a TFTP server package, configure it and get it going, I can't really help you here. Consult forums and mailing lists, and good luck.
If you restart your client now, you should get a TFTP: File not found error error. This is because the pxelinux.0 file it's looking for (from dhcpd.conf) is not there. We're using LTSP 4.0, but the LSTP 3.0 initrd kits work fine. These are files that contain the necessary components to boot an LTSP system. Download this tarball, and you'll find a file called pxelinux.0; move it to the /tftpboot directory. Now, we must configure the PXE Linux boot loader, which is done on the server.
In the /tftpboot directory, make a subdirectory called pxelinux.cfg. The boot loader searches this directory for a config file named after the MAC address of the network card in multiple ways. I found that I didn't need separate files for the clients, so I used only one file, called default. This file is much like a LILO config file. Place the following lines in the file, using your favorite text editor:
/tftpboot/pxelinux.cfg/default prompt=0 label linux kernel <kernel image> append init=/linuxrc rw root=/dev/ram0 initrd=<initrd image>
where <kernel image> is the name of the kernel image and <initrd image> is the name of the initrd image included in the initrd kit. The kernel should be named bzimage something and the initrd image is initrd something.gz. Please don't use the LPP (Linux progress patch) kernel until you're sure everything works correctly; it has lpp in its name. This process displays a nice progress bar, which is wonderful--unless something goes wrong. In that case, it's far more useful to have the kernel messages.
Next, you need to place the kernel and init images in the /tftpboot directory. Do not place them in a subdirectory, simply in the /tftpboot directory. If you boot up your client now, you should see it try to mount the root filesystem and fail. That's because it doesn't exist yet; it comes from installing LTSP on the server.
The LTSP team has done a fantastic job of making this step as painless as possible. The install process is described on the LTSP site; it installs LTSP to /opt/ltsp/i386.
Go through the installer again, but this time select the X package instead of the base package.
Make sure the LTSP install path (the default is /opt/ltsp/i386) is exported by way of NFS, or your client will not be able to mount the root filesystem. This means you need to configure NFS if you haven't already done so. Again, this step is dead easy on a SuSE system; all you have to do is utilize the appropriate module is YaST.
The client now should boot up to a grey screen with an X mouse cursor; alternatively, you may get a login screen. If you got the login, you're done. Otherwise, you're almost there. Whether you get a login is dependent on whether the login manager on the server is set up to accept remote connections. f you didn't get a login screen, then most likely your login manager is not configured to accept remote logins. On SuSE, go to YaST, System, /etc/sysconfig Files Editor, find Desktop -> Display Manager -> DISPLAY_MANAGER_REMOTE_ACCESS and set it to Yes. Your client now should boot up into a fully functional desktop, as if you were sitting at the server.
If you aren't using SuSE or if YaST leaves you in the cold, the configuration file for KDM is located at /etc/opt/kde3/share/config/kdm on a standard directory structure. If you use Red Hat or another non-standard distro, then I can't help you. Check your documentation. Once your login manager accepts remote connections, you should have a fully functional thin client.
Practical books for the most technical people on the planet. Newly available books include:
- Agile Product Development by Ted Schmidt
- Improve Business Processes with an Enterprise Job Scheduler by Mike Diehl
- Finding Your Way: Mapping Your Network to Improve Manageability by Bill Childers
- DIY Commerce Site by Reven Lerner
Plus many more.