Diskless LTSP Frontend
Contents
- 1 Introduction
- 2 Install the LTSP Server Software
- 3 Configure DHCP
- 4 Configure tftpd
- 5 Build client settings
- 6 Set up Thin Client user
- 7 Start of 32 bit LTSP Client Instructions
- 8 End of 32 bit LTSP Client Intructions
- 9 Start of 64 bit LTSP Client Instructions
- 10 End of 64 bit LTSP Client Instructions
- 11 Make MythTV Frontend Automatically Start
- 12 Troubleshooting
- 13 Maintenance Updates
Introduction
This guide is based on Ubuntu 12.04 and LTSP 5.3.x. Please update it as needed with other Linux Distribution instructions.
Note: If you are using a newer version of Ubuntu and you get an error like this:
overlayfs: missing `workdir`
On your client you need to install the "Greek Schools" PPA.
root@ltsp-server:~# add-apt-repository --yes ppa:ts.sch.gr root@ltsp-server:~# apt-get update root@ltsp-server:~# apt-get dist-upgrade
...both in your server and your chroot.
root@ltsp-server-chroot:~# add-apt-repository --yes ppa:ts.sch.gr root@ltsp-server-chroot:~# apt-get update root@ltsp-server-chroot:~# apt-get dist-upgrade
Why Diskless?
This setup allows you to run a client frontend without a hard disk in it.
- Saves you money
- Possibly keeps the client quieter
- Less heat generated.
- The client OS is "read only", you do not need to be concerned with system crashes.
- Possibly less power used on the frontend. You may use more power on your LTSP server though.
MythTV Versions Supported
These instructions are valid for MythTV 0.25, 0.26 and 0.27. They should also be valid for future versions as long as LTSP 5.x is used. Refer to the section on upgrading MythTV.
Diskless Alternatives
- MiniMyth. http://www.minimyth.org
- Minimyth2. http://minimyth2.homenet.org/
This LTSP method gives you more flexibility and allows you to customize your frontend. You get to control when and what version of mythtv you upgrade to. You also get to use a "regular" linux desktop.
Conventions used with this guide
There are two main parts to this guide. One part has commands to install a 32-bit client, the other part has commands to install a 64-bit client. The final parts are for troubleshooting and maintenance updates.
There are many steps involved. This guide has been written this way so you can slowly work through the process of getting your client installed. Hopefully it will make it easier for you to customize your own LTSP client.
When you see this
root@ltsp-server:~#
It means the commands should be executed on the LTSP server.
When you see this
root@ltsp-server-chroot:/#
It means the commands should be executed on the LTSP server, but after you have run the chroot command ltsp-chroot. Chroot is type of isolated environment.
Assumptions
- Your mythtv server has an IP address of 192.168.1.100
- Your mythtv frontend is diskless, it will use a dhcp client address of 192.168.1.150
- You will create a new user called mythltsp
- Your mythtv server resolves DNS queries
- Your default router IP is 192.168.1.1
- Your mythtv server is not already serving DHCP
- You mythtv frontend has a mac address of 87:01:2a:ab:08:56
Install the LTSP Server Software
root@ltsp-server:~# apt-get install ltsp-server-standalone
Configure DHCP
Dhcpd is used to provide the client frontend with an IP address.
DD-WRT
Note: You can also configure your main dhcp server to make your mythtv fontend boot. It is possible to do this with DD-WRT.
For DD-WRT you need something like this. Add this line to the Services -> Additional, dnsmasq options section on the router
dhcp-boot=/ltsp/i386/pxelinux.0,,192.168.1.150
or this for a 64 bit client
dhcp-boot=/ltsp/amd64/pxelinux.0,,192.168.1.150
LTSP Server
Installing the ltsp server software will create a dhcpd config file /etc/ltsp/dhcpd.conf
If you already have dhcpd running, this new file will override it.
authoritative; # This will be the subnet your client will use. Your server must have an interface serving this range. subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.150 192.168.1.200; option domain-name "example.com"; option domain-name-servers 192.168.1.100; option broadcast-address 192.168.1.255; option routers 192.168.1.1; # next-server 192.168.0.1; # get-lease-hostnames true; option subnet-mask 255.255.255.0; option root-path "/opt/ltsp/i386"; if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" { filename "/ltsp/i386/pxelinux.0"; } else { filename "/ltsp/i386/nbi.img"; } host mythfront { # tftp client hardware address, mac address of your LTSP client hardware ethernet 87:01:2a:ab:08:56; # Dedicated IP address for your LTSP client fixed-address 192.168.1.150; # Uncomment the line below if your client is 32-bit # filename "/ltsp/i386/pxelinux.0"; # Uncomment the line below if your client is 64-bit filename "/ltsp/amd64/pxelinux.0"; } }
Restart DHCP
root@ltsp-server:~# service isc-dhcpd-server restart
Configure tftpd
Ensure it listens on the IPv4 address. You also need to create files.
# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--ipv4 --secure --create"
Build client settings
# ubuntu-desktop and edubuntu-desktop are tested. # Ubuntu 12.04 LTS working perfectly with Unity and Unity 2D. FAT_CLIENT_DESKTOPS="ubuntu-desktop" # This uses the server apt cache to speed up downloading. # This locks the servers dpkg, so you can't use apt on # the server while building the chroot. MOUNT_PACKAGE_DIR="/var/cache/apt/archives/"
#configuration file for ltsp-update-image # Do not compress the client image. Comment out the line below to enable again. NO_COMP="-noF -noD -noI -no-exports"
Set up Thin Client user
This account is created on your LTSP server. The LTSP client will use it to login.
root@ltsp-server:~# useradd -m -G sudo,mythtv mythltsp root@ltsp-server:~# passwd mythltsp
Update default mythtv configuration settings for your new user
root@ltsp-server:~# su - mythltsp $ mkdir .mythtv $ cd .mythtv $ ln -s /etc/mythtv/mysql.txt mysql.txt $ ln -s /etc/mythtv/config.xml config.xml $ exit
Start of 32 bit LTSP Client Instructions
Create the initial client image
root@ltsp-server:~# ltsp-build-client --arch i386
Boot the LTSP client
Try to login, if you get an error that gnome failed to load
root@ltsp-server:~# ltsp-chroot root@ltsp-server-chroot:/# mount -t proc proc /proc root@ltsp-server-chroot:/# apt-get install gnome root@ltsp-server-chroot:/# exit
Create a new image
root@ltsp-server:~# ltsp-update-image --arch=i386
Reboot the LTSP client
Client boots and can now login. MythTV is not installed
Update repositories the client can use
root@ltsp-server:~# cp /etc/apt/sources.list /opt/ltsp/i386/etc/apt/sources.list root@ltsp-server:~# cp /etc/apt/sources.list.d/* /opt/ltsp/i386/etc/apt/sources.list.d/
Install MythTV Frontend
root@ltsp-server:~# ltsp-chroot root@ltsp-server-chroot:/# apt-get update root@ltsp-server-chroot:/# apt-get install mythtv-frontend root@ltsp-server-chroot:/# exit
Create a new image
root@ltsp-server:~# ltsp-update-image --arch=i386
Reboot the LTSP client
This time mythtv frontend will be available
Now configure the client
Update the settings for your backend, DBHostName and DBPassword will have to be changed.
root@ltsp-server:~# ltsp-chroot root@ltsp-server-chroot:/# vi /etc/mythtv/config.xml
This assumes you have a link from your local user home dir to the /etc/mythtv config dir
root@ltsp-server-chroot:/# ln -s /etc/mythtv/config.xml /home/mythltsp/.mythtv/config.xml root@ltsp-server-chroot:/# exit
Create a new image
root@ltsp-server:~# ltsp-update-image --arch=i386
Reboot the LTSP client
This time, mythtv frontend should connect to the backend.
Enable auto login
root@ltsp-server:~# vi /var/lib/tftpboot/ltsp/i386/lts.conf
[Default] # Auto Login LDM_AUTOLOGIN = True LOCAL_APPS = True LDM_SESSION = "lightdm-gtk-greeter" #Disable screen going blank after a few mintutes X_BLANKING=0 [192.168.1.150] LDM_USERNAME = mythltsp LDM_PASSWORD = mythltsp
Reboot the LTSP client
This time, mythtv frontend should automatically login.
End of 32 bit LTSP Client Intructions
Start of 64 bit LTSP Client Instructions
Create the initial client image
root@ltsp-server:~# ltsp-build-client --arch amd64
Boot the LTSP client
Try to login, if you get an error that gnome failed to load
root@ltsp-server:~# ltsp-chroot root@ltsp-server-chroot:/# mount -t proc proc /proc root@ltsp-server-chroot:/# apt-get install gnome root@ltsp-server-chroot:/# exit
Create a new image
root@ltsp-server:~# ltsp-update-image --arch amd64
Reboot the LTSP client
Client boots and can now login. MythTV is not installed
Update repositories the client can use
root@ltsp-server:~# cp /etc/apt/sources.list /opt/ltsp/amd64/etc/apt/sources.list root@ltsp-server:~# cp /etc/apt/sources.list.d/* /opt/ltsp/amd64/etc/apt/sources.list.d/
Install MythTV Frontend
root@ltsp-server:~# ltsp-chroot root@ltsp-server-chroot:/# apt-get update root@ltsp-server-chroot:/# apt-get install mythtv-frontend root@ltsp-server-chroot:/# exit
Create a new image
root@ltsp-server:~# ltsp-update-image --arch amd64
Reboot the LTSP client
This time mythtv frontend will be available
Now configure LTSP Client
Update the settings for your backend, DBHostName and DBPassword will have to be changed.
root@ltsp-server:~# ltsp-chroot root@ltsp-server-chroot:/# vi /etc/mythtv/config.xml
This assumes you have a link from your local user home dir to the /etc/mythtv config dir
root@ltsp-server-chroot:/# ln -s /etc/mythtv/config.xml /home/mythltsp/.mythtv/config.xml root@ltsp-server-chroot:/# exit
Create a new image
root@ltsp-server:~# ltsp-update-image --arch amd64
Reboot the LTSP client
This time, mythtv frontend should connect to the backend.
Enable auto login
root@ltsp-server:~# vi /var/lib/tftpboot/ltsp/amd64/lts.conf
[Default] # Auto Login LDM_AUTOLOGIN = True LOCAL_APPS = True LDM_SESSION = "lightdm-gtk-greeter" #Disable screen going blank after a few mintutes X_BLANKING=0 [192.168.1.150] LDM_USERNAME = mythltsp LDM_PASSWORD = mythltsp
Reboot the LTSP client
This time, mythtv frontend should automatically login.
Optional: Install NVIDIA drivers
Note: if your main LTSP server is 64 bit and your LTSP client is also 64 bit this step will work. If your LTSP client is 32 bit you will need to work out how to install the 32 bit version of the nvidia driver.
root@ltsp-server:~# ltsp-chroot
You must mount proc or you will get errors when you install the nvidia drivers
root@ltsp-server-chroot:/# mount -t proc proc /proc root@ltsp-server-chroot:/# apt-get install linux-headers-`uname -r` root@ltsp-server-chroot:/# apt-get install nvidia-current nvidia-settings root@ltsp-server-chroot:/# nvidia-xconfig
Reboot the LTSP client
This time, the LTSP client should be using the NVIDIA drivers. If you can't see the edges of your screen, you have a condition called "overscan".
Edit /etc/X11/xorg.conf
Add this to the bottom of the "Screen" section. (The ViewPortOut section changes the resoluion sent to your screen. You may need to adjust these numbers for your screen)
Option "metamodes" "DFP-0: nvidia-auto-select +0+0,DFP-1: 1920x1080 { ViewPortIn=1920x1080, ViewPortOut=1820x1020+45+30 }"
root@ltsp-server-chroot:/# exit
Create a new image
root@ltsp-server:~# ltsp-update-image --arch amd64
Reboot the LTSP client
You should now see the full menus around the edges of your screen.
End of 64 bit LTSP Client Instructions
Make MythTV Frontend Automatically Start
root@ltsp-server:~# su - mythltsp $ cd .config $ mkdir autostart $ cd autostart $ vi mythfrontend.desktop
[Desktop Entry] Type=Application Exec=/usr/bin/mythfrontend Hidden=false NoDisplay=false Name=mythTV frontend Comment=Record, playback and watch TV.
Troubleshooting
Make MythTV use the full screen when it launches
There is a known issue with mythtv launching and not using the full screen. A Compiz bug that was reported here:
http://code.mythtv.org/trac/ticket/9589
Run these commands to implement a fix
root@ltsp-server:~# ltsp-chroot root@ltsp-server-chroot:/# apt-get install compizconfig-settings-manager root@ltsp-server-chroot:/# exit
Create a new image
root@ltsp-server:~# ltsp-update-image --arch=i386
or
root@ltsp-server:~# ltsp-update-image --arch amd64
Reboot the LTSP client
After the LTSP client has booted, login using the mythltsp user
Run the ccsm tool.
- Under CompizConfig Settings Manager, go to "Utility"
- Go to "Work arounds"
- Check "Legacy Full Screen" support.
Create a new image
root@ltsp-server:~# ltsp-update-image
Reboot the LTSP client
Mythtv frontend should now use the full screen.
Maintenance Updates
Kernel Updates
If you apply a kernel update to your LTSP server you need to run this command to update your client
root@ltsp-server:~# ltsp-update-kernels
Create a new image
root@ltsp-server:~# ltsp-update-image
MythTV Minor Updates
e.g. This means upgrade from 0.25.1 to 0.25.2
root@ltsp-server:~# ltsp-chroot root@ltsp-server-chroot:/# apt-get update root@ltsp-server-chroot:/# apt-get upgrade mythtv-frontend
Create a new image
root@ltsp-server:~# ltsp-update-image
MythTV Major Updates
This means upgrading a full release. ie, from 0.25 to 0.26
On your LTSP server upgrade mythtv as "normal". For mythbuntu based systems use the Mythbuntu Control Center.
After you confirm your upgrade was successful update your client
Update repositories the client can use
root@ltsp-server:~# ltsp-chroot
For a 64 bit client
root@ltsp-server:~# cp /etc/apt/sources.list /opt/ltsp/amd64/etc/apt/sources.list root@ltsp-server:~# cp /etc/apt/sources.list.d/* /opt/ltsp/amd64/etc/apt/sources.list.d/
For a 32 bit client
root@ltsp-server:~# cp /etc/apt/sources.list /opt/ltsp/i386/etc/apt/sources.list root@ltsp-server:~# cp /etc/apt/sources.list.d/* /opt/ltsp/i386/etc/apt/sources.list.d/
Upgrade the frontend
root@ltsp-server-chroot:/# apt-get update root@ltsp-server-chroot:/# apt-get upgrade mythtv-frontend
Create a new image
root@ltsp-server:~# ltsp-update-image
General OS Patch Updates
root@ltsp-server:~# ltsp-chroot root@ltsp-server-chroot:/# apt-get update root@ltsp-server-chroot:/# apt-get upgrade
Create a new image
root@ltsp-server:~# ltsp-update-image