doc:appunti:linux:sa:qemu_kvm
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
doc:appunti:linux:sa:qemu_kvm [2018/03/01 18:54] – [Troubleshooting] niccolo | doc:appunti:linux:sa:qemu_kvm [2020/04/10 12:39] – [Scheda di rete Virtio o RTL-8029(AS)] niccolo | ||
---|---|---|---|
Line 17: | Line 17: | ||
È la configurazione necessaria per mettere la macchina **host e guest sulla stessa rete locale**. In pratica si configura una interfaccia **br0** che avrà l' | È la configurazione necessaria per mettere la macchina **host e guest sulla stessa rete locale**. In pratica si configura una interfaccia **br0** che avrà l' | ||
+ | |||
+ | Vediamo come si configura il file **/ | ||
< | < | ||
Line 32: | Line 34: | ||
</ | </ | ||
+ | In questo secondo esempio la scheda di rete **eth2** della macchina host non è configurata (non ha indirizzo IP). Il device **br2** viene quindi usato come bridge virtuale dalle macchine guest, che potranno raggiungere gli altri host fisicamente connessi a eth2: | ||
+ | |||
+ | < | ||
+ | auto eth2 | ||
+ | iface eth2 inet manual | ||
+ | up / | ||
+ | down / | ||
+ | |||
+ | auto br2 | ||
+ | iface br2 inet manual | ||
+ | bridge_ports eth2 | ||
+ | bridge_stp off | ||
+ | bridge_maxwait 10 | ||
+ | up / | ||
+ | down / | ||
+ | </ | ||
+ | |||
+ | Potrebbe tornare utile un **bridge senza alcuna scheda Ethernet connessa**, ad esempio per attivare una interfaccia di rete in una macchina virtuale, ma senza dover occupare per forza una porta Ethernet. Ecco come attivare **br10** senza impegnare porte fisiche: | ||
+ | |||
+ | < | ||
+ | auto br10 | ||
+ | iface br10 inet manual | ||
+ | bridge_ports none | ||
+ | bridge_stp off | ||
+ | bridge_waitport 0 | ||
+ | bridge_maxwait 10 | ||
+ | up / | ||
+ | down / | ||
+ | </ | ||
+ | |||
+ | Ecco la sintassi **da riga di comando** per fare configurazioni analoghe: | ||
+ | |||
+ | < | ||
+ | brctl addbr br2 | ||
+ | brctl addif br2 eth2 | ||
+ | ifconfig br2 up | ||
+ | |||
+ | ifconfig br2 down | ||
+ | brctl delif br2 eth2 | ||
+ | brctl delbr br2 | ||
+ | </ | ||
===== Creazione di una macchina virtuale ===== | ===== Creazione di una macchina virtuale ===== | ||
- | Con il tool **virt-install** | + | Si può procedere in **modalità manuale** oppure preparando dei **file di configurazione XML** e lasciare il lavoro di basso livello al framework **libvirt**. |
+ | |||
+ | ==== Modo manuale con network in modo bridge ==== | ||
+ | |||
+ | La configurazione con **rete in modalità bridge** è la più complessa, perché richiede che la macchina ospitante sia predisposta opportunamente. In breve la macchina ospitante dovrà avere l' | ||
+ | |||
+ | < | ||
+ | auto br0 | ||
+ | iface br0 inet static | ||
+ | address 10.0.1.2 | ||
+ | netmask 255.255.255.0 | ||
+ | gateway 10.0.1.252 | ||
+ | bridge_ports eth0 | ||
+ | bridge_stp off | ||
+ | bridge_maxwait 10 | ||
+ | </ | ||
+ | |||
+ | quindi l' | ||
+ | |||
+ | < | ||
+ | tunctl -t tap0 -u root | ||
+ | ifconfig tap0 up | ||
+ | brctl addif br0 tap0 | ||
+ | </ | ||
+ | |||
+ | A questo punto è possibile **avviare la macchina ospite** con qualcosa del tipo: | ||
+ | |||
+ | < | ||
+ | qemu-system-x86_64 -m 1024 -machine accel=kvm \ | ||
+ | -netdev tap, | ||
+ | -device e1000, | ||
+ | -cdrom ../ | ||
+ | -hda rootfs.img -boot c | ||
+ | </ | ||
+ | |||
+ | ==== Con libvirt ==== | ||
+ | |||
+ | Una macchina virtuale è definita da due file: il **file di configurazione** e il file **immagine del disco**. Ad esempio una macchina di nome **stretch-amd64** è definita da: | ||
+ | |||
+ | * **/ | ||
+ | * **/ | ||
+ | |||
+ | È possibile creare in maniera assistita tali file eseguento | ||
< | < | ||
Line 46: | Line 131: | ||
</ | </ | ||
- | Dove i parametri sono il **nome** del guest (es. stretch-amd64), | + | dove i parametri sono il **nome** del guest (es. stretch-amd64), |
+ | **virt-install** crea i file necessari e avvia la macchina virtuale, la **console** è raggiungibile tramite **VNC sulla porta 5900** della macchina host. Nel file di configurazione il boot da CD-ROM e l' | ||
+ | |||
+ | <code xml> | ||
+ | <!-- <boot dev=' | ||
+ | <boot dev=' | ||
+ | </ | ||
+ | |||
+ | <code xml> | ||
+ | <!-- <driver name=' | ||
+ | <source file='/ | ||
+ | </ | ||
+ | |||
+ | In alternativa a **virt-install** è possibile creare manualmente il **file .xml di configurazione** e creare l' | ||
+ | |||
+ | < | ||
+ | qemu-img create -f qcow2 stretch-amd64.qcow2 40G | ||
+ | </ | ||
+ | |||
+ | Quando si cambiano i file di configurazione delle macchine guest è necessario riavviare il servizio (le macchine virtuali in esecuzione non sono toccate): | ||
+ | |||
+ | < | ||
+ | systemctl restart libvirtd.service | ||
+ | </ | ||
+ | |||
+ | quindi da virsh è possibile distruggere e far ripartire una macchina virtuale, nonché abilitiare l' | ||
+ | |||
+ | < | ||
+ | destroy stretch-amd64 | ||
+ | start stretch-amd64 | ||
+ | autostart stretch-amd64 | ||
+ | </ | ||
+ | |||
+ | L' | ||
+ | |||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | ===== Immagine disco raw o qcow2 ===== | ||
+ | |||
+ | L' | ||
+ | |||
+ | Il file XML di configurazione differisce nei due casi: | ||
+ | |||
+ | <code xml> | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <source file='/ | ||
+ | <target dev=' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <code xml> | ||
+ | <disk type=' | ||
+ | <source file='/ | ||
+ | <target dev=' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Scheda di rete Virtio o RTL-8029(AS) ===== | ||
+ | |||
+ | La scelta predefinita per l' | ||
+ | |||
+ | <code xml> | ||
+ | < | ||
+ | <model type=' | ||
+ | <mac address=' | ||
+ | <source bridge=' | ||
+ | <target dev=' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Il tipo **virtio** offre alla macchina guest un device Ethernet PCI con ID **1af4: | ||
+ | |||
+ | <code xml> | ||
+ | < | ||
+ | <model type=' | ||
+ | <mac address=' | ||
+ | <source bridge=' | ||
+ | <target dev=' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Il tipo **ne2k_pci** offre alla macchina guest una Ethernet PCI compatibile NE2000, per la precisione una **Realtek RTL-8029(AS)**. L'ID PCI in realtà è **1af4: | ||
+ | |||
+ | Per avere **due o più schede** Ethernet è sufficiente aggiungere altre sezioni **%%< | ||
===== Troubleshooting ===== | ===== Troubleshooting ===== | ||
Line 65: | Line 235: | ||
===== Web References ===== | ===== Web References ===== | ||
- | * [[https:// | + | |
+ | * **[[https:// |
doc/appunti/linux/sa/qemu_kvm.txt · Last modified: 2022/11/09 10:14 by niccolo