Ubuntu 14.04, LTSP ja ID-kaart19. Jan '16

Important

Käesolev juhend on aegunud, Ubuntu 16.04 jaoks sobiv juhend on aadressil http://lauri.vosandi.com/2016/09/xenial-ltsp-ja-id-kaart.html

Juhend eeldab Ubuntu 14.04 server paigaldust.

InternetTerminal ServerTerminalsHub or switcheth0eth1

Iseseisva serveri seadistamine

Iseseisev (standalone) server antud kontekstis tähendab seda, et LTSP serveril on kaks võrguliidest, millest üks vaatab Interneti poole ning teine on ühendatud eraldatud võrgusegmenti kus terminalid asuvad. Sellisel juhul serveeritakse terminalide võrku kõiki vajalikke teenuseid: DHCP, TFTP, NBD, SSH, LDM jne.

Esiteks uuenda pakette:

apt-get update
apt-get dist-upgrade

Paigalda LTSP metapakett, see seadistab kõik teenused mis on LTSP toimimiseks vajalikud:

apt-get install -y ltsp-server-standalone wget ca-certificates apt-transport-https

Seadista võrk failis /etc/network/interfaces, asenda 192.168.77.1 omale sobiliku sisevõrgu aadressiga:

cat << EOF > /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet dhcp

auto eth0
iface eth0 inet static
    address 192.168.77.1
    netmask 255.255.255.0
EOF

Asenda vaikimisi alamvõrk 192.168.0.0/24 ka DHCP serveri seadistustes:

sed -i "s/192\.168\.0\./192.168.77./g" /etc/ltsp/dhcpd.conf

Taaskäivita teenused:

/etc/init.d/networking restart
/etc/init.d/network-manager restart
/etc/init.d/isc-dhcp-server restart
/etc/init.d/nbd-server restart

LTSP serveri lisamine olemasolevasse võrku

Kui sul on juba toimiv DHCP server võid asendada ltsp-server-standalone paketi ltsp-server paketiga:

apt-get install -y ltsp-server wget ca-certificates apt-transport-https

Sellisel juhul pead vajalikud teenused, nagu näiteks TFTP ise seadistama:

apt-get install -y tftpd-hpa
sed -e 's/TFTP_ADDRESS=.*/TFTP_ADDRESS=":69"/' /etc/default/tftpd-hpa

Kontrolli üle, et ka muud teenused oleks kättesaadavad terminalidele.

Töölaua keskkonna paigaldus

Ubuntu töölaud on üsna resursinõudlik ning terminal-serveri puhul äärmiselt aeglane, kuna pilt liigub üle võrgu. Terminal-serverile on soovitatud paigaldada MATE töölaud:

sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y mate-desktop-environment-extras

Kui serverisse on paigaldatud mitu erinevat töölaua keskkonda, saab vaikimisi töölauda vahetada järgnevalt:

update-alternatives --config x-session-manager

Lisa ka Eesti ID-kaardi baastarkvara varamu:

echo "deb https://installer.id.ee/media/ubuntu/ trusty main" > /etc/apt/sources.list.d/ria-repository.list
wget https://installer.id.ee/media/install-scripts/ria-public.key -O - | apt-key add -
apt-get update
apt-get install -y estonianidcard

Lisa Xsession skript mis näitab uut PCSC-lite sokkli asukohta:

echo "export PCSCLITE_CSOCK_NAME=\$HOME/.pcscd.comm" > /etc/X11/Xsession.d/80-pcsclite

Lisa minu tarkvara varamu, kust saab kohandatud OpenSSH serveri mis oskab ümber suunatud ID-kaardi tarkvara sokleid vastu võtta:

echo "deb http://packages.koodur.com trusty main ltsp" > /etc/apt/sources.list.d/koodur.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 054C36F8
apt-get update
apt-get upgrade

PC-baasil terminalid

Enamus PC riistvara toetab PXE-alglaadimist. Alusta terminali tarkvara juurfailisüsteemi loomisega:

MIRROR="http://ee.archive.ubuntu.com/ubuntu/" \
LANG=C \
ARCH=i386 \
ltsp-build-client

ID-kaardi jaoks vajalike komponentide paigaldamiseks sisene terminali juurfailisüsteemi:

chroot /opt/ltsp/i386 /bin/bash

Lisa minu tarkvara varamu, kust saab kohandatud OpenSSH kliendi mis oskab ID-kaardi sokleid serverisse suunata:

echo "deb http://packages.koodur.com trusty main ltsp" > /etc/apt/sources.list.d/koodur.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 054C36F8

Paigalda PCSC-Lite deemon:

apt-get install -y pcscd

Lisa SSH kliendi seadistused, tärni võib asendada oma serveri IP-ga:

cat << EOF > /etc/ssh/ssh_config
Host *
SendEnv LANG LC_*
RemoteForward ~/.pcscd.comm /run/pcscd/pcscd.comm
EOF

VIA terminalide UniChrome graafika tüürelite seis on suht halb seega ma lülitaks välja ka 3D kiirenduse:

cat << EOF > /etc/X11/xorg.conf
Section "Module"
    Disable "glx"
    Disable "dri"
EndSection
EOF

Välju terminali juurikast:

exit

Uuenda terminali juurfailisüsteemi SquashFS tõmmist:

ltsp-update-image

RDP sessiooni lisamine

Lisa terminali juurikasse rdesktop pakett:

chroot /opt/ltsp/i386 apt-get install -y rdesktop

Genereeri uuendatud tõmmis:

ltsp-update-image

Seadista ringi /var/lib/tftpboot/ltsp/i386/lts.conf:

[default]
SCREEN_07="rdesktop -x l -k et -u '' -f -r scard -r sound -r disk:floppy=/run/drives aken.edu.ee"
SCREEN_08="ldm"

Ubuntu 14.04 baasil terminalist Windows 2012 serveri pihta käies on mingi häda kursorite kadumisega, sellest saab mööda kui Windowsi poolel välja lülitada kursori vari [1] või terminali juurikasse paigaldada uuendatud RDP klient:

chroot /opt/ltsp/i386 apt-get install -y libgssglue1
chroot /opt/ltsp/i386 wget http://launchpadlibrarian.net/193620368/rdesktop_1.8.3-1_i386.deb
chroot /opt/ltsp/i386 dpkg -i rdesktop_1.8.3-1_i386.deb
chroot /opt/ltsp/i386 rm -fv rdesktop_1.8.3-1_i386.deb
ARCH=i386 ltsp-update-image

Sisselogimisdialoogi aegumise vältimiseks ava Windowsi register ning lisa HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp alla DWORD tüüpi LogonTimeout=0xffffffff võti-väärtus paar [2].

[1]http://www.thewindowsclub.com/enable-disable-mouse-pointer-shadow-windows
[2]http://serverfault.com/questions/422770/changing-the-login-timeout-for-windows-remote-desktop-services

Cubietrucki ette valmistamine

Kuna PXE on x86 platvormi spetsiifiline siis säärast võimekust näiteks Cubietrucki kasutada ei saa. Küll aga saab Cubietruckile kõrvetada püsivara, mis analoogselt PXE-le laadib võrgust alla tuuma, initrd ning jätakb operatsioonisüsteemi alglaadimisega.

Esmalt paigalda QEMU emulatsioonikiht:

apt-get install -y qemu-user-static binfmt-support

Keela OMAP4 tuuma paigaldus, see pole naguinii enam kättesaadav tarkvaravaramutest:

sed -i -e 's/KERNEL_ARCH="omap4"/KERNEL_ARCH=""/' /usr/share/ltsp/plugins/ltsp-build-client/Ubuntu/020-kernel-selection

Loo ARM juurfailisüsteem:

DEBOOTSTRAP=qemu-debootstrap ARCH=armhf LANG=C ltsp-build-client

Lisa serveri SSH võti:

ltsp-update-sshkeys

Sisene Cubietrucki juurfailisüsteemi:

chroot /opt/ltsp/armhf /bin/bash

Cubietrucki jaoks paigalda Igori 3.4.x tuum ja moodulid kuhu sai külge poogitud LTSP jaoks vajalik overlayfs:

echo "deb http://apt.armbian.com trusty main" > /etc/apt/sources.list.d/armbian.list
apt-key adv --keyserver keys.gnupg.net --recv-keys 0x93D6889F9F0E78D5
apt-get update
apt-get install -y linux-image-sun7i

Lisa minu tarkvara varamu, kust saab kohandatud OpenSSH kliendi mis oskab ID-kaardi sokleid serverisse suunata:

echo "deb http://packages.koodur.com trusty main ltsp" > /etc/apt/sources.list.d/koodur.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 054C36F8

Uuenda pakettide nimekirju:

apt-get update

Paigalda kohandatud OpenSSH, PCSC-deemon, LTSP-kliendi metapakett ja muu tilu-lilu:

apt-get install -y openssh-client pcscd xf86-video-fbturbo

Lisa SSH kliendi seadistused, et terminal võimaldaks serveris ligipääsu terminalis jooksvale PCSC deemonile, vajadusel asenda tärn oma serveri IP-ga:

cat << EOF > /etc/ssh/ssh_config
Host *
SendEnv LANG LC_*
RemoteForward ~/.pcscd.comm /run/pcscd/pcscd.comm
EOF

