Bereitstellung eines Mini-Linux (Kiosk)
Porteus ist ein auf Slackware basierendes Linux, welches von DVD, USB-Stick, HDD aber eben auch über PXE/TFTP/HTTP bootet und einen Browser, SSHD, VNCD bereitstellt.
PXE
Der DHCP (densmasq) stellt neben der IP auch PXE-Bootmenu zur Verfügung. Mit dem TAG
pxe-service=x86PC,Porteus Kiosk,/kiosk/pxelinux,10.16.112.2
bootet jeder mit kiosk getaggte Client vom TFTPD auf 10.16.112.2
00:00:00:00:00:00,set:kiosk,kiosk01,12h
TFTPD
TFTP-HPA stellt das TFTP-Root unter /srv/tftp bereit, im Unterordner kiosk müssen liegen:
pxelinux.0 pxelinux.cfg (Ordner) | +- default (Bootmenüeinträge für unbekannte Clients) +- kiosk32 (Porteus 32) +- kiosk64 (Porteus 64) +- 01-MAC-Adresse (für spezielle clients - oder) +- HEX (IP-Adresse in HEX, z.B. 0A107001 = 10.16.112.1)
Die Client-Dateien per SymLink auf kiosk32 oder kiosk64 legen:
#kiosk64 label porteus menu label Porteus Kiosk 64bit kernel porteus/vmlinuz append initrd=porteus/initrd.xz,porteus/initrdpxe.xz quiet http_server=10.16.112.2/porteus/ #kiosk32 label porteus_i586 menu label Porteus Kiosk 32bit kernel porteus_i586/vmlinuz append initrd=porteus_i586/initrd.xz,porteus_i586/initrdpxe.xz quiet http_server=10.16.112.2/porteus_i586/
Unter /srv/tftpd/kiosk/porteus bzw. /srv/tftpd/kiosk/porteus_i586 liegen die Porteus-Dateien:
http (Ordner)
|
+- docs (Ordner)
|
+- default.jpg GNU_GPL kiosk.jpg kiosk.sgn License.txt version
+- xzm (Ordner)
|
+- 000-kernel.xzm 001-core.xzm 002-firefox.xzm 003-settings.xzm 004-wifi.xzm 08-ssh.xzm 09-x11vnc.xzm
initrdpxe.xz
initrd.xz
vmlinuz
HTTPD
Der Apache2 stellt die Dateien unter /srv/tftp/kiosk/porteus/http als /porteus bzw. /srv/tftp/kiosk/porteus_i586/http als /porteus_i586 für den Boot bereit, /etc/apache2/sites-enabled/000-default:
Alias "/porteus" "/srv/tftpd/kiosk/porteus/http"
<Directory "/srv/tftpd/kiosk/porteus/http">
Options Indexes
Require all granted
</Directory>
Alias "/porteus_i586" "/srv/tftpd/kiosk/porteus_i586/http"
<Directory "/srv/tftpd/kiosk/porteus_i586/http">
Options Indexes
Require all granted
</Directory>
Porteus-Config
Porteus Kiosk legt in der Datei docs/kiosk.sgn eine verschlüsselte Konfiguration ab. In unserem Fall ist dort hinterlegt, dass beim Booten die eigentliche Konfiguration vom paedml.kg-fds.de geholt werden soll:
kiosk_config=http://paedml.kg-fds.de/kiosk/config.php
Auf dem paedml kann damit über die übergebene PCID (Porteus) oder die IP des Clients für jeden Client eine eigene Config übermittelt werden.
Porteus-Boot
PXE-Boot (DHCP 10.16.112.2) zum TFTP (10.16.112.2), vor dort kommen vmlinuz, initrd.xz und initrdpxe.xz, die vom HTTP (10.16.112.2 - ist als APPEND-Parameter angehängt) die .xzm-Module nachladen. Ein C-Programm (/sbin/init) aus dem Modul 03-settings.xzm entschlüsselt die kiosk.sgn, lädt die Config vom paedml.kg-fds.de nach und startet den Client (X11, Firefox, VNCD und SSHD). Die zu ladende Webseite wird in der Config angegeben.