Você está na página 1de 61

Fachrichtung

Wirtschaftsinformatik

Erste Projektarbeit
(Bearbeitungszeitraum: 01.07.2009 bis 21.08.2009)

Erstellung eines Linux-Derivates für


Public-Browsing-PCs

Clemens Riese
Kurs: WWI08D
(Studiengangsleiter: Prof. Dr. Jörg Baumgart)

Ausbildungsbetrieb:

SAS Institute GmbH


Abteilung: Rechenzentrum

Firmenbetreuer:
Konstantinos Karpouzos
06221 415-1345
Konstantinos.Karpouzos@ger.sas.com
Adobe
R , Reader
R und Flash R sind entweder geschützte Warenzeichen oder eingetragene

Warenzeichen von Adobe Systems Incorporated in den USA und/oder anderen Ländern.
Microsoft
R und Windows R sind entweder geschützte Warenzeichen oder eingetragene

Warenzeichen der Microsoft Corporation in den USA und/oder anderen Ländern.


Inhaltsverzeichnis

Abkürzungsverzeichnis III

Listingsverzeichnis V

Abbildungsverzeichnis VII

1 Einleitung 1

2 Anforderungsspezifikation 3
2.1 Der IST-Zustand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Der SOLL-Zustand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.1 Anforderungen Derivat . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.2 Anforderungen Entwicklungsumgebung . . . . . . . . . . . . . . 4
2.3 Durchführbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4 Abschließende Worte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Entwurf 5
3.1 Als Grundlage dient Ubuntu 9.04 . . . . . . . . . . . . . . . . . . . . . 5
3.2 Alternative zum Desktopmanager Gnome . . . . . . . . . . . . . . . . . 6
3.3 Firefox - Zugriffskontrolle und Modifikation . . . . . . . . . . . . . . . . 6
3.3.1 Kiosk-Oberfläche für Firefox . . . . . . . . . . . . . . . . . . . . 6
3.3.2 Korrekte Darstellung von Internetinhalten . . . . . . . . . . . . 7
3.4 Modifikation von Boot-Splash und USplash . . . . . . . . . . . . . . . . 7
3.5 Bildschirmschoner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.6 Abschließende Worte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4 Implementierung und Test 9


4.1 Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 Reconstructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3 Beta-Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3.1 Ersetzung von Gnome Desktop Manager durch Openbox . . . . 11
4.3.2 Modifikation von Firefox . . . . . . . . . . . . . . . . . . . . . . 11
4.3.3 Anpassung Boot-Splash und USplash . . . . . . . . . . . . . . . 15
4.3.4 Derivatgröße unter 700 MB . . . . . . . . . . . . . . . . . . . . 19
4.3.5 Bildschirmschoner . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3.6 Abschluss der Beta-Phase . . . . . . . . . . . . . . . . . . . . . 20
4.4 RC-Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.4.1 xmodmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

I
II INHALTSVERZEICHNIS

4.4.2 SQUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.5 Abschließende Worte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5 Zusammenfassung und Ausblick 23

A Listings IX

B Pakete Entwicklungsumgebung XIII

C Pakete Derivat XV

D Anleitungen XVII
D.1 Erstellung einer „Minimal“-CD . . . . . . . . . . . . . . . . . . . . . . . XVII
D.2 Anpassung Boot-Splash . . . . . . . . . . . . . . . . . . . . . . . . . . . XX
D.3 Anpassung USplash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXI
D.4 Startscript für Firefox . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIII
D.5 xmodmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIV
D.6 Kiosk-Oberfläche für Firefox . . . . . . . . . . . . . . . . . . . . . . . . XXIV
D.7 Installation von Software . . . . . . . . . . . . . . . . . . . . . . . . . . XXV
D.7.1 Adobe Flash und Adobe Reader . . . . . . . . . . . . . . . . . . XXV
D.7.2 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXV
D.8 Veränderte bzw. neuerstellte Dateien . . . . . . . . . . . . . . . . . . . XXVI

Glossar XXXI

Literaturverzeichnis XXXIII
Abkürzungsverzeichnis

apt . . . . . . . . . . . . . . Advanced Packaging Tool


bash . . . . . . . . . . . . . Bourne Again Shell
GDM . . . . . . . . . . . . Gnome Desktop Manager
GUI . . . . . . . . . . . . . Graphical User Interface
InitRD . . . . . . . . . . . initial ramdisk
MB . . . . . . . . . . . . . . Megabyte
png . . . . . . . . . . . . . . Portable Network Graphics
px . . . . . . . . . . . . . . . Pixel
RC . . . . . . . . . . . . . . Release Candidate
XML . . . . . . . . . . . . Extensible Markup Language

III
IV ABKÜRZUNGSVERZEICHNIS
Listingsverzeichnis

4.1 Inhalt /etc/skel/.xinitrc . . . . . . . . . . . . . . . . . . . . . . . . . . 11


4.2 Inhalt /etc/skel/.bash_profile . . . . . . . . . . . . . . . . . . . . . . . 11
4.3 Inhalt /usr/share/applications/sas_custom/ff_start.sh . . . . . . . . . 13
4.4 Ergänzung von /etc/xdg/openbox/autostart.sh . . . . . . . . . . . . . . 13
4.5 Änderung an /etc/firefox-3.0/profile/localstore.rdf . . . . . . . . . . . . 14
4.6 Änderung an /etc/firefox-3.0/profile/prefs.js . . . . . . . . . . . . . . . 14
4.7 Geänderte isolinux.cfg . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.8 Inhalt /isolinux/lang . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.9 Auszug geänderte panel.inc . . . . . . . . . . . . . . . . . . . . . . . . 16
4.10 Auszug geänderte de.po . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.11 Geänderte text.cfg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.12 Zu löschende Fragmente aus xubuntu-usplash-theme.c . . . . . . . . . . 18
4.13 Ergänzung von /etc/xdg/openbox/autostart.sh . . . . . . . . . . . . . . 20
4.14 Geänderte Zeile 33 von /etc/skel/.xscreensaver . . . . . . . . . . . . . . 20
4.15 Ergänzung von /etc/xdg/openbox/autostart.sh . . . . . . . . . . . . . . 21
A.1 Inhalt /etc/xdg/openbox/autostart.sh . . . . . . . . . . . . . . . . . . IX
A.2 Inhalt /etc/firefox-3.0/profile/localstore.rdf . . . . . . . . . . . . . . . . X
A.3 Inhalt /etc/skel/.xscreensaver . . . . . . . . . . . . . . . . . . . . . . . XI
D.1 /etc/skel/.bash_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . XXVI
D.2 /etc/skel/.xinitrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXVI
D.3 /etc/skel/.xscreensaver . . . . . . . . . . . . . . . . . . . . . . . . . . . XXVI
D.4 /etc/firefox-3.0/profile/localstore.rdf . . . . . . . . . . . . . . . . . . . XXVII
D.5 /etc/firefox-3.0/profile/prefs.js . . . . . . . . . . . . . . . . . . . . . . . XXIX
D.6 /etc/xdg/openbox/autostart.sh . . . . . . . . . . . . . . . . . . . . . . XXIX
D.7 /etc/xdg/openbox/menu.xml . . . . . . . . . . . . . . . . . . . . . . . XXX

V
VI LISTINGSVERZEICHNIS
Abbildungsverzeichnis

4.1 Ubuntu 9.04 Boot-Splash . . . . . . . . . . . . . . . . . . . . . . . . . . 16


4.2 Veränderter Boot-Splash . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3 Veränderter USplash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

VII
VIII ABBILDUNGSVERZEICHNIS
Kapitel 1

Einleitung

Durch den Umstand, dass das SAS Institute ein großer Anbieter von Business-Intelligence-
Lösungen ist, werden in unserem Hause regelmäßig Schulung für unsere Kunden abgehal-
ten. Natürlich sollen unsere Kunden dabei nicht den Komfort missen, ihre eMails abfragen
zu können und ggf. auch an diese eMails angehängte Dokumente öffnen zu können.
Aber nicht nur wegen des Komforts unserer Kunden ist eine solche Möglichkeit empfeh-
lenswert – sie trägt auch zu einem positiven Gesamteindruck des Schulungteilnehmers
über das Unternehmen bei.
Die Möglichkeit des freien Zugangs zu dem jeweilen eMail-Postfach war zwar bisher mög-
lich und drohte aber auf Grund des hohen Wartungsaufwand zu scheitern. Mit der Er-
stellung eines eigenen Linux-Derivates, welches ein reines Live-System ist, wird versucht
diese Möglichkeit weiterhin aufrecht zu erhalten. Dabei wird mit der parallelen Erstellung
einer Entwicklungsumgebung außerdem noch dem Umstand Rechnung getragen, dass es
möglich sein muss, das Derivat zu warten und ggf. entsprechenden Neuerungen anzupas-
sen.

1
2 KAPITEL 1 - EINLEITUNG
Kapitel 2

Anforderungsspezifikation

Dieses Kapitel befasst sich sowohl mit der Analyse der gegenwärtigen Situation als auch
der angestrebten Situation. Es wird auf wichtige Kriterien eingegangen, die durch die
bisherige Umsetzung nicht oder nur teilweise realsiert werden können und bei der neuen
Lösung essenziell sind.

2.1 Der IST-Zustand


Zum gegenwärtigen Zeitpunkt ist unseren Kunden die Möglichkeit des freien Zugangs
zum Internet bzw. zu den jeweiligen eMail-Postfächern durch öffentliche Computer mit
Microsoft R Windows R gegeben.

Dabei ist das Betriebssystem auf der Festplatte installiert, was ein hohes Sicherheitsrisi-
ko darstellt. Um diesem Risiko entsprechend entgegenzuwirken wurden Maßnahmen und
Richtlinien implementiert, die es auf ein vertretbares Level senken. Allerdings müssen
diese Vorkehrungen ständig gewartet werden, was zu einem hohen Aufwand führt. Dieser
erhöht sich zusätzlich noch dadurch, dass bei etwaigen Updates die Sicherheitsmaßnahmen
und -richtlinien erst außer Kraft gesetzt werden müssen um eine Installation durchführen
zu können und danach wieder entsprechend hergestellt werden müssen.

2.2 Der SOLL-Zustand


Mit Hilfe des Projekts „Erstellung eines Linux-Derivates für Public-Browsing-PCs“ soll ein
SAS-eigenes Linux-Derivat erstellt werden, wodurch der Wartungsaufwand bei gleicher
Sicherheit wie der bisherigen minimiert wird. Als Ergänzung dazu soll eine Entwicklungs-
umgebung geschaffen werden, die es ermöglicht spätere Wartungs- und Integrationsar-
beiten durchzuführen. Über beides soll zudem eine entsprechende Dokumentation erstellt
werden.

2.2.1 Anforderungen Derivat


Das Derivat sollte folgende Kriterien erfüllen:

• als Grundlage des Derivates soll die Linux-Destribution „Ubuntu“ (Version 9.04)
dienen

3
4 KAPITEL 2 - ANFORDERUNGSSPEZIFIKATION

• es soll nur der Zugriff auf den Browser „Firefox“ möglich sein (falls dieser geschlossen
wird, soll er automatisch wieder ausgeführt werden)

• die korrekte Darstellung von Inhalten im Internet soll sichergestellt sein

• sowohl der Boot-Splash als auch der USplash sollen modifiziert werden

• die Privatsphäre des Nutzer soll geschützt werden

• nach elf Minuten Inaktivität soll sich ein Bildschirmschoner einschalten

Zusätzlich soll ggf. der Proxy-Server SQUID eingebunden werden und mittels eines Content-
Filters der Zugriff auf bestimmte Websites beschränkt bzw. unterbunden werden.

2.2.2 Anforderungen Entwicklungsumgebung


Diese Entwicklungsumgebung sollte folgende Spezifikationen einhalten:

• Ubuntu (Version 9.04, Desktop) als Betriebssystem

– 80 GB als Root-Partition
– 4 GB als Swap-Partition
– Rest als Backup-Partition

• zu installierende Software

– Reconstructor
– Adobe
R Flash
R

– Adobe
R Reader
R

Entgegen einiger oben genannter Spezifikationen ist alternativ auch darüber zu entschei-
den, ob die Entwicklungsumgebung selber als Live-System umgesetzt werden kann/soll.

2.3 Durchführbarkeit
Die Durchführung dieses Projekts ist möglich, da es einerseits bereits bestehende Lösungen
(z. B. Mophix1 ) gibt, die dem Ziel des Projekts sehr ähnlich sind, und andererseits die hohe
Flexibilität und Anpassbarkeit von Linux eine passende Grundlage zur Realisierung des
Projekts bilden.

2.4 Abschließende Worte


Durch die genannten Kriterien wurde Umfang des Projekts grob festgelegt und durch die
Durchführbarkeitsanalyse ein entsprechender Zeitraum definiert, in dem die Umsetzung
des Projekts stattfinden soll. Im folgenden Kapitel werden die Kriterien des Projekts
weiter verfeinert und die Entwicklungsumgebung entsprechend theoretisch konzipiert.
1
http://www.morphix.org/
Kapitel 3

Entwurf

Um das Projekt erfolgreich abschließen zu können ist einerseits eine genaue Analyse der
Problemstellung bzw. der Vergleich zwischen IST- und SOLL-Zustand (siehe Seite 3, Ka-
pitel 2) wichtig, anderseits ist aber auch ein gründlicher Entwurf des Gesamtkonzepts
notwendig. Die bei diesem Projekt zu klärenden Elemente sind in der Analysephase erör-
tert worden und sollen nun in einem Entwurf konkretisiert werden.

3.1 Als Grundlage dient Ubuntu 9.04

Die Entscheidung die Linux-Destribution Ubuntu als Grundlage des zu erstellenden De-
rivats heranzuziehen wurde auf Grund der hohen Kompatibilität und Benutzerfreund-
lichkeit gefällt. Die aktuelle Version von Ubuntu ist 9.04 Codename „Jaunty Jackalope“.
Diese ist bereits in der Lage die unterschiedlichen Hardware-Komponenten eines Compu-
ters weitestgehend selber zu konfigurieren und dies auch auf einem breiten Spektrum von
unterstützter Hardware. Durch diesen Umstand ist es möglich sich nur noch auf die eigent-
liche Aufgabenstellung – also die Erstellung eines eigenen Derviates – zu konzentrieren,
da grundlegende bzw. zum Funktionieren des Derivates vorauszusetzende Eigenschaften
als funktionierend angesehen werden können. Ein weiteres Argument für die Verwendung
Ubuntu ist, dass es sich einfach warten und updaten lässt, was für spätere Aufgaben einen
großen Vorteil gegenüber anderen Distributionen darstellt. Des Weiteren wird Ubuntu 9.04
verwendet, da es sich hierbei um eine der großen Linux-Distributionen handelt und somit
auch der nachhaltige Support von der Entwicklerseite gewährleistet ist. Dies ist nicht zu-
letzt dadurch möglich, dass Ubuntu von der Firma Canonical Ltd. gesponsort wird. Auch
hat Ubuntu eine große Community, die sich bei der Beantwortung von Fragen als sehr
hilfreich erweisen kann.
Im Rahmen des Projekts soll die Ubuntu-Installations-CD (welche selber schon als Live-
System eingesetzt werden kann) auf die festgesetzten Kriterien beschränkt werden. Ein
wichtiger Punkt, der in diesem Zusammenhang nicht aus den Augen verloren werden
darf, ist, dass es sich bei dem Live-System-Medium um eine CD handeln soll und somit
ein Speicherverbrauch von 700 Megabyte (kurz: MB) die Obergrenze darstellt.

5
6 KAPITEL 3 - ENTWURF

3.2 Alternative zum Desktopmanager Gnome


In Linux (und somit auch in Ubuntu) wird zwischen zwei Graphical-User-Interface-Typen
(kurz: GUI-Typen) unterschieden - dem Desktopmanager oder dem Fenstermanager. Ein
Desktopmanager übernimmt die Verwaltung der Fenster und stellt außerdem noch eine
Taskbar und den Desktop, auf dem Dokumente und ähnliches abgelegt werden können,
bereit. Im Gegensatz dazu bietet ein Fenstermanager nur die Funktionalität der Fens-
terverwalung und ggf. eines einfachen Menüs. Zum Teil gibt es auch Kombinationen der
beiden GUI-Typen, wie es z. B. bei Gnome der Fall ist - dort enthält der Desktopmanager
Gnome den Fenstermanager Metacity.
Allein aus dem unterschiedlichen Funktionsumfang ist zu erkennen, dass ein Fensterma-
nager ressourcensparender (sowohl bei der Speicherbelegung als auch bei der Performan-
ce) agiert als ein Desktopmanager. Deshalb wird in dem Derivat eine Alternative zum
Desktopmanager Gnome verwendet. Bei einem Vergleichstest zwischen den Fensterma-
nagern FluxBox, IceVM und Openbox setzte sich letztere durch. Die Entscheidung für
Openbox wurde an Hand folgender Gründe getroffen:

• die Arbeitsspeicher und Prozessorbelastung ist sehr gering,

• der Desktop verfügt über keine Taskbar (diese würde ein Sicherheitsrisiko darstellen)
und

• die Konfiguration erfolgt über leicht verständliche Shell- bzw. XML-Scripte.

3.3 Firefox - Zugriffskontrolle und Modifikation


Die Aufgabe des Linux-Derivates ist klar definiert - es soll sich um ein Live-System han-
deln, mit welchem im Internet gesurft werden kann und eMails abfragt werden können.
Auf Grund dieser Aufgabenstellung ist es nicht notwendig und nicht erwünscht den Zu-
griff auf ein anderes Programm anstatt des Browsers Firefox zuzulassen.
Die Realisierung dieser Forderdung wird mit Hilfe eines Shell-Scirpts gelöst. Dieses Script
soll zusätzlich auch noch dafür sorgen, dass sich Firefox automatisch wieder startet sollte
er geschlossen werden.
Als weiterer Punkt, um dieser Forderung nachzukommen, wird das Kontext-Menü von
Openbox dahingehend überarbeitet, dass lediglich die Auswahl von Firefox möglich ist.

3.3.1 Kiosk-Oberfläche für Firefox


Dadurch, dass dem Benutzer das Surfen im Internet ermöglicht werden, aber der Zugriff
auf weitere Funktionen des Computer untersagt werden soll, ist es notwendig die Mög-
lichkeiten des Benutzers entsprechend zu beschränken. Dies wird u. a. durch die Firefox-
Erweiterung BMA Kiosk1 erreicht.
Diese Erweiterung verändert die GUI von Firefox dahingehend, dass

• die Titelleiste ausgeblendet wird,

• das Fenster im Vollbildmodus ausgeführt wird,


1
https://www.mozdevgroup.com/clients/bm/xpi/bmakiosk_current-ff-generic_signed.xpi
3.4 - MODIFIKATION VON BOOT-SPLASH UND USPLASH 7

• die Menus von Firefox verborgen werden und


• nur noch Buttons zur Navigation vorhanden sind.
Weiterhin dient diese Erweiterung auch dem Schutz der Privatsphäre des Benutzers, in
dem einerseits in der GUI ein Button integriert ist, der das Beenden der aktuellen Firefox-
Session ermöglicht und andererseits ein Timeout bei Inaktivität eingestellt werden kann,
der ebenfalls die aktuelle Firefox-Session beendet. Mit dem Beenden der Session werden
alle Dateien im Cache, alle Cookies und der Verlauf gelöscht. Die Löschung von Passwör-
tern muss nicht vollzogen werden, da die Erweiterung keine Passwörter speichert.

3.3.2 Korrekte Darstellung von Internetinhalten


Um die meisten Inhalte im Internet korrekt darstellen zu können müssen zusätzlich zu
Firefox noch die Plugins Adobe R Flash
R und Sun Java in das Derivat integriert werden.

Da die hauptsächliche Nutzung des Derivats sich auf die Abfrage von eMails beschränken
wird, wird zusätzlich noch das Programm Adobe R Reader R integriert um eventuelle eMail-

Anhänge korrekt im Browser anzeigen zu können.

3.4 Modifikation von Boot-Splash und USplash


Zwar basiert das erstellte Derivat auf Ubuntu, dennoch soll es entsprechend den Preferen-
zen des Unternehmens im Erscheinungsbild angespasst werden. Weiterhin ist es notwendig
den Boot-Splash dahingehend anzupassen, dass
1. ein unverzüglicher Bootvorgang initialisiert wird,
2. die korrekte Sprache (und somit das korrekte Tastaturlayout) verwendet wird und
3. dem Benutzer keine Möglichkeiten durch ein eventuell vorhandenes Bootmenu ge-
geben werden.
Um den Boot-Splash entsprechend anpassen zu können müssen in der Entwicklungsumge-
bung die Pakete gfxboot und dpkg-dev installiert werden. Mit Hilfe dieser Pakete können
modifizierte Designdateien erstellt werden, die dann wiederum in das Derivat integriert
werden können.
Die Veränderung des USplashs erfolgt auf rein grafischer Ebene. Um dies zu realisieren
werden in der Entwicklungsumgebung die Pakete cdbs, debhelper, dpkg-dev, fakeroot,
devscripts, autotools-dev und die Grafiksoftware GIMP benötigt.

3.5 Bildschirmschoner
Die Einbindung eines Bildschirmschoners sollte mit den bereits auf der Ubuntu-Installations-
CD, den vorhandenen Paketen und Programmen realisierbar sein. Allerdings muss bei
dieser Aussage berücksichtigt werden, dass der Großteil dieser Pakete speziell für den
Desktopmanager Gnome entwickelt wurde und somit eventuell auf Openbox nicht mehr
funktionsfähig ist.
Des Weiteren soll auch das Erscheinungsbild des Bildschirmschoner an die Preferenzen
des Unternehmens angepasst werden.
8 KAPITEL 3 - ENTWURF

3.6 Abschließende Worte


Die in Kapitel 2 festgelegten Kriterien wurden in diesem Kapitel weiter verfeinert und
mit konkreten Realisierungsmöglichkeiten hinterlegt. Dadurch, dass eine grobe Übersicht
über die benötigten Pakete und Programme des Derivats und der Entwicklungsumgebung
erstellt wurde, ist es im folgenden Kaptiel nun möglich die konkrete Realisierung des Pro-
jekts zu beginnen. Eine Übersicht über die benötigten Pakete der Entwicklungsumgebung
ist auf Seite XIII zu finden – die Übersicht der Pakete für das Derivat befindet sich auf
Seite XV.
Kapitel 4

Implementierung und Test

Nach der Anforderungsspezifikation und dem Entwurf folgt gemäß dem Software-Entwick-
lungszyklus die Implementierung, auf die wiederum im nächsten Schritt die Tests aufset-
zen. Bei der Entwicklung des Derivates wurden die beiden letzten Entwicklungsschritte
zu einem iterativen Schritt zusammengefasst. Somit kann die schrittweise Anpassung der
Ubuntu-Installations-CD erfolgen, indem nach den entsprechenden Veränderungen ein
Test vollzogen wird um die Funktionalität zu prüfen. Da die Implementierung sich an den
Kriterien aus der Anforderungsspezifikation und dem Entwurf orientiert, wird dieser Test
dann dahingehend ausgewertet, dass entschieden wird, ob und inwieweit die Kriterien
erfüllt wurden. Ist die Auswertung nicht entsprechend positiv, muss ggf. eine alternative
Lösung eingesetzt werden.
Allerdings werden in der Implementierung auch Mechanismen zur Einschränkung des Be-
nutzers berücksichtigt um zu gewährleisten, dass das Derivat nur für den eigentlichen
Zweck verwendet werden kann.
Als abschließender Test der gesamten Phase muss geprüft werden, ob alle Kriterien erfüllt
werden konnten bzw. warum nicht.

4.1 Entwicklungsumgebung
Da bei der Erstellung des Derivates auch die Entwicklungsumgebung als ein Kriterium
angeführt wurde, muss diese entsprechend eingerichtet und konfiguriert werden. Die Ent-
wicklungsumgebung basiert, wie das Derivat auch, auf der Linux-Destribution Ubuntu in
der aktuellen Version 9.04 „Jaunty Jackalope“.
Zusätzliche Software-Erweiterungen, die einerseits zur Erstellung eines Derivates notwen-
dig und anderseits auch als Kriterien in der Anforderungsspezifikation festgelegt wurden,
sind:

• Reconstructor1 und

• Adobe
R Flash
R und Adobe
R Reader
R.

Dabei dient die Software „Reconstructor“ der Erstellung des Derivates und die Adobe R-

