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 (

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: