Differences

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

Link to this comparison view

so2:resurse:masini-virtuale [2018/02/19 15:57]
ionel.ghita [Rularea mașinii]
so2:resurse:masini-virtuale [2019/03/16 09:46] (current)
razvan.deaconescu [Rularea mașinii]
Line 5: Line 5:
 Mașina virtuală este un setup bazat pe qemu.  Ea nu include facilități pentru a edita, compila și depana module, deci va trebui să faceți acest lucru pe mașina fizică. ​ Mașina virtuală doar rulează un kernel minimal, modulele voastre și eventuale programe de test. Mașina virtuală este un setup bazat pe qemu.  Ea nu include facilități pentru a edita, compila și depana module, deci va trebui să faceți acest lucru pe mașina fizică. ​ Mașina virtuală doar rulează un kernel minimal, modulele voastre și eventuale programe de test.
  
-Pentru a rula mașina virtuală veți avea nevoie de o mașină Linux cu următoarele pachete: +Pentru a rula mașina virtuală ​și pentru a putea compila și folosi module de kernel ​veți avea nevoie de o mașină Linux la care să aveți un utilizator ​cu permisiuni de ''​root''/''​sudo''​ și pe care să instalați ​următoarele pachete: 
-  * build-essential +  * ''​flex''​ 
-  * qemu-system-x86 +  * ''​bison''​ 
-  * qemu-system-arm +  * ''​build-essential''​ 
-  * kvm +  * ''​gcc-multilib''​ 
-  * python3+  * ''​libncurses5-dev''​ 
 +  * ''​qemu-system-x86''​ 
 +  * ''​qemu-system-arm''​ 
 +  * ''​qemu-kvm''​ 
 +  * ''​python3''​ 
 +  * ''​minicom''​ 
 + 
 +Pentru instalarea pachetelor pe un sistem Debian/​Ubuntu,​ veți rula comanda: 
 +<​code>​ 
 +sudo apt update 
 +sudo apt install -y flex bison build-essential gcc-multilib libncurses5-dev qemu-system-x86 qemu-system-arm qemu-kvm python3 minicom 
 +</​code>​
  
 Mașina virtuală este integrată într-un repo ce conține și sursele kernel-ului Linux: [[https://​github.com/​linux-kernel-labs/​linux]]:​ Mașina virtuală este integrată într-un repo ce conține și sursele kernel-ului Linux: [[https://​github.com/​linux-kernel-labs/​linux]]:​
Line 18: Line 29:
 </​code>​ </​code>​
  
-Pe lângă sursele kernel-ului,​ această mașină virtuală conține fișierele necesare pentru desfășurarea laboratorului (schelete de cod) și configurația mașinii virtuale de qemu, în directorul ''​tools/​labs''​.+<​note>​ 
 +Puteți accelera clonarea repository-ului folosind argumentul ''​%%--%%depth=1''​ pentru comanda ''​git''​. 
 +Cu acest argument, git va clona doar ultima versiune a surselor, nu tot istoricul din repository, deci nu veți avea acces la commit-urile precedente. 
 +</​note>​ 
 + 
 +Pe lângă sursele kernel-ului,​ această mașină virtuală conține fișierele necesare pentru desfășurarea laboratorului (schelete de cod) și configurația mașinii virtuale de qemu, în directorul ''​tools/​labs/''​.
  
-Directorul ''​tools/​labs''​ conține:+Directorul ''​tools/​labs/''​ conține:
   * un ''​Makefile'',​ pe care il vom folosi pentru a porni mașina virtuală și pentru a genera scheletele de cod pentru laborator.   * un ''​Makefile'',​ pe care il vom folosi pentru a porni mașina virtuală și pentru a genera scheletele de cod pentru laborator.
-  * un director ''​qemu'',​ ce conține script-uri necesare pentru mașina virtuală și un fișier de configurare folosit pentru compilarea kernel-ului din surse (''​qemu/​kernel_config.x86''​). +  * un director ''​qemu/'',​ ce conține script-uri necesare pentru mașina virtuală și un fișier de configurare folosit pentru compilarea kernel-ului din surse (''​qemu/​kernel_config.x86''​). 
-  * un director ''​templates'',​ care conține fișierele din care se generează scheletele de laborator.+  * un director ''​templates/'',​ care conține fișierele din care se generează scheletele de laborator.
   * dupa prima pornire a mașinii virtuale, o imagine a unui sistem de fișiere, generată folosind ''​Yocto''​.   * dupa prima pornire a mașinii virtuale, o imagine a unui sistem de fișiere, generată folosind ''​Yocto''​.
  
 Următoarele imagini de sistem de fișiere sunt disponibile (cea folosită se specifică în ''​qemu/​Makefile''​):​ Următoarele imagini de sistem de fișiere sunt disponibile (cea folosită se specifică în ''​qemu/​Makefile''​):​
-  * core-image-minimal-qemu +  * ''​core-image-minimal-qemu''​ 
-  * core-image-minimal-dev-qemu +  * ''​core-image-minimal-dev-qemu''​ 
-  * core-image-sato-dev-qemu +  * ''​core-image-sato-dev-qemu''​ 
-  * core-image-sato-qemu +  * ''​core-image-sato-qemu''​ 
-  * core-image-sato-sdk-qemu +  * ''​core-image-sato-sdk-qemu''​
  
 ===== Rularea mașinii ===== ===== Rularea mașinii =====
  
-Mașina virtuală se pornește rulând comanda ''​make boot''​ în directorul ''​tools/​labs''​. Prima rulare a acestei comenzi va dura mai mult, deoarece se va compila kernel-ul (din sursele existente în același repo, folosind config-ul din ''​tools/​labs/​qemu/​kernel_config.x86''​) și se va descărca imaginea sistemului de fișiere specificată in ''​tools/​labs/​qemu/​Makefile''​.+Mașina virtuală se pornește rulând comanda ''​make boot''​ în directorul ''​tools/​labs/''​. Prima rulare a acestei comenzi va dura mai mult, deoarece se va compila kernel-ul (din sursele existente în același repo, folosind config-ul din ''​tools/​labs/​qemu/​kernel_config.x86''​) și se va descărca imaginea sistemului de fișiere specificată in ''​tools/​labs/​qemu/​Makefile''​.
  
 <​code>​ <​code>​
Line 60: Line 75:
 </​note>​ </​note>​
  
-Veți compila modulele de kernel și programele de test pe mașina fizică. ​ Dacă aveți un sistem pe 64 de biți, folosiți flag-ul ''​-m32''​ pentru gcc, pentru a genera binare pe 32 de biți. De asemenea, folosiți opțiunea ''​-static''​ pentru programele de test.+Veți compila modulele de kernel și programele de test pe mașina fizică. ​ Dacă aveți un sistem pe 64 de biți, folosiți flag-ul ''​-m32''​ pentru gcc, pentru a genera binare ​(module, executabile de rulat în user mode) pe 32 de biți. De asemenea, folosiți opțiunea ''​-static''​ pentru programele de test care vor rula în user mode.
  
 ===== Interacțiunea cu mașina virtuală ===== ===== Interacțiunea cu mașina virtuală =====
Line 83: Line 98:
 </​note>​ </​note>​
  
-Mașina virtuală are și suport de networking, așa că puteți folosi ''​ssh''​ pentru a vă conecta la ea după ce ați aflat adresa IP:+Mașina virtuală are și suport de networking, așa că puteți folosi ''​ssh''​ pentru a vă conecta la ea după ce ați aflat adresa IP
 +Imaginea de sistem de fișiere de bază (minimal) nu are suport de networking, va trebui sa folosiți, de exemplu, ''​core-image-sato-dev-qemu''​ (modificați variabila ''​YOCTO_IMAGE''​ în ''​qemu/​Makefile''​).
  
 <​code>​ <​code>​
-mincom ​-D serial.pts+minicom ​-D serial.pts
  
 Poky (Yocto Project Reference Distro) 2.3 qemux86 /dev/hvc0 Poky (Yocto Project Reference Distro) 2.3 qemux86 /dev/hvc0
Line 116: Line 132:
 root@qemux86:​~#​ root@qemux86:​~#​
 </​code>​ </​code>​
 +
 +===== Recompilarea imaginii de kernel =====
 +
 +Imaginea kernel-ului Linux este compilată automat la prima pornire a mașinii virtuale. Pentru a recompila această imagine, este necesar să ștergeți fișierul ''​zImage''​ și să rulați target-ul de ''​make''​ ''​zImage''​ (sau să porniți mașina virtuală din nou).
 +
 ===== Probleme frecvente ===== ===== Probleme frecvente =====
  
so2/resurse/masini-virtuale.1519048671.txt.gz · Last modified: 2018/02/19 15:57 by ionel.ghita
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