Produkte werden zur konkreten Darstellung von Internetinhalten für Rechercheaktivitäten


genutzt.
1
http://www.reconstructor.org/

9
10 KAPITEL 4 - IMPLEMENTIERUNG UND TEST

Durch den iterativen Prozess von Implemetierung und Test müsste von einem hohen Ver-
brauch an CD-Rohlingen ausgegangen werden. Da dies aber vermieden werden sollte, wird
die Virtualisierungssoftware Virtualbox2 eingesetzt. Diese Software macht es möglich das
Derivat zu testen ohne es auf CD brennen zu müssen.
Bei der Implementierung der Kriterien werden noch weitere Pakete in der Entwicklungs-
umgebung von Nöten sein. Auf diese wird an entsprechender Stelle eingegangen. Des
Weiteren findet sich im Anhang (siehe Seite XIII)eine Zusammenfassung mit allen benö-
tigten Paketen.
Als Ergänzung von Reconstructor bei der Erstellung des Derivates wird der Funktions-
umfang der Shell, genauer der Bourne Again Shell (kurz: bash), genutzt.

4.2 Reconstructor
Zur Bearbeitung und Veränderung der Ubuntu-Installations-CD wird die Software „Re-
constructor“ verwendet, da sie folgende Merkmale aufweist:

• größter Funktionsumfang im Vergleich zu anderen Customization- bzw. Authoring-


Tools

• einfache Integration/Entfernung von Pakteten und Software mittels vorgefertigter


Module3

• Möglichkeit der erweiterten Bearbeitung via chroot-Umgebung (sogar grafische Un-


terstützung mittels chrootx – chroot mit aktivem X-Window-System)

• einfache Erstellung des CD-Images (automatische Erstellung des SquashFS und der
Initial Ramdisk (kurz: InitRD))

• Möglichkeit der ständigen Überwachung der Speicherbelegung auf der CD

• integrierte Funktionalität zur Änderung des Boot-Splashs und des USplashs

• Festlegung der Repositories des Derivates

4.3 Beta-Phase
In der Beta-Phase werden verschiedene Alternativen implementiert, getestet und bewertet.
Dadurch wird versucht die optimale Kombination der Alternativen zu ermitteln bzw. die
Alternativen auszuschließen, die nicht zu dem gewünschten Ergebnis führen.
Die Implementierung in den folgenden Kapiteln findet in der chroot-Umgebung (falls nicht
anders gekennzeichnet) statt.
2
http://www.virtualbox.org/
3
http://www.reconstructor.org/index.php?option=com_remository&Itemid=33&func=select&id=4
4.3 - BETA-PHASE 11

4.3.1 Ersetzung von Gnome Desktop Manager durch Openbox


Bereits im Entwurf wurde festgelegt, dass der Gnome Desktop Manager (kurz: GDM)
durch Openbox ersetzt werden soll. Um dies umzusetzen muss zuerst Openbox mit Hilfe
des Advanced Packaging Tools (kurz: apt) installiert werden, welches mit dem Befehl

apt-get install openbox

geschieht. Allerdings wird Openbox durch diesen Befehl lediglich installiert und ist so-
mit noch nicht die Standartanwendung zur Fensterverwaltung. Somit muss das Problem
geklärt werden, wie Openbox

1. die Standartanwendung und

2. automatisch gestartet wird.

Die Lösung dazu befindet sich im Verzeichnis /etc/skel. Dieses beinhaltet alle Dateien,
die bei der Anlegung neuer Nutzer automatisch in deren /home-Verzeichnis kopiert werden.
Diese Vorgehensweise muss gewählt werden, da bei dem Derivat der User erst zur Laufzeit
angelegt wird und somit das entsprechende /home-Verzeichnis auch nicht im SquashFS
existiert. In Verzeichnis /etc/skel werden zwei neue Dateien angelegt. Zum einen die
Datei .xinitrc und zum anderen die Datei .bash_profile. Der Inhalt dieser beiden
Dateien wird in den folgenden zwei Listings dargestellt:

Listing 4.1: Inhalt /etc/skel/.xinitrc

1 exec openbox - session

Listing 4.2: Inhalt /etc/skel/.bash_profile

1 startx

Die Anweisungen in der .xinitrc bewirken, dass Openbox als Standartfenstermanager


festgelegt wird [McC09] und der Inhalt der .bash_profile sorgt schließlich dafür, dass
nach einer (erfolgreichen) Anmeldung sofort der X-Window-System gestartet wird [Nat09].

4.3.2 Modifikation von Firefox


Die Anpassung von Firefox an die geforderten Spezifikationen beinhaltet im Wesentlichen
die folgenden drei Aspekte:

• Integration von Software zur korrekten Darstellung von Internetinhalten

• Veränderung der GUI

• Integration in Openbox
12 KAPITEL 4 - IMPLEMENTIERUNG UND TEST

Integration von Software


Die Integration von Adobe
R Flash R und Adobe R Reader R erfolgt mit Hilfe des Debian

Package Managers „dpkg“. Dazu werden die jeweiligen Installationspakete (Dateiendung:


.deb) von den Websites der Hersteller heruntergeladen und mittels

dpkg -i *.deb

installiert (wobei *.deb für das jeweilige Paket steht). Diese Vorgehensweise wurde ge-
wählt, da in den Repositories von Ubuntu nicht die aktuellen Versionen der beiden Pakete
vorhanden sind.
Im Gegensatz dazu ist die aktuelle Version von Sun Java bereits in den Ubuntu-Repositries
vorhanden und kann somit mittels apt installiert werden. Dazu muss lediglich folgender
Befehl ausgeführt werden:

apt-get install sun-java6-plugin.

Veränderung der GUI


Um die GUI von Firefox entsprechend verändern zu können wird die Erweiterung BMA
Kiosk genutzt. Diese Erweiterung benötigt die Erweiterung jsLib4 um korrekt zu funktio-
nieren.
Die Installation der Erweiterungen erfolgt mittels folgenden Kommandos [Wym09]:

firefox -install-global-extension *.xpi

Dabei steht *.xpi wiederum stellvertretend für die zu installierenden Erweiterungen steht.
Die nach der Installation notwendige Konfiguration der BMA Kiosk-Erweiterung wird
über das Admin-Menü vollzogen, welches mit dem Befehl

firefox -kiosk admin

aufgerufen werden kann [Col09]. Dieses Menü bietet bereits eine Möglichkeit die Pri-
vatsphäre des Benutzers zu schützen, indem ein Session-Timeout bei Inaktivität einge-
stellt werden kann, nachdem sämtliche Cookies, Cache usw. der aktuellen Session ge-
löscht werden. Des Weiteren kann mittels dieses Menüs die Anzahl der zur Verfügung
stehenden Schaltflächen bestimmt werden (so wurde u. a. der „Drucken“-Button ent-
fernt). Auch wurde mit Hilfe des Menüs Firefox so konfiguriert, dass die Startseite stets
„http://www.sas.de“ ist und dass standartmäßig auf diese Startseite nach dem Session-
Timeout zurückgekehrt wird.

Autostart in Openbox
Einer der Gründe für die Wahl von Openbox war die einfache Konfiguration Shell- bzw.
XML-Scripte. Das Shell-Script autostart.sh in Verzeichnis /etc/xdg/openbox ist eines
dieser Scripte und steuert die Autostarteinträge von Openbox. Diese Datei kann einfach
um die entsprechenden Einträge erweitert werden [Jan09].
Durch den Umstand, dass, falls Firefox geschlossen wird, er sich automatisch wieder star-
ten soll, ist es sinnvoll die Ausführung der Firefox-Anwendung in eine Endlosschleife
4
https://www.mozdevgroup.com/dropbox/jslib/signed/jslib_current_signed.xpi
4.3 - BETA-PHASE 13

zu integrieren. Da die Implementierung des Codes direkt in die autostart.sh nicht


sinnvoll wäre, wird die entsprechende Datei mit dem Namen ff_start.sh im Ordner
/usr/share/applications/sas_custom angelegt. Ihr Inhalt ist folgender:

Listing 4.3: Inhalt /usr/share/applications/sas_custom/ff_start.sh

1 # !/ bin / bash
2

3 while true ; do
4 firefox - kiosk -- display =:0
5 done
6

7 exit 0

Der Eintrag firefox -kiosk startet Firefox im Kiosk-Modus [Col09]. Die autostart.sh
wird entsprechend um den Eintrag

Listing 4.4: Ergänzung von /etc/xdg/openbox/autostart.sh

/ usr / share / applications / sas_custom / ff_start . sh &

ergänzt, wobei das „&“-Zeichen eine Ausführung als Hintergrundprozess bezweckt. Dies ist
notwendig, da sonst das autostart.sh-Script nicht fertig abgearbeitet werden kann und
somit Openbox nicht ordnungsgemäß startet. Die vollständige Datei autostart.sh kann
im Anhang auf Seite IX gefunden werden.

Test und weitere Modifikationen

Durch die Integration neuer Software und Erweiterungen muss das Derivat getestet werden
um die Funktionalität sicherzustellen. Die durch diese Tests gewonnenen Erkenntnisse sind
folgende:

• Das Firefox-Fenster füllt den Bildschirm nicht aus,

• die Adressleiste von Firefox enthält bereits Links von besuchten Seiten und

• Warnungen z. B. bei https-Verbindungen lassen sich nicht wegklicken.

Diese Störungen der Funktionaliät lassen sich durch die Modifikation bzw. Löschung ge-
zielter Dateien beheben.
So kann das Problem des nicht voll ausgefüllten Bildschrims mittels einer Veränderung
der localstore.rdf im Verzeichnis /etc/firefox-3.0/profile/ behoben werden. Da-
zu müssen die Koordinaten und die Größe des Fensters der BMA Kiosk-GUI festgelegt
werden. Dadurch verändert sich die Datei folgendermaßen:
14 KAPITEL 4 - IMPLEMENTIERUNG UND TEST

Listing 4.5: Änderung an /etc/firefox-3.0/profile/localstore.rdf

< RDF:Description RDF:about = " chrome: // bmakiosk /


content / bmakiosk . xul # main - window "
screenX = " 0 "
screenY = " 0 "
width = " 2000 "
height = " 2000 "
sizemode = " normal " / >

Es wurden mit dieser Modifikation die Koordinaten des Fensters auf die obere linke
Ecke des Bildschirms festgelegt und das Fenster auf 2000 Pixel (kurz: px) Breite und
2000 px Höhe skaliert. Diese hohe Skalierung wurde gewählt, da das Fenster automa-
tisch auf die maximale Bildschirmgröße zurückskaliert wird und somit der Einsatz selbst
auf hochauflösenden Bildschirmen keine Probleme bereiten sollte. Die vollständige Datei
localstore.rdf kann im Anhang auf Seite X eingesehen werden.
Die bereits vorhandenen Links in der Adressleiste von Firefox sind nicht, wie zuerst vermu-
tet, bereits besuchte Websites, sondern die Lesezeichen, die Firefox bereits bei der Instal-
lation integriert hatte. Um diese zu entfernen muss lediglich die Datei bookmarks.html
im Verzeichnis /etc/firefox-3.0/profile/ gelöscht werden.
Da in der BMA Kiosk-Umgebung die Warnmeldungen bei z. B. https-Verbindungen nicht
weggeklickt werden können, erfolgt eine generelle Deaktivierung dieser Warnmeldungen.
Dazu muss die bereits vorhandene Datei prefs.js im Verzeichnis /etc/firefox-3.0/
profile/ um folgende Einträge ergänzt werden:

Listing 4.6: Änderung an /etc/firefox-3.0/profile/prefs.js

user_pref (" security . warn_entering_weak " , false ) ;