Kui soovid kasutada ka RDP sessioone siis uuendatud RDP kliendi paigaldamiseks:

apt-get install -y libgssglue1
wget http://launchpadlibrarian.net/193620260/rdesktop_1.8.3-1_armhf.deb
dpkg -i rdesktop_1.8.3-1_armhf.deb
rm -fv rdesktop_1.8.3-1_armhf.deb

Välju juurikast:

exit

Uuenda NBD kaudu serveeritavat tõmmist:

ltsp-update-image

Cubietruck tuuma pakendamine

Paigalda esmalt u-boot tööriistad:

apt-get install -y u-boot-tools

Sikuta Cubietrucki riistvara konfiguratsioon, mis paneb VGA pesa käima resolutsioonil 1024x768 ja lülitab välja terminali jaoks ebaolulised komponendid (WiFi, Bluetooth jms):

wget https://www.koodur.com/cubietruck/1024x768.bin -O /var/lib/tftpboot/ltsp/armhf/1024x768.bin

Loo u-boot jaoks skript mis laeb tuuma, initrd ning riistvara konfiguratsiooni:

cat << EOF > /var/lib/tftpboot/ltsp/armhf/1024x768.scr
setenv bootm_boot_mode sec
setenv bootargs 'ro init=/sbin/init-ltsp init=/sbin/init-ltsp root=/dev/nbd0'
tftp 0x43000000 /ltsp/armhf/1024x768.bin
tftp 0x42000000 /ltsp/armhf/uImage
tftp 0x50000000 /ltsp/armhf/initramfs.uImage
bootm 0x42000000 0x50000000
EOF

Genereeri u-boot tõmmised:

mkimage -A arm -O linux -T script -C none -n boot.scr -d \
    /var/lib/tftpboot/ltsp/armhf/1024x768.scr \
    /var/lib/tftpboot/ltsp/armhf/1024x768.scr.uimg
mkimage -A arm -T ramdisk -C none -n uInitrd -d \
    /var/lib/tftpboot/ltsp/armhf/initrd.img-3.4.110-sun7i \
    /var/lib/tftpboot/ltsp/armhf/initramfs.uImage
mkimage -A arm -O linux -T kernel -C none -n Linux -a 42000000 -e 42000000 -d \
    /var/lib/tftpboot/ltsp/armhf/vmlinuz-3.4.110-sun7i \
    /var/lib/tftpboot/ltsp/armhf/uImage

Seadista ringi ka DHCP serverit failis /etc/ltsp/dhcpd.conf:

authoritative;
subnet 192.168.77.0 netmask 255.255.255.0 {
    range 192.168.77.20 192.168.77.250;
    option domain-name "ltsp";
    option domain-name-servers 8.8.8.8;
    option broadcast-address 192.168.77.255;
    option routers 192.168.77.1;
    next-server 192.168.77.1;
    option subnet-mask 255.255.255.0;
    if substring( option vendor-class-identifier, 0, 3 ) = "PXE" {
        filename "/ltsp/i386/pxelinux.0";
        option root-path "/opt/ltsp/i386";
    } else {
        filename "/ltsp/armhf/1024x768.scr.uimg";
        option root-path "/opt/ltsp/armhf";
    }
}

Cubietruck alglaaduri uuendamine

Viimase sammuna peab Cubietruckile peale laskma uue u-booti mis püüab võrku seadistada DHCP-ga ning siis sealt TFTP-ga skripti alla sikutada. IT Kolledži Robootikaklubist saab laenutada SD-kaarti millel on Priit Laes kirjutatud skript, mis uue u-booti kirjutab Cubietrucki sisemisele mälule, nii et eraldi mälukaarti hiljem vaja pole:

# Seda tuleb siis Cubietrucki peal jooksutada ;)
wget -c https://www.koodur.com/cubietruck/u-boot-sunxi-with-spl.bin -O /root/u-boot-sunxi-with-spl.bin
echo nand-disk >/sys/class/leds/cubietruck\:blue\:usr/trigger
flash_erase -N /dev/mtd0 0 0 && \
nandwrite -p /dev/mtd0 /root/u-boot-sunxi-with-spl.bin && \
flash_erase -N /dev/mtd1 0 0 && \
nandwrite -p /dev/mtd1 /root/u-boot-sunxi-with-spl.bin && \
echo 1 > /sys/class/leds/cubietruck\:orange\:usr/brightness && \
sync && \
echo 0 > /sys/class/leds/cubietruck\:orange\:usr/brightness && \
echo 1 > /sys/class/leds/cubietruck\:green\:usr/brightness
PKCS#11 NBD OpenSC PCSC-Lite LTSP ID-kaart Ubuntu Debian ID-card opensc-tool pcscd Cubietruck OpenSSH