Obsah

Jak rozpoznávat hardware a ovladače

V Linuxu a především ve Fedoře

ZLATÉ PRAVIDLO HARDWARU PRO LINUX
V první řadě je potřeba si uvědomit, že podpora hardwaru od výrobců pro Linux není všeobecně běžná. Proto již před koupí hardwaru je potřeba se o podporu v Linuxu zajímat a ověřit si, že hardware v Linuxu funguje. Uživatelský katalog HW je např. na ABCLinuxu.

Pokud se vám dostane do rukou HW o kterém nevíte, jak to s podporou vypadá, první a nejlepší je pokusit se zeptat Googlu. Přesto se může stát, že pod tímto hledáním nic užitečného nenajdete. Často je to jen tím, že Linux podporuje „vnitřnosti“ HW, ale nezná ho pod obchodním jménem toho kterého výrobce.

Každé HW zařízení má v sobě nějaký „chipset“. Ten tvoří základ celého zařízení. Chipsetů je zpravidla omezené množství a různí výrobci prodávají často vnitřně stejné zařízení jen s jiným jménem.

PCI zařízení

V případě, že hledáme podporu PCI zařízení stačí zařízení přidat do počítače a po nastartování Linuxu se podívat do výpisu příkazu

 lspci
 00:00.0 Host bridge: Intel Corp. 430HX - 82439HX TXC [Triton II] (rev 03)
 00:07.0 ISA bridge: Intel Corp. 82371SB PIIX3 ISA [Natoma/Triton II] (rev 01)
 00:07.1 IDE interface: Intel Corp. 82371SB PIIX3 IDE [Natoma/Triton II]
 00:0a.0 Network controller: Harris Semiconductor: Unknown device 3873 (rev 01)
 **00:0b.0 Ethernet controller: Unknown device 168c:0013 (rev 01)**
 00:0c.0 Network controller: Harris Semiconductor: Unknown device 3873 (rev 01)

V seznamu jsem označil PCI zařízení které Linux nerozpoznal. Co je podstatné, vypsal jeho PCI ID: 168c:0013. Hledáním tohoto čísla už můžeme získat přesnější představu o jaký HW se jedná.

Pokud Linux zařízení zná výpis bude vypadat pro toto zařízení zhruba následovně:

  00:0b.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)

Např. PCI wifi karta s tímto chipsetem se ovšem prodává pod minimálně třemi obchodními označeními:

 Sweex 54/104Mbps wireless PCCARD11A+B+G
 NEC WL54AG
 WNC CB9-EXT CardBus 802.11a/b/g

Pokud Linux zařízení zná

neměl by již být problém nalézt pro toto zařízení ovladač. Je ovšem potřeba hledat identifikaci z výstupu příkazu lspci, nikoli obchodní označení.

Jestliže existuje ovladač přímo v Linuxovém kernelu

a není automaticky zaveden, máme vyhráno a stačí jej zavést příkazem

 modprobe jmeno_ovladace

Jestliže neexistuje ovladač přímo v Linuxovém kernelu

ovšem obecně ovladač existuje máme dvě možnosti

  1. Pokusit se najít, zda někdo ovladač již nepřipravil pro Fedoru
  2. Zkompilovat ovladač pro náš běžící systém

Zda je ovladač pro Fedoru dostupný zjistíme např. na http://rpm.pbone.net/ zadáním jména ovladače, který hledáme. Pro PCI ID 168c:0013 je to madwifi. Nalezený balíček pak buď stáhneme a nainstaluje nebo zkusíme použít

 yum search madwifi

a podle výsledku pak např.

 yum install madwifi

Kompilace ovladače

  1. V první řadě se ujistěte, že máte nainstalovány vývojové nástroje - kompilátor a pomocné utilty (Sekce Development Tools (Vývojové nástroje) v Add/Remove programs (Přidat/Odebrat programy).
  2. pravděpodobně budete potřebovat i hlavičkové soubory kernelu (jádra) - kernel-devel
  3. rozblate archiv ovladače, pokud je tam soubor configure spustte
./configure

jinak pokračujete

make
make install

TBD


Po použití modprobe by se měl na konci výstupu příkazu dmesg objevit výpis kernelu oznamující, že kernel si s hardwarem rozumí. Např.:

 ath_hal: 0.9.14.9 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413)
 ath_pci: 0.9.6.0 (EXPERIMENTAL)
 ath0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
 ath0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
 ath0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
 ath0: turbo rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
 ath0: 802.11 address: 00:22:33:44:55:66
 ath0: Atheros 5212: mem=0x10800000, irq=9

Neznámá zařízení

To, že Linux o zařízení prohlašuje, že je neznámé (Unknown device), ještě neznamená, že musíme hodit flintu do žita. Je dost dobře možné, že ovladač existuje, jen kernel o něm vůbec neví. Pak je záhodno vyzkoušet postup Jestliže neexistuje ovladač přímo v Linuxovém kernelu.