5. Das System
5.1 Konsole
Die Konsole ist die Tastatur und der Bildschirm eines Linux-Systems; in der Regel also der VGA-Monitor plus Tastatur.
Linux täuscht den Programmen mehr als eine Konsole vor und der Benutzer kann dann mittels Tastenkombination <Alt-Ctrl-F1> - <Alt-Ctrl-F8> zwischen diesen hin- und herblenden. Die vorgetäuschten Konsolen nennt man virtuelle Konsolen.
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯| |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
| Escape the |<-- setfont loadkeys -->|^1234567890ß 123 |
| Gates of hell. | | qwertzuiopü+ 567 |
| |=======+ +=======| asdfghjklöä# 789 |
| Use Linux. | | | | <yxcvbnm,. 0, |
| | | | |__________________|
|_________________| | |
MMM | |
MMMMMMMMM | | +---<---< Internet
| | |
+-------*-------------*------+ |
| \ / | | X11 ------+
| \ / | | | |
| Betriebssystemkern Linux | telnetd xterm |
Alt+Ctrl F1F8 ----------------/ <> | \\ /// |
als Schalter | / | \\ /// |
| / | \ +-------+· · ·+-------+ |
| / | \ | ptyp1 | | ptyef | |
|······+······+ · · · +······+·······+ · · +·······| |
| tty0 | tty1 | . . . | tty8 | ttyp1 | · · | ttyef | |
+------+------+ - - - +------+-------+ - - +-------+ |
| | ^ | |
bash emacs | less |
| |
`---------------------------'
Die nachfolgend beschriebenen Einstellungen betreffen alle virtuellen Konsolen gleichzeitig. Welches die "richtige" Datei für die Kommandos ist, darüber kann nur das Handbuch der eigenen Distribution Auskunft geben. (Tip: das Configuration HOWTO kann in vielen Fällen helfen.)
Weiterführende Literatur: Keystroke-HOWTO (engl.).
Es ist unter Linux übrigens nicht notwendig, die virtuellen Bildschirme mit dem Befehl `stty pass8' in den 8-bit Modus zu schalten - das sind sie nämlich von Hause aus.
Tastenbelegung der Textkonsolen
Für die unterschiedlichen Tastaturen der verschiedenen Länder liegen im Verzeichnis `/usr/lib/kbd/keytables' vorgefertigte Konfigurationsdateien. Mit dem Kommando `loadkeys' kann man eine solche Datei in den Linux-Kernel laden und dadurch den Tasten bestimmte Zeichen zuordnen.
Um Mißverständnissen vorzubeugen: man ordnet den Tasten keine Bedeutungen zu, sondern nur bestimmte Zeichen. Dadurch ist sichergestellt, daß die Tastatur auch beim Arbeiten mit entfernten Rechnern funktioniert, denn Zeichen kann man über jede Art von Netzwerkverbindung übertragen. Dagegen wäre eine direkte Abfrage der Tastatur-Hardware (so wie unter DOS) über ein Netzwerk nicht möglich - es ist ein Widerspruch in sich.
Die Bedeutung eines Zeichens (und damit einer Taste) kann von Programm zu Programm leicht unterschiedlich sein und die Kunst liegt in der effektiven, bzw. komfortablen Konfiguration der Bedeutung. Die länderspezifischen Aspekte werden im kommenden Kapitel behandelt.
Deutschland
Im einfachsten Falle werden Benutzer einer deutschen Tastatur mit der Belegung `de-latin1-nodeadkeys.map' zufrieden sein:
Beispiel:
loadkeys de-latin1-nodeadkeys.map
Schweiz
Geeignete Tastenbelegungen für die Schweiz sind `sf-latin1.map' (swiss-french) und `sg-latin1.map' (swiss-german).
In der Deutschschweiz gibt es 2 verschiedene Tastaturlayouts, bei denen wenige Tasten verschieden beschriftet sind (eckige Klammern, @-Zeichen an verschiedenen Orten).
Östereich
?
Länderübergreifende Einstellungen
Die Tastaturtabellen sind Textdateien, die sich mit dem persönlichen Lieblingseditor bearbeiten lassen. Um z.B. die französischen Anführungszeichen auf <AltGr .> und <AltGr -> zu legen, ergänzt man an den entsprechenden Stellen:
keycode 51 = comma semicolon guillemotright
keycode 52 = period colon guillemotleft
control keycode 105 = Meta_b
control keycode 106 = Meta_f
Die letzten beiden Einträge ermöglichen wortweises Springen auf der Kommandozeile mit Strg-Cursortaste. Als Anregung für eigene Ergänzungen hier eine Tabelle mit allen (?) symbolischen Namen:
" quotedbl ' apostrophe ` grave ~ asciitilde
^ asciicircum _ underscore ! exclam ? question
# numbersign $ dollar % percent & ampersand
| bar @ at + plus - minus
* asterisk / slash \ backslash . period
, comma : colon ; semicolon < less
= equal > greater ( parenleft ) parenright
[ bracketleft ] bracketright { braceleft } braceright
¡ exclamdown ¢ cent £ sterling ¤ currency
¥ yen ¦ brokenbar § section " diaeresis
© copyright ª ordfeminine < guillemotleft
¬ notsign hyphen ® registered
¯ macron ° degree ± plusminus ² twosuperior
³ threesuperior ´ acute µ mu
¶ paragraph · periodcentered ¸ cedilla
¹ onesuperior º masculine > guillemotright
¼ onequarter ½ onehalf ¾ threequarters
¿ questiondown À Agrave Á Aacute  Acircumflex
à Atilde Ä Adiaeresis °A Aring Æ AE
Ç Ccedilla È Egrave É Eacute ^E Ecircumflex
Ë Ediaeresis Ì Igrave Í Iacute Î Icircumflex
Ï Idiaeresis Ð ETH Ñ Ntilde Ò Ograve
Ó Oacute Ô Ocircumflex Õ Otilde Ö Odiaeresis
× multiply Ø Ooblique Ù Ugrave Ú Uacute
^U Ucircumflex Ü Udiaeresis Ý Yacute |O THORN
ß ssharp à agrave á aacute â acircumflex
ã atilde ä adiaeresis å aring æ ae
ç ccedilla è egrave é eacute ê ecircumflex
ë ediaeresis ì igrave í iacute î icircumflex
ï idiaeresis xo eth ñ ntild ò ograve
ó oacute ô ocircumflex õ otilde ö odiaeresis
÷ division ø oslash ù ugrave ú uacute
û ucircumflex ü udiaeresis ý yacute |o thorn
"y ydiaeresis
nul Tab Escape space BackSpace
Insert Remove Home End PageUp
Down Left Right Up PageDown
Macro Help Do Pause Linefeed
[Die Tabelle nicht ganz korrekt, da einige Zeichen vom Formatierungswerkzeug nicht verarbeitet werden. Wir arbeiten daran.]
Die keytables(5), die dumpkeys(1) und loadkeys(1) Manpages erläutern welche Symbole gültig sind, insbesondere
dumpkeys --long-info
erzeugt eine Liste aller bekannten Zeichennamen und Modifier.
Deadkeys
Mit Deadkey wird eine Taste bezeichnet, bei deren Betätigung das Zeichen zunächst zurückgehalten wird. Das nachfolgend eingegebene Zeichen wird quasi über das zuerst eingegeben Zeichen gedruckt, falls die Kombination Sinn ergibt. Ansonsten werden beide Zeichen nacheinander ausgegeben.
Beispiel: ist die Tilde als Deadkey konfiguriert, so ergibt <~> <a> ein ã (a mit Tilde darüber).
Compose
Alternativ zu den Deadkeys kann man auch mit der <Compose>-Taste arbeiten: sie druckt zwei nacheinander eingetippte Zeichen übereinander. So ergibt die Tastenfolge <Compose> <~> <a> ein ã, während ein <~> <a> weiterhin ~a anzeigt.
Um <Compose> auf die an vielen neuen Tastaturen vorzufindenden zusätzlichen Tasten zu legen, kann man z.B. konfigurieren:
keycode 127 = Compose
Bei mir trägt diese Taste das Symbol "Quadrat mit Pfeil in der linken oberen Ecke". Die Taste mit dem Fenster-Symbol (früher: Diamant-Symbol oder Meta) hat die Nr. 125.
Unicode
Bei Verwendung eines Unicode-Zeichensatz sollte man auch die Tastatur in den Unicode-Modus schalten:
kbd_mode -u
5.2 Zeichensatz für die Textkonsolen
Damit die länderspezifischen Zeichen überhaupt auf dem Bildschirm dargestellt werden können, muß der entsprechende Zeichensatz für den Bildschirm geladen werden. Akzeptable Ergebnisse erzielt man in der Regel mit `lat1u-16.psf', einem 16-Punkt hohen UNIcode-Zeichensatz. Der zugehörige Befehl zum Laden sieht z.B. so aus:
setfont /usr/lib/kbd/consolefonts/lat1u-16.psf
Die Details sind wiederum der Dokumentation der eigenen Distribution
zu entnehmen.
Unicode
Um den Unicode-Zeichensatz für die Anwendungsprogramme freizugeben muß
man die Zeichenfolge ESC ( K
an den virtuellen Bildschirm senden. Dies
kann z.B. durch die Befehlsfolge
for i in 1 2 3 4 5 6 7 8
do
echo -n -e "\033(K" > /dev/tty$i
done
geschehen. Diese Lösung ist allerdings aus verschiedenen Gründen sub-optimal.
5.3 Tastenbelegung von `XFree86'
`XFree86' ermöglicht den Betrieb von Programmen, die das `X Window System' benötigen. In Verbindung mit einem sogennanten `Windowmanager', der das Look&Feel bestimmt, stellt es die grafische Benutzeroberfläche unter Linux zur Verfügung.
Oft wird empfohlen, die Tastenbelegung des XFree86 durch die Datei
~/.Xmodmap
oder mit dem Befehl xmodmap
zu
konfigurieren. Dies ist nicht erforderlich, sondern unnötig
kompliziert. Tatsächlich ist nur ein Eintrag in der
Konfigurationsdatei des XFree86 notwendig, um die <AltGr> Taste zu
aktivieren. Die Vorgehensweise unterscheidet sich für die
verschiedenen Versionen:
Version 2.1:
Konfigurationsdatei: /usr/X11/lib/X11/Xconfig
Mit Ausnahme der in der Tastaturbelegung vereinbarten Deadkeys werden die Tasten genau wie auf der Textkonsole belegt. Die Deadkeys (s.o.) sind unter Version 2.1 tatsächlich `dead' - aber leider ganz, nicht nur `halb'. Die Freigabe der Alt-Tasten muß manuell vorgenommen werden, dazu trägt man im Abschnitt Keyboard ein:
LeftAlt Meta
RightAlt ModeShift
Version 3.1
Konfigurationsdateien: /etc/X11/XF86Config
und
/etc/XF86Config
Die Tastatur ist genau wie auf der Konsole belegt, auch die Deadkeys und <Compose> funktionieren (falls als solche konfiguriert).
Um allerdings in den Genuß der <Alt >- und <AltGr >-Tasten zu kommen,
muß man bei der Erzeugung der
Konfigurationsdatei (Programm xf86config
) folgende Frage mit
`y' (yes) beantworten:
Do you want to enable these bindings for the Alt keys?
Alternativ kann man die entsprechenden Einstellungen auch per Hand
im Abschnitt Section "Keyboard"
vornehmen:
LeftAlt Meta
RightAlt ModeShift
`RightAlt ModeShift' aktiviert die <AltGr>-Taste und
`LeftAlt Meta' sorgt für eine Emulation der <Meta>-Taste (benötigen
z.B. die Programme emacs
und bash
).
Version 3.2 und höher:
Konfigurationsdateien: /etc/X11/XF86Config
und
/etc/XF86Config
Hat man eine Konfigurationsdatei der Version 3.1 oder will man es sich
besonders einfach machen, dann verfährt man wie oben beschrieben und
ergänzt im Abschnitt Section "Keyboard"
lediglich
XkbDisable
Dadurch wird die unter Linux etwas kompliziert anmutende Xkbd-Technik
abgeschaltet und das X liest stattdessen die Tastaturbelegung der
Textkonsolen (auf diese Weise braucht man nur eine Sache zu konfigurieren).
Äquivalent kann man bei der Erzeugung der Konfigurationsdatei (Programm
xf86config
) folgende Frage mit `n' (no) beantworten:
Do you want to use XKB?
Beantwortet man diese Frage mit `y' (yes), dann sind in der Konfigurationsdatei folgende Einträge zu entkommentieren (d.h. das `#'-Zeichen ist zu entfernen):
# XkbLayout "de"
# XkbVariant "nodeadkeys"
Alle Versionen:
Sondermodelle fertigt man mit dem Befehl
xmodmap -pke > ~/.Xmodmap
und einem Editor nach Wahl an. Die globale Konfigurationsdatei ist
/etc/X11/Xmodmap
. Leider gibt es keine empfehlenswerte
Software zur komfortableren Konfiguration der Tastatur (xkeycaps
ist katastrophal in Sachen Benutzerführung).
Empfehlenswert für die Xmodmap sind etwa
! Freigabe der Compose-Taste
keycode 117 = Multi_key
! Punkt auf das Komma des Ziffern-Blocks
keycode 91 = period
! Was um alles in der Welt ist die Super-Taste?
keycode 115 = Super_L
! Für diejenigen, die ^? als Backspace auf der Konsole konfiguriert haben.
keycode 22 = BackSpace
Unicode
?
5.4 Zeitzonen
Die ganze Welt ist in Zeitzonen unterteilt, innerhalb derer eine einheitliche Zeit gilt (unabhängig von der Zeit einer Sonnenuhr an dem betreffenden Ort). Bezugspunkt für die Einteilung ist die Universal Time, kurz UTC.
Zu einer Zeitzone gehören bestimmte Regeln, wie z.B. die Umstellung von Sommer- auf Winterzeit. Linux kann diese Regeln automatisch berücksichtigen.
Allerdings ist die automatische Zeitumstellung nur angebracht, wenn Linux das einzige Betriebssystem auf dem Rechner ist oder auch das andere Betriebssystem auf diese Technik beherrscht.
DOS
Der Treiber clock.sys
bringt DOS den Umgang mit Zeitzonen
bei. Der TZ-Wert für die deutsche Zeitzone in clock.sys
ist
CET-1CEST,M3.5.0/2,M10.5.0/3
Der Treiber clock.sys
ist z.B. erhältlich unter der URL
ftp://ftp.tu-chemnitz.de/pub/simtel/msdos/clock/clk360rs.zip
Linux
Unter Linux gibt es quasi 3 Zeiten:
- Die der auf dem Motherboard installierten CMOS-Uhr,
- die Systemzeit des Linux-Kernels und
- die dem Benutzer von verschiedenen »Uhren« angezeigte Zeit.
»clock -u -w« »date -u -s«
CMOS-Uhr <-------------- Linux <--------------
(Mainboard) Systemzeit Benutzer-Uhr
--------------> (UTC) -------------->
»clock -u -s« »date«, »xclock«
Die Programme clock
und date
übersetzen zwischen diesen Uhrzeiten.
Zwar liest der Kernel schon beim Booten die CMOS-Uhr aus und interpretiert
sie als UTC. Aber um systematische Fehler der CMOS-Uhr zu korrigieren, wird
die Uhrzeit vom Skript /etc/init.d/boot
(oder vergleichbar) ein
weiteres Mal gelesen. Dort wird dann der clock
-Befehl ausgeführt und
ist daher für die weiteren Betrachtungen ebenfalls relevant.
Für die Umstellung von Sommer- auf Winterzeit gibt es zwei Möglichkeiten: manuell oder automatisch.
Umstellung manuell automatisch
----------------------------------------------------
CMOS-Uhr Ortzeit UTC
Option für clock -keine- -u
Die Zeitzone der CMOS-Uhr setzt man am sichersten während des Bootens im BIOS Setup. "UTC" ist die Universal Time: im Winter eine, im Sommer zwei Stunden weniger.
Welches Skript den Befehl clock
ausführt (und demnach die Option '-u'
enthalten kann) muß man dem Handbuch der eigenen Distribution entnehmen.
Die eigentliche Zeitzone wird unabhängig von den obigen Einstellungen durch
den Link /usr/lib/zoneinfo/localtime
festgelegt. In der Regel
zeigt dieser Link auf die Hauptstadt des eigenen Landes:
Land Zeitzonen-Datei
|- Zeitzone -|
-----------------------------------------------
Deutschland /usr/lib/zoneinfo/Europe/Berlin
Östereich /usr/lib/zoneinfo/Europe/Vienna
Schweiz /usr/lib/zoneinfo/Europe/Zurich
Um den Link anzulegen kann man das Kommando ln
verwenden, im Falle von
Deutschland lautet die komplette Befehlszeile dann:
ln -sf /usr/lib/zoneinfo/Europe/Berlin /usr/lib/zoneinfo/localtime
Die eingestellte Zeitzone kann mit der Umgebungsvariable TZ
überschrieben werden:
export TZ=Asia/Hong_Kong; xclock & export TZ=Africa/Dakar; xclock &
Das früher gebräuchliche "MET" sollte unter keinen Umständen weiterverwendet werden. Markus Kuhn schrieb mir:
Die Datei /usr/lib/zoneinfo/MET existiert nur zwecks Rückwärtskompatibilität. Die Autoren der Zeitzonentabellen (Olson/Eggert/et al.) wollen eigentlich, daß deutsche Benutzer statt MET die Datei Europe/Berlin verwenden. Dann stimmen sogar die historischen Sommerzeiten vor 1945, die Linux auch alle kennt. Außerdem wird dann in der neuesten Version der Zeitzonentabelle "Mitteleuropäische Zeit (MEZ)" endlich korrekt ins Englische mit "Central European Time (CET)" übersetzt, denn "MET" ist ein Übersetzungsfehler (siehe z.B. Langenscheid Englisch; ich habe deswegen sogar beim Physikalisch-Technischen Bundesamt nachgefragt, die für die deutsche Zeit verantwortlich sind). "CEST" ist dann entsprechend "Central European Summer Time" ("MET DST", wie es noch in vielen Linux-Installationen benutzt wird, war eine falsche Uebersetzung von MESZ).
Next Previous Contents