Kategória: LTSP

Zmenené: 14. marec 2011

Terminálová učebňa v Squeeze

Po ročnom používaní LTSP postavenom na Ubuntu 9.04 mi došla trpezlivosť a plánovanú aktualizáciu na Ubuntu 10.04 LTS som nahradil aktualizáciou na Debian. To sa už stalo pred nejakým časom, takže namiesto obvyklej aktualizácie článku, vytváram nový…

Čo ma viedlo k nahradeniu Ubuntu Debianom ? Na Ubuntu mi vadila vlastne len jedna vec, a to, že veľa vecí urobilo za mňa, čo mi spôsobovalo viac problémov ako úžitku, najmä ak som chcel mať niečo inak, tak som musel nie len pátrať (a skúšať) ako to niečo vypnúť, pretože zapínanie bolo vždy urobené nejako divne. Ďalším dôvodom je to, že si niektoré programy kompilujem na svoj obraz doma a na Ubuntu som mal potom problémy so závislosťami…

Netreba zabudnúť ani na to, že Ubuntu je z 93 % Debian, a teda pridáva/mení len zvyšných 7 %, a dovolím si povedať, že tých 7 % je presne to zjednodušenie, ktoré robí Ubuntu prístupným pre začiatočníkov. Tak prečo neprejsť k tomu základu? Takže už bez vysvetľovania toho, čo je to LTSP, nainštalujem server, ktorý sa bude líšiť od štandardnej inštalácie v tom, že bude používať ako TFTP a DHCP (a tiež DNS) server dnsmasq a bude používať NBD obraz systému klienta, vrátane NBD swapu.

Príprava systému

Debian, na rozdiel od Ubuntu, neposkytuje priamo možnosť nainštalovať LTSP server, ale treba nainštalovať systém štandardným spôsobom. Dokonca nemusíte vôbec inštalovať grafické rozhranie, ale ja som zvolil štandardnú inštaláciu, ale pri výbere softvéru som zrušil inštaláciu grafického prostredia, ktoré si potom nainštalujem podľa vlastných predstáv. Použil som sieťovú inštaláciu (netinst) momentálneho testingu, ale Squeeze je na spadnutie a neplánujem stavať LTSP na testingu.

Lokalizácia

Pri inštalácii som si zvolil okrem slovenskej lokalizácie aj českú a anglickú, ak ste českú nezvolili, môžete to urobiť teraz odkomentovaním príslušných položiek v súbore /etc/locale.gen a jej následným vygenerovaním pomocou:

locale-gen --purge

Pre mňa už klasický problém, ktorý som riešil ako prvý, bolo mixované jazykové prostredie pomocou premennej LANGUAGE. Jej nastavenie patrí do súboru /etc/default/locale v tvare:

LANG="sk_SK.UTF-8"
LANGUAGE="sk_SK.UTF-8:cs:en"

Pokiaľ používate GDM3 oceníte aj nastavenie GDM_LANG=“sk_SK.UTF-8“, čiže na hodnotu prvého parametra v LANGUAGE, pretože inak pri lokálnom prihlásení vymaže hodnotu LANGUAGE, ale pre samotné LTSP nie je nutná.

Týmto nastaveniam venujte patričnú pozornosť, pretože sú prevzaté do nastavenia klienta LTSP, a tak si ušetríte prácu neskôr.

Určite sa oplatí aj nastavenie klávesnice, pretože východzia klávesnica používa QWERTY, čo nepovažujem za veľmi obvyklé. Nastavujem aj kláves Compose, aby bol prístup k rozšíreným možnostiam centrálny. Všetky nastavenia sú centrálne v súbore /etc/default/keyboard:

XKBVARIANT=""
XKBOPTIONS="compose:menu"

Odstránenie NFS

Vo svojom nastavení nepoužívam NFS a odstraňujem ho, hoci ak ho necháte, nič nepokazíte:

aptitude purge nfs-common nfs-kernel-server portmap

Poštový server

Predvoleným poštovým serverom Debianu je Exim4 a pokiaľ neplánujete LTSP server využiť aj ako poštový server, čo ja neplánujem, nie je potrebné aby prijímal vonkajšie spojenia. On ich predvolene ani neprijíma, pretože počúva len na lokálnej slučke (127.0.0.1), avšak i to je zbytočné, jednoduchým nastavením ho možno nastaviť tak, že nebude vôbec používať sieť na príjem správ, a to nastavením v /etc/default/exim4:

QUEUERUNNER='queueonly'

Server treba reštartovať, inak sa zmena prejaví až pri ďalšom štarte systému:

invoke-rc.d exim4 restart

Nastavenie siete

Nejaké nastavenie ste si urobili pri inštalácii, ak ale máte server s dvomi rozhraniami, ostalo druhé rozhranie nenastavené, ja nastavujem obe rozhrania staticky:

auto eth0
iface eth0 inet static
     address 192.168.0.115
    netmask 255.255.255.0
    gateway 192.168.0.254

auto eth1
iface eth1 inet static
    address 192.168.10.1
    netmask 255.255.255.0

Aby boli nastavenia siete aplikované, treba reštartovať sieť:

invoke-rc.d networking restart

Varovanie o tom, že tento spôsob je zastaraný možno ignorovať a príkazom ifconfig skontrolovať, že sieť je nastavená podľa predstáv.

Dôležité je po nastavení siete reštartovať démona SSH, aby počúval na správnych rozhraniach, pretože inak nebudú správne prekopírované SSH kľúče, inými slovami sa z klient a neprihlásite.

Inštalácia LTSP

Vytvorenie chroot

Ako som už spomínal, pomenovaním chroot je v LTSP myslené prostredie klienta, teda systém, ktorý sa bude spúšťať na vzdialenom klientovi.

Samotná inštalácia je triviálna. Ak plánujete inštalovať štandardné prostredie, jednoducho nainštalujte balík ltsp-server-standalone:

aptitude install ltsp-server-standalone

Inštalácia tohoto balíka nainštaluje všetky potrebné závislosti, vrátane server NFS, ja však nechcem používať NFS, ak máte podobný názor, je treba nainštalovať balíky jednotlivo:

aptitude  install dnsmasq gnome-session ldm-server libasound2-plugins ltsp-server ltspfs \
                 nbd-server openbsd-inetd openssh-server squashfs-tools x11-utils xauth

Dajte najmä pozor na to, aby ste nemali nainštalovaný balík xinetd, namiesto servera *-inetd, inak sa môžete dostať do problémov, alebo ako to zvyknú písať: xinetd zvoľte, len ak viete čo robíte.

Je možné, že niektoré z týchto balíkov už nainštalované máte, ale to nie je žiadny problém, pretože jednoducho nebudú znova nainštalované. Celé je to veľmi rýchle (v závislosti od už nainštalovaných balíkov), takže možno pokračovať vytvorením prostredia klienta, ktoré sa často v dokumentácii spomína ako chroot klienta, pretože jeho úpravy budete robiť pomocou príkazu chroot. Vzhľadom k spomínanému NBD obrazu, a tiež k tomu, že mám server na architektúre amd64 (64b), ale klientov len i386 (32b), použijem doplnkové parametre:

ltsp-build-client --arch i386 --squashfs-image --purge-chroot --prompt-rootpass

Toto už také rýchle nebude a preto, ak máte pomalšiu linku k internetu je čas na kávu! K dispozícii je veľa parametrov, ktoré prispôsobujú predvolené správanie vytvárania prostredia chroot. Ich kompletný výpis poskytne:

ltsp-build-client --extra-help

Mnohé z nich možno nastaviť v konfiguračnom súbore, ktorý je predvolene hľadaný v /etc/ltsp/ltsp-build-client.conf a môžete si v ňom nastaviť napríklad:

# set alternate default location for ltsp chroot (--base)
#BASE="/srv/ltsp"

# build an amd64 chroot by default (--arch)
ARCH="i386"

