Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so2:laboratoare:lab01 [2018/02/21 11:10]
razvan.deaconescu [1. Boot-area mașinii virtuale]
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 45: Line 59:
 ==== cscope ==== ==== cscope ====
  
-[[http://​cscope.sourceforge.net/​|Cscope]] este un program pentru parcurgerea eficientă a surselor C.  Pentru a-l folosi, trebuie generată o bază de date cscope din sursele existente. ​ Într-un tree Linux, este suficientă folosirea ​''​make ARCH=x86 cscope''​. ​ 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.+[[http://​cscope.sourceforge.net/​|Cscope]] este un program pentru parcurgerea eficientă a surselor C.  Pentru a-l folosi, trebuie generată o bază de date cscope din sursele existente. ​ Într-un tree Linux, este suficientă folosirea
 +<code bash>​COMPILED_SOURCE=1 ​make ARCH=x86 ​cscope 
 +</​code>​ 
 +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 98: 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 260: 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 269: 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, ​folosiți ''/​home/​student/​so2/​linux-4.9.11''​. ​ Dacă nu există deja un fișier ''​cscope.out'', ​îl puteți genera ​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 279: 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 287: Line 318:
 </​code>​ </​code>​
  
-Implicit, nu există suport grafic (deci nu veți vedea un prompt), dar vă puteți conecta la o consola ​adițională oferită de mașina virtuală (în alt terminal) folosind ''​screen''​ sau ''​minicom'':​+Implicit, nu există suport grafic (deci nu veți vedea un prompt), dar vă puteți conecta la o consola ​suplimentară oferită de mașina virtuală (în alt terminal) folosind ''​screen''​ sau ''​minicom'':​
  
 <​code>​ <​code>​
Line 314: 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 381: 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 481: 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>​
  
Line 517: Line 552:
 Citiți secțiunile [[#​cscope|cscope]] sau [[#LXR Cross-Reference|LXR Cross-Reference]] din laborator. Citiți secțiunile [[#​cscope|cscope]] sau [[#LXR Cross-Reference|LXR Cross-Reference]] din laborator.
 </​note>​ </​note>​
-==== Soluții ==== 
 /* /*
 +
 +==== Soluții ====
 +
   * [[http://​elf.cs.pub.ro/​so2/​res/​laboratoare/​lab01-sol.zip|Soluții exerciții laborator 1]]   * [[http://​elf.cs.pub.ro/​so2/​res/​laboratoare/​lab01-sol.zip|Soluții exerciții laborator 1]]
 */ */
so2/laboratoare/lab01.1519204240.txt.gz · Last modified: 2018/02/21 11:10 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0