Linuxová kouzla I - seriál návodů ke stejnojmenné přednášce na LinuxExpo

Po perném pracovním dni se před počítačem objeví mág s kufříkem plným kouzel, která překvapí nejen ty, kteří s Linuxem teprve začínají, ale i zkušenější uživatele. A co si některá kouzla zkusit i doma? A vypadat také jako kouzelník? O tom pojednává první díl seriálu návodů ke stejnojmenné přednášce na LinuxExpo Linuxová kouzla. K dispozici je i [?uvnitr:image/tid/57 fotodokumentace].

V rámci výstavy a konference LinuxExpo 2007 se konala přednáška Linuxová kouzla, která ukazovala, jaké triky pro práci i pobavení se dají v Linuxu provádět. A že jich je!

Během prezentace Jiří Benc a Milan Vančura představili fiktivní pár Jožin a Bažina. Na Jožinově pracovním dni postupně ukázali několik z možných triků nebo nestandardního použití HW.

V dalších částech najdete složitější návody z přednášky:

Využití hlasové syntézy k oznamování událostí
V KDE je možnost různých druhů notifikací včetně hlasových oznámení.
A to nejen předem připravených statických hlášení, ale systém může např.
přečíst předmět nově příchozího e-mailu.
Přechod ze stroje na stroj s logovací klíčenkou (pomocí NX)
Pomocí technologie NX je možné připojovat se ke své pracovní ploše
z různých počítačů a přecházet tak např. ze zaměstnání domů bez zastavení
běžících aplikací a bez ukončení relace. Díky napojení na určitou konkrétní
("osobní") klíčenku pak odpadá nutnost se přihlašovat na klientovi:
při vložení klíčenky se uživatel automaticky připojí ke své ploše a po vyjmutí
klíčenky se od své plochy odpojí.
Spouštění programů z KDE menu, ale pod jiným uživatelem
Pro položky v KDE menu lze oteřít spouštěci dialog a v rámci něj zvolit mimo jiné i uživatele, který danou aplikaci spustí. Tím může běžet např. Firefox Bažiny na Jožinově pracovní ploše.
Představení technologie NX
Ukázka NX na pomalé lince (GPRS EDGE)
MPlayer s aalib
Zdá se vám nepoužitelná možnost sledovat video v textovém režimu? mplayer -vo aa vás přesvědčí o opaku!
Ovládání mplayeru z klávesnice mobilního telefonu
Také vás už napadlo použít mobilní telefon jako dálkový ovladač? Je to snadné!
Ovládání kursoru myši mobilním telefonem
Mobilním telefonem se dá ovládat nejenom mplayer :-)
Přenos kontaktů z mobilního telefonu do adresáře Kmailu
Snadno lze z mobilního telefonu přenést i kontakty. KDE nabízí pohodlnou cestu i bez speciálního synchronizačního SW.
Chvilka oddechu: Neverball ovládaný nakláněním notebooku
Tak toto je opravdu nestandardní použití harddisku v notebooku: pomocí jeho vnitřních senzorů náklonu je možno hrát např. hru neverball.


Multiseat

Více osob může pracovat současně u jednoho počítače!

Jelikož spouštění programů z KDE menu pod jiným uživatelem je podporováno přímo v KDE a tudíž snadno dosažitelné přes pravé tlačítko myši na položku v menu, začneme rovnou nastavením multiseat.

Hardwarové požadavky

  • Jedna graf. karta pro každého uživatele
    • bohužel nelze použít jedné karty s více výstupy (omezení X), ale jednotliví uživatelé mohou používat Xineramu
    • u některých grafických karet kolidují drivery (např. nvidia vs. nvidia-legacy) a nelze je proto použít dohromady
    • obecně není třeba, aby měly všechny graf. karty chipset od téhož výrobce, ale některé kombinace mohou mít problémy (např. binární driver nvidia přeprogramovává PCI sběrnici, což mohou jiné drivery špatně nést)
  • Jeden pár klávesnice-myš pro každého uživatele
    • lze použít libovolné kombinace PS/2 a USB zařízení (v našem příkladu jsme použili PS/2 klávesnici a myš pro první seat a USB klávesnici i myš pro druhý seat)
  • Případně pro každého uživatele jedna zvuková karta
    • konfigurace přesahuje rámec tohoto dokumentu

Obecný princip

  • spustíme dva (nebo více) X serverů, jeden pro každý seat
    • každý s výstupem na jinou grafickou kartu
    • každý s pevně určeným vstupním zařízením (klávesnice+myš)

Nastavení v openSUSE 10.2

Není třeba nic patchovat!

Konfigurace udev

