SDB:KIWI Kochbuch Kiosk System
Getestet mit openSUSE | Empfohlene Artikel | Verwandte Artikel | |||
|
Inhaltsverzeichnis
- 1 Erstellung eines Web-Kiosk Abbildes
- 1.1 Erstellen des KIWI Konfigurations-Baums
- 1.2 Die Datei config.sh modifizieren
- 1.3 Die Datei config.xml modifizieren
- 1.4 Erstellen der Overlay-Dateien
- 1.4.1 Deaktivieren des X-Server-Naustarts
- 1.4.2 GNOME Einstellungen
- 1.4.2.1 Bearbeiten von apps/metacity/global_keybindings/%gconf.xml
- 1.4.2.2 Bearbeiten von apps/metacity/keybinding_commands/%gconf.xml
- 1.4.2.3 apps/nautilus/preferences/%gconf.xml bearbeiten
- 1.4.2.4 Bearbeitung von desktop/gnome/lockdown/%gconf.xml
- 1.4.2.5 Bearbeiten von desktop/gnome/session/required_components/%gconf.xml
- 1.4.3 Letzter Schliff
Erstellung eines Web-Kiosk Abbildes
In diesem Beispiel kombinieren wir verschiedene Themen, die wir bereits diskutiert haben, um ein Abbild zu erstellen, das etwas mehr Funktionen aufweist. Obwohl das Beispiel kein komplett funktionsfähiges Web-Kiosk hervorbringt (einige zusätzliche Anpassungen wären notwendig), ist das erzeugte Abbild sehr dicht an einem verwendbaren System.
Das Beispiel verwendet das suse-min-gnome-Beispiel unter /usr/share/doc/packages/kiwi/examples/suse-11.x/suse-min-gnome als Ausgangspunkt. Von da ausgehend werden wir einige bedeutende Änderungen durchführen, um unser Ziel zu erreichen.
Erstellen des KIWI Konfigurations-Baums
Wie bereits oben erwähnt, werden wir das Beispiel suse-min-gnome verwenden, das wir unter USB-Stick einrichten - unser viertes Rezept diskutiert haben, als unsere Ausgangsbasis verwenden. Darum ist die erstmalige Erstellung des Konfigurationsbaums eine einfache Kopie.
Die Datei config.sh modifizieren
Zuerst werden wir die Datei config.sh so modifizieren, dass sie für unsere Bedürfnisse geeignet ist. Bearbeiten Sie /tmp/web-kiosk/config.sh in Ihrem bevorzugten Editor und machen Sie folgende Modifikationen:
- In "services section" der Datei fügen Sie hinzu
- suseInsertService sshd
- In SUSEConfig section hinzufügen
- baseUpdateSysConfig /etc/sysconfig/displaymanager DISPLAYMANAGER_AUTOLOGIN kioskuser
- baseDisableCtrlAltDel
Wir müssen denn ssh-Servis starten, um dem entfernten Zugriff auf das System zu ermöglichen, sobald es gestartet ist und läuft, das es keinen Zugriff auf ein Terminal vom laufenden Abbild gibt. Wir konfigurieren ebenso den Benutzer kioskuser zum Autologin. Der Aufruf der Funktion baseDisableCtrlAltDel deaktiviert die Tastenkombination Ctrl-Alt-Delete. Das heißt, wir deaktivieren einen gewaltsamen Neustart mit der Tastatur.
Mit diesen Änderungen sollte die neue Datei config.sh wie folgt aussehen:
#!/bin/bash #================ # FILE : config.sh #---------------- # PROJECT : OpenSuSE KIWI Image System # COPYRIGHT : (c) 2006 SUSE LINUX Products GmbH. All rights reserved # : # AUTHOR : Marcus Schaefer <ms@suse.de> # : # BELONGS TO : Operating System images # : # DESCRIPTION : configuration script for SUSE based # : operating systems # : # : # STATUS : BETA #---------------- #====================================== # Functions... #-------------------------------------- test -f /.kconfig && . /.kconfig test -f /.profile && . /.profile #====================================== # Greeting... #-------------------------------------- echo "Configure image: [$kiwi_iname]..." #====================================== # Activate services #-------------------------------------- suseActivateDefaultServices suseInsertService boot.device-mapper suseInsertService sshd #====================================== # SuSEconfig #-------------------------------------- baseUpdateSysConfig /etc/sysconfig/displaymanager DISPLAYMANAGER_AUTOLOGIN kioskuser baseUpdateSysConfig /etc/sysconfig/displaymanager DISPLAYMANAGER gdm baseUpdateSysConfig /etc/sysconfig/windowmanager DEFAULT_WM gnome baseDisableCtrlAltDel baseSetRunlevel 5 suseConfig #====================================== # Umount kernel filesystems #-------------------------------------- baseCleanMount exit 0
Die Datei config.xml modifizieren
Nun werden wir die Datei config.xml modifizieren, um die geeigneten Änderungen für unser Web-Kiosk durchzuführen. Bearbeiten Sie /tmp/web-kiosk/config.xml und führen Sie die folgenden Änderungen aus:
- Ändern Sie das Attribut name des Abbildes
- <image schemaversion="3.8" name="suse-11.2-web-kiosk-demo">
- Ändern Sie den Wert des Spezifikationselementes
- <specification>openSUSE 11.2 Web kiosk appliance</specification>
- Löschen Sie den Typ des iso Abbildes
- <type boot="isoboot/suse-11.2" flags="unified">iso</type>
- Fügen Sie ein OEM Abbild-Typ mit dem USB-Format hinzu
- <type filesystem="ext3" boot="oemboot/suse-11.2" format="usb">oem</type>
- Ändere den Benutzer tux zu kioskuser
- <user pwd="$1$wYJUgpM5$RXMMeASDc035eX.NbYWFl0" home="/home/kioskuser" name="kioskuser"/>
- Entferne die Zeilen, die gnome-applets, Perl, und Python einbeziehen
- <package name="gnome-applets"/>
- <package name="perl"/>
- <package name="python"/>
Unter der wilden Vermutung, dass die Web-Kiosk-Hardware kein optisches Laufwerk zur Installation besitzt, erstellen wir ein sich selbst installierendes Abbild auf einem USB-Stick, indem wir den OEM-Typ mit dem Format USB hinzufügen.
Ein OEM-Abbild ist ein virtuelles Festplattenabbild, das alle Partitionen und Bootloaderinformationen repräsentiert, wie eine wirklich existierende Festplatte. Diese Abbild kann dann auf die physische Platte durch Verwendung des Kommandos dd abgelegt werden. Durch Spezifizierung des Attributs format instruieren wir KIWI, das OEM-Abbild in der Weise zu erstellen, dass es für einen USB-Stick geeignet ist, der dann verwendet werden kann, das Festplattenabbild zu installieren. Das Ergebnis ist ein USB-Stick, der unser Kiosk-Abbild auf die Zielmaschine installiert, wenn man es als Boot-Gerät verwendet Bei diesem Prozess gehen alle Daten auf dem Zielinstallationsgerät verloren. Mehr Informationen zum OEM-Abbildtyp finden Sie im . KIWI Image System Cookbook in /usr/share/doc/packages/kiwi/kiwi.pdf, das mit dem Paket kiwi-doc geliefert wird. Oder die Online-Version finden Sie hier.
Die Konfiguration beschreibt ebenso den Abbildtyp VMware, das wir ebenfalls zu Testzwecken verwenden.
Die Änderungen, die Sie auf Ihrer Konfigurationsdatei anwenden, sollten wie folgt aussehen:
<?xml version="1.0" encoding="utf-8"?> <image schemaversion="3.8" name="suse-11.2-web-kiosk-demo"> <description type="system"> <author>Robert Schweikert</author> <contact>rschweikert at novell dot com</contact> <specification>openSUSE 11.2 Web kiosk appliance</specification> </description> <preferences> <type primary="true" filesystem="ext3" boot="vmxboot/suse-11.2" format="vmdk">vmx</type> <type filesystem="ext3" boot="oemboot/suse-11.2" format="usb">oem</type> <version>1.0.1</version> <packagemanager>zypper</packagemanager> <rpm-check-signatures>false</rpm-check-signatures> <rpm-force>true</rpm-force> <locale>en_US</locale> <keytable>us.map.gz</keytable> </preferences> <users group="users"> <user pwd="$1$wYJUgpM5$RXMMeASDc035eX.NbYWFl0" home="/home/kioskuser" name="kioskuser"/> </users> <users group="root"> <user pwd="$1$wYJUgpM5$RXMMeASDc035eX.NbYWFl0" home="/root" name="root"/> </users> <repository type="yast2"> <source path="opensuse://11.2/repo/oss/"/> </repository> <packages type="image" patternType="plusRecommended" patternPackageType="plusRecommended"> <package name="bootsplash"/> <package name="bootsplash-branding-openSUSE" bootinclude="true" bootdelete="true"/> <package name="firefox"/> <package name="gdm"/> <package name="gfxboot-branding-openSUSE" bootinclude="true" bootdelete="true"/> <package name="ifplugd"/> <package name="iputils"/> <package name="kernel-default"/> <package name="preload"/> <package name="vim"/> <package name="xorg-x11-server"/> <opensusePattern name="base"/> </packages> <packages type="vmware"> </packages> <vmwareconfig memory="1024"> <vmwaredisk controller="ide" id="0"/> </vmwareconfig> <packages type="bootstrap"> <package name="filesystem"/> <package name="glibc-locale"/> </packages> </image>
config.xml für Kiwi 4.1 oder höher
<?xml version="1.0" encoding="utf-8"?> <image schemaversion="4.1" name="suse-11.2-web-kiosk-demo"> <description type="system"> <author>Robert Schweikert</author> <contact>rschweikert at novell dot com</contact> <specification>openSUSE 11.2 Web kiosk appliance</specification> </description> <preferences> <type image="vmx" primary="true" filesystem="ext3" boot="vmxboot/suse-11.2" format="vmdk"> <vmwareconfig memory="1024"> <vmwaredisk controller="ide" id="0"/> </vmwareconfig> </type> <type image="oem" filesystem="ext3" boot="oemboot/suse-11.2" format="usb"/> <version>1.0.1</version> <packagemanager>zypper</packagemanager> <rpm-check-signatures>false</rpm-check-signatures> <rpm-force>true</rpm-force> <locale>en_US</locale> <keytable>us.map.gz</keytable> </preferences> <users group="users"> <user pwd="$1$wYJUgpM5$RXMMeASDc035eX.NbYWFl0" home="/home/kioskuser" name="kioskuser"/> </users> <users group="root"> <user pwd="$1$wYJUgpM5$RXMMeASDc035eX.NbYWFl0" home="/root" name="root"/> </users> <repository type="yast2"> <source path="opensuse://11.2/repo/oss/"/> </repository> <packages type="image" patternType="plusRecommended" patternPackageType="plusRecommended"> <package name="bootsplash"/> <package name="bootsplash-branding-openSUSE" bootinclude="true" bootdelete="true"/> <package name="firefox"/> <package name="gdm"/> <package name="gfxboot-branding-openSUSE" bootinclude="true" bootdelete="true"/> <package name="ifplugd"/> <package name="iputils"/> <package name="kernel-default"/> <package name="preload"/> <package name="sax2"/> <package name="vim"/> <package name="xorg-x11-server"/> <opensusePattern name="base"/> </packages> <packages type="vmware"> </packages> <packages type="bootstrap"> <package name="filesystem"/> <package name="glibc-locale"/> </packages> </image>
Erstellen der Overlay-Dateien
Sind die Konfigurationsdatei und das Konfigurationsscript eingerichtet, ist es Zeit eine Overlay-Datei für unser Web-Kiosk zu erstellen.
Wir müssen tiefer ins system schauen. Wir wollen die Tastenkombinationen deaktivieren. Bis jetzt haben wir nur Ctrl-Alt-Delete deaktiviert. Und wir wollen,dass Fierfox automatisch mit dem Systemstart startet.
Deaktivieren des X-Server-Naustarts
Die Deaktivierung eines Neustarts des X-Servers mittels Tastatur, d.h. die Tastenkombination Ctrl-Alt-Backspace, wird über die Datei xorg.conf in /etc/X11 durchgeführt. Wie bereits erwähnt, gibt es Unterschiede zwischen den Distributionsversionen. Mit openSUSE 11.2 und später verwenden X-Server die Auto-Konfiguration, während frühere Distributionen statische Konfigurationen über die komplette Datei xorg.conf haben.
X-Server Einstellungen für die Auto-Konfiguration ab openSUSE 11.2
Mit der X-Server-Auto-Konfiguration ist die Datei /etc/X11/xorg.conf bestimmend. Der Trick ist, dass die Datei nicht komplett sein darf. Das bedeutet, dass wir nur den Abschnitt, den wir in der Datei benötigen, erstellen und überlassen den Rest dem Auto-Konfigurations-Mechanismus.
Erstellen Sie die Datei /tmp/web-kiosk/root/etc/X11/xorg.conf mit dem folgenden Inhalt:
Section "ServerFlags" Option "DontZap" "yes" Option "DontVTSwitch" "yes" EndSection
Damit deaktivieren wir die virtuellen Konsolen und die Tastenkombination Ctrl-Alt-Backspace.
X-Server statische Konfiguration (openSUSE 11.1 und früher)
Zuerst lassen Sie uns alle Standardkonfigurationen, die existieren, los werden. Bearbeiten Sie /tmp/web-kiosk/config.sh und fügen rm -f /etc/X11/xorg.conf nach dem Aufruf von suseConfig hinzu. Unten ist ein Ausschnitt aus der Datei, die die neue Zeile zeigt.
baseDisableCtrlAltDel baseSetRunlevel 5 suseConfig # Remove the default xorg.conf file rm -f /etc/X11/xorg.conf
Keine Angst, wir werden den X-Server konfigurieren, den das System anfangs startet. Dieser Schritt ist der nächste. Bearbeiten Sie /tmp/web-kiosk/root/etc/init.d/boot.local. Wenn Sie das Beispiel suse-min-gnome von 11.1 kopieren, diese Datei existiert bereits. In diese Datei fügen wir etwas sed-Magie, um das gewünschte Ergebnis zu erhalten. Das Folgende zeigt die Datei mit dem hinzugefügten sed-Kommando.
#! /bin/sh # # Copyright (c) 2009 Novell Inc. # # Author: Robert Schweikert <rschweikert@novell.com> # # Create the X-server configuration file if it does not yet exist if [ ! -f /etc/X11/xorg.conf ]; then /usr/sbin/sax2 -c 0 -a -i &>/dev/null /usr/bin/sed -i 's/Section "ServerFlags"/Section \ "ServerFlags"\n Option "DontZap" "yes"\n \ Option "DontVTSwitch" "yes"/' /etc/X11/xorg.conf
GNOME Einstellungen
Zurück zur Einheitlichkeit zwischen den auf 11.x basierenden Distributionen. Das GNOME-Verhalten wird über den Konfigurationsbaum eingerichtet. Für die Benutzeranpassungen lebt der Konfigurationsbaum in $HOME/.gconf. System weite Konfigurationen leben unter /etc/gconf/<some-directory>. Die Änderungen, an denen wir interessiert sind, sind solche, die nicht von irgend jemandem oder über die Benutzeroberfläche geändert werden können. So landen unsere Konfigurationsänderungen in gconf.xml.mandatory. Weitere GNOME-Konfigurationen finden Sie unter Locking down GNOME in SUSE 11 based distributions. Unter /tmp/web-kiosk/root/etc/gconf/gconf.xml.mandatory wollen wir folgenden Baum erstellen:
./apps ./apps/%gconf.xml ./apps/metacity ./apps/metacity/%gconf.xml ./apps/metacity/general ./apps/metacity/general/%gconf.xml ./apps/metacity/global_keybindings ./apps/metacity/global_keybindings/%gconf.xml ./apps/metacity/keybinding_commands ./apps/metacity/keybinding_commands/%gconf.xml ./apps/nautilus ./apps/nautilus/%gconf.xml ./apps/nautilus/preferences ./apps/nautilus/preferences/%gconf.xml ./desktop ./desktop/%gconf.xml ./desktop/gnome ./desktop/gnome/%gconf.xml ./desktop/gnome/lockdown ./desktop/gnome/lockdown/%gconf.xml ./desktop/gnome/session ./desktop/gnome/session/%gconf.xml ./desktop/gnome/session/required_components ./desktop/gnome/session/required_components/%gconf.xml
Die folgenden Kommandos werden uns weiter bringen:
Als nächstes müssen wir die Datei %gconf.xml erstellen, die nicht leer ist.
Bearbeiten von apps/metacity/global_keybindings/%gconf.xml
In dieser Datei werden wir einige Tastaturbelegungen deaktivieren (wie der Ort vorschlägt). Fügen Sie folgenden Inhalt in die Datei. Die Namen deuten an, welche Tastaturbelegungen deaktiviert werden.
<?xml version="1.0"?> <gconf> <entry name="cycle_panels" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="cycle_panels_backwards" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="panel_main_menu" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="panel_run_dialog" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="run_command_screenshot" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="run_command_window_screenshot" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="switch_group" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="switch_panels" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="switch_to_workspace_down" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="switch_to_workspace_left" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="switch_to_workspace_right" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> <entry name="switch_to_workspace_up" mtime="1263563592" type="string"> <stringvalue>disabled</stringvalue> </entry> </gconf>
Bearbeiten von apps/metacity/keybinding_commands/%gconf.xml
In dieser Datei werden die Kommandos zur Ausführung von einer gegebenen Tastenbelegung eingestellt. Da wir das System sperren wollen, räumen wir alle Kommandos auf. Stellen Sie folgenden Inhalt in die Datei:
<?xml version="1.0"?> <gconf> <entry name="command_screenshot" mtime="1263563592" type="string"> <stringvalue></stringvalue> </entry> <entry name="command_window_screenshot" mtime="1263563592" type="string"> <stringvalue></stringvalue> </entry> </gconf>
apps/nautilus/preferences/%gconf.xml bearbeiten
Mit dieser Konfiguration steuern wir das Verhalten von Nautilus. Nautilus ist mehr als nur ein Dateimanager unter GNOME. Er steuert auch einen Teil des Desktops.
<?xml version="1.0"?> <gconf> <entry name="show_desktop" mtime="1263563592" type="bool" value="false" /> </gconf>
Mit dieser Einstellung deaktivieren wir die Nautilus-Funktionen, die sich mit der Desktop-Anzeige vermischen.
Bearbeitung von desktop/gnome/lockdown/%gconf.xml
Jetzt werden wir einige globale Optionen von GNOME setzen.
<?xml version="1.0"?> <gconf> <entry name="disable_command_line" mtime="1263563592" type="bool" value="true" /> <entry name="disable_printing" mtime="1263563592" type="int" value="0" /> <entry name="disable_print_setup" mtime="1263563592" type="bool" value="false" /> <entry name="disable_user_switching" mtime="1263563592" type="bool" value="false" /> </gconf>
Bearbeiten von desktop/gnome/session/required_components/%gconf.xml
Mit dieser Datei können wir die GNOME-Komponenten steuern zu starten, wenn der GNOME-Desktop startet. In unserem Fall werden wir das Panel deaktivieren.
<gconf> <entry name="panel" mtime="1263563592" type="string"> <stringvalue></stringvalue> </entry> </gconf>
Letzter Schliff
Das System ist heruntergefahren und wir wollen nun, dass Firefox startet, wenn das System hoch fährt. Es sei daran erinnert, dass der Kioskbenutzer bereits auf Autologing eingestellt ist . Das basiert auf Änderungen in der Datei config.sh.
Lassen Sie uns zuerst die Einstellungen zum Autostart von Firefox erstellen. Wir brauchen das Autostartverzeichnis und eine Datei .desktop.
Erstelle die Datei firefox.desktop mit dem bevorzugten Editor und dem folgenden Inhalt.
[Desktop Entry] Type=Application Name=Firefox Exec=firefox file:///home/kioskuser/kioskdemoHome.html Icon= Comment=
Ebenso erstellen Sie nun die Homepage-Datei /tmp/web-kiosk/root/home/kioskuser/kioskdemoHome.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>KIWI Kiosk Demo</title> </head> <h1>KIWI Kiosk Demo</h1> Das ist eine Platzhalterseite, um die Einstellungen von Kiosk zu demonstrieren. Fügen Sie hier Ihre eigene Seite mit einem Link zum Internet hinzu, der die Einstellungsfunktionalität des Internet-Kiosk bieten wird. <p> Für dieses Demo wurde Firefox <a href="https://addons.mozilla.org/en-US/firefox/addon/1659">Kiosk Mode plugin</a> installiert. </body> </html>
Zum Schluss müssen wir noch Firefox behandeln. Ein relativ einfacher Weg ist es, das Kiosk Mode Plugin zu verwenden. Die Frage ist natürlich, wie man das Plugin in des Homeverzeichnis des Kioskusers bekommt?
Der einfache und gerade Weg besteht darin, wenn ein neuer Benutzer auf Ihrem laufenden System anzulegen ist, melden Sie sich als der Benutzer an, starten Firefox und installieren das Plugin. Dann wechseln Sie den Benutzer und melden sich als Sie selbst an und kopieren das Verzeichnis .mozilla vom neuen Benutzer auf Ihr System in /tmp/web-kiosk/root/home/kioskuser. Sie können diesen Trick anwenden, um eine virtuelle Maschine zu verwenden, wenn Sie lieber nicht Ihr laufendes System beeinträchtigen wollen. Bei jedem Event ist die Idee die gleiche.
Das ist es. Es ist Zeit unser Web-Kiosk-Abbild zu bauen und zu testen.
Das wird das VMware-Abbild erzeugen, das als Standard konfiguriert wurde. Um ein sich selbst installierendes USB-Stick-Abbild zu erzeugen, füge die OEM-Kommandozeilenoption --type zu dem zu erstellenden Kommando wie folgt hinzu:
Wenn Sie das USB-Abbild haben, verwenden Sie dd um es auf den Stick zu verfrachten.
- Schließe den Stick an
- Bestimme die Bezeichnung (dev) des Stick, die fdisk -l verwendet.
- Es sollte ziemlich offensichtlich sein, an welchen Geräteknoten der Stick landet.
- dd if=/tmp/web-kiosk_img/suse-11.2-web-kiosk-demo.x86_64-1.0.1.raw.install.raw of=/dev/<stick-node> bs=32k
Der Stick kann verwendet werden, um jedes System zu starten und das Web-Kiosk-Abbild zu installieren.