user_pref (" security . warn_entering_weak . show_once
" , false ) ;
user_pref (" security . warn_viewing_mixed " , false ) ;
user_pref (" security . warn_viewing_mixed . show_once
" , false ) ;
user_pref (" browser . urlbar . clickSelectsAll " , true )
;
user_pref (" browser . urlbar . doubleClickSelectsAll " ,
false ) ;

Die letzten beiden Einträge dienen nicht der Deaktivierung der Sicherheitswarnungen,
sondern der Veränderung des Verhaltens der Adresszeile. Diese Veränderungen wurden
vorgenommen, da die meisten Nutzer des Derivates Windows R -Nutzer sein werden und

diese gewohnt sind, dass die gesamte Adresszeile beim einfachen Anklicken markiert wird.
4.3 - BETA-PHASE 15

4.3.3 Anpassung Boot-Splash und USplash


Da durch die Anforderungsspezifikation bzw. den Entwurf die Anforderungen an den
Boot-Splash und den USplash bereits festgelegt wurden, erfolgt in diesem Abschnitt die
technische Umsetzung. Durch die Komplexität der Umsetzung sind die Funktionen von
Reconstructor nicht ausreichend und es muss auf andere Alternativen ausgewichen werden.

Boot-Splash: unverzüglicher Start


Um einen unverzüglichen Start des Derivates zu erreichen wird der Eintrag timeout in der
Datei isolinux.cfg in Ordner /isolinux/ im Root-Verzeichnis des Derivats verändert.
Die veränderte Datei hat folgenden Inhalt:

Listing 4.7: Geänderte isolinux.cfg

1 include menu . cfg


2 default vesamenu . c32
3 prompt 0
4 timeout 1
5 gfxboot bootlogo

Diese Option legt fest, wie lange der Boot-Splash angezeigt wird bzw. für Eingaben zu-
1
gänglich ist, wobei dies in 10 Sekunden gemessen wird. Die Veränderung führt somit dazu,
1
dass der Boot-Splash nur für 10 Sekunde auf Eingaben reagiert.

Boot-Splash: korrekte Sprache (deutsch)


Um die default-Sprache auf Deutsch zu setzen muss eine neue Datei namens lang [Eas09]
im /isolinux/-Verzeichnis angelegt werden, deren Inhalt lautet:

Listing 4.8: Inhalt /isolinux/lang

1 de

Boot-Splash: Veränderung Menü


Um den Boot-Splash entsprechend bearbeiten zu können müssen in der Entwicklungsum-
gebung die Pakete gfxboot und dpkg-dev installiert werden. Außerdem werden noch die
Source-Dateien der Pakete gfxboot-theme-ubuntu und gfxboot benötigt [Eas09]. Durch
die Veränderung der panel.inc im Verzeichnis /gfxboot-theme-ubuntu/ wird die Dar-
stellung der Optionen modifiziert. So werden bei der Ubuntu-Installations-CD z. B. im
unteren Bildschirmbereich Optionen bereitgestellt, auf die mittels der F-Tasten zugegrif-
fen werden kann. Die Abbildung 4.1 verdeutlicht dies.
Mittels der Modifikation der panel.inc werden die Hinweise auf die F-Tasten ausgeblen-
det. Allerdings bleibt deren Funktionsumfang weiterhin bestehen, was aber ein tolerierba-
res Risiko darstellt, da die Interaktionsmöglichkeiten des Benutzers mit dem Boot-Splash
in einem der nächsten Schritte drastisch eingeschränkt werden. Ein Auszug aus der abge-
änderten panel.inc würde folgendermaßen aussehen:
16 KAPITEL 4 - IMPLEMENTIERUNG UND TEST

Abbildung 4.1: Ubuntu 9.04 Boot-Splash

Listing 4.9: Auszug geänderte panel.inc

44 [ . panel . both [ keyF2 0 " " / panel . lang / panel .


lang . width / panel . lang . update / lang . init ] ]

Die weiteren, auf dem originalen Ubuntu Boot-Splash erscheinenden Einträge können
größtenteils durch die Änderung der Datei de.po im Verzeichnis /gfxboot-theme-ubuntu/po/
eliminiert bzw. verändert werden. Diese Datei dient der Übersetzung der englischen default-
Menüeinträge. Zur Modifikation werden die deutschen Übersetzungen entweder durch ein
Leerzeichen oder durch den entsprechenden Text ersetzt. Die Veränderung des Textes „F1
Hilfe“ zeigt das Listing 4.10.

Listing 4.10: Auszug geänderte de.po

58 # . txt_help
59 msgid " Help "
60 msgstr " "

Nachdem die Veränderung der beiden Dateien abgeschlossen ist können sie mittels der
Befehle make und make install kompiliert werden. Durch diese Prozedur wird u. a.
ein neuer Ordner mit der Bezeichnung install erstellt, in dem die Dateien de.tr und
bootlogo zu finden sind. Diese Dateien sind die kompilierten Varianten der zuvor geän-
derten Dateien.
Da der Boot-Splash-Hintergrund auch an das Erscheinungsbild der Firma angepasst wer-
den soll, muss ein entsprechendes Bild erstellt werden. Dieses Bild muss dabei folgenden
Kriterien entsprechen:

• Auflösung: 640px × 480px


4.3 - BETA-PHASE 17

• Farben: indiziert auf 16 Farben

• Format: Zsoft-PCX-Bild

• Dateiname: splash.pcx

Die erstellten Dateien (de.tr, bootlogo und splash.pcx) werden in den Ordner /isolinux/
im Root-Verzeichnis des Derivates verschoben. In diesen Verzeichnis muss weiterhin die
Datei text.cfg entsprechend den Präferenzen verändert werden, sodass ausschließlich
die Option zum Booten als Live-System zur Verfügung steht. Folgendes Listing zeigt den
Inhalt der modifizierten text.cfg:

Listing 4.11: Geänderte text.cfg

1 default live
2 label live
3 menu label ^ Try Ubuntu without any change to
your computer
4 kernel / casper / vmlinuz
5 append file =/ cdrom / preseed / ubuntu . seed boot =
casper initrd =/ casper / initrd . gz quiet splash
--

Die Option in Zeile 3 (menu label) wurde mit Hilfe der Übersetzungsdatei (de.po bzw.
de.tr) modifiziert um so den entsprechenden (deutschen) Eintrag anzuzeigen.

Boot-Splash: Finales Ergebnis


Die Abbildung 4.2 stellt das Aussehen des geänderten Boot-Splash dar.

Abbildung 4.2: Veränderter Boot-Splash


18 KAPITEL 4 - IMPLEMENTIERUNG UND TEST

USplash: Veränderung Design


Um eine Veränderung am USplash vornehmen zu können müssen die Pakete cdbs, deb
helper, dpkg-dev, fakeroot, devscripts und autotools-dev in der Entwicklungsumge-
bung installiert werden. Des Weiteren wird noch die Source eines USplashs benötigt (hier:
XUbuntu-USplash). Die entsprechende Source heißt xubuntu-artwork-usplash [Gar09].
Diese wird im Folgenden in der Entwicklungsumgebung an Hand der entsprechenden Kri-
terien angepasst.
Als ersten Punkt der grafischen Anpassung des USplashs wird ein alternativer Hintergrund
erstellt, der dem Hintergrund des Boot-Splash ähnelt. Dieser Hintergrund muss in mehre-
ren Auflösungen erstellt werden, da USplash für die verschiedenen Standard-Auflösungen
verschiedene Hintergrundbilddateien verwendet. Diese Auflösungen wären 640px × 400px,
640px × 480px, 800px × 600px, 1024px × 768px und 1365px × 768px. Weitere Kriterien
für die Bilder sind:

• Farben: indiziert auf 256 Fraben

• Format: Portable Network Graphics (kurz: png)

• Dateiname: usplash_[Breite] _[Höhe].png

Die so erstellten Bilder ersetzen die Bilder im usplash/-Verzeichnis der Source.


Da der USplash standardmäßig eine Textbox besitzt, in der Nachrichten während des
Bootvorgangs ausgegeben werden können, muss dieses entfernt werden, da es nicht den
Gestaltungskriterien entspricht. Dazu müssen die folgenden Code-Bestandteile aus der
xubuntu-usplash-theme.c im usplash/-Verzeichnis der Source gelöscht werden:

Listing 4.12: Zu löschende Fragmente aus xubuntu-usplash-theme.c

/* Text box position and size in pixels */


. text_x = 96 ,
. text_y = 246 ,
. text_width = 360 ,
. text_height = 100 ,

/* Text details */
. line_height = 15 ,
. line_length = 32 ,
. status_width = 35 ,

Diese Code-Bestandteile kommen in der Datei mehrmals vor und müssen somit mehrmals
gelöscht werden. Dadurch ist die Modifikation der Source „xubuntu-artwork-usplash“
abgeschlossen und es kann ein Paket aus der Source erstellt werden. Durch diese Erstel-
lung wird eine Datei namens usplash-theme-xubuntu.so im usplash/-Verzeichnis der
Source erstellt, welche nach /usr/lib/usplash in der chroot-Umgebung kopiert wird.
Die chroot-Umgebung wird nun so konfiguriert, dass der modifizierte USplash als Stan-
dard verwendet wird. Da dadurch die InitRD verändert wird, muss diese ggf. neu erstellt
und integriert werden.
4.3 - BETA-PHASE 19

USplash: Finales Ergebnis


Die Abbildung 4.3 stellt das Aussehen des geänderten USplash dar.

Abbildung 4.3: Veränderter USplash

4.3.4 Derivatgröße unter 700 MB


Durch die Integration der Software benötigt das Derivat mehr als 700 MB Speicher. Da die-
ser Zustand nicht akzeptabel ist, wurde, anstatt als Grundlage die Ubuntu-Installations-
CD zu nutzen eine eigene, speicherschonendere „Minimal“-CD mittels der Anleitung „Live-
CDFromScratch“ [Zaj09] erstellt. In diese CD wurden bereits die Pakete openbox, xinit,
xserverxorg-core, firefox und usplash integriert, wobei die Modifikation des USplas-
hs bereits während der Erstellung der CD erfolgt, was eine spätere Erstellung und Inte-
gration der InitRD überflüssig macht. Die anderen Modifikationen können unverändert
angewendet werden.

4.3.5 Bildschirmschoner
Auf Grund der veränderten Voraussetzungen (Minimal- anstatt Standart-CD) sind viele
Anwendungen nicht mehr vorhanden. So sind u. a. GDM und alle damit verbundenen
Pakete nicht mehr installiert, was den Gnome-Screensaver mit einschließt. Um trotz dieses
Umstandes über einen Bildschirmschoner zu verfügen müssen die Pakete xscreensaver
und xscreensaver-gl-extra installiert werden. Somit wird nun anstatt des Gnome-
Screensavers der XScreensaver verwendet.
Um diesen zu konfigurieren muss die Datei .xscreensaver im Verzeichnis /etc/skel/
erstellt werden. Die in dem Derivat verwendete Konfiguration ist im Anhang auf Seite XI
zu finden. Des Weiteren muss die autostart.sh im Verzeichnis /etc/xdg/openbox/ um
folgende Zeile ergänzt werden [Zaw09] (ein vollständiges Beispiel der autostart.sh ist
im Anhang auf Seite IX zu finden):
20 KAPITEL 4 - IMPLEMENTIERUNG UND TEST

Listing 4.13: Ergänzung von /etc/xdg/openbox/autostart.sh

xscreensaver - nosplash &

Da der Bildschirmschoner eine Diashow zeigen soll, wurde in der .xscreensaver der
Pfade zu den entsprechenden Bildern auf

Listing 4.14: Geänderte Zeile 33 von /etc/skel/.xscreensaver

33 / usr / share / applications / sas_custom / slideshow /

geändert.

4.3.6 Abschluss der Beta-Phase


Die vorangegangen Modifikationen haben das Derivat an die geforderten Kriterien an-
gepasst und somit muss nun lediglich noch die Suche nach Fehlern und/oder Verbes-
serungen erfolgen. Dies ist aber nicht mehr Teil der Beta-Phase, sondern gehört zum
Release-Candidate-Testing (kurz: RC-Testing).

4.4 RC-Phase
Die folgenden Abschnitte befassen sich mit den Tests des Derivates um eventuelle Fehler zu
finden und diese zu korrigieren. Weiterhin werden geringfügigere Anpassungen vorgenom-
men und es wird versucht die optionalen Forderungen aus der Anforderungsspezifikation
(Integration des Proxy-Servers SQUID) umzusetzen.

4.4.1 xmodmap
Während der Tests ist aufgefallen, dass der Benutzer mittels der Tastenkombinationen
Strg + Alt + F1 . . . F6 Zugriff auf die sog. Hintergrundkonsolen erlangen könnte
und somit die Möglichkeit zur Manipulation hätte.
Mittels des Pakets x11-xserver-utils kann das Programm xmodmap installiert werden,
welches die Tastaturbelegung des Derivates entsprechend verändern kann. Es wird al-
lerdings nicht eine generelle Deaktivierung der Tastenkombinationen angestrebt, da ein
Zugriff auf die Hintergrundkonsole ggf. notwendig sein könnte. Somit wird die Tasten-
kombination für die erste Hintergrundkonsole auf AltGr + Shift + Ö umgelegt. Die
restlichen Hintergrundkonsolen sind nicht weiter von Belang und somit wird der Zugriff
auf sie deaktiviert. Des Weiteren werden alle F-Tasten deaktiviert, da die Funktionsweise
des Derivats keine funktionierenden F-Tasten voraussetzt. Als Abschluss wird noch die
Tastenkombination Strg + Alt + Backspace deaktiviert, da durch diese Tastenkom-
bination der aktuell laufende Fenstermanager beendet werden kann.
An den Inhalt der Datei autostart.sh im Verzeichnis /etc/xdg/openbox/ müssen fol-
gende Zeilen angehängt werden:
4.5 - ABSCHLIEßENDE WORTE 21

Listing 4.15: Ergänzung von /etc/xdg/openbox/autostart.sh

( sleep 5 && xmodmap / usr / share / applications /


sas_custom / xmodmap ) &
( sleep 30 && xmodmap / usr / share / applications /
sas_custom / xmodmap ) &

Das Progamm xmodmap muss mit einer zeitlichen Verzögerung ausgeführt werden, da-
mit Openbox vor dieser Ausführung starten und somit die Tastaturlayoutänderungen
auf Openbox angewendet werden können. Die Datei xmodmap im Verzeichnis /usr/share
/applications/sas_custom/ enthält das geänderte Tastaturlayout [Lin09]. Die doppelte
Ausführung des Kommandos (nach 5 Sekunden und nach 30 Sekunden) ist eine Sicher-
heitsmaßnahme, da es ggf. zu Startverzögerungen von Openbox durch die physikalischen
Eigenschaften der CD bzw. des Laufwerks kommen kann.

4.4.2 SQUID
Um den Zugriff auf bestimmte Seiten bzw. Bereiche im Internet zu restriktivieren soll der
Proxy-Server SQUID mit einem zusätzlichen Content-Filter eingesetzt werden.
Nach der Installation startet sich SQUID automatisch und läuft als Daemon weiter. Aller-
dings ist SQUID nicht für den Einsatz auf einem Computer konzipiert, der eine dynamisch
zugewiesene Internet-Protokoll-Adresse (kurz: IP-Adresse) besitzt. Auch durch entspre-
chende Modifikationen ist ein Einsatz von SQUID nicht auf dem Derivat möglich, was
dazu führt, dass das Release über keinen Proxy-Server bzw. Content-Filter verfügt.

4.5 Abschließende Worte


Durch die Integration der verschiedenen Pakete in das Derivat wurden die Kriterien aus
der Anforderungsspezifikation (siehe Seite 3, Kapitel 2) größtenteils umgesetzt. Lediglich
die optionale Integration des Proxy-Servers scheiterte.
Da Entwicklungsumgebung parallel konfiguriert wurde, wird sichergestellt, dass auch
nachfolgende Veränderungen an dem Derivat vorgenommen werden können. Die Erstel-
lung der Entwicklungsumgebung als Live-System wurde allerdings nicht realisiert, da even-
tuelle Updates nicht persistent wären.
22 KAPITEL 4 - IMPLEMENTIERUNG UND TEST
Kapitel 5

Zusammenfassung und Ausblick

Durch das Projekt „Erstellung eines Linux-Derivates für Public-Browsing-PCs“ war es


möglich die primär geforderten Kriterien umzusetzen und ein lauffähiges Derivat zu er-
stellen. Die Integration der optionalen Kriterien konnte im Rahmen dieses Projekts nicht
realisiert werden. Diese können aber eventuell bei der weiteren Entwicklung des Derivats
implementiert werden.
Des Weiteren wurde eine entsprechende Entwicklungsumgebung zur Weiterentwicklung
des Derivats geschaffen und durch diese Projektarbeit eine Dokumentation erstellt, die es
auch späteren Entwicklern möglich machen wird das Derivat zu warten.
Ein weiterer wichtiger Punkt, der eventuell bei der Weiterentwicklung des Derivats be-
rücksichtigt werden kann, ist die neue Ubuntu-Version (9.10), die im Oktober 2009 veröf-
fentlicht werden wird. Ein Update des Derivats auf die Grundstruktur von Ubuntu 9.10
würde ggf. Performance- und Darstellungsvorteile bringen.

23
24 KAPITEL 5 - ZUSAMMENFASSUNG UND AUSBLICK
Anhang A

Listings

Listing A.1: Inhalt /etc/xdg/openbox/autostart.sh


1 # This shell script is run before Openbox launches .
2 # Environment variables set here are passed to the Openbox session .
3
4 # Set a background color
5 BG = " "
6 if which hsetroot >/ dev / null ; then
7 BG = hsetroot
8 else
9 if which esetroot >/ dev / null ; then
10 BG = esetroot
11 else
12 if which xsetroot >/ dev / null ; then
13 BG = xsetroot
14 fi
15 fi
16 fi
17 test -z $BG || $BG - solid " #303030 "
18
19 # D - bus
20 if which dbus - launch >/ dev / null && test -z " $ D B U S _ S E S S I O N _ B U S _ A D D R E S S
" ; then
21 eval ‘ dbus - launch --sh - syntax -- exit - with - session ‘
22 fi
23
24 # Make GTK apps look and behave how they were set up in the gnome
config tools
25 if test -x / usr / libexec / gnome - settings - daemon >/ dev / null ; then
26 / usr / libexec / gnome - settings - daemon &
27 elif which gnome - settings - daemon >/ dev / null ; then
28 gnome - settings - daemon &
29 # Make GTK apps look and behave how they were set up in the XFCE
config tools
30 elif which xfce - mcs - manager >/ dev / null ; then
31 xfce - mcs - manager n &
32 fi
33

34 # Preload stuff for KDE apps

IX
X ANHANG A - LISTINGS

35 if which start_kdeinit >/ dev / null ; then


36 LD_BIND_NOW = true start_kdeinit -- new - startup + kcminit_startup &
37 fi
38
39 # Run XDG autostart things . By default don ’ t run anything desktop -
specific
40 # See xdg - autostart -- help more info
41 DESKTOP_ENV = " "
42 if which / usr / lib / openbox / xdg - autostart >/ dev / null ; then
43 / usr / lib / openbox / xdg - autostart $DESKTOP_ENV
44 fi
45

46 xscreensaver - nosplash &


47 / usr / share / applications / sas_custom / ffstart . sh &
48 ( sleep 5 && xmodmap / usr / share / applications / sas_custom / xmodmap ) &
49 ( sleep 30 && xmodmap / usr / share / applications / sas_custom / xmodmap ) &

Listing A.2: Inhalt /etc/firefox-3.0/profile/localstore.rdf


1 <? xml version = " 1.0 " ? >
2 < RDF:RDF xmlns:NC = " http: // home . netscape . com / NC - rdf # "
3 xmlns:RDF = " http: // www . w3 . org /1999/02/22 - rdf - syntax - ns # " >
4 < RDF:Description RDF:about = " chrome: // mozapps / content / downloads /
downloads . xul " >
5 < NC:persist RDF:resource = " chrome: // mozapps / content / downloads /
downloads . xul # downloadManager " / >
6 </ RDF:Description >
7 < RDF:Description RDF:about = " chrome: // browser / content / browser . xul " >
8 < NC:persist RDF:resource = " chrome: // browser / content / browser . xul #
main - window " / >
9 < NC:persist RDF:resource = " chrome: // browser / content / browser . xul #
sidebar - box " / >
10 < NC:persist RDF:resource = " chrome: // browser / content / browser . xul #
sidebar - title " / >
11 </ RDF:Description >
12 < RDF:Description RDF:about = " chrome: // browser / content / browser . xul #
main - window "
13 width = " 994 "
14 screenX = " 0 "
15 screenY = " 25 "
16 height = " 721 "
17 sizemode = " maximized " / >
18 < RDF:Description RDF:about = " chrome: // mozapps / content / downloads /
downloads . xul # downloadManager "
19 width = " 485 "
20 height = " 300 "
21 sizemode = " normal "
22 screenX = " 0 "
23 screenY = " 49 " / >
24 < RDF:Description RDF:about = " chrome: // mozapps / content / extensions /
extensions . xul # viewGroup "
25 last - selected = " extensions " / >
26 < RDF:Description RDF:about = " chrome: // mozapps / content / extensions /
extensions . xul # extensions - view "
27 selected = " true "
XI

28 last - selected = "


u r n : m o z i l l a : i t e m : b m a k i o s k @ b r o o k l y n m u s e u m . org " /
>
29 < RDF:Description RDF:about = " chrome: // browser / content / browser . xul #
sidebar - box "
30 sidebarcommand = " "
31 width = " "
32 src = " " / >
33 < RDF:Description RDF:about = " chrome: // browser / content / browser . xul #
sidebar - title "
34 value = " " / >
35 < RDF:Description RDF:about = " chrome: // mozapps / content / extensions /
extensions . xul " >
36 < NC:persist RDF:resource = " chrome: // mozapps / content / extensions /
extensions . xul # search - view " / >
37 < NC:persist RDF:resource = " chrome: // mozapps / content / extensions /
extensions . xul # exten sionsMan ager " / >
38 < NC:persist RDF:resource = " chrome: // mozapps / content / extensions /
extensions . xul # extensions - view " / >
39 < NC:persist RDF:resource = " chrome: // mozapps / content / extensions /
extensions . xul # viewGroup " / >
40 </ RDF:Description >
41 < RDF:Description RDF:about = " chrome: // mozapps / content / extensions /
extensions . xul # exten sionsMan ager "
42 width = " 520 "
43 height = " 380 "
44 sizemode = " normal "
45 screenX = " 5 "
46 screenY = " 49 " / >
47 < RDF:Description RDF:about = " chrome: // bmakiosk / content / bmakiosk . xul "
>
48 < NC:persist RDF:resource = " chrome: // bmakiosk / content / bmakiosk . xul #
main - window " / >
49 </ RDF:Description >
50 < RDF:Description RDF:about = " chrome: // mozapps / content / downloads /
un kn ow nCo nt en tTy pe . xul # un kn ow nCo nt en tTy pe "
51 screenX = " 413 "
52 screenY = " 190 " / >
53 < RDF:Description RDF:about = " chrome: // bmakiosk / content / bmakiosk . xul #
main - window "
54 screenX = " 0 "
55 screenY = " 0 "
56 width = " 2000 "
57 height = " 2000 "
58 sizemode = " normal " / >
59 < RDF:Description RDF:about = " chrome: // mozapps / content / downloads /
un kn ow nCo nt en tTy pe . xul " >
60 < NC:persist RDF:resource = " chrome: // mozapps / content / downloads /
un kn ow nCo nt en tTy pe . xul # un kn own Co nt en tTy pe " / >
61 </ RDF:Description >
62 </ RDF:RDF >

Listing A.3: Inhalt /etc/skel/.xscreensaver


1 # XScreenSaver Preferences File
XII ANHANG A - LISTINGS

2 # http :// www . jwz . org / xscreensaver /


3
4 timeout : 0:11:00
5 cycle : 0:10:00
6 lock : False
7 lockTimeout : 0:00:00
8 passwdTimeout : 0:00:30
9 visualID : default
10 installColormap : True
11 verbose : False
12 timestamp : True
13 splash : True
14 splashDuration : 0:00:05
15 demoCommand : xscreensaver - demo
16 prefsCommand : xscreensaver - demo - prefs
17 nice : 10
18 memoryLimit : 0
19 fade : True
20 unfade : False
21 fadeSeconds : 0:00:03
22 fadeTicks : 20
23 captureStderr : True
24 i g n o r e U n i n s t a l l e d P r o g r a m s : False
25 font : * - medium -r -* -140 -* - m -*
26 dpmsEnabled : False
27 dpmsStandby : 2:00:00
28 dpmsSuspend : 2:00:00
29 dpmsOff : 4:00:00
30 grab DesktopIm ages : True
31 grabVideoFrames : False
32 ch oo se Ran do mI mag es : True
33 imageDirectory : / usr / share / applications / sas_custom / slideshow /
34
35 mode : one
36 selected : 0
37
38 textMode : file
39 textLiteral : XScreenSaver
40 textFile :
41 textProgram : fortune
42 textURL : http :// fridge . ubuntu . com / node / feed
43
44 programs : \
45 GL : glslideshow - root - delay 0 - duration 10 \
46 - zoom 100 - pan 1 - fade 0 \n\
47

48 pointerPollTime : 0:00:05
49 poin terHyster esis : 10
50 w i n d o w C r e a t i o n T i m e o u t :0:00:30
51 initialDelay : 0:00:00
52 sgiS averExten sion : True
53 xidleExtension : True
54 G e t V i e w P o r t I s F u l l O f L i e s : False
55 procInterrupts : True
56 overlayStderr : True
Anhang B

Pakete Entwicklungsumgebung

Die folgende Liste enthält die (zusätzlich) auf der Entwicklungsumgebung benötigten
Programm bzw. Pakete:

• Reconstructor1

• Adobe
R Flash
R

• Adobe
R Reader
R

• Virtualbox

• GIMP

• gfxboot

• dpkg-dev

• gfxboot-theme-ubuntu (als Source)

• cdbs

• debhelper

• fakeroot

• devscripts

• autotools-dev

• xubuntu-artwork-usplash (als Source)

• syslinux

• squashfs-tools

• mkisofs

• libbogl-dev
1
http://www.reconstructor.org/

XIII
XIV ANHANG B - PAKETE ENTWICKLUNGSUMGEBUNG

• libbogl0

• libgd2-xpm

• libusplash-dev

• xbase-clients

• xserver-xephyr

Alle Pakete können mittels des Befehls


apt-get install gfxboot dpkg-dev cdbs debhelper fakeroot devscripts
autotools-dev squashfs-tools mkisofs libbogl-dev libbogl0 libgd2-xpm
libusplash-dev xbase-clients xserver-xephyr
installiert werden.

Um alle Source-Pakete zu laden muss der folgende Befehl eingegeben werden:


apt-get source gfxboot-theme-ubuntu xubuntu-artwork-usplash
Anhang C

Pakete Derivat

Die folgende Liste enthält die (zusätzlich) auf dem Derivat benötigten Programm bzw.
Pakete:
• Adobe
R Flash
R

• Adobe
R Reader
R

• openbox

• sun-java6-plugin

• xinit

• xserver-xorg-core

• firefox

• usplash

• xscreensaver

• xscreensaver-gl-extra

• x11-server-utils

• libcurl3
Zusätzlich werden noch folgende Erweiterung für Firefox benötigt:
• BMA Kiosk

• jsLib
Alle Pakete können mittels des Befehls
apt-get install openbox sun-java6-plugin xinit xserver-xorg-
core firefox usplash xscreensaver xscreensaver-gl-extra x11-
server-utils libcurl3
installiert werden.

Die Installation der Firefox-Erweiterungen wird in Kapitel 4.3.2 auf Seite 12 behandelt.

XV
XVI ANHANG C - PAKETE DERIVAT
Anhang D

Anleitungen

Die folgenden Abschnitte enthalten (kurze) Anleitungen zur Umsetzung der verschiedenen
Veränderungen des Derivats. Zusätzlich dazu werden noch nützliche Links zu den unter-
schiedlichen Themen erwähnt. Die chroot-Umgebung ist am besten über Reconstructor
zu nutzen (Einbindung des in Kapitel D.1 erzeugten Images).

D.1 Erstellung einer „Minimal“-CD


Die Erstellung einer „Minimal“-CD dient der Prämisse, dass die Größe des Derivats nicht
über 700 MB steigen soll. Dazu wird ein Live-System erzeugt, welches nur über die mi-
nimal notwendigen Komponenten verfügt. In dieses System können dann alle weiteren
Veränderungen integriert werden bzw. werden diese bereits während der Erstellung in-
tegriert (darauf wird an entsprechender Stelle hingewiesen). Bei dem Erstellungsprozess
wird sowohl in der Entwicklungsumgebung als auch in der chroot-Umgebung gearbeitet,
was entsprchend gekennzeichnet ist.
Die benötigten Pakete für die Entwicklungsumgebung sind:
• syslinux
• squashfs-tools
• mkisofs
• debootstrap
Installation mittels:
apt-get install syslinux squashfs-tools mkisofs debootstrap
Vorgehensweise:
1. mkdir LiveCD
2. cd LiveCD
3. mkdir chroot-env
4. sudo debootstrap –arch i386 [jaunty ] chroot-env
(für [jaunty ] sollte immer der Name der aktuellen Ubuntu-Version1 eingesetzt
werden)
1
http://de.wikipedia.org/wiki/Ubuntu#Entwicklungsgeschichte

XVII
XVIII ANHANG D - ANLEITUNGEN

5. sudo cp /etc/resolv.conf chroot-env/etc/resolv.conf

6. sudo cp /etc/apt/sources.list chroot-env/etc/apt/sources.list

7. sudo chroot chroot-env


(durch diesen Befehl erfolgt der Wechsel in die chroot-Umgebung)

7.1 mount /proc


7.2 mount /sys
7.3 mount -t devpts none /dev/pts
7.4 apt-get update
7.5 export HOME=/root
7.6 export LC_ALL=C
7.7 apt-get install –yes ubuntu-standard casper
7.8 apt-get install –yes discover1 laptop-detect os-prober
7.9 apt-get install –yes linux-generic
7.10 apt-get install –no-install-recommends –yes network-manager
(die Installation des Network-Managers ist für Ubuntu 9.04 wichtig, weil sonst
nicht korrekt gebootet wird – ob diese Installation bei späteren Versionen wei-
terhin notwendig ist, ist zum gegenwärtigen Zeitpunkt nicht bekannt)
7.11 apt-get install –yes openbox xinit server-xorg-core firefox
xscreensaver xscreensaver-gl-extra x11-server-utils usplash
(dies installiert einige der zusätzlichen Komponenten, über die das Derivat
verfügen soll - die folgenden Unterpunkte dienen dem Setup des veränderten
USplash (die Anleitung dazu ist auf Seite XXI zu finden)
(1) sudo update-alternatives –install /usr/lib/usplash/usplash-artwork.so
usplash-artwork.so /usr/lib/usplash/
[usplashthemexubuntu.so ] 10
(wobei [usplashthemexubuntu.so ] stellvertretend für die erstellte USplash-
Datei steht)
(2) sudo update-alternatives –config usplash-artwork.so
(3) sudo update-initramfs -u
7.12 mkdir /usr/share/applications/sas_custom
7.13 apt-get clean
7.14 rm -rf /tmp/*
7.15 rm /etc/resolv.conf
7.16 umount -l -f /proc
7.17 umount -l -f /sys
7.18 umount /dev/pts
7.19 exit
(durch diesen Befehl wird sich aus der chroot-Umgebung ausgeloggt, die wei-
teren Schritte erfolgen wieder in der Entwicklungsumgebung)
D.1 - ERSTELLUNG EINER „MINIMAL“-CD XIX

8. mkdir image image/casper image/isolinux image/install

9. cp chroot-env/boot/vmlinuz-2.6.**-**-generic image/casper/vmlinuz

10. cp chroot-env/boot/initrd.img-2.6.**-**-generic image/casper/


initrd.gz

11. cp [/home/user/isolinux ] image/isolinux/


(wobei [/home/user/isolinux ] stellvertretend für das Verzeichnis mit dem mo-
difizierten Boot-Splash steht (Anleitung zu Modifikation des Boot-Splash auf Seite
XX))

12. sudo mksquashfs chroot-env image/casper/filesystem.squashfs

13. gedit image/README.diskdefines


Inhalt:
#define DISKNAME Ubuntu 9.04 "Jaunty Jackalope SAS Custom
#define TYPE binary
#define TYPEbinary 1
#define ARCH i386
#define ARCHi386 1
#define DISKNUM 1
#define DISKNUM1 1
#define TOTALNUM 0
#define TOTALNUM0 1

14. touch image/ubuntu

15. sudo -s

16. (cd image && find . -type f -print0 | xargs -0 md5sum > md5sum.txt)

17. exit

18. cd image

19. sudo mkisofs -r -V „$IMAGE_NAME“ -cache-inodes -J -l -b isolinux


/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-
info-table -o ../SAS-CustomLinux.iso .

20. cd ..
(in diesem Verzeichnis liegt nun die erstellte .iso-Datei)

Die folgende URL enthält eine Anleitung zu dem behandelten Thema:

• https://help.ubuntu.com/community/LiveCDCustomizationFromScratch
XX ANHANG D - ANLEITUNGEN

D.2 Anpassung Boot-Splash


Die Anpassung des Boot-Splashs dient der grafischen Modifikation und der Beschränkung
der Zugriffsmöglichkeiten. Zunächst muss der Boot-Splash der Ubuntu-Installations-CD
kopiert werden, dann werden einige Dateien modifiziert und anschließend wird alles in
die chroot-Umgebung integriert. Dabei kann die Bearbeitung der entsprechenden Da-
tein komplett innerhalb der Entwicklungsumgebung erfolgen (kein Wechsel zur chroot-
Umgebung notwendig).
Die benötigten Pakete für die Entwicklungsumgebung sind:

• gfxboot

• dpkg-dev

Installation mittels:
apt-get install gfxboot dpkg-dev
Die benötigten Source-Pakete für die Entwicklungsumgebung sind:

• gfxboot-theme-ubuntu

Installation mittels:
apt-get source gfxboot-theme-ubuntu
Vorgehensweise:

1. mkdir /home/[user ]/isolinux


(wobei [user ] für das Verzeichnis des aktuellen Benutzers steht)

2. cp -r /media/cdrom0/isolinux/* /home/[user ]/isolinux


(dazu muss natürlich die Ubuntu-Installations-CD im CD-ROM-Laufwerk eingelegt
sein)

3. sudo chmod -R 755 /home/[user ]/isolinux

4. cd gfxboot-theme-ubuntu*/
(wobei gfxboot-theme-ubuntu*/ für das Verzeichnis des Source-Pakets steht)

5. gedit panel.inc
(in der Funktion syslinux die Anzeige von F2 bis F6 unterdrücken – (für F2 z. B. [
.panel.both [ keyF2 0 "F2"... zu [ .panel.both [ keyF2 0 ""... ändern)

6. gedit po/de.po
(Datei dient der Übersetzung der englischen Begriffe – Übersetzung entsprechend
der Bedürfnisse und der Anzeigemöglichkeit ändern (z. B. msgid "Help"; msgstr
"Hilfe" durch msgid "Help"; msgstr " " ersetzen (wichtig: nicht leerer String,
sondern ein Leerzeichen bei Ersetzung ohne Inhalt))

7. make

8. sudo make install


D.3 - ANPASSUNG USPLASH XXI

9. cp install/de.tr /home/[user ]/isolinux


cp install/bootlogo /home/[user ]/isolinux
(wobei /home/[user ]/isolinux stellvertretend für das isolinux-Verzeichnis im
home-Verzeichnis des aktuellen Benutzers steht)
10. gimp
(Befehl startet Grafikprogramm GIMP – Unterschritte finden in GIMP statt)
(1) Strg + N
Breite: 640
Höhe: 480 Pixel

(2) Bild erstellen


(3) [Bild] → [Modus] → [Indiziert ...]
(4) Optimale Palette erzeugen
Maximale Anzahl der Farben: 16
(5) Strg + S
Name: splash.pcx
Ordner: /home/[user ]/isolinux
(wobei /home/[user ]/isolinux stellvertretend für das isolinux-Verzeichnis
im home-Verzeichnis des aktuellen Benutzers steht)
11. cd /home/[user ]/isolinux
12. gedit text.cfg
(entsprechende Einträge entfernen bzw. ergänzen – zum Booten als Live-System
muss lediglich der oberste Eintrag bestehen bleiben)
13. gedit lang
Inhalt:
de
(Änderung der Standard-Sprache auf deutsch)
14. gedit isolinux.cfg
(Timeout auf „1“ stellen, damit (fast) sofort in den Bootvorgang übergegangen wird)
15. echo "de" > langlist
16. weitere Schritte zur Integration in das Derivat sind auf Seite XIX zu finden
Die folgende URL enthält eine Anleitung zu dem behandelten Thema:
• https://lists.ubuntu.com/archives/ubuntu-uk/2007-July/006207.html (Abschnitt 4a)

D.3 Anpassung USplash


Der USplash wird rein grafisch überarbeitet. Die Bearbeitung der entsprechenden Datein
kann komplett innerhalb der Entwicklungsumgebung erfolgen – sie müssen lediglich in die
chroot-Umgebung kopiert werden.
Die benötigten Pakete für die Entwicklungsumgebung sind:
XXII ANHANG D - ANLEITUNGEN

• cdbs

• debhelper

• dpkg-dev

• fakeroot

• devscripts

• autotools-dev

Installation mittels:
apt-get install cdbs debhelper dpkg-dev fakeroot devscripts autotools-dev
apt-get build-dep usplash usplash-theme-ubuntu
Die benötigten Source-Pakete für die Entwicklungsumgebung sind:

• xubuntu-artworku-splash

Installation mittels:
apt-get source xubuntu-artworku-splash
Vorgehensweise:

1. chmod 777 xubuntu-artworku

2. gimp
(Befehl startet Grafikprogramm GIMP – Unterschritte finden in GIMP statt)

(1) Strg + N
Breite: 640
Höhe: 400 Pixel

(2) Bild erstellen


(3) alle throbber*.png-Bilder aus xubuntuartworkusplash/usplash/ mit in Bild
kopieren
(damit bei Indexierung auch Ladebalken-Farben berücksichtigt werden)
(4) [Bild] → [Modus] → [Indiziert ...]
(5) Optimale Palette erzeugen
Maximale Anzahl der Farben: 256
(6) eingefügte throbber*.png-Bilder wieder entfernen
(7) [Bild] → [Bild zusammenführen]
(8) Strg + S
Name: usplash_[Breite ]_[Höhe.png ]
(z. B.: usplash_640_400.png)
Ordner: [xubuntu-artwork*/ ]usplash
(wobei [xubuntu-artwork*/ ] stellvertretend für das xubuntu-artwork*/-Verzeichnis
ergänzt um die aktuelle Versionsnummer steht –
z. B. xubuntu-artwork-0.26)
D.4 - STARTSCRIPT FÜR FIREFOX XXIII

(9) Wiederholung für Auflösungen 640px × 480px, 800px × 600px, 1024px × 768px
und 1365px × 768px

3. cd xubuntu-artwork*/

4. gedit usplash/xubuntu-usplash-theme.c
(folgende Schritte zeigen die Überarbeitung der xubuntu-usplash-theme.c – es soll
die Textbox entfernt werden)

(1) löschen folgender Code-Bestandteile (mehrmaliges Vorkommen innerhalb der


Datei):
/* Text box position and size in pixels */
.text_x = 96,
.text_y = 246,
.text_width = 360,
.text_height = 100,

/* Text details */
.line_height = 15,
.line_length = 32,
.status_width = 35,

5. dpkg-buildpackage -rfakeroot

6. cp usplash/usplash-theme-xubuntu.so [chroot-Umgebung ]/usr/lib/


usplash
(kopiert geänderte Datei in chroot-Umgebung)

7. die restlichen Schritte erfolgen bei der Erstellung der „Minimal“-CD (siehe Seite
XVIII)

Die folgenden URLs enthalten ein Anleitungen zu dem behandelten Thema:

• http://ubuntuforums.org/showpost.php?p=4816450&postcount=1

• http://ubuntusatanic.org/forum/comments.php?DiscussionID=21&page=1

D.4 Startscript für Firefox


Das Startscript startet Firefox und führt ihn erneut aus, falls er geschlossen werden sollte.

1. gedit ffstart.sh
Inhalt:
#!/bin/bash
while true; do
firefox -kiosk –display=:0
done
exit 0
XXIV ANHANG D - ANLEITUNGEN

2. chmod 755 ffstart.sh

3. cp ffstart.sh [chroot-Umgebung ]/usr/share/applications/sas_custom

D.5 xmodmap
Xmodmap dient der Veränderung des Tastaturlayouts. Dazu muss in der Entwicklungs-
umgebung ein Tastaturlayout erzeugt werden, welches dann verändert und in die chroot-
Umgebung kopiert werden kann.

1. xmodmap -pke > xmodmap

2. gedit xmodmap
folgende Änderungen vornehemen:
keycode 22 = BackSpace
keycode 47 = odiaeresis Odiaeresis odiaeresis Odiaeresis
dead_doubleacute XF86_Switch_VT_1 dead_doubleacute
keycode 67 = (alles nach „=“ löschen)
..
.
keycode 76 =
keycode 82 = KP_Subtract
keycode 86 = KP_Add
keycode 95 =
keycode 96 =

3. cp xmodmap [chroot-Umgebung ]/usr/share/applications/sas_custom

Die folgenden URLs enthalten Anleitungen zu dem behandelten Thema:


• https://debianforum.de/forum/viewtopic.php?f=2\&t=54867\&start=0

• http://wiki.ubuntuusers.de/Xmodmap

D.6 Kiosk-Oberfläche für Firefox


Der folgende Abschnitt wird die Oberfläche von Firefox für den öffentlichen Einsatz mo-
difizieren. Alle Kommandos erfolgen in der chroot-Umgebung.

1. cd /tmp/

2. wget https://www.mozdevgroup.com/dropbox/jslib/signed/
jslib_current_signed.xpi
wget https://www.mozdevgroup.com/clients/bm/xpi/
bmakiosk_currentffgeneric_signed.xpi
(Erweiterungen für Firefox herunterladen)

3. firefox -install-global-extension [*.xpi ]


(Installation der Erweiterungen – wobei [*.xpi ] für die jeweilige Erweiterung steht)
D.7 - INSTALLATION VON SOFTWARE XXV

4. (sollte die Bash eine Fehlermeldung wie „DBus Library nicht korrekt . . . “ ausgibt,
dann folgendes Kommando eingeben: dbus-uuidgen –ensure)

5. firefox -kiosk admin (damit kann die Kiosk-Oberfläche konfiguriert werden)

6. rm *.xpi

Die folgenden URLs enthälten Anleitungen zu dem behandelten Thema:

• https://www.mozdevgroup.com/clients/bm/install-admin.html

• http://kb.mozillazine.org/Command_line_arguments

D.7 Installation von Software


Zusätzlich zu Firefox werden noch Adobe R Flash
R , Adobe R Reader
R und Java (JRE)

benötigt. Diese müssen in der chroot-Umgebung installiert werden.

D.7.1 Adobe Flash und Adobe Reader


1. apt-get remove flashplugin-nonfree
(Sicherheitsmaßnahme, falls alter Flash-Player installiert gewesen sein sollte)

2. apt-get install libcurl3

3. cd /tmp/

4. wget http://fpdownload.macromedia.com/get/flashplayer/current/
install_flash_player_10_linux.deb

5. dpkg -i [*.deb ] (wobei [*.deb ] für die heruntergeladen Flash-Installation steht)

6. wget http://ardownload.adobe.com/pub/adobe/reader/unix/9.x/
9.1.2/deu/AdbeRdr9.1.2-1_i386linux_deu.deb

7. dpkg -i [*.deb ] (wobei [*.deb ] für die heruntergeladen Adobe-Reader-Installation


steht)

8. rm *.deb

D.7.2 Java
1. apt-get update

2. apt-get install sun-java6-plugin


XXVI ANHANG D - ANLEITUNGEN

D.8 Veränderte bzw. neuerstellte Dateien


Die Bezeichnung der Listings enthält das Verzeichnis und den Dateinamen, den die Da-
teien später haben müssen (alle Verzeichnisse befinden sich in der chroot-Umgebung).

Listing D.1: /etc/skel/.bash_profile


1 startx

Der Eintrag bewirkt, dass sofort nach dem (erfolgreichen) Einloggen das X-Windows-
System gestartet wird.

Listing D.2: /etc/skel/.xinitrc


1 exec openbox - session

Der Eintrag bewirkt, dass Openbox als Standard-Fenstermanager verwendet wird.

Listing D.3: /etc/skel/.xscreensaver


1 timeout : 0:11:00
2 cycle : 0:10:00
3 lock : False
4 lockTimeout : 0:00:00
5 passwdTimeout : 0:00:30
6 visualID : default
7 installColormap : True
8 verbose : False
9 timestamp : True
10 splash : True
11 splashDuration : 0:00:05
12 demoCommand : xscreensaver - demo
13 prefsCommand : xscreensaver - demo - prefs
14 nice : 10
15 memoryLimit : 0
16 fade : True
17 unfade : False
18 fadeSeconds : 0:00:03
19 fadeTicks : 20
20 captureStderr : True
21 i g n o r e U n i n s t a l l e d P r o g r a m s : False
22 font : * - medium -r -* -140 -* - m -*
23 dpmsEnabled : False
24 dpmsStandby : 2:00:00
25 dpmsSuspend : 2:00:00
26 dpmsOff : 4:00:00
27 grab DesktopIm ages : True
28 grabVideoFrames : False
29 ch oo se Ran do mI mag es : True
30 imageDirectory : / usr / share / applications / sas_custom / slideshow /
31
32 mode : one
D.8 - VERÄNDERTE BZW. NEUERSTELLTE DATEIEN XXVII

33 selected : 0
34
35 textMode : file
36 textLiteral : XScreenSaver
37 textFile :
38 textProgram : fortune
39 textURL : http :// fridge . ubuntu . com / node / feed
40
41 programs : \
42 GL : glslideshow - root - delay 0 - duration 10 \
43 - zoom 100 - pan 1 - fade 0 \n\
44

45 pointerPollTime : 0:00:05
46 pointerHyste resis : 10
47 w i n d o w C r e a t i o n T i m e o u t :0:00:30
48 initialDelay : 0:00:00
49 sgiSaverExte nsion : True
50 xidleExtension : True
51 G e t V i e w P o r t I s F u l l O f L i e s : False
52 procInterrupts : True
53 overlayStderr : True

Durch diese Datei wird der Bildschirmschoner nach elf Minuten ausgeführt. Als Bild-
schirmschoneranwendung wird eine Slideshot mit den Bildern aus dem Verzeichnis /usr/
share/applications/sas_custom/slideshow/ gewählt – deswegen sollten in das Ver-
zeichnis auch die gewünschten Bilder kopiert werden (das Verzeichnis befindet sich in der
chroot-Umgebung).

Listing D.4: /etc/firefox-3.0/profile/localstore.rdf


1 <? xml version = " 1.0 " ? >
2 < RDF:RDF xmlns:NC = " http: // home . netscape . com / NC - rdf # "
3 xmlns:RDF = " http: // www . w3 . org /1999/02/22 - rdf - syntax - ns # " >
4 < RDF:Description RDF:about = " chrome: // mozapps / content / downloads /
downloads . xul " >
5 < NC:persist RDF:resource = " chrome: // mozapps / content / downloads /
downloads . xul # downloadManager " / >
6 </ RDF:Description >
7 < RDF:Description RDF:about = " chrome: // browser / content / browser . xul " >
8 < NC:persist RDF:resource = " chrome: // browser / content / browser . xul #
main - window " / >
9 < NC:persist RDF:resource = " chrome: // browser / content / browser . xul #
sidebar - box " / >
10 < NC:persist RDF:resource = " chrome: // browser / content / browser . xul #
sidebar - title " / >
11 </ RDF:Description >
12 < RDF:Description RDF:about = " chrome: // browser / content / browser . xul #
main - window "
13 width = " 994 "
14 screenX = " 0 "
15 screenY = " 25 "
16 height = " 721 "
17 sizemode = " maximized " / >
18 < RDF:Description RDF:about = " chrome: // mozapps / content / downloads /
downloads . xul # downloadManager "
XXVIII ANHANG D - ANLEITUNGEN

19 width = " 485 "


20 height = " 300 "
21 sizemode = " normal "
22 screenX = " 0 "
23 screenY = " 49 " / >
24 < RDF:Description RDF:about = " chrome: // mozapps / content / extensions /
extensions . xul # viewGroup "
25 last - selected = " extensions " / >
26 < RDF:Description RDF:about = " chrome: // mozapps / content / extensions /
extensions . xul # extensions - view "
27 selected = " true "
28 last - selected = "
u r n : m o z i l l a : i t e m : b m a k i o s k @ b r o o k l y n m u s e u m . org " /
>
29 < RDF:Description RDF:about = " chrome: // browser / content / browser . xul #
sidebar - box "
30 sidebarcommand = " "
31 width = " "
32 src = " " / >
33 < RDF:Description RDF:about = " chrome: // browser / content / browser . xul #
sidebar - title "
34 value = " " / >
35 < RDF:Description RDF:about = " chrome: // mozapps / content / extensions /
extensions . xul " >
36 < NC:persist RDF:resource = " chrome: // mozapps / content / extensions /
extensions . xul # search - view " / >
37 < NC:persist RDF:resource = " chrome: // mozapps / content / extensions /
extensions . xul # exte nsionsMa nager " / >
38 < NC:persist RDF:resource = " chrome: // mozapps / content / extensions /
extensions . xul # extensions - view " / >
39 < NC:persist RDF:resource = " chrome: // mozapps / content / extensions /
extensions . xul # viewGroup " / >
40 </ RDF:Description >
41 < RDF:Description RDF:about = " chrome: // mozapps / content / extensions /
extensions . xul # exte nsionsMa nager "
42 width = " 520 "
43 height = " 380 "
44 sizemode = " normal "
45 screenX = " 5 "
46 screenY = " 49 " / >
47 < RDF:Description RDF:about = " chrome: // bmakiosk / content / bmakiosk . xul "
>
48 < NC:persist RDF:resource = " chrome: // bmakiosk / content / bmakiosk . xul #
main - window " / >
49 </ RDF:Description >
50 < RDF:Description RDF:about = " chrome: // mozapps / content / downloads /
un kn ow nCo nt en tTy pe . xul # un kn ow nCo nt en tTy pe "
51 screenX = " 413 "
52 screenY = " 190 " / >
53 < RDF:Description RDF:about = " chrome: // bmakiosk / content / bmakiosk . xul #
main - window "
54 screenX = " 0 "
55 screenY = " 0 "
56 width = " 2000 "
57 height = " 2000 "
58 sizemode = " normal " / >
D.8 - VERÄNDERTE BZW. NEUERSTELLTE DATEIEN XXIX

59 < RDF:Description RDF:about = " chrome: // mozapps / content / downloads /


un kn ow nCo nt en tTy pe . xul " >
60 < NC:persist RDF:resource = " chrome: // mozapps / content / downloads /
un kn ow nCo nt en tTy pe . xul # un kn ow nCo nt en tTy pe " / >
61 </ RDF:Description >
62 </ RDF:RDF >

Durch die Veränderung der Sektion <RDF:Description RDF:about="chrome://


bmakiosk/content/bmakiosk.xul#main-window" wird das Firefoxfenster maximiert bzw.
füllt es den gesamten Bildschirm aus.

Listing D.5: /etc/firefox-3.0/profile/prefs.js


1 # Mozilla User Preferences
2
3 user_pref (" security . wa rn _e nte ri ng _w eak " , false ) ;
4 user_pref (" security . wa rn _e nte ri ng _w eak . show_once " , false ) ;
5 user_pref (" security . wa rn _v iew in g_ mi xed " , false ) ;
6 user_pref (" security . wa rn _v iew in g_ mi xed . show_once " , false ) ;
7 user_pref (" browser . urlbar . clickSelectsAll " , true ) ;
8 user_pref (" browser . urlbar . d o u b l e C l i c k S e l e c t s A l l " , false ) ;

Durch die Veränderung dieser Datei werden die Sicherheitwarnungen bei Firefox deak-
tiviert. In dem Verzeichnis /etc/firefox-3.0/profile/ muss zudem noch die Datei
bookmarks.html gelöscht werden.

Listing D.6: /etc/xdg/openbox/autostart.sh


1 # This shell script is run before Openbox launches .
2 # Environment variables set here are passed to the Openbox session .
3
4 # Set a background color
5 BG = " "
6 if which hsetroot >/ dev / null ; then
7 BG = hsetroot
8 else
9 if which esetroot >/ dev / null ; then
10 BG = esetroot
11 else
12 if which xsetroot >/ dev / null ; then
13 BG = xsetroot
14 fi
15 fi
16 fi
17 test -z $BG || $BG - solid " #303030 "
18

19 # D - bus
20 if which dbus - launch >/ dev / null && test -z " $ D B U S _ S E S S I O N _ B U S _ A D D R E S S
" ; then
21 eval ‘ dbus - launch --sh - syntax -- exit - with - session ‘
22 fi
23
XXX ANHANG D - ANLEITUNGEN

24 # Make GTK apps look and behave how they were set up in the gnome
config tools
25 if test -x / usr / libexec / gnome - settings - daemon >/ dev / null ; then
26 / usr / libexec / gnome - settings - daemon &
27 elif which gnome - settings - daemon >/ dev / null ; then
28 gnome - settings - daemon &
29 # Make GTK apps look and behave how they were set up in the XFCE
config tools
30 elif which xfce - mcs - manager >/ dev / null ; then
31 xfce - mcs - manager n &
32 fi
33

34 # Preload stuff for KDE apps


35 if which start_kdeinit >/ dev / null ; then
36 LD_BIND_NOW = true start_kdeinit -- new - startup + kcminit_startup &
37 fi
38

39 # Run XDG autostart things . By default don ’ t run anything desktop -


specific
40 # See xdg - autostart -- help more info
41 DESKTOP_ENV = " "
42 if which / usr / lib / openbox / xdg - autostart >/ dev / null ; then
43 / usr / lib / openbox / xdg - autostart $DESKTOP_ENV
44 fi
45
46 xscreensaver - nosplash &
47 / usr / share / applications / sas_custom / ffstart . sh &
48 ( sleep 5 && xmodmap / usr / share / applications / sas_custom / xmodmap ) &
49 ( sleep 30 && xmodmap / usr / share / applications / sas_custom / xmodmap ) &

Die letzten vier Zeilen wurden ergänzt. Sie sorgen dafür, dass der Bildschirmschoner und
Firefox gestartet werden und dass das Tastaturlayout geändert wird (dies wird mit einer
Verzögerung kombiniert, da vor der Änderung erst Openbox starten muss; der zweite
Aufruf ist aus Sicherheitsgründe, sollte der erste Aufruf verfrüht ausgeführt worden sein
und keine Wirkung gehabt haben)

Listing D.7: /etc/xdg/openbox/menu.xml


1 <? xml version = " 1.0 " encoding = " UTF -8 " ? >
2
3 < openbox_menu xmlns = " http: // openbox . org / "
4 xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance "
5 xs i: sc hem aL oc ati on = " http: // openbox . org /
6 file: /// usr / share / openbox / menu . xsd " >
7
8 < menu id = " root - menu " label = " Openbox 3 " >
9 < item label = " Firefox " >
10 < action name = " Execute " > < execute >/ usr / share / applications /
sas_custom / ffstart . sh </ execute > </ action >
11 </ item >
12 </ menu >
13
14 </ openbox_menu >

Das Kontext-Menü von Openbox wird auf den Eintrag „Firefox“ reduziert.
Glossar

autostart automatische Ausführung (meist synchron mit


Betriebssystemstart)

Beta frühe Testversion


Boot Startphase des Computers

Cache Pufferspeicher
CD optisches Speichermedium (Compact Disc)
chroot Kommando zur Veränderung des root-
Verzeichnisses (Sandbox)
Content-Filter Filterung von Websites klassifiziert nach In-
halt
Cookie Profildatei

Daemon Hintergrundprogramm
Debian Linux-Destribution
default Standardwert
Derivat Destribution für einen bestimmten Zweck
Destribution Zusammenstellung von Betriebssystem und
Software

F-Tasten Tasten der obersten Tastaturreihe (F1 bis


F12)

GUI grafische Benutzeroberfläche

http Hypertext Transfer Protocol


https-Verbindung sichere http-Verbindung (Hypertext Transfer
Protocol Secure)

Image Speicherabbild eines Mediums


InitRD Abbild für initialen Arbeitsspeicher
IP-Adresse Internet-Protokoll-Adresse

Linux freies Betriebssystem


Live-System Betriebssystem, welches ausschließlich von CD
gebootet und betrieben wird

XXXI
XXXII Glossar

Pixel Bildpunkt
Plugins Erweitungsmodel einer anderen Software

RC Freigabekandidat
Release finale Version
Repositories Verzeichnis der verfügbaren Pakete
root Stammverzeichnis

Script Datei mit ausführbarem Code


Session Sitzung
Shell Eingabeschnittstelle zwischen Benutzer und
Computer
Source Quelltext
Splash Ladebildschirm während Startphase (auch:
Splash Screen)
SquashFS komprimiertes, nur lesbares Dateisystem

Taskbar Symbolleiste, in der ausgeführte Programme


gelistet sind
Timeout Zeitüberschreitung
Titelleiste obere Leiste eines Fensters, die u. a. Symbole
zum Minimieren, Maximieren und Schließen
des Fensters enthält

Windows
R Betriebssystem der Firma Microsoft
R

X-Window-System GUI für Desktop- bzw. Fenstermanager


Literaturverzeichnis

[Col09] Collins, Pete: OpenKiosk Instructions.


https://www.mozdevgroup.com/clients/bm/instructions.html.
Version: 10.07.2009

[Eas09] East, Matthew: LiveCDCustomization.


https://help.ubuntu.com/community/LiveCDCustomization#Change%
20default%20language%20of%20gfxboot. Version: 12.07.2009

[Gar09] Garry: How can one make its own Usplash theme ?
http://ubuntusatanic.org/forum/comments.php?DiscussionID=21&page=1.
Version: 16.07.2009

[Jan09] Jansens, Dana: Help:Autostart.


http://icculus.org/openbox/index.php/Help:Autostart. Version: 10.07.2009

[Lin09] Linux, Michael: Xmodmap. http://wiki.ubuntuusers.de/Xmodmap.


Version: 21.07.2009

[McC09] McCarty, Joel: X - Konfiguration.


http://www.linuxfocus.org/Deutsch/March1998/article24.html#xinitrc.
Version: 09.07.2009

[Nat09] Natarajan, Ramesh: Execution sequence for .bash_profile, .bashrc,


.bash_login, .profile and .bash_logout.
http://www.thegeekstuff.com/2008/10/execution-sequence-for-bash_
profile-bashrc-bash_login-profile-and-bash_logout/. Version: 09.07.2009

[Wym09] Wyman, Alice: Command line arguments.


http://kb.mozillazine.org/Command_line_arguments. Version: 10.07.2009

[Zaj09] Zajac, Andrew: LiveCDCustomizationFromScratch.


https://help.ubuntu.com/community/LiveCDCustomizationFromScratch.
Version: 18.07.2009

[Zaw09] Zawinski, Jamie: XScreenSaver Manual.


http://www.jwz.org/xscreensaver/man1.html. Version: 19.07.2009

XXXIII
XXXIV LITERATURVERZEICHNIS
Kurzfassung
Erstellung eines Linux-Derivates Name: Clemens Riese
für Public-Browsing-PCs Kurs: WWI08D
Firma: SAS Institute GmbH

Das Projekt „Erstellung eines Linux-Derivates für Public-Browsing-PCs“ entstand auf


Grund des Umstandes, dass die SAS Institute GmbH am Standort Heidelberg ein hohes
Aufkommen an Schulungsmaßnahmen für Kunden realisiert. Diesen Kunden (und auch
den Besuchern) wurde bisher schon die Möglichkeit eines freien Internetzugangs an öffent-
lichen Computern geboten, welche wegen des hohen Wartungsaufwands nur noch schwer
realisierbar war.
Mit Hilfe des Projekts sollte ein Linux-Derivat geschaffen werden, welches einerseits den
Wartungsaufwand auf ein vertretbares Level reduziert und andererseits gewisse Kriteri-
en, wie z. B. die Sicherheit der Nutzer (Privatsphäre) und den Einsatz als Live-System,
erfüllt. Dazu sollte dem Derivat die Linux-Destribution Ubuntu 9.04 „Jaunty Jackalope“
als Grundlage dienen. Des Weiteren musste eine entsprechende Entwicklungsumgebung
konfiguriert und eine Dokumentation erstellt werden.
Im Rahmen des Projekts konnten alle zwingend geforderten Kriterien umgesetzt werden
– lediglich das optionale Kriterium der Integration eines Proxy-Servers scheiterte, da der
Zeitaufwand zur Modifikation zu hoch gewesen wäre. Als Dokumentation dienen diese
Arbeit und zusätzlich erstellte Kurzanleitungen.
Zum gegenwärtigen Zeitpunkt wird das Derivat bereits am Standort Heidelberg eingesetzt.

Você também pode gostar