# build a Debian sid environment (--dist)
DIST="squeeze"

# set default mirror (--mirror)
MIRROR="http://ftp.sk.debian.org/debian/"

# purge existing LTSP chroot if present (--purge-chroot)
#PURGE_CHROOT="true"

# create squashfs image for use with NBD (--squashfs-image)
SQUASHFS_IMAGE="True"

# prompt to set the root password
ROOTPASS="prompt"

# list of packages to install as part of the final installation (--late-packages)
LATE_PACKAGES="xrestop aptitude plymouth"

Ak adresár /etc/ltsp neexistuje, jednoducho si ho vytvorte.

Ako sami vidíte, nastavil som si architektúru i zrkadlo, aby som to nemusel vždy zadávať v príkazovom riadku. Potom už môžem spustiť ltsp- build-client bez parametrov. Toto spúšťanie bez parametrov iste oceníte najmä pri počiatočných pokusoch, pretože je pravdepodobné, že sa o jeho vytvorenie pokúsite viackrát, čím bude vždy spustený s rovnakými parametrami a nebude ich treba vypisovať.

Vstup do chroot

Na vstup do chroot slúži príkaz chroot (podľa ktorého je prostredie klienta pomenované). Stačí jednoducho zadať:

chroot /op t/ltsp/i386

A ste tam. Avšak prakticky ihneď zistíte, že to nie je ono. Začnú sa vám objavovať rôzne chybové hlášky, že chýba to, či ono. Je to preto, že systém nemá informácie o zariadeniach (/dev) a ani sám o sebe (/proc). Riešením môže byť ich pripájanie, ale na to sa ľahko zabúda. Oveľa lepšie sa mi zdá využiť príkaz ltsp-chroot, ktorý sa o všetko potrebné postará sám, stačí ho nastaviť. nastavenie programu je v súbore /etc/ltsp/ltsp-chroot.conf a môže vyzerať takto:

# path to chroot root ($BASE/$ARCH)
#ROOT="/opt/ltsp/i386"

#Architecture of the chroot. Default is arch of the host (--arch)
ARCH="i386"

#Base of ltsp chroot. Default is /opt/ltsp if unspecified (--base)
BASE="/opt/ltsp"

#Mount package cache dir from server (--mount-package-cache)
#MOUNT_PACKAGE_CACHE="true"

#Mount /dev/pts from server (--mount-dev-pts)
MOUNT_DEV_PTS="true"

#Mount /proc from server (--mount-proc)
MOUNT_PROC="true"

#Copy /etc/resolv.conf from server (--copy-resolv-conf)
 #COPY_RESOLV_CONF="true"

Teraz sa do chroot dostanete pomocou príkazu:

ltsp-chroot

Nastavenie DHCP

Faktom je, že v Ubuntu fungovalo DHCP bez zásahu hneď po inštalácii. V prípade Debianu možno tiež, ale zvolil som ako DHCP server program dnsmasq, ktorého nastavenie treba prispôsobiť. Samozrejme, možno ho konfigurovať ako celok, ale LTSP prichádza so vzorovým konfiguračným súborom, ktorý najprv prekopírujte do adresára /etc/ltsp:

cp /usr/share/doc/ltsp-server/examples/dhcpd-dnsmasq /etc/ltsp/dnsmasq.conf

Samozrejme, môžete si ho upraviť ako len chcete, ja v tomto okamihu robím úpravy len dve zapnem DNS a naviažem ho na rozhranie klientov, aby nebol prístupný z vonku siete (úpravu rozsahu IP adries nepočítam):

# Don't function as a DNS server
#port=0

# Don't listen on external interface
except-interface=eth0

# ip ranges to hand out
dhcp-range=192.168.10.20,192.168.10.250,2h

Po prispôsobení už len ostáva nastaviť démona tak, aby tento konfiguračný súbor používal. Možno to dosiahnuť nastavením v /etc/default/dnsmasq:

DNSMASQ_OPTS="--conf-file=/etc/ltsp/dnsmasq.conf"

