特殊:Badtitle/NS100:UbuntuLTSP/LTSPFatClients:修订间差异
小 新页面: {{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 | === 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 ==== | |||
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 | 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 | ||
------------------ | ------------------ | ||
This should work for you, but | ==== 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 | ==== 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: | ||
< | <code><nowiki> mount /proc -t proc /proc </nowiki></code> | ||
<code><nowiki> mount /sys -t sysfs /sys </nowiki></code> | |||
mount /sys -t sysfs /sys </nowiki></ | |||
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 | # 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 | ||
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 / | /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: | ||
< | <code><nowiki> mount </nowiki></code> | ||
umount /proc/<full-path-to-proc-mounts> </nowiki></ | <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 | 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> | ||
==== 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.) | |||
POST-NOTE: | |||
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: | ||
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的版本
文章出处: |
{{#if: | {{{2}}} | https://help.ubuntu.com/community/UbuntuLTSP/LTSPFatClients }} |
点击翻译: |
English {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/af | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|Afrikaans| [[::UbuntuLTSP/LTSPFatClients/af|Afrikaans]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/ar | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|العربية| [[::UbuntuLTSP/LTSPFatClients/ar|العربية]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/az | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|azərbaycanca| [[::UbuntuLTSP/LTSPFatClients/az|azərbaycanca]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/bcc | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|جهلسری بلوچی| [[::UbuntuLTSP/LTSPFatClients/bcc|جهلسری بلوچی]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/bg | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|български| [[::UbuntuLTSP/LTSPFatClients/bg|български]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/br | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|brezhoneg| [[::UbuntuLTSP/LTSPFatClients/br|brezhoneg]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/ca | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|català| [[::UbuntuLTSP/LTSPFatClients/ca|català]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/cs | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|čeština| [[::UbuntuLTSP/LTSPFatClients/cs|čeština]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/de | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|Deutsch| [[::UbuntuLTSP/LTSPFatClients/de|Deutsch]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/el | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|Ελληνικά| [[::UbuntuLTSP/LTSPFatClients/el|Ελληνικά]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/es | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|español| [[::UbuntuLTSP/LTSPFatClients/es|español]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/fa | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|فارسی| [[::UbuntuLTSP/LTSPFatClients/fa|فارسی]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/fi | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|suomi| [[::UbuntuLTSP/LTSPFatClients/fi|suomi]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/fr | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|français| [[::UbuntuLTSP/LTSPFatClients/fr|français]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/gu | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|ગુજરાતી| [[::UbuntuLTSP/LTSPFatClients/gu|ગુજરાતી]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/he | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|עברית| [[::UbuntuLTSP/LTSPFatClients/he|עברית]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/hu | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|magyar| [[::UbuntuLTSP/LTSPFatClients/hu|magyar]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/id | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|Bahasa Indonesia| [[::UbuntuLTSP/LTSPFatClients/id|Bahasa Indonesia]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/it | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|italiano| [[::UbuntuLTSP/LTSPFatClients/it|italiano]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/ja | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|日本語| [[::UbuntuLTSP/LTSPFatClients/ja|日本語]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/ko | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|한국어| [[::UbuntuLTSP/LTSPFatClients/ko|한국어]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/ksh | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|Ripoarisch| [[::UbuntuLTSP/LTSPFatClients/ksh|Ripoarisch]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/mr | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|मराठी| [[::UbuntuLTSP/LTSPFatClients/mr|मराठी]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/ms | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|Bahasa Melayu| [[::UbuntuLTSP/LTSPFatClients/ms|Bahasa Melayu]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/nl | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|Nederlands| [[::UbuntuLTSP/LTSPFatClients/nl|Nederlands]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/no | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|norsk| [[::UbuntuLTSP/LTSPFatClients/no|norsk]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/oc | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|occitan| [[::UbuntuLTSP/LTSPFatClients/oc|occitan]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/pl | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|polski| [[::UbuntuLTSP/LTSPFatClients/pl|polski]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/pt | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|português| [[::UbuntuLTSP/LTSPFatClients/pt|português]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/ro | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|română| [[::UbuntuLTSP/LTSPFatClients/ro|română]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/ru | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|русский| [[::UbuntuLTSP/LTSPFatClients/ru|русский]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/si | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|සිංහල| [[::UbuntuLTSP/LTSPFatClients/si|සිංහල]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/sq | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|shqip| [[::UbuntuLTSP/LTSPFatClients/sq|shqip]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/sr | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|српски / srpski| [[::UbuntuLTSP/LTSPFatClients/sr|српски / srpski]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/sv | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|svenska| [[::UbuntuLTSP/LTSPFatClients/sv|svenska]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/th | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|ไทย| [[::UbuntuLTSP/LTSPFatClients/th|ไทย]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/tr | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|Türkçe| [[::UbuntuLTSP/LTSPFatClients/tr|Türkçe]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/vi | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|Tiếng Việt| [[::UbuntuLTSP/LTSPFatClients/vi|Tiếng Việt]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/yue | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|粵語| [[::UbuntuLTSP/LTSPFatClients/yue|粵語]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/zh | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|中文| [[::UbuntuLTSP/LTSPFatClients/zh|中文]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/zh-hans | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|中文(简体)| [[::UbuntuLTSP/LTSPFatClients/zh-hans|中文(简体)]]}}|}} {{#ifexist: {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients | UbuntuHelp:UbuntuLTSP/LTSPFatClients | {{#if: | :}}UbuntuLTSP/LTSPFatClients}}/zh-hant | • {{#if: UbuntuHelp:UbuntuLTSP/LTSPFatClients|中文(繁體)| [[::UbuntuLTSP/LTSPFatClients/zh-hant|中文(繁體)]]}}|}} |
{{#ifeq:UbuntuHelp:UbuntuLTSP/LTSPFatClients|:UbuntuLTSP/LTSPFatClients|请不要直接编辑翻译本页,本页将定期与来源同步。}} |
{{#ifexist: :UbuntuLTSP/LTSPFatClients/zh | | {{#ifexist: UbuntuLTSP/LTSPFatClients/zh | | {{#ifeq: {{#titleparts:UbuntuLTSP/LTSPFatClients|1|-1|}} | zh | | }} }} }} {{#ifeq: {{#titleparts:UbuntuLTSP/LTSPFatClients|1|-1|}} | zh | | }}
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.