V implicitním nastavení pojmenovává udev klávesnice a myši náhodně a pokaždé jinak; proto je třeba vytvořit pravidlo přiřazující pevné jméno druhému (případně každému dalšímu) páru klávesnice/myš.

  1. připojte klávesnice a myši
  2. příkazem cat /proc/bus/input/devices
    vypište nalezená zařízení
  3. najděte položky týkající se klávesnic a myší (podle názvu) a zaznamenejte si přesný název (položka "Name", může být například "Chicony USB keyboard") a umístění v sysfs (položka "Sysfs", obvykle něco jako "/class/input/input1")
  4. v adresáři /etc/udev.d/ vytvořte nový soubor 41-multiseat.rules, a do něj napište řádky:
    KERNEL=="event*", SYSFS{name}=="název klávesnice", SYMLINK+="input/event9"

    KERNEL=="event*", SYSFS{name}=="název myši", SYMLINK+="input/seat_b_mouse"
    Poznámka: pro klávesnici by bylo správnější použít něco jako
    input/seat_b_keyboard,
    ale bohužel Xorg server ve své současné verzi očekává vstup výhradně ve formátu
    /input/event[0-9]; jedná se o nepochopení autorů, jak funguje systém
    událostí v linuxu (viz man evdev).

    Pro více klávesnic a myší, nebo pro případ, že obě používají USB, by bylo třeba více řádků a soubor by byl poněkud složitější.

Grafické karty

V našem případě jsme použili dvě starší nVidia karty, jednu AGP a jednu PCI. Opensourcový driver nv si s inicializací dvou karet pro různé X servery neporadí, takže je třeba použít binární driver nvidia.

Pozor: Binární driver nvidia bohužel obsahuje chyby, které se v této poněkud netypické konfiguraci projeví (je možné, že jiné drivery na tom budou podobně). Nejotravnější bug spočívá v tom, že karty je nutné inicializovat ve správném pořadí: nejprve sekundární (tu, kterou nenakonfiguroval BIOS), pak primární (tu, která při startu vypisuje průběh bootování jádra). Je tedy třeba spustit nejprve X server pro sekundární kartu a teprve poté X server pro kartu primární. V našem případě BIOS detekoval jako první PCI kartu, na jiném počítači to však může být jinak; u některých BIOSů lze pořadí detekce i nastavit.

Konfigurace X serveru

  1. Je-li to třeba, nainstalujte příslušné drivery (u nás nvidia).
  2. Spusťte automatickou konfiguraci X serveru (nástroj SaX), například z YaSTu.
  3. Nyní je třeba ručně upravit konfigurační soubor /etc/X11/xorg.conf. Ignorujte text "PLEASE DO NOT EDIT THIS FILE" :-) a proveďte následující změny.
    Pozor: Po zásazích do souboru /etc/X11/xorg.conf už nesmíte znovu spustit automatickou konfiguraci, neboť SaX by si se změněným souborem nedokázal poradit.
    1. Najděte sekci InputDevice pro klávesnici (má v názvu něco jako "Keyboard[0]", v ní odstraňte řádky "Identifier" a "Driver" a místo nich přidejte řádky
      Option "Identifier" "Keyboard_A"

      Option "Driver" "evdev"

      Option "Device" "/dev/input/eventX"

      kde X je číslo zařízení, které jste si poznamenali z řádku "Sysfs" ve výpisu zařízení (/proc/bus/input/devices).

    2. Zkopírujte tuto sekci s tím, že v řádku "Identifier" bude teď "Keyboard_B" a v řádku "Device" bude "/dev/input/event9".
    3. Podobný postup nyní aplikujeme na sekci InputDevice týkající se myši. Sekce má v názvu něco jako "Mouse[0]".
      Odstraňte řádky "Identifier" a "Device" a nahraďte je řádky
      Option "Identifier" "Mouse_A"

      Option "Device" "/dev/input/mouse0"
    4. Zkopírujte tuto sekci s tím, že v řádku "Identifier" bude teď "Mouse_B" a v řádku "Device" bude "/dev/input/seat_b_mouse".
    5. V sekci "Monitor" zapište na řádku "Identifier" hodnotu "Monitor_A", zkopírujte tuto sekci a do druhé sekce použijte jako "Identifier" hodnotu "Monitor_B".
      Poznámka: Zde předpokládáme, že oba monitory mají stejné nebo velmi podobné parametry, jinak by bylo potřeba upravit druhou sekci tak, aby odpovídala vlastnostem druhého monitoru.
    6. Nyní zadejte z konzole příkaz X :1 -scanpci, který vypíše zařízení, jak je vidí X server. Najděte ve výpisu své dvě grafické karty a poznamenejte si trojici čísel, vypsaných v závorce na začátku řádku; tato čísla určují, kde na sběrnici je karta připojena.
      Příklad: Zde vidíme část výpisu z příkazu
      X :1 -scanpci na jednom z našich strojů:

      (0:24:1) Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map

      (0:24:2) Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller

      (0:24:3) Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control

      (1:10:0) unknown card (0x1458/0x1000) using a Texas Instruments TSB82AA2 IEEE-1394b Link Layer Controller

      (2:0:0) unknown card (0x1458/0xe000) using a Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller


      (5:0:0) unknown card (0x1043/0x81ae) using a nVidia Corporation NV44 [GeForce 6200 TurboCache(TM)]

      Řádka označující grafickou kartu je ta poslední.
      V tomto případě je grafická karta nVidia GeForce 6200 a její připojení
      na sběrnici je vyjádřeno čísly 5:0:0.

    7. Najděte (opět v souboru /etc/X11/xorg.conf) sekci "Device", změňte v ní položku "Identifier" na "Device_A" a přidejte nebo upravte řádek "BusID" tak, aby obsahoval
      Option "BusID" "X:Y:Z"

      kde X, Y a Z je trojice čísel z předchozího bodu.

    8. Zkopírujte sekci "Device" s tím, že položka "Identifier" bude nyní "Device_B" a položka "BusID" bude obsahovat trojici čísel odpovídající druhé grafické kartě.
      Poznámka: Možná bude třeba ve zkopírované sekci "Device" odmazat některá automaticky detekovaná nastavení týkající se první karty.
    9. Najděte sekci "Screen", změňte v ní položku "Identifier" na "Screen_A" "Device" na "Device_A", a "Monitor" na "Monitor_A".
    10. Zkopírujte sekci "Screen" s tím, že položka "Identifier" bude nyní "Screen_B", "Device" bude "Device_B" a "Monitor" "Monitor_B".
    11. Smažte všechny sekce "ServerLayout" a místo nich přidejte dvě nové:
      Section "ServerLayout"

      Identifier "Seat_A"

      InputDevice "Keyboard_A" "CoreKeyboard"

      InputDevice "Mouse_A" "CorePointer"

      Screen "Screen_A"

      EndSection



      Section "ServerLayout"

      Identifier "Seat_B"

      InputDevice "Keyboard_B" "CoreKeyboard"

      InputDevice "Mouse_B" "CorePointer"

      Screen "Screen_B"

      EndSection
    12. Najděte sekci "ServerFlags" a přidejte do ní řádek
      Option "NoVTSwitch" "yes"
    13. Vypněte běžící X server zadáním příkazu init 3 z textové konzole (pokud možno ne z xtermu :-))
    14. Zkušebně spusťte nejprve první a pak druhý X server:
      X -layout Seat_A
      X -layout Seat_B

      X servery ukončíte stiskem kláves Ctrl+Alt+Backspace.

    15. Pokud vše šlo dobře, můžeme nyní spustit oba X servery najednou:
      X -sharevts -layout Seat_A :0 & X -sharevts -layout Seat_B :1
    16. Pokud se obě zkoušky podařily, můžeme nyní znovu spustit grafické prostředí příkazem init 5.

Obnovení plné funkčnosti klávesnice

Protože jsme použili jiný ovladač klávesnice, pravděpodobně nebude na první pokus
fungovat zcela správně, zejména ne šipky a další speciální klávesy. Pro nápravu
je zapotřebí těchto kroků:

  1. V konzoli se přesuňte do adresáře /usr/share/X11/xkb/keycodes/ a nahraďte soubor xfree86 kopií souboru evdev.
  2. KDE obsahují drobnou chybu, která způsobuje, že klávesa "šipka nahoru" vyvolá okno pro tisk obrazovky. Tu lze obejít vypnutím akce pro rychlé otevření tohoto okna: otevřete Ovládací centrum KDE, položku Místní zvyklosti a zpřístupnění - Vstupní činnosti, z nabídky vyberte Preset actions - Print Screen a zaškrtněte políčko "Zakázat".

Konfigurace KDM

Otevřete soubor /opt/kde3/share/config/kdm/kdmrc a proveďte v něm následující úpravy:

  1. Řádek StaticServers=:0 změňte na StaticServers=:0,:1
  2. Řádek ReserveServers=:1,:2,:3 změňte na ReserveServers=
  3. Najděte sekci začínající [X-:0-Core] a přidejte do ní (nebo změňte) řádek
    ServerCmd=/usr/bin/X -br -sharevts -layout Seat_A
  4. Vytvořte na konci souboru novou sekci
    [X-:1-Core]

    ServerCmd=/usr/bin/X -br -sharevts -layout Seat_B

    ClientLogFile=.xsession-errors

    TerminateServer=true

    Authorize=true
  5. Pokud potřebujete spustit X servery v určitém pořadí, musíte si trochu pohrát s ostatními konfiguračními volbami (v našem případě pomohlo přidání OpenDelay=30 do [X-:0-Core] a OpenDelay=15 do [X-:1-Core]).
Autor: koty

Komentáře

jbenc odpověděl -

Funguje to jen u některých modelů notebooků ThinkPad. A myslím, že návod je tak krátký, že se nic nestane, když to prozradím dopředu: v openSUSE 10.2 jsou již potřebné ovladače zahrnuty, takže stačí nahrát do jádra moduly "joydev" a "hdaps". Tedy pod rootem v konzoli spustíte:

modprobe joydev
modprobe hdaps

Pak už můžete pustit Neverball nebo jakoukoliv jinou hru, která je ochotná nechat se ovládat joystickem.

koulinek odpověděl -

Kdypak prijde na radu dalsi dil linuxovych kouzel? Treba ten o NX. Jinak diky za fajn prezentaci na LinuxExpu a naslednou zajimavou debatu.

delfajz odpověděl -

Zdravim,
nerad prudim, ale kdyz ten clanek kdysi vysel, tak jsem se tesil, ze se tu popise ta vychytavka jak ovladat mobilem MPlayer.... a porad nic :-( A nebo jsem slepej:)

*delfajz