个人工具

“UbuntuHelp:UbuntuLTSP/LTSPFatClients”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
(新页面: {{From|https://help.ubuntu.com/community/UbuntuLTSP/LTSPFatClients}} {{Languages|UbuntuHelp:UbuntuLTSP/LTSPFatClients}} This is a preliminary page on how to create FAT 'thin' clients with...)
 
第1行: 第1行:
 
{{From|https://help.ubuntu.com/community/UbuntuLTSP/LTSPFatClients}}
 
{{From|https://help.ubuntu.com/community/UbuntuLTSP/LTSPFatClients}}
 
{{Languages|UbuntuHelp:UbuntuLTSP/LTSPFatClients}}
 
{{Languages|UbuntuHelp:UbuntuLTSP/LTSPFatClients}}
This is a preliminary page on how to create FAT 'thin' clients with LTSP under Ubuntu Gutsy 7.10+
+
=== Preamble ===
 +
This is where you can learn how to create a customised chroot environment for use in LTSP. This  'fat' chroot will then allow for cpu usage and ram usage to happen on the terminal itself, instead of on the server. It has been tested on 7.10, 8.04, and 8.10.
 +
==== Fat Client Plugin ====
 +
'''There are now 2 ways to create Fat Clients, one being easier than the other, in that it doesnt require LDAP or any extra installation, It just requires downloading the fat client plugin from here and following the instructions on that page:''' http://www.nubae.com/ltsp-linux-terminal-server-project-netbooted-fat-client-for-ubuntu-hardy-and-intrepid
 +
The document below explains how to do it all from scratch. It is suggested one start with the workstation plugin mentioned and then customise the chroot further as well as installing NFS and LDAP for authentication and sharing of /home from the server.
 
-----------------
 
-----------------
There is now a plugin for all of this which can be found here: http://wwwuser.gwdg.de/~mrickma/edubuntu/030-workstation.gz
+
==== Workstation Plugin ====
Put it in /usr/share/ltsp/plugins/ltsp-build-client/Ubuntu and use the switch --workstation followed by Ubuntu or Kubuntu
+
The workstation plugin for this can be found here: http://wwwuser.gwdg.de/~mrickma/edubuntu/030-workstation.gz
If you use the plugin above you dont need any of the below mentioned stuff... the plugin takes care of doing that for you... The plugin _does not_ do any nfs mounting of /home or creation of local ldap for authentication... you'll need to chroot into your low fat client and do that manually for now...
+
Put it in /usr/share/ltsp/plugins/ltsp-build-client/Ubuntu, and use the switch --workstation followed by Ubuntu or Kubuntu.
 +
If you use the plugin above, you do not need to do a lot of the below mentioned stuff... the plugin takes care of doing that for you... The plugin ''does not'' do any nfs mounting of /home or creation of local LDAP for authentication... you'll need to chroot into your low fat client and do that manually. If you don't need LDAP, or don't want to debug your chroot, it is advised to follow the link above and install the fat client plugin instead.
 
The plugin was created by: Michael Rickmann
 
The plugin was created by: Michael Rickmann
Ubuntu Hardy 8.04 UPDATE: plugin not work correctly in Ubuntu 8.04.
 
You must edit line 102 in plugin.
 
Change this:
 
<code><nowiki> chroot $ROOT usermod -G admin,adm,dialout,cdrom,floppy,audio,dip,plugdev,scanner,powerdev $TMP </nowiki></code>
 
to this:
 
<code><nowiki> chroot $ROOT usermod -G admin,adm,dialout,cdrom,floppy,audio,dip,plugdev,scanner $TMP </nowiki></code>
 
On Hardy's /etc/group group powerdev is missing.
 
 
------------------
 
------------------
This should work for you, but all this takes into account that you already have nfs-kernel-server and the Open LDAP server properly installed on your server. There are plenty of how-to's to do this so its out of the scope of this help document.
+
==== Disclaimer ====
 +
This should work for you, but the documentation assumes that you have already installed and setup nfs-kernel-server and the Open LDAP server properly on your server. There are plenty of howtos to do this so its out of the scope of this help document.  
 
A good one which deals with booting up from different sources - http://wiki.koeln.ccc.de/index.php/Ubuntu_PXE_Install
 
A good one which deals with booting up from different sources - http://wiki.koeln.ccc.de/index.php/Ubuntu_PXE_Install
 
A good LDAP server how to is located here: https://help.ubuntu.com/community/OpenLDAPServer?highlight=(ldap)
 
A good LDAP server how to is located here: https://help.ubuntu.com/community/OpenLDAPServer?highlight=(ldap)
'''Introduction'''
+
''It has been tested with 7.10 and 8.04, but not 8.10. 8.10 has only been tested with the fat client plugin mentioned above.''
 +
==== Introduction ====
 
Although generally thin clients are great for older hardware, in a real world setup you are likely going to see a wide variety of machines, both new and old. It is a waste to be running LTSP on Intel Core 2 Duos, and if your case is similar to mine, the bandwidth limits (even with with gigabit switches) don't allow for a usable environment for video, audio or even 3D graphics.
 
Although generally thin clients are great for older hardware, in a real world setup you are likely going to see a wide variety of machines, both new and old. It is a waste to be running LTSP on Intel Core 2 Duos, and if your case is similar to mine, the bandwidth limits (even with with gigabit switches) don't allow for a usable environment for video, audio or even 3D graphics.
 
The way LTSP works, the thin clients actually use the Server's RAM and CPU time, as well as its bandwidth, meaning its great when the terminals are old or actual thin clients (ie. run at 333mhz or 400 mhz) but if you have newer computers also, and you want to take advantage of their power (ie. laptops) but still want to administer everything from one location, then making some of your thin clients fat is for you.
 
The way LTSP works, the thin clients actually use the Server's RAM and CPU time, as well as its bandwidth, meaning its great when the terminals are old or actual thin clients (ie. run at 333mhz or 400 mhz) but if you have newer computers also, and you want to take advantage of their power (ie. laptops) but still want to administer everything from one location, then making some of your thin clients fat is for you.
1. The first step is to create the new chroot environment which will be modified into a fat client One important thing to note is that some users report conflicts using a name other than i386 (this document suggests "fati386" but this is unadviseable for now. Just use "i386"). <!-- are the python scripts hardcoded to use i386?! -->
+
==== Building the Chroot ====
 +
1. The first step is to create the new chroot environment which will be modified into a fat client. You can name your fat chroot anything you like with the --chroot attribute, and that will be located in: /opt/ltsp/name-of-chroot. In this document I assume it is called fati386
  
 
<code><nowiki> sudo ltsp-build-client --base /opt/ltsp/ --chroot fati386 --prompt-rootpass </nowiki></code>
 
<code><nowiki> sudo ltsp-build-client --base /opt/ltsp/ --chroot fati386 --prompt-rootpass </nowiki></code>
第30行: 第31行:
 
2. When you've done that you can start expanding your thin chroot. The first thing to do is mount proc in and sys (might not be needed, but just in case) the chroot:
 
2. When you've done that you can start expanding your thin chroot. The first thing to do is mount proc in and sys (might not be needed, but just in case) the chroot:
  
<pre><nowiki> mount /proc -t proc /proc  
+
<code><nowiki> mount /proc -t proc /proc </nowiki></code>
 
+
<code><nowiki> mount /sys -t sysfs /sys </nowiki></code>
mount /sys -t sysfs /sys </nowiki></pre>
+
 
When you've done that you are ready to expand the whole chroot. There are several ways to do this, depending on how big you want your chroot to be. For a minimal install you can just do:
 
When you've done that you are ready to expand the whole chroot. There are several ways to do this, depending on how big you want your chroot to be. For a minimal install you can just do:
 
<code><nowiki> apt-get install edubuntu-addon-light gdm network-manager gnome-mount ubufox openoffice.org nfs-common ubuntu-artwork </nowiki></code>
 
<code><nowiki> apt-get install edubuntu-addon-light gdm network-manager gnome-mount ubufox openoffice.org nfs-common ubuntu-artwork </nowiki></code>
第44行: 第44行:
 
and sudo chroot /opt/ltsp/fati386 dpkg --configure -a a bunch of times. I had to do this several times for broken packages and dependencies. When everything has been downloaded, make sure that gdm is installed to by doing:
 
and sudo chroot /opt/ltsp/fati386 dpkg --configure -a a bunch of times. I had to do this several times for broken packages and dependencies. When everything has been downloaded, make sure that gdm is installed to by doing:
 
<code><nowiki> apt-get install gdm </nowiki></code>
 
<code><nowiki> apt-get install gdm </nowiki></code>
 +
==== LDAP and NFS inside chroot ====
 
3. You'll need to install ldap on the client for authentication, otherwise you're users will not be able to login. We will also mount the /home folders via nfs on the fat clients. To begin with do the following commands to install the ldap client in the chroot:
 
3. You'll need to install ldap on the client for authentication, otherwise you're users will not be able to login. We will also mount the /home folders via nfs on the fat clients. To begin with do the following commands to install the ldap client in the chroot:
  
<code><nowiki> apt-get install auth-client-config libpam-ldap libnss-ldap nano nfs-common</nowiki></code>
+
<code><nowiki> apt-get install auth-client-config libpam-ldap libnss-ldap nano nfs-common ldap-utils</nowiki></code>
 
Then, also from within the chroot do:
 
Then, also from within the chroot do:
 
<code><nowiki> nano /etc/ldap.conf </nowiki></code>
 
<code><nowiki> nano /etc/ldap.conf </nowiki></code>
第98行: 第99行:
 
#!/bin/bash
 
#!/bin/bash
  
# Start nfs-common and portmap incase they get started further on down the line (as is the case in ltsp startup)
+
# Start portmap in case it gets started further on down the line (as is the case in ltsp startup)
 
# if the ping command returns a "0 received" then we assume server down
 
# if the ping command returns a "0 received" then we assume server down
 
# we then do nothing, because there inst a way to mount that NFS
 
# we then do nothing, because there inst a way to mount that NFS
第104行: 第105行:
  
 
sudo /etc/init.d/portmap restart
 
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-common restart
 
  
 
if [ "$(ping -c 3 192.168.0.254 | grep '0 received')" ]
 
if [ "$(ping -c 3 192.168.0.254 | grep '0 received')" ]
第123行: 第123行:
 
Then make the script executable:
 
Then make the script executable:
 
<code><nowiki> chmod o+x /etc/nfsmounts.sh </nowiki></code>
 
<code><nowiki> chmod o+x /etc/nfsmounts.sh </nowiki></code>
Then you must unmount proc and sys by doing the following:
+
Add another rc script for starting gdm, in case it doesn't start properly. Create the file /etc/startgdm.sh (in chroot) containing the following:
<pre><nowiki>umount /proc
+
<pre><nowiki>
umount /sys </nowiki></pre>
+
/etc/init.d/gdm restart
 +
/usr/sbin/gdm
 +
</nowiki></pre>
 +
Make sure that /etc/startgdm.sh is executable or it won't work:
 +
<code><nowiki> chmod o+x /etc/startgdm.sh </nowiki></code>
 +
Then you must unmount proc and sys by doing the following (unmounting proc before sys removes mtab and creates an error):
 +
<code><nowiki> umount /sys </nowiki></code>
 +
<code><nowiki> umount /proc </nowiki></code>
 
Also make sure you unmount the full /proc path if /proc doesn't unmount because it says its busy. Do:
 
Also make sure you unmount the full /proc path if /proc doesn't unmount because it says its busy. Do:
<pre><nowiki> mount
+
<code><nowiki> mount </nowiki></code>
umount /proc/<full-path-to-proc-mounts> </nowiki></pre>
+
<code><nowiki> umount /proc/<full-path-to-proc-mounts> </nowiki></code>
 
<!-- And what if there is no 'full path' -->
 
<!-- And what if there is no 'full path' -->
 +
Try:
 +
<code><nowiki> mount | grep proc - </nowiki></code>
 +
If you get something like this: "binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec)"
 +
then do:
 +
<code><nowiki> umount /proc/sys/fs/binfmt_misc </nowiki></code>
 +
after that you may unmount /proc by:
 +
<code><nowiki> umount /proc </nowiki></code>
 +
You can also try:
 +
<code><nowiki> umount -l /proc </nowiki></code>
 +
(in chroot of course). The -l flag is a lazy unmount, basically waiting until the filesystem is not busy before cleaning up references
 
Now you are done modifying the chroot! You can exit it by typing:
 
Now you are done modifying the chroot! You can exit it by typing:
 
<code><nowiki> exit </nowiki></code>
 
<code><nowiki> exit </nowiki></code>
 +
==== Updating NBD Image ====
 
4. Finally we update the image so that you can start up your new thin 'fat' client:
 
4. Finally we update the image so that you can start up your new thin 'fat' client:
  
 
<code><nowiki> sudo ltsp-update-image -a fati386 -b /opt/ltsp -p 2001 </nowiki></code>
 
<code><nowiki> sudo ltsp-update-image -a fati386 -b /opt/ltsp -p 2001 </nowiki></code>
 +
==== Adding fat client details to DHCP ====
 
5. Remember to add the following to /etc/ltsp/dhcpd.conf, replacing your ethernet mac address and ip address for your own:
 
5. Remember to add the following to /etc/ltsp/dhcpd.conf, replacing your ethernet mac address and ip address for your own:
  
<pre><nowiki># Fat clients with ldap
+
<pre><nowiki>  
 +
# Fat clients with ldap
 
       group {
 
       group {
 
       deny unknown-clients;
 
       deny unknown-clients;
第156行: 第176行:
  
 
<code><nowiki> RCFILE_NN=/etc/nfsmounts.sh </nowiki></code>
 
<code><nowiki> RCFILE_NN=/etc/nfsmounts.sh </nowiki></code>
where NN is a number like 00 or 01 or 02, etc.
+
where NN is a number like 01 or 02, etc (through 10).
 
7. Finally, use this terrible hack to get gdm to startup properly, if it doesn't startup with all the above mentioned items. Add the following line to /var/lib/tftpboot/ltsp/fati386/lts.conf:
 
7. Finally, use this terrible hack to get gdm to startup properly, if it doesn't startup with all the above mentioned items. Add the following line to /var/lib/tftpboot/ltsp/fati386/lts.conf:
  
 
<code><nowiki> RCFILE_01=/etc/startgdm.sh </nowiki></code>
 
<code><nowiki> RCFILE_01=/etc/startgdm.sh </nowiki></code>
and then create the file /etc/startgdm.sh containing the following:
+
==== Extra Notes ====
<pre><nowiki>
+
POST-NOTE: The minimal install has been fully tested and works in a XFCE environment and Gnome. Although you are advised to install everything necessary in the chroot that is extra, such as applications, file systems, plugins, etc. (ie, java, mplayer, flash, clipart-svg, etc.)
/etc/init.d/gdm restart
+
/usr/sbin/gdm
+
</nowiki></pre>
+
Make sure that /etc/startgdm.sh is executable or it won't work:
+
<code><nowiki> chmod o+x /etc/startgdm.sh </nowiki></code>
+
POST-NOTE: This has now been fully tested and works in a XFCE environment and gnome. Although you are advised to install everything necessary in the chroot that is extra, such as applications, file systems, plugins, etc. (ie, java, mplayer, flash, clipart-svg, etc.)
+
 
NOTE about TFTP Timeout errors: If you encountered them, visit https://help.ubuntu.com/community/Installation/Netboot
 
NOTE about TFTP Timeout errors: If you encountered them, visit https://help.ubuntu.com/community/Installation/Netboot
 
NOTE about FLASH in low fat clients: To get flash working install libflashsupport from the hardy repos (even if you are on gutsy) and install flash from source - from the adobe website (the flash-nonfree in the gutsy repos does not work!)
 
NOTE about FLASH in low fat clients: To get flash working install libflashsupport from the hardy repos (even if you are on gutsy) and install flash from source - from the adobe website (the flash-nonfree in the gutsy repos does not work!)
NOTE about printers in low fat clients, connecting to print server: I finally managed to get this working properly. The main issue here seemed to be that cupsys was not starting automatically, and that by default the /etc/hosts file is overwritten. It created a /etc/hosts file with an entry for 192.168.0.254 pointing to server, not the actual name of my server?!? That means that cups can't find the print server, as was shown from the log files. Also, /etc/cups/cupsd.conf in the low fat client chroot must be modified to listen to port 631 of the server or just port 631 in general. It must also be set to allow the client to show printers shared by other systems.
+
NOTE about printers in low fat clients, connecting to print server: I finally managed to get this working properly. The main issue here seemed to be that cupsys was not starting automatically, and that by default the /etc/hosts file is overwritten. It created a /etc/hosts file with an entry for 192.168.0.254 pointing to server, not the actual name of my server?!? That means that cups can't find the print server, as was shown from the log files. Also, /etc/cups/cupsd.conf in the low fat client chroot must be modified to listen to port 631 of the server or just port 631 in general. It must also be set to allow the client to show printers shared by other systems. This is most simply done by modifying the chroot like this:
I'm going to start linking various of these sub tasks into sub pages (installing java, openoffice, flash, printers, etc.) In some cases they may be similar to existing solutions for normal clients, but in most cases they require unique intervention.
+
echo "ServerName 192.168.0.254" > /opt/ltsp/$CHROOT/etc/cups/client.conf
 +
Remember to rebuild the image.
 
----
 
----
 
[[category:CategoryDocumentation]]
 
[[category:CategoryDocumentation]]
  
 
[[category:UbuntuHelp]]
 
[[category:UbuntuHelp]]

2008年10月19日 (日) 17:43的版本

Preamble

This is where you can learn how to create a customised chroot environment for use in LTSP. This 'fat' chroot will then allow for cpu usage and ram usage to happen on the terminal itself, instead of on the server. It has been tested on 7.10, 8.04, and 8.10.

Fat Client Plugin

There are now 2 ways to create Fat Clients, one being easier than the other, in that it doesnt require LDAP or any extra installation, It just requires downloading the fat client plugin from here and following the instructions on that page: http://www.nubae.com/ltsp-linux-terminal-server-project-netbooted-fat-client-for-ubuntu-hardy-and-intrepid The document below explains how to do it all from scratch. It is suggested one start with the workstation plugin mentioned and then customise the chroot further as well as installing NFS and LDAP for authentication and sharing of /home from the server.


Workstation Plugin

The workstation plugin for this can be found here: http://wwwuser.gwdg.de/~mrickma/edubuntu/030-workstation.gz Put it in /usr/share/ltsp/plugins/ltsp-build-client/Ubuntu, and use the switch --workstation followed by Ubuntu or Kubuntu. If you use the plugin above, you do not need to do a lot of the below mentioned stuff... the plugin takes care of doing that for you... The plugin does not do any nfs mounting of /home or creation of local LDAP for authentication... you'll need to chroot into your low fat client and do that manually. If you don't need LDAP, or don't want to debug your chroot, it is advised to follow the link above and install the fat client plugin instead. The plugin was created by: Michael Rickmann


Disclaimer

This should work for you, but the documentation assumes that you have already installed and setup nfs-kernel-server and the Open LDAP server properly on your server. There are plenty of howtos to do this so its out of the scope of this help document. A good one which deals with booting up from different sources - http://wiki.koeln.ccc.de/index.php/Ubuntu_PXE_Install A good LDAP server how to is located here: https://help.ubuntu.com/community/OpenLDAPServer?highlight=(ldap) It has been tested with 7.10 and 8.04, but not 8.10. 8.10 has only been tested with the fat client plugin mentioned above.

Introduction

Although generally thin clients are great for older hardware, in a real world setup you are likely going to see a wide variety of machines, both new and old. It is a waste to be running LTSP on Intel Core 2 Duos, and if your case is similar to mine, the bandwidth limits (even with with gigabit switches) don't allow for a usable environment for video, audio or even 3D graphics. The way LTSP works, the thin clients actually use the Server's RAM and CPU time, as well as its bandwidth, meaning its great when the terminals are old or actual thin clients (ie. run at 333mhz or 400 mhz) but if you have newer computers also, and you want to take advantage of their power (ie. laptops) but still want to administer everything from one location, then making some of your thin clients fat is for you.

Building the Chroot

1. The first step is to create the new chroot environment which will be modified into a fat client. You can name your fat chroot anything you like with the --chroot attribute, and that will be located in: /opt/ltsp/name-of-chroot. In this document I assume it is called fati386

sudo ltsp-build-client --base /opt/ltsp/ --chroot fati386 --prompt-rootpass For x64 users use the following command instead: sudo ltsp-build-client --arch i386 --base /opt/ltsp/ --chroot fati386 --prompt-rootpass You'll be prompted for a root password which you must have for debugging. Once you've done this, simplify the next bunch of steps by chrooting yourself. Keep in mind these next commands will not affect your system but rather the environment you build above: sudo chroot /opt/ltsp/fati386 2. When you've done that you can start expanding your thin chroot. The first thing to do is mount proc in and sys (might not be needed, but just in case) the chroot:

mount /proc -t proc /proc mount /sys -t sysfs /sys When you've done that you are ready to expand the whole chroot. There are several ways to do this, depending on how big you want your chroot to be. For a minimal install you can just do: apt-get install edubuntu-addon-light gdm network-manager gnome-mount ubufox openoffice.org nfs-common ubuntu-artwork For a complete edubuntu desktop do: apt-get install edubuntu-desktop You could also try, depending on your desktop preferences: apt-get install kubuntu-desktop or apt-get install ubuntu-desktop or apt-get install kubuntu-kde4-desktop If you choose this option, it will take quite some time to download all the necessary packages and you may need to do apt-get install -f and sudo chroot /opt/ltsp/fati386 dpkg --configure -a a bunch of times. I had to do this several times for broken packages and dependencies. When everything has been downloaded, make sure that gdm is installed to by doing: apt-get install gdm

LDAP and NFS inside chroot

3. You'll need to install ldap on the client for authentication, otherwise you're users will not be able to login. We will also mount the /home folders via nfs on the fat clients. To begin with do the following commands to install the ldap client in the chroot:

apt-get install auth-client-config libpam-ldap libnss-ldap nano nfs-common ldap-utils Then, also from within the chroot do: nano /etc/ldap.conf this should be editted according to your ldap settings so change host 127.0.0.1 to host LDAP_SERVER_IP and change base = padl..... to base = dc=yourdomain,dc=local You also need to edit /etc/ldap/ldap.conf and make sure all the settings are changed to your ldap server's settings. When you've done this you need to make sure authentication happens via ldap first, like this: nano /etc/auth-client-config/profile.d/open_ldap and paste the following into it:

[open_ldap]
nss_passwd=passwd: ldap files
nss_group=group: ldap files
nss_shadow=shadow: ldap files
pam_auth=auth       required     pam_env.so
        auth       sufficient   pam_unix.so likeauth nullok
        auth       sufficient   pam_ldap.so use_first_pass
        auth       required     pam_deny.so
pam_account=account    sufficient   pam_unix.so
        account    sufficient   pam_ldap.so
        account    required     pam_deny.so
pam_password=password   sufficient   pam_unix.so nullok md5 shadow
        password   sufficient   pam_ldap.so use_first_pass
        password   required     pam_deny.so
pam_session=session    required     pam_limits.so
        session    required     pam_mkhomedir.so skel=/etc/skel/
        session    required     pam_unix.so
        session    optional     pam_ldap.so

Now to activate that pam profile do the following: auth-client-config -a -p open_ldap You also have to edit /etc/pam.d/login and /etc/pam.d/gdm and add the following line to the top of both files: auth optional pam_group.so And, perhaps this is necessary, perhaps, not, but it was taken from another wiki someplace: add the following to /etc/security/group.conf

 
login;*;*;Al0000-2400;users,cdrom,floppy,plugdev,audio,dip
kdm;*;*;Al0000-2400;users,cdrom,floppy,plugdev,audio,dip,video
gdm;*;*;Al0000-2400;users,cdrom,floppy,plugdev,audio,dip,video

To mount /home via nfs on the thin client you have to create a little script to do it since fstab is overwritten by the ltsp-setup. Make a script as follows and place it anywhere in the chroot. The location of the script just needs to match the "RCFILE_NN=" line in lts.conf. It is recommended to place the script in the /etc directory: nano /etc/nfsmounts.sh and paste the following into it:

#!/bin/bash

# Start portmap in case it gets started further on down the line (as is the case in ltsp startup)
# if the ping command returns a "0 received" then we assume server down
# we then do nothing, because there inst a way to mount that NFS
# if we don't get the "0" in received then we assume it already up and then run the Mount

sudo /etc/init.d/portmap restart

if [ "$(ping -c 3 192.168.0.254 | grep '0 received')" ]
then
        : ; exit 1
else
        # check to see if your NFS is mounted
        # : means if your NFS is there then doing nothing
        # if its not then mount your NFS

        if df | grep -q '192.168.0.254:/home'
        then :
        else
                mount -t nfs 192.168.0.254:/home /home
        fi
fi

Then make the script executable: chmod o+x /etc/nfsmounts.sh Add another rc script for starting gdm, in case it doesn't start properly. Create the file /etc/startgdm.sh (in chroot) containing the following:

/etc/init.d/gdm restart
/usr/sbin/gdm

Make sure that /etc/startgdm.sh is executable or it won't work: chmod o+x /etc/startgdm.sh Then you must unmount proc and sys by doing the following (unmounting proc before sys removes mtab and creates an error): umount /sys umount /proc Also make sure you unmount the full /proc path if /proc doesn't unmount because it says its busy. Do: mount umount /proc/<full-path-to-proc-mounts> Try: mount | grep proc - If you get something like this: "binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec)" then do: umount /proc/sys/fs/binfmt_misc after that you may unmount /proc by: umount /proc You can also try: umount -l /proc (in chroot of course). The -l flag is a lazy unmount, basically waiting until the filesystem is not busy before cleaning up references Now you are done modifying the chroot! You can exit it by typing: exit

Updating NBD Image

4. Finally we update the image so that you can start up your new thin 'fat' client:

sudo ltsp-update-image -a fati386 -b /opt/ltsp -p 2001

Adding fat client details to DHCP

5. Remember to add the following to /etc/ltsp/dhcpd.conf, replacing your ethernet mac address and ip address for your own:

 
# Fat clients with ldap
      group {
       deny unknown-clients;
       if substring( option vendor-class-identifier , 0 , 9 ) = "PXEClient" {
               filename "/ltsp/fati386/pxelinux.0";
               }
       else {
               filename "/ltsp/fati386/nbi.img";
               }
       option root-path "/opt/ltsp/fati386/";
       host fattest {
                hardware ethernet  00:1A:92:28:B7:3A;
                fixed-address 192.168.0.2;
                }
       }

6. Also make sure you have the following line in /var/lib/tftpboot/ltsp/fati386/lts.conf:

RCFILE_NN=/etc/nfsmounts.sh where NN is a number like 01 or 02, etc (through 10). 7. Finally, use this terrible hack to get gdm to startup properly, if it doesn't startup with all the above mentioned items. Add the following line to /var/lib/tftpboot/ltsp/fati386/lts.conf:

RCFILE_01=/etc/startgdm.sh

Extra Notes

POST-NOTE: The minimal install has been fully tested and works in a XFCE environment and Gnome. Although you are advised to install everything necessary in the chroot that is extra, such as applications, file systems, plugins, etc. (ie, java, mplayer, flash, clipart-svg, etc.) NOTE about TFTP Timeout errors: If you encountered them, visit https://help.ubuntu.com/community/Installation/Netboot NOTE about FLASH in low fat clients: To get flash working install libflashsupport from the hardy repos (even if you are on gutsy) and install flash from source - from the adobe website (the flash-nonfree in the gutsy repos does not work!) NOTE about printers in low fat clients, connecting to print server: I finally managed to get this working properly. The main issue here seemed to be that cupsys was not starting automatically, and that by default the /etc/hosts file is overwritten. It created a /etc/hosts file with an entry for 192.168.0.254 pointing to server, not the actual name of my server?!? That means that cups can't find the print server, as was shown from the log files. Also, /etc/cups/cupsd.conf in the low fat client chroot must be modified to listen to port 631 of the server or just port 631 in general. It must also be set to allow the client to show printers shared by other systems. This is most simply done by modifying the chroot like this: echo "ServerName 192.168.0.254" > /opt/ltsp/$CHROOT/etc/cups/client.conf Remember to rebuild the image.