Localized Keymaps für Slinky/VUMBOX

Die Installation von LINUX mit dem Slinky-Installer des RULE-Projektes läuft derzeit mit der US-Keymap des zur Installation verwendeten Kernels ab. Folgende Schritte sind nötig, um während der Installation eine andere Keymap zu verwenden:

Hinweis: alle Pfade sind relativ zum slinky-development-Verzeichnis. Am besten eine Shell-Variable zB. SLINKY=slinky-devel-directory anlegen.

  1. Man benötigt eine neue busybox, die die Befehle dumpkmap und loadkmap enthält. Das Erzeugen dieser busybox ist etwas trickreich, da man dazu erstmals uclibc, eine verkleinerte C-Library benötigt. Wie das im Einzelnen geht, habe ich in Making Linux Installation Disks for Fun and Profit gefunden. Das so erzeugte Programm busybox nach $SLINKY/filesystem/bin/busybox kopieren (<SHIFT>-<RIGHT-BUTTON>save target as).
  2. Unter $SLINKY/filesystem/sbin einen Symbolischen Link von busybox nach loadkmap anlegen:
    cd $SLINKY/filesystem/sbin
    ln -s ../bin/busybox loadkmap
    
  3. Keymaps erzeugen: (am Entwicklungsrechner) Das Programm Loadkeys stammt von den console-tools und ist sicher vorhanden.
    loadkeys map-file (suche de-latin1-nodeadkeys.map[.gz], dort befinden sich viele vordefinierte Mapfiles)
    busybox dumpkmap >neue_binary_kmap
    
    Auf diese Weise habe ich de.map und fr.map erzeugt.
  4. Diese kmap-Files in ein neu anzulegendes Verzeichnis $SLINKY/filesystem/etc/i18n kopieren. Der Name ist egal, ich hab mich da nur nach dem Muster in der busybox-Manpage gerichtet.
  5. Folgendes nach dem Sourcen von /scripts/slinky.config, also eher zu Beginn des Installations-Scripts, in $SLINKY/filesystem/scripts/setup.sh einfügen:
    echo "Loading keymaps"
    cd /etc/i18n
    ls | grep -n '.'
    echo "Enter number for language to select"
    echo -n "or RETURN for default us keymap"
    read num
    keymap=`ls | grep -n '.' | grep "^${num}:" | cut -d: -f2`
    if [ -r /etc/i18n/${keymap} ]
    then
        /sbin/loadkmap < /etc/i18n/${keymap}
        echo "keymap <${keymap}> loaded" | tee -a ${install_log}
        echo "You can try your keys now, continue  with RETURN"
        read x
    else
        echo "Unknown keymap <${keymap}>, using default" | tee -a ${install_log}
    fi 
    cd /
    

    Erklärung: ls | grep -n '.' macht eine alphabetisch geordnete Liste aller Files in /etc/i18n und stellt jedem Namen eine laufende Nummer voran. Anhand dieser Zahl kann man die gewünschte Keymap wählen. Es sollte so funktionieren, dass der Code nicht von der Anzahl der Keymaps abhängig ist. (Wie ich jetzt aber sehe, muss mindestens ein mapfile vorhanden sein, damit das Script sinnvoll ist.)

Nun mit $SLINKY/makedisk.sh eine neue Boot-Disk erstellen und ausprobieren. Der Code ist eh zu Beginn der Installation, es wird da noch nichts am Zielsystem verändert.


Franz Zahaurek