Status

Introduction

Provide rich thin client functionality out of the box in Ubuntu

Rationale

Thin client is in demand from educational and many other classes of user. If we have rich thin client functionality out of the box in Ubuntu, we can expand the user base.

Scope and Use Cases

Our goal is to provide a reasonable "greatest common factor" approximation of functionality from LTSP. We are deliberately keeping the scope small in order to meet the BreezyBadger release schedule. Future improvements are covered in ThinClientRoadmap.

The initial implementation will incorporate the following use cases:

The standard kernel, applications and hardware support infrastructure from Ubuntu will be used on both the clients and the server.

Implementation Plan

  1. Kernel and initrd
    • We will use stock Ubuntu kernels. The base initial ram disk can be provided by EarlyUserspace (initramfs), with extensions to provide for the read-only root filesystem environment. The initial design will use unionfs, though if this proves to be problematic, the existing LTSP technique of mounting tmpfs filesystems can be substituted. If the EarlyUserspace extensions are not ready in time for testing LTSP functionality, we can fall back to a traditional initrd based on the existing LTSP initrd build process.

  2. Services Configuration Tool. See also NFSRoot.

    • A single configuration tool should be created to provide a single place to configure all of the services needed on an LTSP server. It will be capable of non-interactively deploying the most common configurations: a dedicated server, either with one shared network interface (used for both serving clients and passing traffic upstream), or two network interfaces (one for serving clients, and a second for communicating with the existing network). It will interact with the following components:
    • DHCP - dhcp3-server is a dependency. The server package will contain a tool to create a configuration file appropriate for thin clients.
    • TFTP - tftpd-hpa is a dependency. The server package will contain a tool to allow kernels installed in the LTSP client root to be served by the host's tftp server. This tool will also handle pxelinux setup, and allow for etherboot images available in the LTSP client root.
    • NFS - nfs-kernel-server is a dependency. The server package will contain a tool to perform the necessary modifications to /etc/exports to serve the LTSP client root(s) from /opt/ltsp.
    • XDMCP - A display manger is a dependency (gdm for Ubuntu, kdm for Kubuntu). The server package will contain a configuration tool to enable XDMCP in the appropriate config file.
    • syslogd is already installed as part of the sysklogd package, in the base system. The server package will contain a tool to enable remote logging via the '-r' flag. This setting is currently part of the sysklogd init script, but should be moved to an /etc/default file.
    • According to the AudioInfrastructure BOF, Network sound isn't a priority, but based on their decision to go with polypaudio, we should get network transparent sound almost for free.

    • NBD (Network Block Device) - nbd-server is a dependency. The server package will contain a tool to create swapfiles for LTSP clients.
    • lts.conf file. A default one should be provided. It would be nice if a tool were provided to modify the lts.conf file, but this isn't a Breezy goal. See ThinClientRoadmap.

  3. Building and shipping the client root filesystem
    • The simplest option is to generate the filesystem once, as part of Ubuntu release process. This has the advantage as it is fast and simple to deploy, and will provide cross-architecture support. The downside is that either a large binary package will be required to contain the tree, or an alternative place to stash this in the Ubuntu archive will be required. Either option has negative consequences for mirrors. The filesystem could also be built on demand from packages already in the archive, using debootstrap and apt. This option is less resource-intensive, but is more complex, slower to execute and cannot support cross-architecture environments. In either case, we will need to create a tool to generate the filesystem, and will include it in the server package.
  4. We need to package various tools from the LTSP build environment (LBE) which are used in the client root:
    • getltscfg

      • Reads conf file
    • startsess
      • Starts the LTSP session scripts in the LTSP screen.d directory (/opt/ltsp/i386/etc/screen.d/)
    • ./screen.d/*
      • Session scripts. The current options are startx, shell, redesktop, and telnet
    • lp_server

      • Listens on port 910x for print streams and redirects them out to attached parallel,serial or USB printers.
    • ltspinfod

      • Daemon running on client that can be queried by the server. This is how the server can find out which sound daemon the client is using. Can also be used to shutdown or reboot the client.
    • pci_scan

      • This is how LTSP autodetects the nic, video chipset and audio chipset. Should this be replaced by HAL?
    • vidlist

      • Table of PCI Vendor/Device IDs that is used by pci_scan to determine which Xserver to use
    • niclist

      • Table of PCI Vendor/Device IDs used by pci_scan to determine which NIC kernel module to load
  5. Client swapping for low memory clients.
    • Set up necessary tools on the client for doing NBD swapping for low memory clients.
  6. Automated Xorg setup.
    • Combination of both "Classic" LTSP configuration and Ubuntu automagic configuration.
    • Documented in LTSPXorgConfiguration.

Data Preservation and Migration

N/A

Packages Affected

User Interface Requirements

Initial configuration will be non-interactive.

Outstanding Issues

Design notes

These notes are points that were discussed, and provide documentation of the implementation plan, and a history of the several BOFs that were held to discuss the task of integrating LTSP into Breezy.

Bootstrapping the Client

Running the Client

Setting up New Clients

Server Infrastructure

Comments/Notes


Warning /!\ Edit conflict - other version:



Warning /!\ Edit conflict - your version:



Warning /!\ End of edit conflict


UbuntuDownUnder/BOFs/ThinClientIntegration (last edited 2008-08-06 16:15:33 by localhost)