This is an old revision of the document!
.vmdk
, .vmx
, .vdi
, .vbox
, vboxmanage
, NAT, host-only, bridged, Open Virtualization FormatPentru rularea demo-urilor de mai jos folosim mașina virtuală USO Demo. Mașina virtuală (în format OVA) poate fi importată în VirtualBox. Comenzile le vom rula în cadrul mașinii virtuale.
Mașina virtuală deține două interfețe de rețea:
eth0
pentru accesul la Internet (interfață de tipul NAT)eth1
pentru comunicarea cu sistemul fizic (gazdă, host) (interfață de tipul Host-only Adapter)Pentru a rula demo-ul avem două opțiuni:
eth1
a mașinii virtuale și ne conectăm prin SSH, de pe sistemul fizic, folosind comandassh student@<adresa-IP-vm-eth1>
unde <adresa-IP-vm-eth1>
este adresa IP a interfeței eth1
din cadrul mașinii virtuale.
Pentru conectarea la mașina virtuală folosim numele de utilizator student
cu parola student
. Contul student
are permsiuni de sudo
. Folosind comanda
sudo su -
obținem permisiuni privilegiate (de root
) în shell.
eth1
atunci folosim comanda
sudo dhclient eth1
pentru a obține o adresă IP.
Placa de bază este suportul pentru alte componente hardware. Placa de bază dispune de socluri (socket
, slot
) unde pot fi adăugate alte componente hardware (precum procesor sau module de memorie) sau controllere care fac legătura cu alte componente (precum controller SCSI pentru hard disk).
Comenzi prin care putem afișa informații despre componentele hardware conectate la magistralele (bus
) plăcii de bază sunt lspci
și lsusb
. Rularea acestor comenzi în mașina virtuală duce la afișarea componentelor hardware virtuale conectate la placa de bază:
student@uso-demo:~$ lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) 00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter 00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02) 00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service 00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01) 00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB 00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08) 00:08.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02) 00:0d.0 SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 02) student@uso-demo:~$ lsusb Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
În output-ul comenzii putem vedea informații despre hardware-ul expus de mașina virtuală, în special controllerele care se regăsesc pe placa de rețea. Observăm controllere pentru:
VGA
)Ethernet
) de 1 Gb (gigabit): sunt două plăci de rețea, expuse prin interfețele de rețea eth0
și eth1
Pentru a afișa informații extinse hardware despre componentele sistemului, cel mai bine este să folosim comanda lshw
. Pentru început, pe mașina virtuală, trebuie să instalăm pachetul lshw
:
student@uso-demo:~$ sudo apt-get install lshw
Printr-o simplă rulare a comenzii lshw
vom afișa informații despre întreg hardware-ul sistemului
student@uso-demo:~$ sudo lshw uso-demo description: Computer width: 32 bits capabilities: smbios-2.5 *-core [...]
Pentru a afișa informații despre hardware în format tabelar, mai ușor de urmărit, folosim opțiunea -short
la comanda lshw
student@uso-demo:~$ sudo lshw -short H/W path Device Class Description =================================================== system Computer /0 bus Motherboard /0/0 memory 500MiB System memory /0/1 processor Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz /0/100 bridge 440FX - 82441FX PMC [Natoma] /0/100/1 bridge 82371SB PIIX3 ISA [Natoma/Triton II] /0/100/1.1 storage 82371AB/EB/MB PIIX4 IDE /0/100/2 display VirtualBox Graphics Adapter /0/100/3 eth0 network 82540EM Gigabit Ethernet Controller /0/100/4 generic VirtualBox Guest Service /0/100/5 multimedia 82801AA AC'97 Audio Controller /0/100/6 bus KeyLargo/Intrepid USB /0/100/6/1 usb1 bus OHCI PCI host controller /0/100/6/1/1 input USB Tablet /0/100/7 bridge 82371AB/EB/MB PIIX4 ACPI /0/100/8 eth1 network 82540EM Gigabit Ethernet Controller /0/100/d storage 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] /0/2 scsi0 storage /0/2/0.0.0 /dev/sda disk 8589MB VBOX HARDDISK /0/2/0.0.0/1 /dev/sda1 volume 7806MiB EXT4 volume /0/2/0.0.0/2 /dev/sda2 volume 383MiB Extended partition /0/2/0.0.0/2/5 /dev/sda5 volume 383MiB Linux swap / Solaris partition /0/3 scsi2 storage /0/3/0.0.0 /dev/cdrom disk DVD reader
Ni se afișează informații despre componentele hardware ale sistemului: placă de bază, controllere, memorie RAM, hard disk. Putem afișa informații detaliate și despre fiecare componentă în parte, așa cum vom vedea mai jos.
dmidecode
, inxi
și hwinfo
. Dacă nu sunt instalate le puteți instala folosind comenzi precum cele de mai jos:
sudo apt-get install dmidecode sudo apt-get install inxi sudo apt-get install hwinfo
Pentru a afișa informații despre procesorul sistemului putem folosi comanda lscpu
student@uso-demo:~$ lscpu Architecture: i686 CPU op-mode(s): 32-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 42 Model name: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz Stepping: 7 CPU MHz: 2491.852 BogoMIPS: 4983.70 Hypervisor vendor: KVM Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 3072K
Comanda ne afișează tipul procesorului expus de mașina virtuală. Acesta este un procesor single core, și este mapat direct peste procesorul fizic (adică al sistemului fizic peste care rulează mașina virtuală). De aceea, output-ul acestei comenzi va diferi depinzând de sistemul fizic pe care rulează mașina virtuală.
În output-ul comenzii ne sunt afișate informații despre procesor, precum numărul de core-uri, numărul modelului, frecvența, dimensiunea memoriei cache.
Aceste informații pot fi afișate și cu ajutorul comenzii lshw
student@uso-demo:~$ sudo lshw -class cpu *-cpu product: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz vendor: Intel Corp. physical id: 1 bus info: cpu@0 version: 6.10.7 serial: 0002-06A7-0000-0000-0000-0000 size: 2500MHz width: 32 bits capabilities: fpu fpu_exception wp vme de pse tsc msr mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 rdtscp constant_tsc nonstop_tsc pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm
Informațiile despre procesor sunt accesibile, în mod tradițional, în sistemul de fișiere /proc
, prin intermediul fișierului /proc/cpuinfo
:
student@uso-demo:~$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 42 model name : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz [...]
Dacă ne interesează să aflăm pe scurt, numărul de core-uri/procesoare din sistem, respectiv arhitectura hardware a sistemului, folosim comenzile
student@uso-demo:~$ nproc 1 student@uso-demo:~$ arch i686
dmidecode
, inxi
și hwinfo
.
Dacă dorim să vedem încărcarea sistemului și utilizarea procesorului, putem folosi comanda top
sau htop
. Aceste comenzi au avantajul că ne afișează și procesele sistemului și putem identifica procesele care consumă procesor și care afectează performanța sistemului (așa numitele CPU hogs).
Pentru a afișa sumar informații despre utilizarea procesorului putem folosi comanda mpstat
:
student@uso-demo:~$ mpstat Linux 3.16.0-4-586 (uso-demo) 12/05/2015 _i686_ (1 CPU) 06:02:14 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 06:02:14 PM all 0.25 0.00 0.13 0.70 0.00 0.02 0.00 0.00 0.00 98.91
În output-ul de mai sus, mare parte din procesor este liberă (idle
): 98.91%
din timpul de procesor este marcat idle
.
Pentru a afla informații despre memoria RAM a sistemului putem folosi comanda lshw
:
student@uso-demo:~$ sudo lshw -class memory *-memory description: System memory physical id: 0 size: 500Mi
Din păcate comanda ne oferă informații minimale despre memoria RAM. Dacă ne interesează viteza de acces, numărul de module și alte informații, putem folosi comanda dmidecode
. Din păcate, pe mașina virtuală nu afișează informații extinse, dar putem afla informații mai multe rulând comanda pe un sistem Linux instalat nativ:
razvan@einherjar:~$ sudo dmidecode --type memory # dmidecode 3.0 Getting SMBIOS data from sysfs. SMBIOS 2.6 present. Handle 0x0005, DMI type 16, 15 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: None Maximum Capacity: 8 GB Error Information Handle: Not Provided Number Of Devices: 2 Handle 0x0006, DMI type 17, 28 bytes Memory Device Array Handle: 0x0005 Error Information Handle: Not Provided Total Width: 64 bits Data Width: 64 bits Size: 4096 MB Form Factor: SODIMM Set: None Locator: ChannelA-DIMM0 Bank Locator: BANK 0 Type: DDR3 Type Detail: Synchronous Speed: 1333 MHz Manufacturer: Samsung Serial Number: 66313530 Asset Tag: Unknown Part Number: M471B5273CH0-CH9 Rank: Unknown [...]
În output-ul comenzii dmidecode
putem afla numărul de sloturi (bank
), fabricantul, viteza, tipul.
Tot cu ajutorul comenzii dmidecode
putem afișa informații despre memoria cache a sistemului:
razvan@einherjar:~$ sudo dmidecode -t cache
Dacă ne interesează informații despre utilizarea memoriei sistemului, putem folosi comanda free
:
student@uso-demo:~$ free -m total used free shared buffers cached Mem: 500 270 230 4 24 196 -/+ buffers/cache: 48 451 Swap: 382 0 382
Comanda afișează totalul de memorie RAM a sistemului și cât din acesta este folosit. În cazul nostru avem 500
de MB de memorie RAM, dintre care sunt folosiți 270
MB și sunt disponibili 230
MB.
Detalii despre utilizarea memoriei RAM găsim în fișierul /proc/meminfo
:
student@uso-demo:~$ cat /proc/meminfo MemTotal: 512596 kB MemFree: 236044 kB MemAvailable: 468944 kB Buffers: 25296 kB Cached: 201248 kB [...]
Informații despre utilizarea memoriei sistemului aflăm și prin folosirea comenzilor top
sau htop
. Aceste comenzi au avantajul că ne afișează și procesele sistemului și putem identifica procesele care consumă memorie și care afectează performanța sistemului (așa numitele memory hogs).
La fel ca mai sus pentru afișa informații detaliate despre discurile sistemului putem folosi comanda lshw
:
student@uso-demo:~$ sudo lshw -class disk -class storage -class volume -short H/W path Device Class Description =================================================== /0/100/1.1 storage 82371AB/EB/MB PIIX4 IDE /0/100/d storage 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] /0/2 scsi0 storage /0/2/0.0.0 /dev/sda disk 8589MB VBOX HARDDISK /0/2/0.0.0/1 /dev/sda1 volume 7806MiB EXT4 volume /0/2/0.0.0/2 /dev/sda2 volume 383MiB Extended partition /0/2/0.0.0/2/5 /dev/sda5 volume 383MiB Linux swap / Solaris partition /0/3 scsi2 storage /0/3/0.0.0 /dev/cdrom disk DVD reader
Alte comenzi cu un output similar sunt:
student@uso-demo:~$ sudo fdisk -l Disk /dev/sda: 8 GiB, 8589934592 bytes, 16777216 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x1aaa7728 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 15988735 15986688 7.6G 83 Linux /dev/sda2 15990782 16775167 784386 383M 5 Extended /dev/sda5 15990784 16775167 784384 383M 82 Linux swap / Solaris student@uso-demo:~$ sudo parted -l Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 8590MB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 8186MB 8185MB primary ext4 boot 2 8187MB 8589MB 402MB extended 5 8187MB 8589MB 402MB logical linux-swap(v1) student@uso-demo:~$ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 8G 0 disk ├─sda1 8:1 0 7.6G 0 part / ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 383M 0 part [SWAP] sr0 11:0 1 1024M 0 rom student@uso-demo:~$ sudo lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 4c03932f-ebdc-4d7d-bf4e-aa65f3889d73 / ├─sda2 └─sda5 swap 709a57ff-ffc5-4cf2-bfd7-2850a842e41f [SWAP] sr0 student@uso-demo:~$ sudo hwinfo --block --short disk: /dev/sda VBOX HARDDISK partition: /dev/sda1 Partition /dev/sda2 Partition /dev/sda5 Partition cdrom: /dev/sr0 VBOX CD-ROM
Comenzile de mai sus ne afișează partițiile sistemului, cu diverse informații precum numele lor, spațiul ocupat, tipul de sistem de fișiere cu care este formatată partiția.
Dacă dorim să afișăm informații despre utilizarea spațiului despre partițiile sistemului putem face acest lucru doar pentru partițiile montate folosim comanda df
:
student@uso-demo:~$ df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/sda1 ext4 7.4G 1.6G 5.5G 23% / udev devtmpfs 10M 0 10M 0% /dev tmpfs tmpfs 101M 4.4M 96M 5% /run tmpfs tmpfs 251M 0 251M 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 251M 0 251M 0% /sys/fs/cgroup
O afișare ceva mai estetică obținem cu ajutorul comenzii pydf
. Pentru aceasta instalăm în prealabil pachetul pydf
:
student@uso-demo:~$ sudo apt-get install pydf [...] student@uso-demo:~$ pydf Filesystem Size Used Avail Use% Mounted on /dev/sda1 7555M 1589M 5560M 21.0 [##########......................................] /
Comenzile df
sau pydf
ne afișează dimensiunea totală a unei partiții spațiul ocupat și spațiul disponibil, împreună cu un procent de utilizare a spațiului.
Pentru situații de testare putem avea nevoie de fișiere de diferite dimensiuni. Pentru a genera astfel de fișiere putem folosi comanda dd
și intrările speciale /dev/urandom
și /dev/zero
.
De exemplu, dacă dorim să generăm un fișier de 10MB
plin cu zero-uri, vom folosi comanda
student@uso-demo:~$ dd if=/dev/zero of=zero-1OMB bs=1M count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 0.0233232 s, 450 MB/s student@uso-demo:~$ ls -lh zero-1OMB -rw-r--r-- 1 student student 10M Dec 5 18:09 zero-1OMB
Comanda dd
citește din intrarea specială /dev/zero
zero-uri și le scrie în fișierul zero-1OMB
. Face acest lucru în 10
copieri de blocuri de câte 1M
(bs
înseamnă block size).
Dacă dorim să generăm un fișier de 5MB
plin cu date aleatoare, vom folosi comanda
student@uso-demo:~$ dd if=/dev/urandom of=random-5MB bs=1M count=5 5+0 records in 5+0 records out 5242880 bytes (5.2 MB) copied, 0.56655 s, 9.3 MB/s student@uso-demo:~$ ls -lh random-5MB -rw-r--r-- 1 student student 5.0M Dec 5 18:11 random-5MB
Comanda dd
citește din intrarea specială /dev/urandom
date aleatoare și le scrie în fișierul random-5MB
. Face acest lucru în 5
copieri de blocuri de câte 1M
(bs
înseamnă block size).
Putem folosi comanda dd
și pentru dispozitive fizice. De exemplu, dacă vrem să extragem sectorul 0 de pe un hard disc (adică primii 512 octeți) folosim comanda:
student@uso-demo:~$ sudo dd if=/dev/sda of=mbr count=1 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.00355612 s, 144 kB/s student@uso-demo:~$ ls -lh mbr -rw-r--r-- 1 root root 512 Dec 5 18:13 mbr
Comanda dd
citește din intrarea specială /dev/sda
date și le scrie în fișierul random-5MB
. Face acest lucru într-o singură copiere de bloc de date; dimensiunea blocului este în mod implicit 512
așa că se vor copia exact 512
octeți. A fost nevoie de permisiuni de root
(prefixarea comenzii folosind sudo
) pentru că doar cu permisiuni dedicate putem citi de pe dispozitivile ce identifică discul sistemului.
Putem valida că am extras sectorul 0 al hard discului folosind comanda xxd
(care face dump în hexadecimal). Întrucât sectorul 0 este sectorul de boot acesta se va încheia cu semnătura de sector de boot, adică 0x55aa
, lucru observabil în output-ul comenzii xxd
:
student@uso-demo:~$ xxd mbr [...] 00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa ..............U.
Tot folosind comanda dd
un sistem ce posedă unitate de CD și are un CD în unitate poate crea o imagine de tip .iso
a CD-ului. Pentru aceasta folosim comanda
dd if=/dev/cdrom of=myimage.iso
Cu această comandă creăm fișierul myimage.iso
ca fișier imagine al CD-ului aflat în unitatea de CD.
dd
și care este fișierul destinație (în care se scrie). Există riscul să vă corupeți (potențial iremediabil) hard discul dacă folosiți /dev/sda
pe post de fișier destinație.
Pentru crarea unei mașini virtuale în VirtualBox folosim, de regulă, interfața grafică a VirtualBox. Pentru aceasta urmăm ca pași principali:
.iso
Acești pași sunt descriși în video-ul de tip screencast de mai jos, accesibil direct la adresa https://youtu.be/xFkkeVoOC_A.
În afara interfeței grafice în VirtualBox putem folosi comanda vboxmanage
pentru a afișa informații și pentru a configura mașini virtuale VirtualBox.
De exemplu, pentru a afișa mașinile virtuale existente în VirtualBox, rulăm comanda
razvan@einherjar:~$ vboxmanage list vms "Windows-7" {2a9b2719-2c6c-42df-9f19-5febff6172bf} "Debian" {18565cc7-101d-4ac4-91b4-2ee317b7f9ae} "Debian 32 bit" {562696b3-efb8-42e4-8a66-519a98aa5ac8} "Xubuntu-14.04" {cd57aa75-82b0-4f07-8236-81517f2ee87d} "SSS - Debian 32bit" {fa9dd108-fe13-4d12-adcd-84e29bcc3232} "SSS - Windows 7 32bit" {4f27ec11-33a8-400d-a898-d252169ab52f} "Training - Linux Kernel Dev" {3645e7b4-482e-4bd2-aa73-f29e8b15288f} "GSR Debian" {409a6ad1-3998-443b-9297-e46aa1d944e5} "USO Demo" {e04f00a6-7530-45d0-95e6-56ba46d6810a} "IOCLA Linux" {5ee0048a-6bd1-4dc6-bf1b-daffc1729066} "USO Linux" {845446cb-0210-4f3b-8df0-91cd1c67b5e2}
Comanda afișează mașinile virtuale existente în sistemul gazdă împreună cu un identificator unic al acestora (numit UUID – Universally Unique Identifier).
Dacă vrem să afisăm doar mașinile virtuale care rulează, folosim comanda
razvan@einherjar:!$ vboxmanage list runningvms "USO Demo" {e04f00a6-7530-45d0-95e6-56ba46d6810a} <code> Dacă ne interesează să aflăm informații detaliate despre o mașină virtuală rulăm comanda<code> razvan@einherjar:~$ vboxmanage showvminfo "USO Demo" Name: USO Demo Groups: / Guest OS: Debian (32-bit) UUID: e04f00a6-7530-45d0-95e6-56ba46d6810a Config file: /home/razvan/vm/vbox/USO Demo/USO Demo.vbox Snapshot folder: /home/razvan/vm/vbox/USO Demo/Snapshots Log folder: /home/razvan/vm/vbox/USO Demo/Logs Hardware UUID: e04f00a6-7530-45d0-95e6-56ba46d6810a Memory size: 512MB [...]
Comanda afișează o multitudine de informații despre mașina virtuală, practic tot ceea ce o definește.
vboxmanage
are o mulțime de subcomenzi care pot fi folosite pentru inspectarea și configurarea mașinilor virtuale. Puteți folosi comanda
vboxmanage --help
pentru a le parcurge pe toate, sau puteți consulta pagina de manual a comenzii
man vboxmanage
sau puteți accesa documentația VirtualBox.
Mai jos este un sumar al comenzilor Linux folosite pentru inspectarea componentelor harware ale sistemului. Sunt indicate comenzile pe tipuri de componente.
Componentă hardware | Comenzi pentru specificații | Comenzi pentru monitorizare |
---|---|---|
Toate | sudo lshw | |
sudo lshw -short |
||
sudo dmidecode |
||
sudo hwinfo |
||
sudo hwinfo --short |
||
inxi |
||
inxi -F |
||
Magistrale/Controllere | sudo lscpi | |
sudo lsusb |
||
Procesor | lspcu | top |
sudo lshw -class cpu | htop |
|
sudo dmidecode -t processor | mpstat |
|
sudo hwinfo --cpu | ||
sudo hwinfo --cpu --short |
||
inxi -Cxx |
||
cat /proc/cpuinfo |
||
nproc |
||
arch |
||
Memorie | sudo lshw -class memory | free -m |
sudo dmidecode -t memory | cat /proc/meminfo |
|
sudo dmidecode -t cache | top |
|
sudo hwinfo --memory | htop |
|
sudo inxi -m | ||
Disc | sudo lshw -class disk -class storage -class volume -short | df -hT |
sudo fdisk -l | pydf |
|
sudo parted -l | ||
sudo lsblk |
||
sudo lsblk -f |
||
sudo hwinfo --block --short |
||
inxi -DdoP |