% linux_configuration_08_virtualization.tex
% since Linux 6.19

% 8.Virtualization
\section{Virtualization \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_VIRTUALIZATION [=y] \textbf{[Y]}\\
Sagen Sie hier Y, um Optionen für die Verwendung Ihres Linux-Hosts zur Ausführung anderer Betriebssysteme in virtuellen Maschinen (Gäste) zu erhalten. 
Diese Option allein fügt keinen Kernel-Code hinzu.
Wenn Sie N sagen, werden alle Optionen in diesem Untermenü übersprungen und deaktiviert.
\english{Say Y here to get to see options for using your Linux host to run other operating systems inside virtual machines (guests).
This option alone does not add any kernel code.\\
If you say N, all options in this submenu will be skipped and disabled.}

%8.1
\subsection{Kernel-based Virtual Machine (KVM) support}
CONFIG\_KVM [=m] \textbf{[M]}\\
Unterstützung für das Hosten vollständig virtualisierter Gastmaschinen mit Hardware"=Virtualisierungserweiterungen.
Sie benötigen einen relativ aktuellen Prozessor mit Virtualisierungserweiterungen.
Außerdem müssen Sie eines oder mehrere der unten aufgeführten Prozessormodule auswählen.
Dieses Modul ermöglicht den Zugriff auf die Hardware-Funktionen über einen Geräteknoten namens \texttt{/dev/kvm}.
Um dies als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{kvm} heißen.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{Support hosting fully virtualized guest machines using hardware virtualization extensions.
You will need a fairly recent processor equipped with virtualization extensions.
You will also need to select one or more of the processor modules below.\\
This module provides access to the hardware capabilities through a character device node named /dev/kvm.\\
To compile this as a module, choose M here: the module will be called kvm.\\
If unsure, say N.}

\subsubsection{Compile KVM with -Werror}
CONFIG\_KVM\_WERROR [=y] \textbf{[Y]}\\
Fügen Sie \texttt{-Werror} zu den Build-Flags für KVM hinzu.\\
Wenn Sie Zweifel haben, sagen Sie N.
\english{Add -Werror to the build flags for KVM.\\
If in doubt, say ``N''.}

\subsubsection{Enable support for KVM software-protected VMs}
CONFIG\_KVM\_SW\_PROTECTED\_VM [=n] \textbf{[N]}\\
Aktivieren der Unterstützung für KVM-Software-geschützte VMs.
Derzeit sind softwaregeschützte VMs nur ein Entwicklungs- und Testvehikel für KVM\_CREATE\_GUEST\_MEMFD.
Der Versuch, eine \glqq echte\grqq{} VM-Arbeitslast als software-geschützte VM laufen zu lassen, wird kläglich scheitern.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{Enable support for KVM software-protected VMs.
Currently, software-protected VMs are purely a development and testing vehicle for KVM\_CREATE\_GUEST\_MEMFD.
Attempting to run a ``real'' VM workload as a software-protected VM will fail miserably.\\
If unsure, say ``N''.}

\subsubsection{KVM for Intel (and compatible) processors support}
CONFIG\_KVM\_INTEL [=m] \textbf{[M]}\\
Bietet Unterstützung für KVM auf Prozessoren, die mit Intels VT-Erweiterungen, auch bekannt als Virtual Machine Extensions (VMX), ausgestattet sind.
Um dies als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{kvm-intel} genannt.
\english{Provides support for KVM on processors equipped with Intel's VT extensions, a.k.a. Virtual Machine Extensions (VMX).\\
To compile this as a module, choose M here: the module will be called kvm-intel.}

\paragraph{Check that guests do not receive \#VE exceptions}\mbox{}\\
CONFIG\_KVM\_INTEL\_PROVE\_VE [=n] \textbf{[N]}\\
Überprüft, dass der KVM-Seitentabellen-Verwaltungscode Gäste nicht fälschlicherweise eine Virtualisierungsausnahme erhalten lässt.
Virtualisierungsausnahmen werden vom Hypervisor abgefangen und nicht in den Gast injiziert.\\
Hinweis: einige CPUs scheinen falsche EPT Violations \#VEs zu erzeugen, die KVMs WARN auslösen, insbesondere mit \texttt{eptad=0} und/oder verschachtelter Virtualisierung.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{Checks that KVM's page table management code will not incorrectly let guests receive a virtualization exception.
Virtualization exceptions will be trapped by the hypervisor rather than injected in the guest.\\
Note: some CPUs appear to generate spurious EPT Violations \#VEs that trigger KVM's WARN, in particular with eptad=0 and/or nested virtualization.\\
If unsure, say N.}

\paragraph{Software Guard eXtension (SGX) Virtualization}$~$\\
CONFIG\_X86\_SGX\_KVM [=y] \textbf{[Y]}\\
Ermöglicht KVM-Gästen, SGX-Enklaven zu erstellen.
Dies schließt die Unterstützung ein, \glqq rohen\grqq{}, nicht wiederverwendbaren Enklavenspeicher für Gäste über einen Geräteknoten, z.\,B. \texttt{/dev/sgx\_vepc}, freizugeben.
Wenn Sie unsicher sind, sagen Sie N.
\english{Enables KVM guests to create SGX enclaves.\\
This includes support to expose ``raw'' unreclaimable enclave memory to guests via a device node, e.g. /dev/sgx\_vepc.
If unsure, say N.}

%8.2
\subsection{KVM for AMD processors support}
CONFIG\_KVM\_AMD [=m] \textbf{[M]}\\
Bietet Unterstützung für KVM auf AND-Prozessoren, die mit den AMD-V (SVM)-Erweiterungen ausgestattet sind.
Um dies als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{kvm-amd} genannt.
\english{Provides support for KVM on AMD processors equipped with the AMD-V (SVM) extensions.\\
To compile this as a module, choose M here: the module will be called \texttt{kvm-amd}.}

\subsubsection{AMD Secure Encrypted Virtualization (SEV) support}
CONFIG\_KVM\_AMD\_SEV [=y] \textbf{[N]}\\
Bietet Unterstützung für das Starten verschlüsselter VMs, die die Technologien Secure Encrypted Virtualization (SEV), Secure Encrypted Virtualization with Encrypted State (SEV-ES) und Secure Encrypted Virtualization with Secure Nested Paging (SEV-SNP) auf AMD-Prozessoren verwenden.
\english{Provides support for launching encrypted VMs which use Secure Encrypted Virtualization (SEV), Secure Encrypted Virtualization with Encrypted State (SEV-ES), and Secure Encrypted Virtualization with Secure Nested Paging (SEV-SNP) technologies on AMD processors.}

%8.3
\subsection{I/O APIC, PIC, and PIT emulation \tiny{seit 6.17}}
CONFIG\_KVM\_IOAPIC [=y] \textbf{[Y]}\\
Bietet Unterstützung für KVM zur Emulation von I/O APIC, PIC und PIT, d. h. für eine vollständige APIC-Emulation im Kernel.
Wenn Sie sich nicht sicher sind, geben Sie Y ein.
\english{Provides support for KVM to emulate an I/O APIC, PIC, and PIT, i.e. for full in-kernel APIC emulation.\\
If unsure, say Y.}

%8.4
\subsection{System Management Mode emulation}
CONFIG\_KVM\_SMM [=y] \textbf{[Y]}\\
Bietet Unterstützung für KVM zur Emulation des Systemverwaltungsmodus (SMM) in virtuellen Maschinen.
Dies kann von der Firmware der virtuellen Maschine zur Implementierung des UEFI Secure Boot verwendet werden.\\
Wenn Sie unsicher sind, geben Sie Y ein.
\english{Provides support for KVM to emulate System Management Mode (SMM) in virtual machines.
This can be used by the virtual machine firmware to implement UEFI secure boot.\\
If unsure, say Y.}

%8.5
\subsection{Support for Microsoft Hyper-V emulation}
CONFIG\_KVM\_HYPERV [=y] \textbf{[Y]}\\
Bietet KVM-Unterstützung für die Emulation von Microsoft Hyper-V.
Dadurch kann KVM eine Teilmenge der paravirtualisierten Schnittstellen bereitstellen, die in der Hyper-V Hypervisor Top-Level Functional Specification (TLFS) definiert sind:\\
\url{https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs}\\
Diese Schnittstellen sind für das korrekte und leistungsfähige Funktionieren von Windows- und Hyper-V-Gästen auf KVM erforderlich.\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{Provides KVM support for emulating Microsoft Hyper-V.
This allows KVM to expose a subset of the paravirtualized interfaces defined in the Hyper-V Hypervisor Top-Level Functional Specification (TLFS):\\
\url{https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs}\\
These interfaces are required for the correct and performant functioning of Windows and Hyper-V guests on KVM.\\
If unsure, say ``Y''.}

%8.6
\subsection{Support for Xen hypercall interface}
CONFIG\_KVM\_XEN [=y] \textbf{[Y]}\\
Bietet KVM-Unterstützung für das Hosten von Xen HVM-Gästen und die Weitergabe von Xen-Hyperaufrufen an den Userspace.
Im Zweifelsfall sagen Sie N.
\english{Provides KVM support for the hosting Xen HVM guests and passing Xen hypercalls to userspace.\\
If in doubt, say ``N''.}

%8.7
\subsection{Prove KVM MMU correctness}
CONFIG\_KVM\_PROVE\_MMU [=n] \textbf{[N]}\\
Ermöglicht Laufzeit-Behauptungen in KVMs MMU, die zu kostspielig sind, um sie in irgendetwas zu aktivieren, das einer Produktionsumgebung auch nur im Entferntesten ähnelt, z.\,B. dieser Gates-Code, der verifiziert, dass eine freizugebende Seitentabelle keine vorhandenen SPTEs hat.\\
Im Zweifelsfall sagen Sie einfach N.
\english{Enables runtime assertions in KVM's MMU that are too costly to enable in anything remotely resembling a production environment, e.g. this gates code that verifies a to-be-freed page table doesn't have any present SPTEs.\\
If in doubt, say ``N''.}

%8.8 (minimum is 1024)
\subsection{Maximum number of vCPUs per KVM guest}
CONFIG\_KVM\_MAX\_NR\_VCPUS [=1024] \textbf{[1024]}\\
Range: [1024 4096]\\
Legt die maximale Anzahl von vCPUs pro KVM-Gast fest.
Größere Werte erhöhen den Speicherbedarf jedes KVM-Gasts, unabhängig davon, wie viele vCPUs für eine bestimmte VM erstellt werden.
\english{Set the maximum number of vCPUs per KVM guest.
Larger values will increase the memory footprint of each KVM guest, regardless of how many vCPUs are created for a given VM.}