Samozrejme, démona treba reštartovať:

invoke-rc.d dnsmasq restart

Hotovo môžete spustiť klientov a prihlásiť sa!

Nastavenie prostredia

Statické DHCP

DHCP (D ynamic Host Config Protcol) je úžasná vec a bez neho by jednak klienti vôbec nenaštartovali a jednak by mali všetky rovnakú IP adresu, teda celý tento zázrak by nefungoval. Dynamické prideľovanie adresy má však aj svoje záludnosti, ktoré sa skrývajú v tom, že rovnaký počítač môže mať vždy inú IP adresu. Osobne dávam prednosť takému použitiu DHCP, ktoré zasití, že počítač dostane vždy tú istú IP adresu.

Nastavenie takéhoto statického DHCP je pomocou dnsmasq jednoduché. Stačí pre každého klienta pridať do konfiguračného súboru riadok:

dhcp-host=08:00:27:78:B2:B1,192.168.10.101,ltsp101

Ako ste možno sami poznali, parametrami sú MAC adresa, IP adresa a meno stroja. Dôležitá je len jedna vec, a to aby zadaná IP adresa nebola v rozsahu dynamicky prideľovaných adries, ktorý je daný parametrom dhcp-range.

Nastavenie klienta

Nastavenie klientov je možno realizovať pomocou súboru lts.conf. Pri inštalácii prostredia chroot bol vytvorený jeden vzorový v /opt/ltsp/i386/etc/lts.conf, ale jeho zmena pri použití obrazu NBD je dosť nepraktická, preto je dobré vytvoriť si súbor v koreni TFTP, predvolene vo /var/lib/tftpboot/ltsp/i386/. Ja si ho tam zvyknem vytvoriť a potom si ho pomocou symbolického odkazu dať aj do /etc/ltsp, aby bol prístup k nemu kratší a nastavenia sú tak pekne pohromade:

cp /opt/ltsp/i386/etc/lts.conf /var/lib/tftpboot/ltsp/i386/
ln -s /var/lib/tftpboot/ltsp/i386/lts.conf /etc/ltsp/lts.conf

Tento súbor môže obsahovať rôznorodé parametre, pomocou ktorých možno prispôsobiť jednotlivé klienty, skupiny klientov ale aj všetkých klientov naraz. Manuálová stránka konfiguračného súboru nie je v Debiane dostupná, ale popis parametrov je v súbore /usr/share/doc /ltsp-server/lts-parameters.txt a vrelo odporúčam prečítať si ho. Podrobnostiam v nastavení klienta sa iste vrátim v nejakom inom článku, tu len ukážem moje zmeny východzieho súboru:

[default]
    LTSP_CONFIG=True
    SOUND=False
    #LOCALDEV=True

Ako sami vidíte, konfiguračný súbor má sekcie (tu len jednu [default] ) a dvojice MENO=HODNOTA. Sekcia default je určená na nastavenie volieb pre všetkých klientov, ak chcete urobiť nastavenia, ktoré budú mať vplyv len na jedného klienta, stačí vytvoriť novú sekciu, ktorej meno bude MAC adresa klienta, napr [08:00:27:78:b2:b1].

Použitie iného mena sekcie vytvorí konfiguráciu, ktorá bude použitá na vybraných klientov, napríklad:

[nolocaldev]
    LCOALDEV=false

[MAC:AD:RE:SA]
    LIKE=nolocaldev

Samozrejme, tento príklad veľký zmysel nedáva, pretože by stačilo zadať parameter LOCALDEV priamo, ale tieto spoločné sekcie môžu samozrejme obsahovať volieb viac…

Aby sa zmeny v lts.conf aplikovali, je potrebné klienta reštartovať.

Úpravy chroot

Skôr alebo neskôr budete potrebovať urobiť v prostredí chroot nejaké úpravy, ako napríkald aktualizácia softvéru, či pridanie niektorých programov. V takom prípade stačí jednoducho vstúpiť do chroot:

ltsp-chroot

