This shows you the differences between two versions of the page.
so2:teme:tema-exemplu [2014/03/12 14:23] razvan.deaconescu created |
so2:teme:tema-exemplu [2020/03/03 17:30] (current) horia_paul.ion |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Temă exemplu - Hello World ====== | ====== Temă exemplu - Hello World ====== | ||
- | Pentru a vă acomoda cu interfața vmchecker, compilarea de module de kernel și lucrul cu [[:so2:resurse:masini-virtuale|mașina virtuale QEMU/KVM]], vă prezentăm un exemplu de temă. Este vorba de un modul foarte simplu care trebuie să afișeze "Hello, World!" din modulul de kernel folosind ''printk''. | + | Pentru a vă acomoda cu interfața vmchecker, compilarea de module de kernel și lucrul cu [[:so2:resurse:masini-virtuale|mașina virtuale QEMU/KVM]], vă prezentăm un exemplu de temă. Este vorba de un modul foarte simplu care trebuie să afișeze "Hello, World!" din modulul de kernel folosind ''pr_* macros''. |
===== Soluție ===== | ===== Soluție ===== | ||
- | Tema este deja rezolvată; găsiți arhiva [[http://elf.cs.pub.ro/so2/res/teme/hello-world-solution.zip|aici]]. O puteți direct [[#testare|testa]] sau submite pe [[https://vmchecker.cs.pub.ro/ui/#SO2|vmchecker]]. | + | Tema se află în [[https://github.com/linux-kernel-labs/linux.git|linux-kernel-labs/linux]]. Tema se rezolvă urmărind comentariile marcate cu ''TODO'' din scheletul temei. Pentru a ajunge la scheletul temei, urmați urmatorii pași: |
+ | <code bash> | ||
+ | $ pwd | ||
+ | ~/so2/linux/tools/labs | ||
+ | $ LABS=assignments/00-hello make skels | ||
+ | # scheletul temei hello a fost generat | ||
+ | $ cd skels/assignments/00-hello | ||
+ | # rezolvați tema exemplu | ||
+ | $ cd ~/so2/linux/tools/labs ; make build ; make copy | ||
+ | # porniți mașina virtuală și testați implementarea folosind checkerul pus la dispoziție in directorul | ||
+ | # skels/assignments/00-hello/checker | ||
+ | </code> | ||
===== Testare ===== | ===== Testare ===== | ||
- | Pentru simplificarea procesului de corectare al temelor, dar și pentru a reduce greșelile temelor trimise, corectarea temelor se va face automat cu ajutorul unui [[http://elf.cs.pub.ro/so2/res/teme/hello-world-checker|script de testare]] numit ''hello-world-checker''. Scriptul de testare presupune că numele modului de kernel este denumit ''hello-world''. | + | Pentru simplificarea procesului de corectare al temelor, dar și pentru a reduce greșelile temelor trimise, corectarea temelor se va face automat cu ajutorul unui [[http://elf.cs.pub.ro/so2/res/teme/hello-world-checker|script de testare]]. |
- | + | ||
- | Scriptul ''hello-world-checker'' trebuie descărcat și îi trebuie acordate drepturi de execuție:<code bash> | + | |
- | wget http://elf.cs.pub.ro/so2/res/teme/hello-world-checker | + | |
- | chmod a+x hello-world-checker | + | |
- | </code> | + | |
- | Apoi scriptul trebuie copiat în directorul ''fsimg/root/'' al [[:so2:resurse:masini-virtuale|mașinii virtuale QEMU/KVM]]. Tot acolo trebuie copiat și fișierul modul compilat ''hello-world.ko''. După pornirea mașinii virtuale scriptul și modulul vor fi disponibil în directorul ''/root/'' al mașinii virtuale QEMU/KVM. Pentru testare se va invoca scriptul:<code bash> | + | |
- | ./hello-world-checker | + | |
- | </code> | + | |
<hidden> | <hidden> | ||
+ | ## TODO replace this when new infrastructure is set | ||
Pentru a face deploy la o nouă versiune de soluție sau de teste, folosim comenzile de mai jos, în directorul cu repository-ul Git pentru teme:<code bash> | Pentru a face deploy la o nouă versiune de soluție sau de teste, folosim comenzile de mai jos, în directorul cu repository-ul Git pentru teme:<code bash> | ||
razvan@einherjar:~/school/current/so2/git-repos/teme/tema-hello-world/sol$ make deploy | razvan@einherjar:~/school/current/so2/git-repos/teme/tema-hello-world/sol$ make deploy |