12. labor a CS Open CourseWare gyakorlatait

Laboratóriumi előkészítés

A laboratórium megoldása érdekében ugyanabban a könyvtárban fogunk dolgozni, ahonnan elindítjuk a virtuális gépet (

open

A megoldás lépései a következők:

A laboratóriumi csontváz elkészítése

A labor keretrendszert az tools/labs/templates könyvtár forrásaiból állítják elő. Minden laboratóriumhoz létrehozhatjuk a csontvázakat a következő paranccsal:

A csontváz egyetlen laboratóriumhoz történő előállításához a LABS környezeti változót fogjuk használni:

Hasonlóképpen létrehozhatjuk a csontvázat egyetlen gyakorlathoz, az értéket/változót a LABS-hez rendelve .

Modulok összeállítása

A make build parancs a skels könyvtár összes modulját összeállítja .

Modulok másolása a virtuális gépre

A generált modulokat átmásolhatjuk a virtuális gépre a make parancs másolási céljának felhasználásával, amikor a virtuális gép le van állítva.

Alternatív megoldásként másolhatjuk a fájlokat scp-n keresztül, hogy elkerüljük a virtuális gép újraindítását. A virtuális géppel való hálózati interakció használatának részleteiről olvassa el az Interakció a virtuális géppel című cikket.

A modulok tesztelése

A létrehozott modulokat a/home/root/skels/könyvtár könyvtárba másolja a virtuális gép .

A QEMU virtuális gép elindítása után a QEMU ablakban (vagy a minicomban) lévő parancsokat használhatjuk a kernel modul betöltésére és letöltésére:

/ so2/linux/rendszermag-forrásokkal, ahol a Vim és a cscope segítségével böngészhetjük a forráskódot.

Feladatok

/ so2/linux, a laborkeret legújabb verziójának megszerzéséhez.

[0,5p] Bevezetés

Köszönöm! Keresse meg a következő szimbólumok definícióit a Linux kernelben:

A visszajelzési űrlap kitöltése

Nagyra értékeljük véleményét az SO2 tanfolyam tevékenységeiről. Segít a tanfolyam továbbfejlesztésében, és a tantárgy minél hozzáférhetőbbé és érdekesebbé tételében. Ehhez kérjük, töltse ki a visszajelzési űrlapot a cs.curs.pub.ro oldalon (hitelesítenie és be kell jelentkeznie a tanfolyamra). Köszönöm!

1. [2p] Busz megvalósítása

Elemezze a buszvezérlő megvalósítását tartalmazó bex.c fájl tartalmát. Kövesse a TODO 1 jelzéssel ellátott megjegyzéseket a hiányzó részek megvalósításához: regisztrálja a buszillesztőt, és adjon hozzá egy új eszközt, root néven, nincs és 1-es verzió. .

Fordítsa le, másolja át a modult a virtuális gépre, töltse be a kernelbe, és ellenőrizze, hogy a buszeszköz látható-e a/sys/bus fájlban. Ellenőrizze azt is, hogy az eszköz látható-e a/sys/bus/bex/devices mappában. .

Távolítsa el a modult, és vegye figyelembe, hogy a sysfs bejegyzéseit eltávolították.

2. [2p] Adjon hozzá attribútumokat a típushoz és a verzióhoz

Két írásvédett attribútum hozzáadása: típus és verzió. Kövesse a TODO 2 címkével ellátott megjegyzéseket .

Ne feledje, hogy a két új attribútum a/sys/bus/bex/devices/root könyvtárban látható. Ellenőrizze ezen attribútumok tartalmát.

A típusmegjelenítési funkció megvalósítása

3. [2p] Add hozzá a del és az add attribútumokat

Adjon hozzá két csak írási attribútumot, a del és add hozzáadást. A del arra vár, hogy az eszköz neve eltávolítsa, az add pedig arra vár, hogy a név, típus és verzió új eszköz létrehozásához. Kövesse a TODO 3 címkével ellátott megjegyzéseket .

A bolt funkcióra példa:

Hozzon létre egy új eszközt, és ellenőrizze, hogy látható-e a/sys/bus/bex/devices mappában. Távolítsa el és ellenőrizze, hogy eltűnt-e a sysfs-ből .

4. [2p] A bex misc illesztőprogram regisztrálása

Módosítsa a bex-misc.c fájlt, hogy regisztrálja az illesztőprogramot a bex buszra. Helyezze be a bex_misc.ko modult, és hozzon létre egy új bex eszközt a sysfs-ből a Test, a Misc típus és a 2. verzió néven. .

Ellenőrizze, hogy az új illesztőprogram látható-e a/sys/bus/bex/illesztőprogramokban. Miért nem hívják meg a hívás funkciót? ?

Végezze el a match függvényt a bex.c fájlban. Kövesse a TODO 5 címkével ellátott megjegyzéseket. Próbálkozzon ismét egy bex eszköz hozzáadásával, és vegye észre, hogy ezúttal a tesztfunkciót hívják meg.

5. [1,5p] Bex misc eszköz felvétele a minta funkcióba

Módosítsa a bex_misc.c fájlt úgy, hogy a mintaművelet sikertelen legyen, ha a verzió> 1. Regisztrálja a misc eszközt a bex_misc_probe () függvényben, és törölje a bex_misc_remove könyvtárban való regisztrációt. Kövesse a TODO 6 címkével ellátott megjegyzéseket .

Hozzon létre egy új eszközt tesztnévvel, egyéb típussal és 2. verzióval, és ellenőrizze, hogy a mintaművelet sikertelen-e. Hozzon létre egy új eszközt a teszt nevével, az egyéb típusokkal és az 1. verzióval, és ellenőrizze, hogy a művelet sikeresen befejeződött-e.

Ellenőrizze a/sys/bus/bex/devices/test fájl tartalmát, és vegye észre, hogy van új bejegyzés. Határozza meg a misc eszköz dúrját és mollját, hozzon létre egy karaktercsomó-eszközt ehhez az eszközhöz (Tipp: mknod), és próbálja meg olvasni és írni a létrehozott fájlt az eszközpuffer eléréséhez.

6. [1p] Az uevent értesítések figyelése

Használja az udevadm parancsot, és nézze meg, mi történik, ha: