This is an old revision of the document!
Desfășurarea laboratorului și testarea temelor pentru Sisteme de Operare 2 se realizează cu ajutorul unei mașini virtuale. Recomandăm descărcarea acesteia și folosirea sa pentru pregătirea și aprofundarea laboratorului și pentru implementarea și verificarea temelor.
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:
Descărcați mașina virtuală de la: https://github.com/tavip/qemu-so2:
git clone https://github.com/tavip/qemu-so2.git
Directorul numit qemu-so2
conține:
Makefile
; rulați make
pentru a construi imaginea mașinii virtuale;busybox
, pentru utilitare de bază în mașina virtuală;make
; nu este nevoie să le modificați.Înainte de a folosi mașina virtuală este necesar sa descărcați, compilați și creați link-uri simbolice către imaginea de kernel ce va fi folosită de către mașina virtuală:
$ make setup-bzImage ~/src/qemu-so2$ make setup-bzImage ./setup-bzImage.sh --2017-02-19 14:36:40-- https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.11.tar.xz Resolving cdn.kernel.org (cdn.kernel.org)... 151.101.64.69, 151.101.128.69, 151.101.192.69, ... Connecting to cdn.kernel.org (cdn.kernel.org)|151.101.64.69|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 93211324 (89M) [application/x-xz] Saving to: ‘linux-4.9.11.tar.xz’ linux-4.9.11.tar.xz 100%[========================================================================================>] 88,89M 10,9MB/s in 8,3s 2017-02-19 14:36:48 (10,7 MB/s) - ‘linux-4.9.11.tar.xz’ saved [93211324/93211324] make[1]: Entering directory '/home/tavi/src/linux-4.9.11' HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/zconf.lex.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf --olddefconfig Kconfig # # configuration written to .config # make[1]: Leaving directory '/home/tavi/src/linux-4.9.11' make[1]: Entering directory '/home/tavi/src/linux-4.9.11' scripts/kconfig/conf --silentoldconfig Kconfig SYSTBL arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h ...
Pentru rularea mașinii virtuale folosiți:
make
Pentru rularea mașinii virtuale fără mode “grafic” folosiți:
QEMU_DISPLAY=none make
Fișierele pe care vreți să le puneți în mașina virtuală vor trebui puse în directorul fsimg/root
. Ele vor fi accesibile în mașina virtuală din directorul /root
. Pentru a automatiza copierea în fsimg/root
puteți adăuga un target în makefile-ul modulului, sau puteți crea symlink-uri.
fsimg/root
către fișierele voastre, asigurați-vă că imaginea este reconstruită de fiecare dată. Cel mai simplu este să faceți target-ul initrd.cpio
phony. Generarea imaginii durează doar câteva secunde.
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.
Dacă aveți multe mesaje afișate în mașina virtuală puteți folosi combinațiile de taste Shift+PgUp
, respectiv Shift+PgDn
pentru a parcurge output-ul (scrolling) din consolă.
În afară de consola din modul grafic, setup-ul mașinii virtuale oferă o consolă adițională prin intermediul unui “pty - pseudoterminal interface”. Atunci când mașina virtuală este pornită căutați un mesaj de genul:
char device redirected to /dev/pts/20 (label virtiocon0)
Vă puteți conecta la această consolă folosind minicom sau screen:
$ minicom -D /dev/pts/20