This shows you the differences between two versions of the page.
|
so2:laboratoare:lab01 [2018/02/21 17:34] elena.sandulescu [cscope] |
so2:laboratoare:lab01 [2019/02/25 16:44] (current) razvan.deaconescu [2. Adăugarea și utilizarea unui disc virtual] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Laborator 1 - Introducere ====== | ====== Laborator 1 - Introducere ====== | ||
| + | |||
| + | New lab is translated in English and available here: | ||
| + | |||
| + | https://linux-kernel-labs.github.io/master/labs/introduction.html | ||
| + | |||
| + | Please always try to use the new labs. | ||
| + | |||
| + | If you find any problem (typo, bad wording, broken links, etc), please do the following | ||
| + | * submit an issue: https://github.com/linux-kernel-labs/linux-kernel-labs.github.io/issues | ||
| + | |||
| + | OR | ||
| + | |||
| + | * send a patch via a Pull Request: https://github.com/linux-kernel-labs/linux | ||
| + | |||
| ===== Obiectivele laboratorului ===== | ===== Obiectivele laboratorului ===== | ||
| Line 48: | Line 62: | ||
| <code bash>COMPILED_SOURCE=1 make ARCH=x86 cscope | <code bash>COMPILED_SOURCE=1 make ARCH=x86 cscope | ||
| </code> | </code> | ||
| - | În acest caz, ''cscope'' va lua în considerare doar sursele compilate. Precizarea arhitecturii prin variabila ARCH este opțională, dar recomandată; altfel, unele funcții dependente de arhitectură vor apărea de mai multe ori în baza de date. | + | Specificarea variabilei ''COMPILED_SOURCE'' cu valoarea 1 determină ''cscope'' să ia în considerare doar sursele compilate. Precizarea arhitecturii prin variabila ARCH este opțională, dar recomandată; altfel, unele funcții dependente de arhitectură vor apărea de mai multe ori în baza de date. |
| Cscope poate fi folosit și stand-alone, dar este mult mai util în combinație cu un editor. Pentru a folosi cscope cu Vim, este necesar să instalați ambele pachete și să adăugați următoarele linii în fișierul ''.vimrc'' (mașina din laborator are deja configurările făcute): | Cscope poate fi folosit și stand-alone, dar este mult mai util în combinație cu un editor. Pentru a folosi cscope cu Vim, este necesar să instalați ambele pachete și să adăugați următoarele linii în fișierul ''.vimrc'' (mașina din laborator are deja configurările făcute): | ||
| Line 101: | Line 115: | ||
| Pentru mai multe informații, folosiți help-ul integrat al Vim: '':h cscope'' sau '':h copen''. | Pentru mai multe informații, folosiți help-ul integrat al Vim: '':h cscope'' sau '':h copen''. | ||
| </note> | </note> | ||
| + | |||
| + | ''cscope'' suportă următoarele tipuri de căutari: | ||
| + | * 's' symbol: găsește toate referințele simbolului marcat de cursor | ||
| + | * 'g' global: găsește definițiile globale ale simbolului marcat de cursor | ||
| + | * 'c' calls: găsește toate apelurile funcției marcate de cursor | ||
| + | * 't' text: găsește toate instanțele textului marcat de cursor | ||
| + | * 'e' egrep: căutare ''egrep'' pentu cuvântul marcat de cursor | ||
| + | * 'f' file: deschide fișierul cu numele marcat de cursor | ||
| + | * 'i' includes: găsește fișiere care includ numele fișierului marcat de cursor | ||
| + | * 'd' called: găsește funcțiile apelate de către funcția marcată de cursor | ||
| + | Mai multe informații găsiți [[http://cscope.sourceforge.net/cscope_maps.vim| aici]]. | ||
| Dacă sunteți utilizatori emacs, instalați pachetul xcscope-el și adăugați următoarele linii în ~/.emacs: | Dacă sunteți utilizatori emacs, instalați pachetul xcscope-el și adăugați următoarele linii în ~/.emacs: | ||
| Line 263: | Line 288: | ||
| ===== Exerciții ===== | ===== Exerciții ===== | ||
| + | ==== 0. Înscriere pe lista de discuții ==== | ||
| + | |||
| + | Urmăriți informațiile de pe pagina [[so2:resurse:lista-discutii|]] pentru a vă abona la lista de discuții. | ||
| ==== Precizări ==== | ==== Precizări ==== | ||
| Line 272: | Line 300: | ||
| * pornirea mașinii virtuale folosind qemu. Acest pas și cel precedent se execută automat lansând ''make''. | * pornirea mașinii virtuale folosind qemu. Acest pas și cel precedent se execută automat lansând ''make''. | ||
| * rularea testelor în mașina virtuală. | * rularea testelor în mașina virtuală. | ||
| - | * În cazul folosirii cscope, generați un fișier ''cscope.out'', folosind ''make ARCH=x86 cscope''. | + | * În cazul folosirii cscope, generați un fișier ''cscope.out'', folosind: ''COMPILED_SOURCE=1 make ARCH=x86 cscope''. |
| </note> | </note> | ||
| Line 282: | Line 310: | ||
| Pe scurt, infrastructura mașinii virtuale: | Pe scurt, infrastructura mașinii virtuale: | ||
| * ''/home/student/so2/linux'' - sursele kernel-ului Linux, de care aveți nevoie pentru a compila module. Directorul include și fișierul ''cscope.out'', pentru inspectarea facilă a surselor. | * ''/home/student/so2/linux'' - sursele kernel-ului Linux, de care aveți nevoie pentru a compila module. Directorul include și fișierul ''cscope.out'', pentru inspectarea facilă a surselor. | ||
| - | * ''/home/student/so2/linux/tools/labs'' - fișiere suplimentare, necesare pentru rularea mașinii virtuale, labrator și teme | + | * ''/home/student/so2/linux/tools/labs'' - fișiere suplimentare, necesare pentru rularea mașinii virtuale, laborator și teme |
| Pentru a rula mașina virtuală este suficient să intrați în directorul ''so2/linux/tools/labs'' și să rulați comanda ''make boot'': | Pentru a rula mașina virtuală este suficient să intrați în directorul ''so2/linux/tools/labs'' și să rulați comanda ''make boot'': | ||
| Line 317: | Line 345: | ||
| </note> | </note> | ||
| - | În subdirectorul ''so2/linux/tools/labs/qemu/'' aveți un nou disc de mașină virtuală în cadrul fișierului ''mydisk.img''. Vrem să adăugăm discul la mașina virtuală și să îl folosim în cadrul mașinii virtuale. | + | În subdirectorul ''so2/linux/tools/labs/'' aveți un nou disc de mașină virtuală în cadrul fișierului ''mydisk.img''. Vrem să adăugăm discul la mașina virtuală și să îl folosim în cadrul mașinii virtuale. |
| Editați fișierul ''qemu/Makefile'' pentru a adăuga, în variabila ''QEMU_OPTS'', parametrul ''-drive file=qemu/mydisk.img,if=virtio,format=raw''. Rulați ''make'' pentru a boota mașina virtuală. | Editați fișierul ''qemu/Makefile'' pentru a adăuga, în variabila ''QEMU_OPTS'', parametrul ''-drive file=qemu/mydisk.img,if=virtio,format=raw''. Rulați ''make'' pentru a boota mașina virtuală. | ||
| + | |||
| + | <note warning> | ||
| + | Este posibil să existe deja adăugate alte două discuri (''disk1.img'' și ''disk2.img''). În acest caz, adăugați noul disc înainte de ''disk1.img'' | ||
| + | </note> | ||
| În cadrul mașinii virtuale configurați accesul la disc. | În cadrul mașinii virtuale configurați accesul la disc. | ||
| Line 384: | Line 416: | ||
| </note> | </note> | ||
| - | Pentru aceasta pornim, în primă fază, mașina virtuală QEMU. Apoi, ne putem conecta cu ''gdb'' la un mașina vituală QEMU **aflată în rulare**, folosind comanda | + | Pentru aceasta pornim, în primă fază, mașina virtuală QEMU. Apoi, ne putem conecta cu ''gdb'' la mașina vituală QEMU **aflată în rulare**, folosind comanda |
| <code bash> | <code bash> | ||
| make gdb | make gdb | ||
| Line 484: | Line 516: | ||
| <note tip> | <note tip> | ||
| - | Pentru aceasta folosiți în Vim o comandă de forma '':cs f g <symbol>'' (unde construcția ''<symbol>'' reprezintă numele simbolului căutat). | + | Pentru aceasta folosiți în Vim o comandă de forma '':cs f g <symbol>'' (unde construcția ''<symbol>'' reprezintă numele simbolului căutat). Dacă simbolul nu este găsit, încercați căutarea textuala folosind comanda: '':cs f t <text>''. |
| </note> | </note> | ||