GNU/Linux rendszerek könyvtárszerkezete 2. (/dev)
2009. March 24. - 19:16 | szerző: jonci

Ígéretemhez híven folytatom a könyvtárszerkezet bemutatását, azon belül is nézzük meg a /dev könyvtárat. Ahogy a neve is jelzi, itt helyezkednek el az eszközkezelők (device). Pontosabban minden eszközhöz hozzá van rendelve egy fájl, amin keresztül elérhető az eszköz, legyen az akár videókártya, hangkártya, tv-kártya, egér, háttértároló, stb.

Lássunk példát device fájlokra:

bash$ ls –lak /dev
brw-rw----   1 root   disk        8,   0 2009-03-03 17:13 sda
brw-rw----   1 root   disk        8,   1 2009-03-03 16:14 sda1
brw-rw----   1 root   disk        8,   2 2009-03-03 17:13 sda2
brw-rw----   1 root   disk        8,   3 2009-03-03 17:13 sda3
brw-rw----   1 root   disk        8,   4 2009-03-03 17:13 sda4
brw-rw----   1 root   disk        8,   5 2009-03-03 16:14 sda5
   ...
crw-rw-rw-   1 root   root        1,   3 2008-04-22 20:39 null
   ...
crw-rw----   1 root   video     195,   0 2009-03-03 16:14 nvidia0
crw-rw----   1 root   video     195, 255 2009-03-03 16:14 nvidiactl
   ...
crw-rw-rw-   1 root   root        1,   5 2009-03-03 17:13 zero
bash$

Most az egyéb számoktól és betűktől vonatkoztassunk el, csak nézzük az első oszlop első betűjét: b és c. Kétféle eszközfájl létezik: a karakteres (c) és a blokk (b) típusú. A másik érdekesség egy normális könyvtárlistához képest, az 5. és a 6. oszlop megléte. Ugyanis az eszközöket 2 rétegű struktúrába csoportosítjuk. Az első (ami jelen esetünkben 8, 1, 195) a főcsoport azonosítója, ami eszközönként más és más, de eszközön belül nem változik (például: háttértároló azonosítója). A másik az alcsoport-azonosító, ami az eszközön belüli alegységek saját számai (például: háttértárolón belüli partíciók azonosítója).

Belátható, hogy az így előre megszabott számozás mennyiségi korlátokat szab. Megszületett hát a devfs, amely az eszközt azonosító fő- és alcsoportot dinamikusan változtathatóvá tette. De leálltak a fejlesztésével, így a következő kernel széria (2.6.x) megjelenésével leváltotta az udev, ami a sysfs-t és a hotplug-ot használ a működése során. A probléma elő jön itt is, miszerint nem kompatibilis az előző megoldással, így idő kellett, amíg a programfejlesztők átálltak a használatára.

Talán érdemes megemlíteni még az uSDE-st is, ami az udev-hez hasonló felépítésű volt és az udev-vel egyidőben kezdték el írni. A készítése kezdetben titokban történt, és ez okozta a vesztét, nagy felháborodást váltott ki ezzel, el is halt a fejlesztés és az udev került ki győztesen.

udev-ről pár szóban

A /etc/udev/ könyvtárban találhatóak meg az udev beállító fájljai a rules.d könyvtár társaságában. Utóbbi könyvtár tartalmazza a különböző szabályokat magukban foglaló fájlokat. E szabályfájlok írják elő, hogy a különböző eszközökhöz milyen eszközfájlok tartoznak és ezekre milyen jogosultságok, információk (tulajdonos, csoport, jogosultság, stb…stb.) vonatkoznak.

Példaként nézzük meg a /etc/udev/rules.d/70-persistent-net.rules fájlt:

# PCI device 0x8086:0x104d (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:...:55",
        ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x4230 (iwl4965)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="66:...:bb",
        ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

A két eszköz a net alrendszerhez tartozik, ATTR{address} tartalmazza a hálókártya MAC címét, valamint, hogy az eszköz hozzáadása után eth0/wlan0 néven legyen elérhető. Látható, hogy a hardware address használatával tudjuk nevesíteni a hálózati eszközöket, azaz ha később újabb hálókártyát rakunk a gépbe, ne kell aggódni, hogy a meglevő lan kártyáink címe megváltozik (ez fontos lehet például tűzfal szabályoknál). Érdemes észben tartani, hogy hálókártya cseréje (alaplapi hálókártya esetén alaplapcsere) esetén módosítanunk kell az adott eszközhöz (pl: eth0) tartozó ATTR{address} értékét. A módosítást a rendszer újraindításáva vagy a “/etc/init.d/udev restart” parancs kiadásával tudjuk érvényesíteni.

Email This Post Email This Post Print This Post Print This Post
 
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Szólj hozzá!