This is an old revision of the document!


Mașina virtuală

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:

  • build-essential
  • qemu
  • kvm

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:

  • un Makefile; rulați make pentru a construi imaginea mașinii virtuale;
  • busybox, pentru utilitare de bază în mașina virtuală;
  • server ssh (dropbear) compilat static
  • alte fișiere necesare rulării mașinii virtuale vor fi create la prima rulare a 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.

GNU Make nu se pricepe prea bine la dependency tracking pe symlink-uri. Dacă alegeți să faceți symlink-uri în 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.

Inspectare informații din mașina virtuală

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 

Probleme frecvente

  • Q: Cum închid aplicația minicom?
  • A: Folosind combinația de taste Ctrl+a și apoi, separat, x. Apoi vă apare promptul de închidere a aplicației minicom.
so2/resurse/masini-virtuale.1488535974.txt.gz · Last modified: 2017/03/03 12:12 (external edit)
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