Nejnovější:
- Sailfish OS and memory
- Hillshade tile server
- Statistics of OSM Scout for Sailfish OS
- Nebezpečný router
- Tree model with Silica components
Podle data:
- listopad 2021
- leden 2019
- prosinec 2017
- prosinec 2016
- květen 2014
- duben 2014
- listopad 2013
- duben 2013
- duben 2011
- únor 2011
- leden 2011
- srpen 2010
- květen 2010
- březen 2010
- leden 2010
- říjen 2009
- duben 2009
- únor 2009
- říjen 2008
- září 2008
- srpen 2008
- duben 2008
- březen 2008
- únor 2008
Téma:
Ošklivý hack
Taky občas máte pocit že váš systém je živý organizmus, který si žije svým vlastním životem? Já tento pocit posledních pár dní měl. Začalo to tím že mi přestal fungovat NetworkManager. Jak jsem později zjistil, bylo to nejspíše způsobeno aktualizací HAL. Při snaze problém napravit postupně přestávaly fungovat další součásti systému. Vrcholem bylo když mi modul grafiky (který jsem aktualizoval před 14 dny) začal z ničeho nic při odhlašování způsobovat kernel panic na mém TuxOnIce 2.6.27 jadérku! To už byl vážně vrchol. Problémy které jsem řešil se jádra vůbec netýkaly…
Panikařící ovladač grafiky jsem vyřešil jednoduše. Zkompiloval jsem nové jádro 2.6.29.1 . Zatím mi dělá radost, uspávání a hibernace mi konečně chodí bez TuxOnIce patchů. Subjektivně bych i řekl že boot, uspávání a probouzení je o něco rychlejší než u všech předchozích jader.
NetworkManager
(K)NetworkManager je krásný nástroj, který umožňuje přecházet
s notebookem mezi různými wifi sítěmi bez nutnosti uživatelského zásahu.
Na jeho opravení, pokud se něco pokazí, je ale potřeba pořádný kus
černé magije. Už jenom najít jeho logy (/var/log/daemon.log
),
všechny souvisecící scripty a konfigurační soubory, které jsou rozházené
po celém systému je záležitost na celé odpoledne. Sám o sobě
NetworkManager není nijak extra velký. To co jej dělá poměrně
komplikovaným je způsob jakým pracuje a množtví nástrojů které k tomu
používá. Především často nechce spolupracovat s konrétními verzemi
jiných programů. Tyto závislosti nezjistíte jinak než že jej vyzkoušíte
a pročtete bugzilly.
Informace o stavu síťových zařízeních si získává z hardware abstraction layer (HAL) přez systém zasílání zpráv D-Bus. Pro jejich konfiguraci používá ifupdown scripty, pro získání konfigurace z dhcp serveru nástroj dhclient. Pro připojování k šifrovaným wifi sítím používá wpasupplicant. Navíc ještě umožňuje spravovat modemová připojení (ppp), VPN sítě (OpenVPN, VPNc) a kdo ví co ještě. Stačí aby jedna z těchto komponent přestala spolupracovat a jste bez připojení.
HAL
U mě byl prvotní problém v tom, že nový HAL (Intrepid) neposkytoval
informace o síťových zařízeních a tak to vypadalo jako bych žádná
neměl. Instalace HALu a NetworkManageru (svn864988) z repozitářů Jaunty
problém vyřešila. Naskytl se ale nový problém. Při stisku libovolné
klávesy pod Xorg serverem se příslužný znak vypsal 3×! Po chvilce
googlení jsem našel zakopaného psa. V nových verzích se totiž přesouvá
starost o detekci vstupních zařízení (klávesnice, myš) z beder Xorg na
HAL (+udev pravidla). Já ale měl detekci kávesnice povolenou jak v Xorg tak
v HAL. Xorg měl tedy klávesnici zaregistrovanou několikrát a jeden stisk
obsluhoval víckrát. Nedetekování vstupních zařízení Xorgem je v nové
verzi defaultní, já jí měl ale explicitně povolednou, protože jsem Xorg
aktualizoval zhruba před 14 dny ještě se starým HAL. Jedná se o volbu
AllowEmptyInput
v ServerFlags
.
Po přenastavení Xorg se vše zdálo být vpořádku. Později se ale ukázalo že klávesnice registrovaná pomocí HAL má naprosto zpřeházené mapování některých kláves a jiné vůbec nefungují! Řešení bylo vrátit starost o detekci zařízení zpět na Xorg. Nejdříve jsem přenastavil Xorg:
Section "ServerFlags" Option "AIGLX" "on" Option "Xinerama" "false" # direct rendrering is not supported, when xinerama is enabled Option "DontZap" "false" # enable ctrl+alt+backspace shortcut for restart X Option "AllowEmptyInput" "false" ## true - kdyz je novy HAL, jinak se klavesy pisou trikrat ## false - stary HAL, jinak klavesnice a mys neodpovida EndSection
Poté pravidly v souboru
/etc/hal/fdi/policy/keyboard_mouse.fdi
řekl ať HAL pro
klávesnice a myši používá neexitující driver:
<?xml version="1.0" encoding="ISO-8859-1"?> <deviceinfo version="2.0"> <device> <match key="info.capabilities" contains="input.mouse"> <merge key="input.x11_driver" type="string">nonexist</merge> </match> </device> <device> <match key="info.capabilities" contains="input.keyboard"> <merge key="input.x11_driver" type="string">nonexist</merge> <!-- disable keyboards for HAL, it is provide by Xorg --> </match> </device> </deviceinfo>
Není to nijak krásné řešení, v logu Xorgu se poté objevují chyby o neexistujícím ovladači, funguje to ale dobře. Já v pátek odpoledne neměl sílu vymýšlet něco elegantnějšího…
Závěr
O problémech s wifi sítěmi a jak jsem nakonec nainstaloval NetworkManager z Debianu Sid se už raději rozepisovat nebudu. Beztak tyhle žvásty asi nikdo číst nebude. Tak snad jen jednu radu na závěr: NEVRTEJTE SE V TOM CO FUNGUJE!