Libvirt: Difference between revisions

Pigs (talk | contribs)
Configuration: Add default networking section and pci passthrough section
Phobos (talk | contribs)
m Updated Formating
Line 37: Line 37:
If you would like to enable nested virtualization for your guests to run KVM hypervisors inside them, you should enable it as follows:  {{nixos:option|boot.extraModprobeConfig}}, for example:
If you would like to enable nested virtualization for your guests to run KVM hypervisors inside them, you should enable it as follows:  {{nixos:option|boot.extraModprobeConfig}}, for example:


{{file|/etc/nixos/configuration.nix|xml|<nowiki>
{{file|||<nowiki>
boot.extraModprobeConfig = "options kvm_intel nested=1";
boot.extraModprobeConfig = "options kvm_intel nested=1";
</nowiki>}}
</nowiki>|name=/etc/nixos/configuration.nix|lang=nix}}


=== Networking ===
=== Networking ===
Line 45: Line 45:
==== Default networking ====
==== Default networking ====


To utilize the default libvirt network, you will need to install the {{nixos:package|dnsmasq}} package. This is required for DNS and DCHP functionality within the network.
To utilize the default libvirt network, you will need to install the {{nixos:package|dnsmasq}} package. This is required for DNS and DCHP functionality within the network:
 
{{File|3=environment.systemPackages = with pkgs; [
  dnsmasq
];|name=/etc/nixos/configuration.nix|lang=nix}}


Once the package is installed, enable and start the default network using the following commands:
Once the package is installed, enable and start the default network using the following commands:
Line 58: Line 62:
==== Bridge networking ====
==== Bridge networking ====


Create a XML file called <code>virbr0.xml</code> with the definition of the bridge interface
Create a XML file called <code>virbr0.xml</code> with the definition of the bridge interface.


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Line 68: Line 72:
</syntaxhighlight>
</syntaxhighlight>


Add and enable bridge interface
Add and enable bridge interface.


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Line 78: Line 82:
</syntaxhighlight>
</syntaxhighlight>


Edit the libvirt guest <code>my_guest</code> XML file and add the bridge interface to it
Edit the libvirt guest <code>my_guest</code> XML file and add the bridge interface to it.


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Line 84: Line 88:
</syntaxhighlight>
</syntaxhighlight>


Add
Add:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Line 99: Line 103:
</syntaxhighlight>
</syntaxhighlight>


Inside the guest configure networking for the interface <code>enp1s0</code> (name might differ)
Inside the guest configure networking for the interface <code>enp1s0</code> (name may differ).


{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
Line 118: Line 122:
=== File sharing ===
=== File sharing ===


In order to share files between host and guest, one recommended way of doing this is to use <code>spice-webdavd</code>.
In order to share files between host and guest, one recommended way is to use <code>spice-webdavd</code>.


Shutdown the client, in this example named <code>my_guest</code>, and edit the libvirt XML file.
Shutdown the client, in this example named <code>my_guest</code>, and edit the libvirt XML file.
Line 136: Line 140:
</syntaxhighlight>
</syntaxhighlight>


Start the guest machine. Inside the guest, add following part to your system configuration and apply it
Start the guest machine. Inside the guest, add following part to your system configuration and apply it.


{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
Line 142: Line 146:
</nowiki>}}
</nowiki>}}


List available shares for the guest
List available shares for the guest.


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Line 148: Line 152:
</syntaxhighlight>
</syntaxhighlight>


Mount an example share called <code>myshare</code> to the mountpoint <code>myshare</code>
Mount an example share called <code>myshare</code> to the mountpoint <code>myshare.</code>


{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>