V prostredí klienta urobte požadované úpravy. Vzhľadom k tomu, že program ltsp-chroot sa postará aj o pripojenie potrebných zariadení a nastavenie premenných, môžete pokojne aktualizovať, či meniť nastavenia podľa vlastnej potreby. Aby som si prácu s balíkmi zjednodušil, inštalujem si do chroot aj aptitude, len vždy po jeho použití vyprázdnim vyrovnávaciu pamäť balíkov, ktorá v chroot ozaj nie je potrebná.

Po vykonaní potrebných zmien prostredie jednoducho opustíte odhlásením (Ctrl+D, logout a podobne). Ak používate NFS, je to všetko a stačí klientov reštartovať. Ak však používate NBD, je treba vygenerovať nový obraz NBD a prípadne aj nové súbory jadra, či kľúče SSH.

Začnime kľúčmi. Ak ste z nejakého dôvodu zmenili kľúče, ktorými sa identifikuje server SSH, ich aktualizáciu do prostredia chroot zaistíte pomocou ltsp-update-sshkeys. Ak ste nemenili predvolené umiestnenie chroot, tak príkaz na správnu funkciu nevyžaduje žiadne parametre.

Ak ste pri aktualizácii nainštalovali nové jadro, alebo ste urobili zmeny, ktoré mali za následok zmenu obsahu obrazu initrd, je treba nové súbory jadra prekopírovať do adresára TFTP. O toto sa postará príkaz ltsp-update-kernels. Aj v tomto prípade platí, že ak ste nezmenili východzie umiestnenie chroot a adresára TFTP, príkaz nepotrebuje žiadne parametre.

Použitie ltsp-update-sshkeys je nutné, len ak ste zmenili identifikáciu SSH servera a rovnako použitie ltsp-update-kernels je potrebné, len ak sa zmenili súbory jadra.

A samotná aktualizácia obrazu NBD. Postará sa o ňu príkaz ltsp-update-image. Tento príkaz môže vyžadovať zadanie architektúry chroot, ak sa líši od architektúry servera:

ltsp-update-image --arch i386

Jeho vykonanie chvíľu trvá a po vygenerovaní nového obrazu je potrebné reštartovať klientov, aby sa zmeny v obraze prejavili. nemusíte mať obavu, na prihlásených klientov to vplyv nemá a správca prihlásenia LDM sa po odhlásení o reštart postará sám.

Grafické prostredie

Podľa predchádzajúceho postupu je teraz v systéme nainštalované úplne základné prostredie Gnome. Aby však žiaci mali možnosť voľby, pridávam ešte ďalšie:

aptitude install fluxbox openbox fvwm-crystal

Samozrejme, môžete si nainštalovať, čo len chcete a považujete za vhodné. Veľmi dobrou voľbou je aj prostredie LXDE. Nič vám nebráni ani v použití XFCE, ale ak má byť jediným dôvodom na XFCE to, že je ľahšie ako GNOME, tak sa na to veľmi nespoliehajte…

Doplnenie aplikácií

Ak ste postupovali podľa tohoto návodu, sami zistíte, že v systéme nemáte skoro nič nainštalované. Výber inštalovaného softvéru ponechám na vás, ale pre úplnosť spomeniem, na čo by ste zabudnúť nemali:

  • OpenOffice.org
  • IceWeasel
  • Claws Mail
  • GIMP
  • Dia
  • Inkscape
  • Scribus
  • a ďalšie

Záver

Ani zďaleka som v tomto článku nespomenul všetky možné úkony, ktoré je dobré v prostredí LTSP urobiť. Ale to nebol cieľ, chcel som len poskytnúť slovenský návod, ktorý bude viesť k funkčnému prostrediu LTSP. Aby ste získali funkčné prostredie terminálovej siete. Pre tých zbehlejších, ktorí si to už možno všimli, celé nastavenie v tomto článku som testoval vo virtuálnom prostredí VirtualBox, takže vyskúšať si to môžete aj bez fyzických zariadení a tenkých klientov.