#!/bin/sh
# Starts Live CD services on an Ubuntu machine

# Install required packages
echo " * Installing packages..."
apt-get --no-install-recommends -qq -y install ltsp-server openssh-server
# for the live session we start everything manually
killall inetd

# Set up pxeboot configuration:
mkdir -p /var/lib/tftpboot/ltsp/i386

# Set up lts.conf:
cat <<EOF > /var/lib/tftpboot/ltsp/i386/lts.conf
[default]
LDM_DIRECTX=True
LDM_SSHOPTIONS="-o StrictHostKeyChecking=no -o CheckHostIP=no -o LogLevel=silent"
LDM_GUESTLOGIN=True
EOF

# Create LTSP Guest Users:
echo " * Creating LTSP Guest Users..."
for user in $(seq 1 255); do
  echo "ltsp$user:ltsp$user:200$user:1000:LTSP Guest:/home/ltsp$user:/bin/sh" >> /tmp/userlist
done
newusers /tmp/userlist

# Set up and start dnsmasq with LTSP configuration:
echo " * Setting up services..."
cat <<EOF > /tmp/dnsmasq-ltsp-livecd.conf
pxe-prompt="Starting Edubuntu Live LTSP... Press F8 for boot menu.", 3
pxe-service=X86PC, "Boot from network", /ltsp/i386/pxelinux
pxe-service=X86PC, "Boot from local hard disk", 0
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-boot=/ltsp/i386/pxelinux.0
dhcp-option=vendor:PXEClient,6,2b
dhcp-no-override
dhcp-range=192.168.0.50,192.168.0.150,8h
EOF
dnsmasq -C /tmp/dnsmasq-ltsp-livecd.conf

# Set up kernels:
echo " * Extracting LTSP kernels..."
mkdir -p /opt/ltsp/i386
mount /cdrom/ltsp/i386.img /opt/ltsp/i386 -o loop
ltsp-update-kernels 2>&1 > /dev/zero

# Set correct nbd server port in pxelinux configuration:
sed -i 's/nbdport=.*/nbdport=2000/g' /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default

# Start nbd-server:
echo " * Starting NBD server..."
nbd-server 2000 /cdrom/ltsp/i386.img
