Lab 12 Cvičenia CS Open CourseWare
Laboratórna príprava
Aby sme vyriešili laboratórium, budeme pracovať v rovnakom adresári, z ktorého spúšťame virtuálny stroj (

Kroky riešenia sú nasledovné:
Príprava laboratórnej kostry
Rámec laboratória sa generuje zo zdrojov v adresári tools/labs/templates. Kostry pre všetky laboratóriá môžeme vygenerovať pomocou nasledujúceho príkazu:
Na vygenerovanie kostry pre jediné laboratórium použijeme premennú prostredia LABS:
Podobne môžeme vygenerovať kostru pre jedno cvičenie a priradiť hodnotu/premennú k LABS .
Zostavovanie modulov
Príkaz make build kompiluje všetky moduly v adresári skels .
Kopírovanie modulov na virtuálny stroj
Keď je virtuálny stroj zastavený, môžeme skopírovať vygenerované moduly na virtuálnom stroji pomocou cieľa kopírovania príkazu make.
Prípadne môžeme súbory skopírovať pomocou scp, aby sa zabránilo reštartovaniu virtuálneho stroja. Podrobnosti o používaní sieťovej interakcie s virtuálnym strojom nájdete v článku Interakcia s virtuálnym strojom.
Testovanie modulov
Vygenerované moduly sa skopírujú na virtuálny stroj v adresári/home/root/skels/.
Po spustení virtuálneho stroja QEMU budeme môcť pomocou príkazov v okne QEMU (alebo v minicom) načítať a sťahovať modul jadra:
/ so2/linux/so zdrojmi jadra, kde môžeme na prehľadávanie zdrojového kódu použiť Vim a cscope.
Cvičenia
/ so2/linux, aby ste dostali najnovšiu verziu laboratórneho prostredia.
[0,5p] Úvod
Ďakujem! Nájdite definície nasledujúcich symbolov v jadre systému Linux:
Vyplnenie formulára spätnej väzby
Vážime si váš názor na aktivity kurzu SO2. Pomáha nám to vylepšiť kurz a urobiť predmet čo najprístupnejším a najzaujímavejším. Za týmto účelom prosím vyplňte formulár spätnej väzby na cs.curs.pub.ro (musíte byť autentifikovaní a registrovaní v kurze). Ďakujem!
1. [2p] Implementácia zbernice
Analyzujte obsah súboru bex.c, ktorý obsahuje implementáciu ovládača zbernice. Postupujte podľa komentárov označených ako TODO 1 a implementujte chýbajúce časti: zaregistrujte ovládač zbernice a pridajte nové zariadenie s názvom root, ktoré nemá a verzia 1 .
Zostavte, skopírujte modul na virtuálny stroj, načítajte ho do jadra a overte, či je zariadenie zbernice viditeľné v priečinku/sys/bus. Skontrolujte tiež, či je zariadenie viditeľné v adresári/sys/bus/bex/devices. .
Vyberte modul a všimnite si, že položky v sysfs sú odstránené.
2. [2p] Pridajte atribúty pre typ a verziu
Pridajte dva atribúty iba na čítanie: typ a verzia. Sledujte komentáre označené štítkom TODO 2 .
Upozorňujeme, že dva nové atribúty sú viditeľné v priečinku/sys/bus/bex/devices/root. Skontrolujte obsah týchto atribútov.
Implementácia pre funkciu zobrazenia typu je
3. [2p] Pridajte atribúty del a add
Pridajte dva atribúty iba na zápis, ktoré sa nazývajú del a add. del čaká na odstránenie názvu zariadenia a pridaním čakania na názov, typ a verziu vytvorí nové zariadenie. Sledujte komentáre označené štítkom TODO 3 .
Príklad funkcie ukladania je:
Vytvorte nové zariadenie a skontrolujte, či je viditeľné v priečinku/sys/bus/bex/devices. Odstráňte ju a skontrolujte, či zmizla zo systému sysfs .
4. [2p] Registrácia ovládača bex misc
Upravte súbor bex-misc.c a zaregistrujte ovládač na zbernici bex. Vložte modul bex_misc.ko a vytvorte zo zariadení sysfs nové zariadenie bex s názvom Test, misc typ a verzia 2. Postupujte podľa komentárov označených ako TODO 4 .
Skontrolujte, či je nový ovládač viditeľný v priečinku/sys/bus/bex/drivers. Prečo sa funkcia volania nevolá ?
Implementujte funkciu zhody v súbore bex.c. Sledujte komentáre označené štítkom TODO 5. Skúste znova pridať bex zariadenie a všimnite si, že tentokrát sa volá testovacia funkcia.
5. [1.5p] Záznam zariadenia bex misc do vzorovej funkcie
Upravte bex_misc.c tak, aby vzorová operácia zlyhala, ak je verzia> 1. Zaregistrujte rôzne zariadenie vo funkcii bex_misc_probe () a zrušte jeho registráciu v bex_misc_remove. Sledujte komentáre označené štítkom TODO 6 .
Vytvorte nové zariadenie s názvom testu, rôznym typom a verziou 2 a overte, či vzorová operácia zlyhala. Vytvorte nové zariadenie s názvom testu, rôznym typom a verziou 1 a overte, či sa operácia úspešne dokončila.
Skontrolujte obsah súboru/sys/bus/bex/devices/test a všimnite si, že existuje nový záznam. Identifikujte hlavné a vedľajšie pre rôzne zariadenie, vytvorte zariadenie znakového uzla pre toto zariadenie (Pomôcka: mknod) a vyskúšajte operácie čítania a zápisu na vytvorenom súbore na získanie prístupu do medzipamäte zariadenia.
6. [1p] Monitorovanie nevyhnutných oznámení
Použite príkaz udevadm a uvidíte, čo sa stane, keď: