This page is specific to Ubuntu versions 9.04, 9.10, 10.04 and 10.10

If you find this information applicable to additional versions/releases, please edit this page and modify this header to reflect that. Please also include any necessary modifications for this information to apply to the additional versions.


Intel Atom/NVidia ION

Intel Atom and NVIdia ION based motherboards are a cheap and powerful combination for a DIY thin client. In this case we need to get it working with the correct resolution (LCD 1680x1050).

Here are two cases. In the first case all thin clients are NVidia ION based. The second case is for when there is only one NVidia ION based thin client (others can be Intel, ATI or VIA based).

Case 1 - All thin clients are NVidia ION based

First unlock root access and upgrade chroot. Here are howtos for that.

https://help.ubuntu.com/community/UbuntuLTSP/UnlockChrootRootAcct

https://help.ubuntu.com/community/UbuntuLTSP/UpdatingChroot

After that we have latest kernel in chroot.

ssh root@192.168.1.201 

uname -a
Linux ltsp201 2.6.28-15-generic #49-Ubuntu SMP Tue Aug 18 18:40:08 UTC 2009 i686 GNU/Linux

Install NVidia in chroot

Install the latest 'nvidia-glx-xxx' package for your Ubuntu version in chroot.

sudo su

export LTSP_HANDLE_DAEMONS=false

chroot /opt/ltsp/i386

mount -t proc proc /proc

Check for NVidia.

apt-cache search nvidia
[--]
nvidia-glx-180 - NVIDIA binary Xorg driver (Ubuntu 9.04)
nvidia-glx-185 - NVIDIA binary Xorg driver (Ubuntu 9.10, 10.04 and 10.10)
[--]

apt-get install nvidia-glx-180 (Ubuntu 9.04)
apt-get install nvidia-glx-185 (Ubuntu 9.10, 10.04 and 10.10)
[--]
Setting up nvidia-180-kernel-source (180.44-0ubuntu1) ...
Removing all DKMS Modules
Done.
Adding Module to DKMS build system
driver version= 180.44
Doing initial module build
Installing initial module
Done.

Setting up nvidia-180-libvdpau (180.44-0ubuntu1) ...

Setting up nvidia-glx-180 (180.44-0ubuntu1) ...

Setting up nvidia-settings (180.25-0ubuntu1) ...

Setting up patch (2.5.9-5) ...
Processing triggers for libc6 ...
ldconfig deferred processing now taking place

Exit from chroot.

umount /proc

exit

Rebuild image.

ltsp-update-kernels

ltsp-update-image

Add xorg.conf for NVidia Ion

We have produced the correct xorg.conf file for NVidia Ion in the chroot. Now we can use it.

sudo su

cd /opt/ltsp/i386/etc/X11/

wget http://www.arkki.info/howto/Wiki/LTSP5/ion-xorg.conf

mv ion-xorg.conf xorg.conf

Update lts.conf file for new xorg.conf file. - This is ONLY necessary for Ubuntu 9.04!!

cat /var/lib/tftpboot/ltsp/i386/lts.conf

[Default]
CONFIGURE_X = True
X_CONF = /etc/X11/xorg.conf

Update image.

ltsp-update-image

We have now the correct NVidia driver for our kernel and the right xorg.conf.

Case 2 - one thin client is NVidia ION based

Remove chroot.

sudo su

rm -rf /opt/ltsp

Make a chroot for all the thin clients

First make a chroot for all the non-ION based thin clients.

ltsp-build-client --base /opt/ltsp --chroot i386

Upgrade that chroot.

sudo cp /etc/apt/sources.list /opt/ltsp/i386/etc/apt/sources.list

export LTSP_HANDLE_DAEMONS=false

chroot /opt/ltsp/i386

mount -t proc proc /proc

apt-get update && apt-get dist-upgrade

umount /proc

exit

sudo ltsp-update-kernels

sudo ltsp-update-image -a i386

Make chroot for NVidia ION based thin client

First make a chroot for Nvidia ION based thin client.

ltsp-build-client --base /opt/ltsp --chroot i386-ion

Upgrade that chroot.

sudo cp /etc/apt/sources.list /opt/ltsp/i386-ion/etc/apt/sources.list

export LTSP_HANDLE_DAEMONS=false

chroot /opt/ltsp/i386-ion

mount -t proc proc /proc

apt-get update && apt-get dist-upgrade

umount /proc

exit

sudo ltsp-update-kernels

sudo ltsp-update-image -a i386-ion

Install the current 'nvidia-glx-xxx' for your Ubuntu version into that chroot.

chroot /opt/ltsp/i386-ion

mount -t proc proc /proc

apt-get install nvidia-glx-180 (Ubuntu 9.04)
apt-get install nvidia-glx-185 (Ubuntu 9.10, 10.04 and 10.10)
{--]
Setting up nvidia-180-kernel-source (180.44-0ubuntu1) ...
Removing all DKMS Modules
Done.
Adding Module to DKMS build system
driver version= 180.44
Doing initial module build
Installing initial module
Done.

Setting up nvidia-180-libvdpau (180.44-0ubuntu1) ...

Setting up nvidia-glx-180 (180.44-0ubuntu1) ...

Setting up nvidia-settings (180.25-0ubuntu1) ...

Setting up patch (2.5.9-5) ...
Processing triggers for libc6 ...
ldconfig deferred processing now taking place

umount /proc

exit

ltsp-update-image -a i386-ion

Setup for two chroots

We have two chroots and two directories for tftpd.

The image for i386-ion is bigger because it includes drivers for NVidia.

root@ubuntu-ltsp5:/opt/ltsp# ls -al
yhteensä 20
drwxr-xr-x  5 root root 4096 2009-09-19 22:04 .
drwxr-xr-x  4 root root 4096 2009-09-19 21:51 ..
drwxr-xr-x 20 root root 4096 2009-09-19 22:08 i386
drwxr-xr-x 20 root root 4096 2009-09-19 21:55 i386-ion
drwxr-xr-x  2 root root 4096 2009-09-19 23:46 images
root@ubuntu-ltsp5:/opt/ltsp# ls -al images/
yhteensä 635064
drwxr-xr-x 2 root root      4096 2009-09-19 23:46 .
drwxr-xr-x 5 root root      4096 2009-09-19 22:04 ..
-rwxr--r-- 1 root root 290832384 2009-09-19 23:46 i386.img
-rwxr--r-- 1 root root 358817792 2009-09-19 23:39 i386-ion.img
root@ubuntu-ltsp5:/opt/ltsp#

root@ubuntu-ltsp5:/var/lib/tftpboot/ltsp# ls -al
yhteensä 16
drwxr-xr-x 4 root root 4096 2009-09-19 22:12 .
drwxr-xr-x 3 root root 4096 2009-09-16 17:24 ..
drwxr-xr-x 3 root root 4096 2009-09-19 22:20 i386
drwxr-xr-x 3 root root 4096 2009-09-19 23:32 i386-ion
root@ubuntu-ltsp5:/var/lib/tftpboot/ltsp#

Here is i386's default file for pxe. This way you are able to see boot processes (no splash). The port is default port (=2000)

admin-ltsp5@ubuntu-ltsp5:~$ cat /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
DEFAULT vmlinuz ro initrd=initrd.img

Here is i396-ion's default file for pxe. This way you are able to see boot processes (no splash). The port is different from the regular i386 port.

admin-ltsp5@ubuntu-ltsp5:~$ cat /var/lib/tftpboot/ltsp/i386-ion/pxelinux.cfg/default
DEFAULT vmlinuz ro initrd=initrd.img nbdport=2001

We have in this case only one NVidia ION based thin client. We have a fixed ip number for that, all other thin clients have dynamic ip numbers.

Here is an example dhcpd.conf file.

authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {

        # COMMON

        option domain-name "ubuntu-ltsp5";
        option domain-name-servers 192.168.1.1;
        option broadcast-address 192.168.1.255;
        option routers 192.168.1.1;
        option subnet-mask 255.255.255.0;
        option log-servers 192.168.1.1;

        # ION ONLY

        group   {
                use-host-decl-names       on;
 
                host ltsp200 {
                hardware ethernet     00:26:18:6E:B4:E0;
                fixed-address         192.168.1.200;
 
                if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
                filename "/ltsp/i386-ion/pxelinux.0";
                         }
                         else{
                         filename "/ltsp/i386/nbi.img";
                         }
                         option root-path "/opt/ltsp-ion/i386";
                }
 
        }

        # ALL OTHERS

        range 192.168.1.201 192.168.1.254;
        if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/i386/pxelinux.0";
        }
        else{
        filename "/ltsp/i386/nbi.img";
        }
        option root-path "/opt/ltsp/i386";
 }

We also need the right xorg.conf file, just like in first case.

sudo su

cd /opt/ltsp/i386-ion/etc/X11/

wget http://www.arkki.info/howto/Wiki/LTSP5/ion-xorg.conf

mv ion-xorg.conf xorg.conf

Update the lts.conf file for new xorg.conf file.- This is ONLY necessary for Ubuntu 9.04!!

cat /var/lib/tftpboot/ltsp/i386-ion/lts.conf

[Default]
CONFIGURE_X = True
X_CONF = /etc/X11/xorg.conf

Update the image.

ltsp-update-image -a i386-ion

After these steps the NVidia ION based thin client will play nicely with all others thin clients.

Here are some lines from daemon.log.

Sep 20 01:28:03 ubuntu-ltsp5 dhcpd: DHCPDISCOVER from 00:26:18:6e:b4:e0 via eth0
Sep 20 01:28:03 ubuntu-ltsp5 dhcpd: DHCPOFFER on 192.168.1.200 to 00:26:18:6e:b4:e0 via eth0
Sep 20 01:28:03 ubuntu-ltsp5 dhcpd: DHCPREQUEST for 192.168.1.200 (192.168.1.125) from 00:26:18:6e:b4:e0 via eth0
Sep 20 01:28:03 ubuntu-ltsp5 dhcpd: DHCPACK on 192.168.1.200 to 00:26:18:6e:b4:e0 via eth0

Sep 20 01:28:04 ubuntu-ltsp5 nbdrootd[2841]: connect from 192.168.1.200 (192.168.1.200)
Sep 20 01:28:04 ubuntu-ltsp5 nbd_server[2842]: connect from 192.168.1.200, assigned file is /opt/ltsp/images/i386-ion.img
Sep 20 01:28:04 ubuntu-ltsp5 nbd_server[2842]: Size of exported file/device is 358817792

Sep 20 01:28:33 ubuntu-ltsp5 dhcpd: DHCPDISCOVER from 00:a0:d1:a3:81:55 via eth0
Sep 20 01:28:33 ubuntu-ltsp5 dhcpd: DHCPOFFER on 192.168.1.203 to 00:a0:d1:a3:81:55 via eth0
Sep 20 01:28:33 ubuntu-ltsp5 dhcpd: DHCPREQUEST for 192.168.1.203 (192.168.1.125) from 00:a0:d1:a3:81:55 via eth0
Sep 20 01:28:33 ubuntu-ltsp5 dhcpd: DHCPACK on 192.168.1.203 to 00:a0:d1:a3:81:55 via eth0

Sep 20 01:28:37 ubuntu-ltsp5 nbdrootd[2995]: connect from 192.168.1.203 (192.168.1.203)
Sep 20 01:28:37 ubuntu-ltsp5 nbd_server[2996]: connect from 192.168.1.203, assigned file is /opt/ltsp/images/i386.img
Sep 20 01:28:37 ubuntu-ltsp5 nbd_server[2996]: Size of exported file/device is 290832384

3rd, easiest option (works with 10.04)

This method uses a single chroot and manually specifies which clients get the nvidia driver. The nouveau driver is blacklisted by the nvidia-current package. It is not required to use a static xorg.conf (in fact we should not do this as the modern X is designed to generate this on the fly).

Unlock the chroot and install nvidia-current, be sure to mount proc in the chroot so that the nvidia drivers can be properly built.

 # export LTSP_HANDLE_DAEMONS=false
 # chroot /opt/ltsp/i386
 # mount -t proc proc /proc
 # apt-get update
 # apt-get install nvidia-glx-185
 # update-ltsp-image
 # update-ltsp-kernels

Add your client MAC address to lts.conf in /var/lib/tftpboot/ltsp/<your chroot name>/lts.conf and specify the XSERVER=nvidia option. The XSERVER= option simply forces a driver without changing anything else about the autoconfiguration of the XSERVER. It is not necessary to use the LTSP_CONFIGURE_X variable in lts.conf to get XSERVER= to work.

[thin client mac]
  XSERVER=nvidia

That's it.


CategoryLtsp

UbuntuLTSP/AtomIon (last edited 2011-12-07 05:31:19 by map7-iinet)