Hot Plug hotplug

9.11.1. bevezetés

Hotplug alrendszer kernel dinamikusan kezeli a kapcsolatot, és lekapcsolása eszközök letölti a szükséges meghajtókat, és megteremti eszköz fájlok (a udevd). A korszerű gépek és virtualizáció lehet csatlakoztatni „on the fly” szinte mindent: a szokásos perifériák USB / PCMCIA / 1394 SATA merevlemez, és még processzor és a memória.

A mag egy adatbázist, hogy megfeleljen az azonosító az egyes eszközök szükséges illesztőprogramokat. Ezt az adatbázist használják indításkor csatlakozni vezetők minden perifériát megtalálható különböző buszok, valamint további hot-plug eszközök. Amikor a készülék készen áll a használatra, üzenetet küld udevd. hogy létrehoz egy megfelelő bejegyzést a / dev /.

9.11.2. elnevezési probléma

könnyű volt betanítani az eszközt egy rögzített nevet eljövetele előtt forró dugulás. Ennek alapja egyszerűen a helyet eszközeiket buszon. De ez lehetetlen, ha az ilyen eszközök jelennek meg, és elkezdi használni a busz. Egy tipikus eset a használata egy digitális fényképezőgép vagy USB-varázsa, hogy úgy tűnik, hogy a számítógép, mint a merevlemez. Először egy csatlakoztatott válhat / dev / sdb. és a második - a / dev / sdc (ha a / dev / sda jelentése helyi merevlemez a számítógép). Az eszköz neve nem fix; ez attól függ, hogy milyen sorrendben eszközök vannak csatlakoztatva.

Ezen kívül egyre több eszköz dinamikus értékek azok nagyobb és kisebb számban, ezért lehetetlen a statikus adatrögzítő eszközök, mert ezek alapvető jellemzői változhatnak egy újraindítás után.

udev-ben kifejezetten, hogy megoldja ezt a problémát.

A GYAKORLATBAN Management NIC

Sok számítógépen több hálózati kártya (néha két vezetékes felületek és a wifi interface), és hotplug támogatást a legtöbb busz típusokat, a Linux kernel nem garantálja fix elnevezése hálózati interfészek. De a felhasználók, akik szeretnék beállítani a hálózat / etc / network / interfaces kell egy fix nevét!

Ez a mechanizmus valamilyen mellékhatása, amit tudni kell. Nézzük az esetben egy számítógép, amely csak egy PCI hálózati kártya. A hálózati interfész neve eth0. logikusan. Most azt mondják, a kártya meghibásodik, és a rendszergazda helyettesíti; Az új kártya lesz az új MAC címet. Mivel a régi kártyát jelöltek nevét, eth0. az újat kap eth1. bár a eth0 kártya ment a jó (és a hálózat nem lesz működőképes, mert a / etc / network / interfaces valószínűleg konfigurálja egy eth0). Ebben az esetben elég, ha egyszerűen törölje a fájlt, mielőtt /etc/udev/rules.d/70-persistent-net.rules a számítógép újraindítása. Az új kártyát, akkor meg kell adni a várható eth0 nevét.

9.11.3. Hogyan működik az udev

Fegyveres ezt az információt, az udev összehasonlítjuk az összes szereplő szabályok /etc/udev/rules.d/ és /lib/udev/rules.d/. A folyamat, úgy dönt, hogy milyen nevet kell rendelni a készüléket, melyek között a szimbolikus linkek (így az alternatív neveket), és milyen parancsokat futtatni. Ez ellenőrzi a fájlokat és az összes szabályt végre sorrendjét ( «GOTO» irányelvek nem használják a fájlban). Tehát lehet, hogy bizonyos szabályok, az illető egyes események.

Szintaktikai szabályok fájl meglehetősen egyszerű: Minden sor kiválasztására vonatkozó kritériumok és értékeket a változókat. Az első használják a kiválasztás az esemény, amelyre szüksége van, hogy válaszoljon, és ez utóbbi határozza meg a fellépés. Ezek mindegyike vesszővel elválasztva, és az üzemeltető lehet különbséget tenni a közvetett kiválasztási kritériumok (az összehasonlító operátorok, mint a == és! =) A megbízás irányelvek (például a szolgáltatók = + = vagy :. =).

Az összehasonlító operátorok használata a következő változókat:

KERNEL - a név a rendszermag az eszköz;

