This shows you the differences between two versions of the page.
so2:resurse:masini-virtuale [2018/02/20 17:25] razvan.deaconescu |
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: |
+ | * ''flex'' | ||
+ | * ''bison'' | ||
* ''build-essential'' | * ''build-essential'' | ||
+ | * ''gcc-multilib'' | ||
+ | * ''libncurses5-dev'' | ||
* ''qemu-system-x86'' | * ''qemu-system-x86'' | ||
* ''qemu-system-arm'' | * ''qemu-system-arm'' | ||
- | * ''kvm'' | + | * ''qemu-kvm'' |
* ''python3'' | * ''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 17: | Line 28: | ||
git clone https://github.com/linux-kernel-labs/linux.git | git clone https://github.com/linux-kernel-labs/linux.git | ||
</code> | </code> | ||
+ | |||
+ | <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/''. | 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/''. | ||
Line 59: | 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 86: | Line 102: | ||
<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 |