ACTION - fellépés, az eseménynek megfelelő ( «Kiegészítő» adagolóberendezés, «eltávolítás» azt eltávolították);

DEVPATH - út egy felvevő berendezés / sys /;

Alrendszer - core alrendszer ahonnan a kérés érkezett (sok közülük, mint például a «usb», «ide», «nettó», «firmware», stb ...);

ATTRattribute>. fájl tartalmát a tulajdonság fájlt a / sys / $ devpath / könyvtárban a készülék. Ez az, ahol megtalálja a MAC-cím és más busz egyedi azonosítók;

KERNELS. Alrendszerek és ATTRSatributy> - egy olyan variációt megpróbálja összehangolni a különböző lehetőségeket, az egyik eszköz, a szülő az áram;

PROGRAM - küldöttek beolvassa a megadott program (igaz, ha visszatér 0, egyébként pedig false). A tartalom a szabványos kimenet a program tárolja, úgy, hogy lehet használni, hogy ellenőrzés eredménye;

EREDMÉNY - végez érvényesítését a szabványos kimenet, mentett az utolsó hívás PROGRAM.

A jobb oldali operandus használhat helyettesítő kifejezéseket, megfelelő több érték egyszerre. Például * tetszőleges string (még null);. minden karakterre illeszkedik, és a [] jelentése a sor a felsorolt ​​karaktereket a zárójelben (vagy fordítva, ha az első karakter egy felkiáltójel, és folytonos tartományát karakterek nevezzük a-z).

Ami az értékadó operátor = hozzárendel egy értéket (és lecseréli az aktuális érték); abban az esetben a listán, akkor törlődik, és amely csak a hozzárendelt érték. = Ugyanennek, de nem engedi megváltozni változó a jövőben. + = Bejegyzést hoz létre a listán. A következő változók lehet változtatni:

NÉV - a név a készülék fájl kell létrehozni a / dev /. Csak az első feladat, a többit figyelmen kívül hagyja;

SYMLINK - listája jellegű utalások, amelyek rámutatnak arra, hogy ugyanazt az eszközt;

TULAJDONOS. Csoportos mód, és adja meg a felhasználó és csoport birtokolja eszköz, valamint a hozzárendelt engedélyt;

RUN - a programok listáját kell futtatni válaszul egy eseményt.

A rendelt értékek ezeket a változókat, a következő helyettesítéseket lehet használni:

A rendszermag vagy $% K - egyenértékű KERNEL;

$ Száma vagy% n - a sorozatszámot a készülék, például ez lenne sda3 „3”;

Vagy $ devpath% p - egyenértékű DEVPATH;

$ Attratribut> vagy satribut%> - az egyenértékű ATTRSatribut>;

Major vagy $% M - a fő szám a sejtmagban;

Kisebb $ vagy% m - kisebb eszköz száma a sejtmagban;

$ Result, vagy% c - string kimenet az utolsó program által okozott PROGRAM;

és végül, és %% $$ jelent, illetve a százalék jel és a dollár.

A fenti listák nem teljesek (azok csak a legfontosabb paraméterek), de az udev (7) man oldalon kimerítőnek kell lennie.

9.11.4. Egy konkrét példa

Vegyük azt az esetet egy egyszerű USB-adó és megpróbálja hozzárendelni egy rögzített nevet. Először is, meg kell találni a tárgyakat, melyekre egyedi azonosítás. Ehhez csatlakoztassa és indítsa udevadm info -a -n / dev / sdc (a / dev / sdc a tényleges neve, a kulcstartó).

Ahhoz, hogy hozzon létre egy új szabályt, akkor a teszt változók a készüléket, és a szülő eszközök. A fenti példában, akkor létrehozhat két szabályt, mint ezek:

Miután ezek a szabályok vannak lefektetve nevű fájlt, például /etc/udev/rules.d/010_local.rules. akkor egyszerűen húzza ki és csatlakoztassa újra az USB-stick. Akkor majd győződjön meg arról, hogy a / dev / usb_key / merevlemez társul USB-stick és / dev / usb_key / part1 - az első részben.

Mint sok démon, udevd tárolja bejelentkezik /var/log/daemon.logfájl. De ez nem túl bőbeszédű az alapértelmezett, és általában nem elég ahhoz, hogy megértsük, mi történik. A udevadm kontroll --log-priority = info parancs növeli a beszédességi szintet, és megoldja ezt a problémát. udevadm kontroll --log-priority = err visszatér az alapértelmezett beszédességi szintjét.