% linux_configuration_03_processor_type_and_features.tex
% since Linux 6.16
\section{Processor type and features \texorpdfstring{$\rightarrow$}{->}}
Prozessortyp und Eigenschaften

%3.1 Symmetric multi-processing support
\subsection{Symmetric multi-processing support}
CONFIG\_SMP [=y] \textbf{[Y]}\\
Dies ermöglicht die Unterstützung von Systemen mit mehr als einer CPU.
Wenn Sie ein System mit nur einer CPU haben, sagen Sie N.
Wenn Sie ein System mit mehr als einer CPU haben, sagen Sie Y.
Wenn Sie hier N angeben, läuft der Kernel auf Uni- und Multiprozessor"=Maschinen, verwendet aber nur eine CPU einer Multiprozessor"=Maschine.
Wenn Sie hier Y angeben, läuft der Kernel auf vielen, aber nicht auf allen Uniprozessor"=Maschinen.

Auf einer Uniprozessor"=Maschine läuft der Kernel schneller, wenn Sie hier N angeben.
Beachten Sie, dass der Kernel nicht auf 486er-Architekturen läuft, wenn Sie hier Y angeben und unter \glqq Prozessorfamilie\grqq{} die Architektur \glqq 586\grqq{} oder \glqq Pentium\grqq{} auswählen.

Ebenso funktionieren Multiprozessor"=Kernel für die \glqq PPro\grqq{}"=Architektur möglicherweise nicht auf allen Pentium"=basierten Boards.

Benutzer von Multiprozessor-Maschinen, die hier Y für \glqq Ja\grqq{} angeben, sollten auch \glqq Ja\grqq{} zu \glqq Enhanced Real Time Clock Support\grqq{} (siehe unten) sagen.
Der \glqq Advanced Power Management\grqq{}-Code wird deaktiviert, wenn Sie hier \glqq Y\grqq{} angeben.
Siehe auch $<$file:Documentation/arch/x86/i386/IO-APIC.rst$>$, $<$file:Documentation/admin-guide/lockup-watchdogs.rst$>$ und das SMP-HOWTO, verfügbar unter:\\
\url{http://www.tldp.org/docs.html\#howto}.\\
Wenn Sie nicht wissen, was Sie hier tun sollen, sagen Sie N.
\english{This enables support for systems with more than one CPU.
If you have a system with only one CPU, say N.
If you have a system with more than one CPU, say Y.\\
If you say N here, the kernel will run on uni- and multiprocessor machines, but will use only one CPU of a multiprocessor machine.
If you say Y here, the kernel will run on many, but not all, uniprocessor machines.
On a uniprocessor machine, the kernel will run faster if you say N here.\\
Note that if you say Y here and choose architecture ``586'' or ``Pentium''
under ``Processor family'', the kernel will not work on 486 architectures.
Similarly, multiprocessor kernels for the ``PPro'' architecture may not work on all Pentium based boards.\\
People using multiprocessor machines who say Y here should also say Y to ``Enhanced Real Time Clock Support'', below. The ``Advanced Power Management'' code will be disabled if you say Y here.\\
See also $<$file:Documentation/arch/x86/i386/IO-APIC.rst$>$,\\$<$file:Documentation/admin-guide/lockup-watchdogs.rst$>$ and\\the SMP-HOWTO \url{http://www.tldp.org/docs.html\#howto}.\\
If you don't know what to do here, say N.}
\note{Dies wäre nur auf kleinen Systemen mit einem Prozessorkern sinnvoll auf N zu stellen.
Üblicherweise sollte das auf Y bleiben.}

%3.2 former: Support x2apic
\subsection{x2APIC interrupt controller architecture support {\tiny seit 6.15}}
CONFIG\_X86\_X2APIC [=y] \textbf{[Y]}\\
x2APIC ist eine Interrupt-Controller-Architektur, von der eine Komponente (der lokale APIC) in der CPU vorhanden ist.
Sie ermöglicht einen schnelleren Zugriff auf den lokalen APIC und unterstützt eine größere Anzahl von CPUs im System als ihre Vorgänger.

x2APIC wurde in Intel-CPUs um 2008 und in AMD EPYC-CPUs 2019 eingeführt, kann aber im BIOS deaktiviert werden.
Er wird auch häufig in virtuellen Maschinen emuliert, selbst wenn die Host-CPU ihn nicht unterstützt.
Die Unterstützung in der CPU kann durch Ausführen von \texttt{grep x2apic /proc/cpuinfo} überprüft werden.

Wenn diese Konfigurationsoption deaktiviert ist, bootet der Kernel auf einigen Plattformen, auf denen x2APIC aktiviert ist, mit stark eingeschränkter Funktionalität und Leistung.
Andererseits wird ein Kernel mit aktivierter Option auf Hardware, die x2APIC nicht unterstützt, einfach auf ältere APIC-Implementierungen zurückgreifen.

Im Zweifelsfall sagen Sie Y.
\english{x2APIC is an interrupt controller architecture, a component of which (the local APIC) is present in the CPU.
It allows faster access to the local APIC and supports a larger number of CPUs in the system than the predecessors.\\
x2APIC was introduced in Intel CPUs around 2008 and in AMD EPYC CPUs in 2019, but it can be disabled by the BIOS.
It is also frequently emulated in virtual machines, even when the host CPU does not support it.
Support in the CPU can be checked by executing \texttt{grep x2apic /proc/cpuinfo}\\
If this configuration option is disabled, the kernel will boot with very reduced functionality and performance on some platforms that have x2APIC enabled.
On the other hand, on hardware that does not support x2APIC, a kernel with this option enabled will just fallback to older APIC implementations.\\
If in doubt, say Y.}
\note{Sollte unterstützt werden, kann innerhalb von menuconfig gar nicht deaktiviert werden.}

%3.3 Enable MSI and MSI-X delivery by posted interrupts
\subsection{Enable MSI and MSI-x delivery by posted interrupts {\tiny seit 6.10}}
CONFIG\_X86\_POSTED\_MSI \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Dadurch können MSIs, die unter Interrupt-Remapping stehen, als gebuchte Interrupts an den Host-Kernel übermittelt werden.
Der Unterbrechungsdurchsatz kann potenziell verbessert werden, indem CPU-Benachrichtigungen während hochfrequenter Bursts zusammengefasst werden.\\
Wenn Sie nicht wissen, was Sie hier tun sollen, sagen Sie N.
\english{This enables MSIs that are under interrupt remapping to be delivered as posted interrupts to the host kernel.
Interrupt throughput can potentially be improved by coalescing CPU notifications during high frequency bursts.\\
If you don't know what to do here, say N.}
\note{Wenn Sie einen High-End-Server mit einer sehr hohen Last haben, sollten Sie dies aktivieren.
Für einen Desktop brauchen wir das nicht -- es wäre kontraproduktiv.
Kernel-Entwickler Thomas Gleixner sagt hier auf \href{https://www.phoronix.com/news/Linux-6.10-Posted-Interrupts}{phoronix, Linux 6.10}:
\glqq{}Da dies nur für High-End-Server mit mehreren angeschlossenen Geräte-Warteschlangen pro CPU relevant ist und kontraproduktiv für Situationen, in denen Interrupts zu unterschiedlichen Zeiten ankommen [...]\grqq
}

%3.4 Enable MPS table
\subsection{Enable MPS table}
CONFIG\_X86\_MPPARSE \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Für alte smp-Systeme, die keine richtige acpi-Unterstützung haben. Neuere Systeme (insbesondere mit \qty{64}{\bit}-CPUs) mit acpi-Unterstützung, werden von MADT und DSDT überschrieben.
\english{For old smp systems that do not have proper acpi support.
Newer systems (esp with 64bit cpus) with acpi support, MADT and DSDT will override it}
\note{Wir haben $\geq\qty{64}{\bit}$-CPUs, die alle acpi-Unterstützung beinhalten, kann auch mit \texttt{lscpu} überprüft werden.}

%3.5 x86 CPU resource control support
\subsection{x86 CPU resource control support}
CONFIG\_X86\_CPU\_RESCTRL [=y] \textbf{[Y]}\\
Aktivieren Sie die Unterstützung der x86-CPU-Ressourcensteuerung. Unterstützung für die Zuweisung und Überwachung der Nutzung von Systemressourcen durch die CPU.
Intel nennt dies Intel Resource Director Technology (Intel(R) RDT).
Weitere Informationen über RDT finden Sie im Intel x86 Architecture Software Developer Manual.
AMD bezeichnet dies als AMD Platform Quality of Service (AMD QoS).\\
Weitere Informationen über AMD QoS finden Sie im Handbuch AMD64 Technology Platform Quality of Service Extensions.\\
Sagen Sie N, wenn Sie unsicher sind.
\english{Enable x86 CPU resource control support.\\
Provide support for the allocation and monitoring of system resources usage by the CPU.\\[.5em]
Intel calls this Intel Resource Director Technology (Intel(R) RDT).
More information about RDT can be found in the Intel x86 Architecture Software Developer Manual.\\[.5em]
AMD calls this AMD Platform Quality of Service (AMD QoS).
More information about AMD QoS can be found in the AMD64 Technology Platform Quality of Service Extensions manual.\\[.5em]
Say N if unsure.}
\note{Wir sind uns noch unsicher!}

%3.6 Flexible Return and Event Delivery, seit v6.9
\subsection{Flexible Return and Event Delivery {\tiny seit 6.9}}
CONFIG\_X86\_FRED [=Y] \textbf{[Y]}\\
Wenn diese Funktion aktiviert ist, sollten Sie versuchen, Flexible Return and Event Delivery anstelle der alten SYSCALL/SYSENTER/IDT-Architektur für Ringübergänge und Ausnahme- bzw. Unterbrechungsbehandlung zu verwenden, sofern das System dies unterstützt.
\english{When enabled, try to use Flexible Return and Event Delivery instead of the legacy SYSCALL/SYS\-ENTER/IDT architecture for ring transitions and exception/interrupt handling if the system supports.}

%3.7 Support for extended (non-PC) x86 platforms
\subsection{Support for extended (non-PC) x86 platforms}
CONFIG\_X86\_EXTENDED\_PLATFORM [=n] \textbf{[N]}\\
Wenn Sie diese Option deaktivieren, unterstützt der Kernel nur Standard-PC-Plattformen (was die große Mehrheit der Systeme da draußen abdeckt).
Wenn Sie diese Option aktivieren, können Sie die Unterstützung für die folgenden (nicht-PC) x86-Plattformen auswählen:\\[.5em]
32-Bit-Plattformen (CONFIG\_64BIT=n):
\begin{itemize}
	\item Goldfish (Android-Emulator)
	\item Intel CE media processor (CE4100) SoC
	\item Intel Quark
	%	\item AMD Elan
	\item RDC R-321x SoC
%	\item SGI 320/540 (Visuelle Arbeitsstation)
%	\item STA2X11-based (z.\,B. Northville)
%	\item Moorestown MID-Geräte
\end{itemize}
64-bit platforms (CONFIG\_64BIT=y):
\begin{itemize}
	\item Numascale NumaChip
	\item ScaleMP vSMP
	\item SGI Ultraviolet
	\item Merrifield/Moorefield MID devices
	\item Goldfish (mostly Android emulator)
\end{itemize}
Wenn Sie eines dieser Systeme haben, oder wenn Sie einen generischen Distributionskernel bauen wollen, geben Sie hier Y an -- andernfalls sagen Sie N.
\english{If you disable this option then the kernel will only support standard PC platforms.
(which covers the vast majority of systems out there.)\\[.5em]
If you enable this option then you'll be able to select support for the following non-PC x86 platforms, depending on the value of CONFIG\_64BIT.\\[.5em]
32-bit platforms (CONFIG\_64BIT=n):
\begin{itemize}
\item Goldfish (Android emulator)
%\item AMD Elan
\item Intel CE media processor (CE4100) SoC
\item Intel Quark
\item RDC R-321x SoC
%\item SGI 320/540 (Visual Workstation)
%\item STA2X11-based (e.g. Northville)
%\item Moorestown MID devices
\end{itemize}
64-bit platforms (CONFIG\_64BIT=y):
\begin{itemize}
\item Numascale NumaChip
\item ScaleMP vSMP
\item SGI Ultraviolet
\item Merrifield/Moorefield MID devices
\item Goldfish (mostly Android emulator)
\end{itemize}
If you have one of these systems, or if you want to build a generic distribution kernel, say Y here -- otherwise say N.}

%3.8 Intel Low Power Subsystem Support
\subsection{Intel Low Power Subsystem Support}
CONFIG\_X86\_INTEL\_LPSS [=y] \textbf{[Y]}\\
Wählen Sie diese Option, um Unterstützung für das Intel Low Power Subsystem zu erstellen, wie es auf dem Intel Lynxpoint PCH zu finden ist.
Die Auswahl dieser Option ermöglicht Dinge wie Clock Tree (Common Clock Framework) und Pincontrol, die von den LPSS"=Peripherietreibern benötigt werden.
\english{Select to build support for Intel Low Power Subsystem such as found on Intel Lynxpoint PCH.
Selecting this option enables things like clock tree (common clock framework) and pincontrol which are needed by the LPSS peripheral drivers.}

%3.9 AMD ACPI2Platform devices support
\subsection{AMD ACPI2Platform devices support}
CONFIG\_X86\_AMD\_PLATFORM\_DEVICE \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Wählen Sie diese Option, um AMD-spezifische ACPI-Geräte wie I2C, UART, GPIO, die auf AMD Carrizo und späteren Chipsätzen zu finden sind, als Plattformgeräte zu interpretieren.
I2C und UART hängen von COMMON\_CLK ab, um den Takt zu setzen.
Der GPIO-Treiber ist im PINCTRL-Subsystem implementiert.
\english{Select to interpret AMD specific ACPI device to platform device such as I2C, UART, GPIO found on AMD Carrizo and later chipsets.
I2C and UART depend on COMMON\_CLK to set clock.
GPIO driver is implemented under PINCTRL subsystem.}
\note{Wir haben einen Intel-Prozessor, deshalb können wir diesen Punkt mit N abwählen.}

%3.10 Intel SoC IOSF Sideband support for SoC platforms
\subsection{Intel SoC IOSF Sideband support for SoC platforms}
CONFIG\_IOSF\_MBI
%\colorbox{yellow!80}
{[=y] \textbf{[Y]}}\\
Diese Option aktiviert die Unterstützung des Seitenband-Registerzugriffs für Intel SoC-Plattformen.
Auf diesen Plattformen wird das IOSF-Seitenband anstelle von MSRs für einige Registerzugriffe verwendet, vor allem, aber nicht ausschließlich, für thermische und Stromversorgungs-Register.
Treiber können die Verfügbarkeit dieser Geräte abfragen, um festzustellen, ob sie das Seitenband benötigen, um auf diesen Plattformen zu funktionieren.
Das Seitenband ist auf den folgenden SoC-Produkten verfügbar.
\begin{itemize}
	\item BayTrail
	\item Braswell
	\item Quark
\end{itemize}
Sie sollten Y sagen, wenn Sie einen Kernel auf einem dieser SoCs ausführen.
\english{This option enables sideband register access support for Intel SoC platforms.
On these platforms the IOSF sideband is used in lieu of MSR's for some register accesses, mostly but not limited to thermal and power.
Drivers may query the availability of this device to determine if they need the sideband in order to work on these platforms.
The sideband is available on the following SoC products.
This list is not meant to be exclusive.
\begin{itemize}
\item BayTrail
\item Braswell
\item Quark
\end{itemize}
You should say Y if you are running a kernel on one of these SoC's.}
\note{Nur wenn der Kernel auf Intel-Systemen mit Quark SoC X1000 host Bridge, Atom Processor Z36xxx/Z37xxx Series SoC,\\Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SoC laufen soll, dann Y.\\
Wenn Intel Low Power Subsystem CONFIG\_X86\_INTEL\_LPSS eingeschaltet ist, dann kann man dies nicht deaktivieren.}

%3.10.1 Enable IOSF sideband access through debugfs
\subsubsection{Enable IOSF sideband access through debugfs}
CONFIG\_IOSF\_MBI\_DEBUG [=n] \textbf{[N]}\\
Wählen Sie diese Option, um die IOSF-Seitenband-Zugriffsregister (MCR, MDR, MCRX) über debugfs freizugeben, um Registerinformationen von verschiedenen Einheiten auf dem SoC zu schreiben und zu lesen.
Dies ist sehr nützlich, um Informationen über den Gerätezustand für Debugging und Analyse zu erhalten.
Da es sich um einen allgemeinen Zugriffsmechanismus handelt, müssen die Benutzer dieser Option das Gerät, auf das sie zugreifen wollen, genau kennen.\\
Wenn Sie die Option nicht benötigen oder im Zweifel sind, sagen Sie N.
\english{Select this option to expose the IOSF sideband access registers (MCR, MDR, MCRX) through debugfs to write and read register information from different units on the SoC.
This is most useful for obtaining device state information for debug and analysis.
As this is a general access mechanism, users of this option would have specific knowledge of the device they want to access.\\
If you don't require the option or are in doubt, say N.}

%3.11 Single-depth WCHAN output
\subsection{Single-depth WCHAN output}
CONFIG\_SHED\_OMIT\_FRAME\_POINTER [=y] \textbf{[Y]}\\
Berechne einfachere /proc/$<$PID$>$/wchan-Werte. Wenn diese Option deaktiviert ist, werden die wchan-Werte zur aufrufenden Funktion zurückgeführt.
Dies liefert genauere wchan-Werte, allerdings auf Kosten eines etwas größeren Planungsaufwands (scheduling overhead).\\
Im Zweifelsfall sagen Sie \glqq Y\grqq{}.
\english{Calculate simpler /proc/$<$PID$>$/wchan values.
If this option is disabled then wchan values will recurse back to the caller function.
This provides more accurate wchan values, at the expense of slightly more scheduling overhead.\\
If in doubt, say ``Y''.}

%3.12 Linux guest support
\subsection{Linux guest support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_HYPERVISOR\_GUEST \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Geben Sie hier Y ein, um Optionen für die Ausführung von Linux unter verschiedenen Hypervisoren zu aktivieren.
Diese Option aktiviert die grundlegende Hypervisor-Erkennung und die Einrichtung der Plattform.
Wenn Sie N sagen, werden alle Optionen in diesem Untermenü übersprungen und deaktiviert, und die Linux-Gastunterstützung wird nicht eingebaut.
\english{Say Y here to enable options for running Linux under various hypervisors.
This option enables basic hypervisor detection and platform setup.\\
If you say N, all options in this submenu will be skipped and disabled, and Linux guest support won't be built in.}
\note{Wir können dies abschalten, ein N eingeben, wenn dieser Kernel auf einem Bare-Metal-Gerät läuft.}

\subsubsection{Enable paravirtualization code}
CONFIG\_PARAVIRT [=y] \textbf{[Y]}\\
Der Kernel wird so verändert, dass er sich selbst modifizieren kann, wenn er unter einem Hypervisor ausgeführt wird, was die Leistung gegenüber einer vollständigen Virtualisierung erheblich verbessern kann.
Wenn der Kernel jedoch ohne Hypervisor ausgeführt wird, ist er theoretisch langsamer und etwas größer.
\english{This changes the kernel so it can modify itself when it is run under a hypervisor, potentially improving performance significantly over full virtualization.
However, when run without a hypervisor the kernel is theoretically slower and slightly larger.}

\subsubsection{paravirt-ops debugging}
CONFIG\_PARAVIRT\_DEBUG [=n] \textbf{[N]}\\
Ermöglicht das Debuggen von paravirt\_ops Interna.
Insbesondere BUG, wenn eine paravirt\_op fehlt, wenn sie aufgerufen wird.
\english{Enable to debug paravirt\_ops internals. Specifically, BUG if a paravirt\_op is missing when it is called.}

\subsubsection{Paravirtualization layer for spinlocks}
CONFIG\_PARAVIRT\_SPINLOCKS [=y] \textbf{[Y]}\\
Paravirtualisierte Spinlocks ermöglichen es einem pvops-Backend, die Spinlock-Implementierung durch etwas Virtualisierungsfreundliches zu ersetzen (z.\,B. Blockieren der virtuellen CPU anstelle von Spinning).
Dies hat nur minimale Auswirkungen auf native Kernel und bringt einen deutlichen Leistungsvorteil für paravirtualisierte KVM/Xen-Kernel.\\
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit Y.
\english{Paravirtualized spinlocks allow a pvops backend to replace the spinlock implementation with something virtualization-friendly (for example, block the virtual CPU rather than spinning).\\
It has a minimal impact on native kernels and gives a nice performance benefit on paravirtualized KVM / Xen kernels.\\
If you are unsure how to answer this question, answer Y.}

\subsubsection{Xen guest support}
CONFIG\_XEN [=y] \textbf{[Y]}\\
Dies ist der Linux-Xen-Port. Wenn Sie dies aktivieren, kann der Kernel in einer paravirtualisierten Umgebung unter dem Xen-Hypervisor booten.
\english{This is the Linux Xen port.
Enabling this will allow the kernel to boot in a paravirtualized environment under the Xen hypervisor.}

\paragraph{Xen PV guest support}$~$\\
CONFIG\_XEN\_PV [=y] \textbf{[Y]}\\
Der Betrieb als Xen PV-Gast wird unterstützt.
\english{Support running as a Xen PV guest.}

\subparagraph{Limit Xen pv-domain memory to 512GB}$~$\\
CONFIG\_XEN\_512GB [=y] \textbf{[Y]}\\
Begrenzen der paravirtualisierten Benutzerdomänen auf \qty{512}{\giga\byte} RAM.
Die Xen-Tools und die Tools zur Analyse von Crash-Dumps unterstützen möglicherweise keine pv-Domänen mit mehr als \qty{512}{\giga\byte}~RAM.
Diese Option steuert die Standardeinstellung des Kernels, um nur bis zu \qty{512}{\giga\byte} oder mehr zu verwenden.
Es ist jederzeit möglich, die Standardeinstellung durch Angabe des Boot-Parameters \texttt{xen\_512gb\_limit} zu ändern.
\english{Limit paravirtualized user domains to 512GB of RAM.\\
The Xen tools and crash dump analysis tools might not support pv-domains with more than 512~GB of RAM.
This option controls the default setting of the kernel to use only up to 512~GB or more.
It is always possible to change the default via specifying the boot parameter ``xen\_512gb\_limit''.}

\paragraph{Xen PVHVM guest support}$~$\\
CONFIG\_XEN\_PVHVM\_GUEST [=y] \textbf{[Y]}\\
Der Betrieb als Xen PVHVM-Gast wird unterstützt.
\english{Support running as a Xen PVHVM guest.}

\paragraph{Enable Xen debug and tuning parameters in debugfs}$~$\\
CONFIG\_XEN\_DEBUG\_FS [=n] \textbf{[N]}\\
Aktivieren Sie die Statistikausgabe und verschiedene Tuning-Optionen in debugfs.
Das Aktivieren dieser Option kann zu einem erheblichen Leistungs-Overhead führen.
\english{Enable statistics output and various tuning options in debugfs.
Enabling this option may incur a significant performance overhead.}

\paragraph{Xen PVH guest support}$~$\\
CONFIG\_XEN\_PVH [=y] \textbf{[Y]}\\
Der Betrieb als Xen PVH-Gast wird unterstützt.
\english{Support for running as a Xen PVH guest.}

\subsubsection{Xen Dom0 support}
CONFIG\_XEN\_DOM0 [=y] \textbf{[Y]}\\
Der Betrieb als Xen Dom0-Gast wird unterstützt.
\english{Support running as a Xen Dom0 guest.}

\subsubsection{Always use safe MSR accesses in PV guests}
CONFIG\_XEN\_PV\_MSR\_SAFE [=y] \textbf{[Y]}\\
Verwenden Sie sichere (nicht fehlerhafte) MSR-Zugriffsfunktionen, auch wenn der MSR-Zugriff ohnehin nicht fehlerhaft sein sollte.
Der Standardwert kann mit dem Boot-Parameter \texttt{xen\_msr\_safe} geändert werden.
\english{Use safe (not faulting) MSR access functions even if the MSR access should not fault anyway.
The default can be changed by using the ``xen\_msr\_safe'' boot parameter.}

\subsubsection{KVM Guest support (including kvmclock)}
CONFIG\_KVM\_GUEST [=y] \textbf{[Y]}\\
Diese Option ermöglicht verschiedene Optimierungen für die Ausführung unter dem KVM-Hypervisor.
Sie beinhaltet eine paravirtualisierte Uhr, so dass der Host dem Gast eine Zeitinfrastruktur wie die Tageszeit und die Systemzeit zur Verfügung stellt, anstatt sich auf eine PIT-Emulation (oder wahrscheinlich eine andere) durch das zugrunde liegende Gerätemodell zu verlassen.
\english{This option enables various optimizations for running under the KVM hypervisor.
It includes a paravirtualized clock, so that instead of relying on a PIT (or probably other) emulation by the underlying device model, the host provides the guest with timing infrastructure such as time of day, and system time}

\subsubsection{Disable host haltpoll when loading haltpoll driver}
CONFIG\_ARCH\_CPUIDLE\_HALTPOLL [=y] \textbf{[Y]}\\
(Haltpoll des Hosts beim Laden des Haltpoll-Treibers deaktivieren)\\
Wenn Sie unter KVM virtualisieren, deaktiviert den haltpoll des Hosts.
\english{If virtualized under KVM, disable host haltpoll.}

\subsubsection{Support for running PVH guests}
CONFIG\_PVH [=y] \textbf{[Y]}\\
Diese Option aktiviert den PVH-Einstiegspunkt für virtuelle Gastmaschinen, wie in der x86/HVM Direct Boot ABI angegeben.
\english{This option enables the PVH entry point for guest virtual machines as specified in the x86/HVM direct boot ABI.}

\subsubsection{Paravirtual steal time accounting}
CONFIG\_PARAVIRT\_TIME\_ACCOUNTING [=y] \textbf{[Y]}\\
Wählen Sie diese Option aus, um die Berechnung der Zeit für das Stehlen von Aufgaben mit feiner Granularität zu aktivieren.
Die Zeit, die für die Ausführung anderer Aufgaben parallel zur aktuellen vCPU aufgewendet wird, ist von der vCPU-Leistung abgezogen.
Um dies zu berücksichtigen, kann es zu geringen Leistungseinbußen kommen.\\
Im Zweifelsfall geben Sie hier N an.
\english{Select this option to enable fine granularity task steal time accounting.
Time spent executing other tasks in parallel with the current vCPU is discounted from the vCPU power.
To account for that, there can be a small performance impact.\\
If in doubt, say N here.}

\subsubsection{Jailhouse non-root cell support}
CONFIG\_JAILHOUSE\_GUEST [=y] \textbf{[Y]}\\
Diese Option ermöglicht es, Linux als Gast in einer Jailhouse-Nicht-Root-Zelle auszuführen.
Sie können diese Option deaktiviert lassen, wenn Sie Jailhouse nur starten und Linux anschließend in der Root-Zelle ausführen möchten.
\english{This option allows to run Linux as guest in a Jailhouse non-root cell.
You can leave this option disabled if you only want to start Jailhouse and run Linux afterwards in the root cell.}

\subsubsection{ACRN Guest support}
CONFIG\_ACRN\_GUEST [=y] \textbf{[Y]}\\
Diese Option ermöglicht die Ausführung von Linux als Gast im ACRN-Hypervisor.
ACRN ist ein flexibler, leichtgewichtiger Referenz-Open-Source-Hypervisor, der mit Blick auf Echtzeit und Sicherheitskritik entwickelt wurde.
Er wurde für eingebettete IOT mit kleinem Platzbedarf und Echtzeitfunktionen entwickelt.
Weitere Einzelheiten finden Sie unter \url{https://projectacrn.org/}.
\english{This option allows to run Linux as guest in the ACRN hypervisor.
ACRN is a flexible, lightweight reference open-source hypervisor, built with real-time and safety-criticality in mind.
It is built for embedded IOT with small footprint and real-time features.
More details can be found in \url{https://projectacrn.org/}.}

\subsubsection{Intel TDX (Trust Domain Extensions) -- Guest Support}
CONFIG\_INTEL\_TDX\_GUEST [=y] \textbf{[Y]}\\
Unterstützung der Ausführung als Gast unter Intel TDX.\\
Ohne diese Unterstützung kann der Gastkernel nicht booten oder unter TDX laufen.
TDX umfasst Speicherverschlüsselungs- und Integritätsfunktionen, die die Vertraulichkeit und Integrität des Gastspeicherinhalts und des CPU-Status schützen.
TDX-Gäste sind vor einigen Angriffen durch den VMM geschützt.
\english{Support running as a guest under Intel TDX.
Without this support, the guest kernel can not boot or run under TDX.
TDX includes memory encryption and integrity capabilities which protect the confidentiality and integrity of guest memory contents and CPU state.
TDX guests are protected from some attacks from the VMM.}

%former 3.13
{\color{gray}
\subsection*{Processor family (Core 2/newer Xeon) \texorpdfstring{$\rightarrow$}{->}}
Dies ist der Prozessortyp Ihrer CPU. Diese Information wird für Optimierungszwecke verwendet.
Um einen Kernel zu kompilieren, der auf allen unterstützten x86-CPU-Typen laufen kann (wenn auch nicht optimal schnell), können Sie hier \glqq 486\grqq{} angeben.
Beachten Sie, dass der 386er nicht mehr unterstützt wird, dies schließt AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI 486DLC/DLC2, UMC 486SX-S und den NexGen Nx586 ein.
Der Kernel läuft nicht notwendigerweise auf älteren Architekturen als der von Ihnen gewählten, z.\,B. läuft ein Pentium-optimierter Kernel auf einem PPro, aber nicht unbedingt auf einem i486.

Hier sind die empfohlenen Einstellungen für höchste Geschwindigkeit:
\begin{itemize}
	\item \texttt{486} für den AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 oder SL/SLC/SLC2/SLC3/SX/SX2 und UMC U5D oder U5S.
	\item \texttt{586} für generische Pentium-CPUs, denen das TSC-Register (Zeitstempelzähler) fehlt.
	\item \texttt{Pentium-Classic} für den Intel Pentium.
	\item \texttt{Pentium-MMX} für den Intel Pentium MMX.
	\item \texttt{Pentium-Pro} für den Intel Pentium Pro.
	\item \texttt{Pentium-II} für den Intel Pentium II oder den Pre-Coppermine Celeron.
	\item \texttt{Pentium-III} für den Intel Pentium III oder Coppermine Celeron.
	\item \texttt{Pentium-4} für den Intel Pentium 4 oder den P4-basierten Celeron.
	\item \texttt{K6} für den AMD K6, K6-II und K6-III (auch bekannt als K6-3D).
	\item \texttt{Athlon} für die AMD K7-Familie (Athlon/Duron/Thunderbird).
	\item \texttt{Opteron/Athlon64/Hammer/K8} für alle K8 und neuere AMD-CPUs.
	\item \texttt{Crusoe} für die Transmeta Crusoe-Serie.
	\item \texttt{Efficeon} für die Transmeta Efficeon-Reihe.
	\item \texttt{Winchip-C6} für den ursprünglichen IDT-Winchip.
	\item \texttt{Winchip-2} für IDT-Winchips mit 3dNow! Fähigkeiten.
	\item \texttt{AMD Elan} für die 32-Bit AMD Elan Embedded CPU.
	\item \texttt{GeodeGX1} für Geode GX1 (Cyrix MediaGX).
	\item \texttt{Geode GX/LX} für AMD Geode GX und LX Prozessoren.
	\item \texttt{CyrixIII/VIA C3} für VIA Cyrix III oder VIA C3.
	\item \texttt{VIA C3-2} für VIA C3-2 "Nehemiah" (Modell 9 und höher).
	\item \texttt{VIA C7} für VIA C7.
	\item \texttt{Intel P4} für die Pentium 4/Netburst-Mikroarchitektur.
	\item \texttt{Core 2/newer Xeon} für alle Core2 und neueren Intel-CPUs.
	\item \texttt{Intel Atom} für die CPUs mit Atom-Mikroarchitektur.
	\item \texttt{Generic-x86-64} für einen Kernel, der auf jeder x86-64-CPU läuft.
\end{itemize}
Weitere Details finden Sie im Hilfetext der jeweiligen Option.
Wenn Sie nicht wissen, was Sie tun sollen, wählen Sie \texttt{486}.
%Derzeit (Kernelversion 6.6.x+) können Sie nur aus fünf auswählen:
\english{This is the processor type of your CPU.
This information is used for optimizing purposes.
In order to compile a kernel that can run on all supported x86 CPU types (albeit not optimally fast), you can specify ``486" here.\\
Note that the 386 is no longer supported, this includes AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI 486DLC/DLC2, UMC 486SX-S and the NexGen Nx586.\\
The kernel will not necessarily run on earlier architectures than the one you have chosen, e.g. a Pentium optimized kernel will run on a PPro, but not necessarily on a i486.\\
Here are the settings recommended for greatest speed:\\
``486'' for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.;
``586'' for generic Pentium CPUs lacking the TSC (time stamp counter) register.;
``Pentium-Classic'' for the Intel Pentium.; ``Pentium-MMX'' for the Intel Pentium MMX.;
``Pentium-Pro'' for the Intel Pentium Pro.; ``Pentium-II'' for the Intel Pentium II or pre-Coppermine Celeron.;
``Pentium-III'' for the Intel Pentium III or Coppermine Celeron.; ``Pentium-4'' for the Intel Pentium 4 or P4-based Celeron.;
``K6'' for the AMD K6, K6-II and K6-III (aka K6-3D).; ``Athlon'' for the AMD K7 family (Athlon/Duron/Thunderbird).;
``Opteron/Athlon64/Hammer/K8'' for all K8 and newer AMD CPUs.; ``Crusoe'' for the Transmeta Crusoe series.;
``Efficeon'' for the Transmeta Efficeon series.; ``Winchip-C6'' for original IDT Winchip.; ``Winchip-2'' for IDT Winchips with 3dNow! capabilities.;
``AMD Elan'' for the 32-bit AMD Elan embedded CPU.; ``GeodeGX1'' for Geode GX1 (Cyrix MediaGX).; ``Geode GX/LX'' For AMD Geode GX and LX processors.;
``CyrixIII/VIA C3'' for VIA Cyrix III or VIA C3.; ``VIA C3-2'' for VIA C3-2 ``Nehemiah'' (model 9 and above).;
``VIA C7'' for VIA C7.; ``Intel P4'' for the Pentium 4/Netburst microarchitecture.; ``Core 2/newer Xeon'' for all core2 and newer Intel CPUs.;
``Intel Atom'' for the Atom-microarchitecture CPUs.; ``Generic-x86-64'' for a kernel which runs on any x86-64 CPU.\\
See each option's help text for additional details.
If you don't know what to do, choose ``486''.}
}

{\color{gray}
\subsubsection*{Opteron/Athlon64/Hammer/K8 \tiny{bis 6.14}}
CONFIG\_MK8 [=n] \textbf{[N]}\\
Wählen Sie diese Option für einen Prozessor der AMD Opteron- oder Athlon64 Hammer"=Familie.
Ermöglicht die Verwendung einiger erweiterter Anweisungen und übergibt entsprechende Optimierungsflags an den GCC.
\english{Select this for an AMD Opteron or Athlon64 Hammer-family processor.
Enables use of some extended instructions, and passes appropriate optimization flags to GCC.}

\subsubsection*{Intel P4 / older Netburst based Xeon \tiny{bis 6.14}}
CONFIG\_MPSC [=n] \textbf{[N]}\\
Optimiert für Intel Pentium 4, Pentium D und ältere Nocona/Dempsey Xeon CPUs mit Intel 64bit, die mit x86-64 kompatibel sind.
Beachten Sie, dass die neuesten Xeons (Xeon 51xx und 53xx) nicht auf dem Netburst-Kern basieren und diese Option nicht verwenden sollten.\\
Sie können sie anhand des Feldes cpu family in /proc/cpuinfo unterscheiden.
Familie 15 ist ein älterer Xeon, Familie 6 ein neuerer.
\english{Optimize for Intel Pentium 4, Pentium D and older Nocona/Dempsey Xeon CPUs with Intel 64bit which is compatible with x86-64.
Note that the latest Xeons (Xeon 51xx and 53xx) are not based on the Netburst core and shouldn't use this option.
You can distinguish them using the cpu family field in /proc/cpuinfo.
Family 15 is an older Xeon, Family 6 a newer one.}

%3.13.3
\subsubsection*{Core 2/newer Xeon \tiny{bis 6.14}}
CONFIG\_MCORE2 \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
Wählen Sie dies für Intel Core 2 und neuere Core 2 Xeons (Xeon 51xx und 53xx) CPUs.\\
Sie können neuere von älteren Xeons anhand der CPU-Familie in /proc/cpuinfo unterscheiden.
Neuere haben 6 und ältere 15 (kein Tippfehler).
\english{Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and 53xx) CPUs.
You can distinguish newer from older Xeons by the CPU family in /proc/cpuinfo.
Newer ones have 6 and older ones 15 (not a typo)}
\note{Ein moderner i7 oder i5 Intel-Prozessor wird verwendet, deshalb Y für ein Ja.}
}

{\color{gray}
\subsubsection*{Intel Atom}
CONFIG\_MATOM [=n] \textbf{[N]}\\
Wählen Sie diese Option für die Intel Atom-Plattform. Intel Atom CPUs haben eine
In-Order-Pipelining-Architektur und können daher von entsprechend optimiertem Code profitieren.
Verwenden Sie einen aktuellen GCC mit spezieller Atom-Unterstützung, um die Vorteile dieser Option
voll ausschöpfen zu können.
\english{Select this for the Intel Atom platform.
Intel Atom CPUs have an in-order pipelining architecture and thus can benefit from accordingly optimized code.
Use a recent GCC with specific Atom support in order to fully benefit from selecting this option.}

\subsubsection*{Generic-x86-64}
CONFIG\_GENERIC\_CPU \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Allgemeine x86-64-CPU. Läuft gleich gut auf allen x86-64-CPUs.
\english{Generic x86-64 CPU.\\
Run equally well on all x86-64 CPUs.}
}

%3.13 Build and optimize for local/native CPU
\subsection{Build and optimize for local/native CPU \tiny{seit 6.16}}
CONFIG\_X86\_NATIVE\_CPU \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
Optimieren Sie das Kompilieren des Kernels für die aktuelle CPU.
Verwenden Sie diese Option, wenn Sie den Kernel für Ihren lokalen Rechner erstellen möchten.

Beachten Sie, dass ein solcher Kernel auf einem anderen x86"=Rechner möglicherweise nicht optimal funktioniert.
Wenn Sie sich nicht sicher sind, geben Sie N ein.
\english{Optimize for the current CPU used to compile the kernel.
Use this option if you intend to build the kernel for your local machine.\\
Note that such a kernel might not work optimally on a different x86 machine.
If unsure, say N.}

%3.14
\subsection{Supported processor vendors \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_SELECT \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
Damit können Sie auswählen, welchen x86-Hersteller-Support-Code Ihr Kernel enthalten soll.
\english{This lets you choose what x86 vendor support code your kernel will include.}

%3.15 former 3.14.1
\subsection{Support Intel processors}
CONFIG\_CPU\_SUP\_INTEL \colorbox{green!80}{[=y] \textbf{[Y]}}\\
Dies aktiviert die Erkennung, die Einstellungen und die Macken für Intel-Prozessoren\\
Sie müssen diese Option aktivieren, wenn Sie möchten, dass Ihr Kernel auf einer Intel-CPU läuft.
Wenn Sie diese Option bei anderen CPU-Typen deaktivieren, wird der Kernel ein wenig kleiner.
Das Deaktivieren dieser Option auf einer Intel-CPU kann dazu führen, dass der Kernel nicht mehr gebootet werden kann.\\
Wenn Sie unsicher sind, dann sagen Sie N.
\english{This enables detection, tunings and quirks for Intel processors\\
You need this enabled if you want your kernel to run on an Intel CPU.
Disabling this option on other types of CPUs makes the kernel a tiny bit smaller.
Disabling it on an Intel CPU might render the kernel unbootable.\\
If unsure, say N.}

%3.16 former 3.14.2
\subsection{Support AMD processors}
CONFIG\_CPU\_SUP\_AMD \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Dies ermöglicht die Erkennung, Abstimmung und Macken von AMD-Prozessoren.\\
Sie müssen diese Option aktivieren, wenn Sie möchten, dass Ihr Kernel auf einer AMD-CPU läuft.
Wenn Sie diese Option bei anderen CPU-Typen deaktivieren, wird der Kernel ein wenig kleiner.
Das Deaktivieren dieser Option auf einer AMD-CPU kann dazu führen, dass der Kernel nicht mehr gebootet werden kann.\\
Wenn Sie unsicher sind, dann sagen Sie N.
\english{This enables detection, tunings and quirks for AMD processors\\
You need this enabled if you want your kernel to run on an AMD CPU.
Disabling this option on other types of CPUs makes the kernel a tiny bit smaller.
Disabling it on an AMD CPU might render the kernel unbootable.\\
If unsure, say N.}
\note{Sie müssen zuerst den untenstehenden \glqq Support Hygon processor\grqq{} deaktivieren, um diese Einstellung zu tätigen.}

%3.17 former 3.14.3
\subsection{Support Hygon processors}
CONFIG\_CPU\_SUP\_HYGON \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Dies ermöglicht die Erkennung, Abstimmung und Macken von Hygon-Prozessoren.\\
Sie müssen diese Option aktivieren, wenn Sie möchten, dass Ihr Kernel auf einer Hygon-CPU läuft.
Wenn Sie diese Option bei anderen CPU-Typen deaktivieren, wird der Kernel ein wenig kleiner.
Das Deaktivieren dieser Option auf einer Hygon-CPU kann dazu führen, dass der Kernel nicht mehr gebootet werden kann.\\
Wenn Sie unsicher sind, dann sagen Sie N.
\english{This enables detection, tunings and quirks for Hygon processors\\
You need this enabled if you want your kernel to run on an Hygon CPU.
Disabling this option on other types of CPUs makes the kernel a tiny bit smaller.
Disabling it on an Hygon CPU might render the kernel unbootable.\\
If unsure, say N.}

%3.18 former 3.14.4
\subsection{Support Centaur processors}
CONFIG\_CPU\_SUP\_CENTAUR \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Dies ermöglicht die Erkennung, Abstimmung und Macken von Centaur-Prozessoren.\\
Sie müssen diese Option aktivieren, wenn Sie möchten, dass Ihr Kernel auf einer Centaur-CPU läuft.
Wenn Sie diese Option bei anderen CPU-Typen deaktivieren, wird der Kernel ein wenig kleiner.
Das Deaktivieren dieser Option auf einer Centaur-CPU kann dazu führen, dass der Kernel nicht mehr gebootet werden kann.\\
Wenn Sie unsicher sind, dann sagen Sie N.
\english{This enables detection, tunings and quirks for Centaur processors\\
You need this enabled if you want your kernel to run on a Centaur CPU.
Disabling this option on other types of CPUs makes the kernel a tiny bit smaller.
Disabling it on a Centaur CPU might render the kernel unbootable.\\
If unsure, say N.}

%3.19 former 3.14.5
\subsection{Support Zhaoxin processors}
CONFIG\_CPU\_SUP\_ZHAOXIN \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Dies ermöglicht die Erkennung, Abstimmung und Macken von Zhaoxin-Prozessoren.\\
Sie müssen diese Option aktivieren, wenn Sie möchten, dass Ihr Kernel auf einer Centaur-CPU läuft.
Wenn Sie diese Option bei anderen CPU-Typen deaktivieren, wird der Kernel ein wenig kleiner.
Das Deaktivieren dieser Option auf einer Zhaoxin-CPU kann dazu führen, dass der Kernel nicht mehr gebootet werden kann.\\
Wenn Sie unsicher sind, dann sagen Sie N.
\english{This enables detection, tunings and quirks for Zhaoxin processors\\
You need this enabled if you want your kernel to run on a Zhaoxin CPU.
Disabling this option on other types of CPUs makes the kernel a tiny bit smaller.
Disabling it on a Zhaoxin CPU might render the kernel unbootable.\\
If unsure, say N.}

%3.20
\subsection{Enable DMI scanning}
CONFIG\_DMI [=y] \textbf{[Y]}\\
Aktiviert das Scannen von DMI zur Erkennung von Gerätefehlern.
Geben Sie hier Y an, es sei denn, Sie haben sichergestellt, dass Ihr Setup nicht von Einträgen in der DMI-Blacklist betroffen ist.
Erforderlich für PNP-BIOS-Code.
\english{Enabled scanning of DMI to identify machine quirks.
Say Y here unless you have verified that your setup is not affected by entries in the DMI blacklist.
Required by PNP BIOS code.}

%3.21
\subsection{Old AMD GART IOMMU support}
CONFIG\_GART\_IOMMU [=n] \textbf{[N]}\\
Bietet einen Treiber für ältere AMD Athlon64/Opteron/Turion/Sempron GART basierte Hardware \mbox{IOMMUs} an.
Der GART unterstützt vollen DMA-Zugriff für Geräte mit 32-Bit"=Zugriffsbeschränkungen auf Systemen mit mehr als \qty{3}{\giga\byte}.
Dies wird normalerweise für USB, Sound, viele IDE/SATA-Chipsätze und einige andere Geräte benötigt.
Neuere Systeme haben in der Regel eine moderne AMD IOMMU, die über die Konfigurationsoption CONFIG\_AMD\_IOMMU=y unterstützt wird.
In normalen Konfigurationen ist dieser Treiber nur aktiv, wenn er benötigt wird:
Es sind mehr als \qty{3}{\giga\byte} Arbeitsspeicher vorhanden und das System enthält ein auf 32-Bit begrenztes Gerät.\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{Provides a driver for older AMD Athlon64/Opteron/Turion/Sempron GART based hardware IOMMUs.\\
The GART supports full DMA access for devices with 32-bit access limitations, on systems with more than 3~GB.\\
This is usually needed for USB, sound, many IDE/SATA chipsets and some other devices.\\
Newer systems typically have a modern AMD IOMMU, supported via the CONFIG\_AMD\_IOMMU=y config option.\\
In normal configurations this driver is only active when needed:
there's more than 3~GB of memory and the system contains a 32-bit limited device.\\
If unsure, say Y.}
\note{Dies ist nur sichtbar, wenn Support AMD processorts eingeschaltet ist.}

%3.22
\subsection{Enable Maximum number of SMP Processors and NUMA Nodes}
CONFIG\_MAXSMP \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Aktivieren der maximalen Anzahl von CPUs- und NUMA"=Knoten für diese Architektur.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{Enable maximum number of CPUS and NUMA Nodes for this architecture.\\
If unsure, say N.}

%3.23 Maximum number of CPUs
\subsection{Maximum number of CPUs}
CONFIG\_NR\_CPUS \colorbox{yellow!80}{[=320] \textbf{[8]}}\\
Hier können Sie die maximale Anzahl von CPUs angeben, die dieser Kernel unterstützen soll.
Wenn CPUMASK\_OFFSTACK aktiviert ist, ist der maximal unterstützte Wert \num{8192}, andernfalls ist der maximale Wert \num{512}.
Der kleinste sinnvolle Wert ist 2.
Dies dient lediglich dazu, Speicher zu sparen: jede unterstützte CPU fügt dem Kernel-Image etwa \qty{8}{\kilo\byte} hinzu.
\english{This allows you to specify the maximum number of CPUs which this kernel will support.
If CPUMASK\_OFFSTACK is enabled, the maximum supported value is 8192, otherwise the maximum value is 512.
The minimum value which makes sense is 2.\\
This is purely to save memory: each supported CPU adds about 8KB to the kernel image.}

%3.24 Cluster scheduler support
\subsection{Cluster scheduler support}
CONFIG\_SCHED\_CLUSTER \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Die Unterstützung des Cluster-Schedulers verbessert die Entscheidungsfindung des CPU-Schedulers beim Umgang mit Maschinen, die Cluster von CPUs haben.
Mit Cluster sind in der Regel mehrere CPUs gemeint, die eng beieinander liegen und sich Mid-Level-Caches, Last-Level-Cache-Tags oder interne Busse teilen.
\english{Cluster scheduler support improves the CPU scheduler's decision making when dealing with machines that have clusters of CPUs.
Cluster usually means a couple of CPUs which are placed closely by sharing mid-level caches, last-level cache tags or internal busses.}
\note{Da wir normalerweise keinen Cluster haben, hier N.}

%3.25 Multi-core scheduler support
\subsection{Multi-core scheduler support}
CONFIG\_SCHED\_MC [=y] \textbf{[Y]}\\
Die Unterstützung des Multi-Core-Schedulers verbessert die Entscheidungsfindung des CPU-Schedulers beim Umgang mit Multi-Core-CPU-Chips auf Kosten eines leicht erhöhten Overheads an einigen Stellen.\\
Wenn Sie unsicher sind, geben Sie hier N an.
\english{Multi-core scheduler support improves the CPU scheduler's decision making when dealing with multi-core CPU chips
at a cost of slightly increased overhead in some places.
If unsure say N here.}
\note{Y, alle modernen CPUs sind multicore.}

\subsubsection{CPU core priorities scheduler support}
CONFIG\_SCHED\_MC\_PRIO [=y] \textbf{[Y]}\\
Bei CPUs mit Intel Turbo-Boost-Max-Technik 3.0 wird die Reihenfolge der Kerne bei der Herstellung festgelegt, so dass bestimmte Kerne höhere Turbofrequenzen erreichen können (bei Single-Thread-Arbeitslasten) als andere.
Durch die Aktivierung dieser Kernel"=Funktion wird der Scheduler über die TBM3- (auch ITMT-) Prioritätsreihenfolge der CPU-Kerne informiert und passt die CPU-Auswahllogik des Schedulers entsprechend an, so dass eine höhere Gesamtsystemleistung erzielt werden kann.
Diese Funktion hat keine Auswirkungen auf CPUs ohne diese Funktion.\\
Wenn Sie unsicher sind, geben Sie hier Y an.
\english{Intel Turbo Boost Max Technology 3.0 enabled CPUs have a core ordering determined at manufacturing time, which allows certain cores to reach higher turbo frequencies (when running single threaded workloads) than others.\\
Enabling this kernel feature teaches the scheduler about the TBM3 (aka ITMT) priority order of the CPU cores and adjusts the scheduler's CPU selection logic accordingly, so that higher overall system performance can be achieved.\\
This feature will have no effect on CPUs without this feature.\\
If unsure say Y here.}

% 3.26 Reroute for broken boot IRQs
\subsection{Reroute for broken boot IRQs}
CONFIG\_X86\_REROUTE\_FOR\_BROKEN\_BOOT\_IRQS \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Diese Option ermöglicht eine Umgehung, die eine Quelle für unerwünschte Unterbrechungen behebt.
Dies wird empfohlen, wenn die Thread-Interrupt-Behandlung auf Systemen verwendet wird, bei denen die Erzeugung von überflüssigen \glqq Boot-Interrupts\grqq{} nicht deaktiviert werden kann.
Einige Chipsätze erzeugen einen Legacy-INTx-\glqq Boot-IRQ\grqq{}, wenn der IRQ-Eintrag im IO-APIC des Chipsatzes maskiert ist (wie es z.\,B. der RT-Kernel während der Interruptbehandlung tut).
Bei Chipsätzen, bei denen diese Boot-IRQ-Erzeugung nicht deaktiviert werden kann, wird durch diese Abhilfe die ursprüngliche IRQ-Leitung maskiert, so dass nur der entsprechende \glqq Boot-IRQ\grqq{} an die CPUs geliefert wird.
Die Problemumgehung weist den Kernel außerdem an, den IRQ-Handler auf der Boot-IRQ-Leitung einzurichten.
Auf diese Weise wird nur ein Interrupt an den Kernel geliefert.
Andernfalls kann der zweite Interrupt den Kernel dazu veranlassen, (lebenswichtige) Interrupt-Leitungen herunterzufahren.
Betrifft nur \glqq defekte\grqq{} Chipsätze.
Die gemeinsame Nutzung von Interrupts kann auf diesen Systemen erhöht werden.
\english{This option enables a workaround that fixes a source of spurious interrupts.
This is recommended when threaded interrupt handling is used on systems where the generation of superfluous ``boot interrupts'' cannot be disabled.\\
Some chipsets generate a legacy INTx ``boot IRQ'' when the IRQ entry in the chipset's IO-APIC is masked (as, e.g. the RT kernel does during interrupt handling).
On chipsets where this boot IRQ generation cannot be disabled, this workaround keeps the original IRQ line masked so that only the equivalent ``boot IRQ'' is delivered to the CPUs.
The workaround also tells the kernel to set up the IRQ handler on the boot IRQ line.
In this way only one interrupt is delivered to the kernel.
Otherwise the spurious second interrupt may cause the kernel to bring down (vital) interrupt lines.\\
Only affects ``broken'' chipsets. Interrupt sharing may be increased on these systems.}
\note{Sie können diese Option getrost ausschalten, wenn Sie folgendes nicht beim Hochfahren empfangen:\\
\texttt{irq X: nobody cared (try booting with \dq irqpoll\dq{} option)}\\
-- Abfrage mit: \texttt{sudo journalctl -b | grep cared}}

%3.27
\subsection{Machine Check / overheating reporting}
CONFIG\_X86\_MCE [=y] \textbf{[Y]}\\
(Maschinenprüfung / Überhitzungsmeldung)
Durch die Unterstützung von Machine Check kann der Prozessor den Kernel benachrichtigen, wenn er ein Problem feststellt (z.\,B. Überhitzung, Datenbeschädigung).
Welche Maßnahmen der Kernel ergreift, hängt von der Schwere des Problems ab und reicht von Warnmeldungen bis zum Anhalten des Rechners.
\english{Machine Check support allows the processor to notify the kernel if it detects a problem (e.g. overheating, data corruption).
The action the kernel takes depends on the severity of the problem, ranging from warning messages to halting the machine.}
\note{Sollte eingeschaltet sein, ansonsten könnte der Prozessor bei Überhitzung Schaden nehmen.}

\subsubsection{Support for deprecated /dev/mcelog character device}
CONFIG\_X86\_MCELOG\_LEGACY [=n] \textbf{[N]}\\
Aktivierung der Unterstützung für /dev/mcelog, die vom alten mcelog-Benutzerraum-Logging-Daemon(mcelog userspace logging daemon) benötigt wird.
Erwägen Sie den Umstieg auf die neue Generation des rasdaemon.
\english{Enable support for /dev/mcelog which is needed by the old mcelog userspace logging daemon.
Consider switching to the new generation rasdaemon solution.}

\subsubsection{Intel MCE features}
CONFIG\_X86\_MCE\_INTEL [=y] \textbf{[Y]}\\
Zusätzliche Unterstützung für Intel-spezifische MCE-Funktionen wie den Temperaturmonitor (thermal monitor).
\english{Additional support for intel specific MCE features such as the thermal monitor.}
\note{Einschalten für Intel-CPUs}

\subsubsection{AMD MCE features}
CONFIG\_X86\_MCE\_AMD \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Zusätzliche Unterstützung für AMD-spezifische MCE-Funktionen wie den DRAM-Fehlerschwellenwert (DRAM Error Threshold).
\english{Additional support for AMD specific MCE features such as the DRAM Error Threshold.}
\note{Einschalten für AMD-CPUs, da wir eine Intel-CPU haben, N.}

%3.28
\subsection{Machine check injector support}
CONFIG\_X86\_MCE\_INJECT \colorbox{yellow!80}{[=m] \textbf{[N]}}\\
Unterstützung bei der Einspeisung von Maschinenprüfungen zu Testzwecken.
Wenn Sie nicht wissen, was eine Maschinenprüfung ist und Sie keine Kernel-Qualitätssicherung durchführen, können Sie mit Sicherheit N sagen, also nein.
\english{Provide support for injecting machine checks for testing purposes.
If you don't know what a machine check is and you don't do kernel QA it is safe to say n.}
\note{Das ist nur für Entwickler interessant, wir können anstatt ein Modul zu generieren N für Nein sagen.}

%3.29
\subsection{Performance monitoring \texorpdfstring{$\rightarrow$}{->}}
\textit{Leistungsüberwachung}

%3.29.1
\subsubsection{Intel uncore performance events}
CONFIG\_PERF\_EVENTS\_INTEL\_UNCORE \colorbox{yellow!80}{[=m] \textbf{[N]}}\\
Unterstützung für Intel-Uncore"=Leistungsereignisse.
Diese sind auf NehalemEX und moderneren Prozessoren verfügbar.
\english{Include support for Intel uncore performance events.
These are available on NehalemEX and more modern processors.}
\note{Das war auf [m] für Modul-Kompilat eingestellt, wir kümmern uns nicht darum und wählen N für ein Nein.}

%3.29.2
\subsubsection{Intel/AMD rapl performance events}
CONFIG\_PERF\_EVENTS\_INTEL\_RAPL \colorbox{yellow!80}{[=m] \textbf{[N]}}\\
Unterstützung für Intel- und AMD-RAPL"=Leistungsereignisse zur Leistungsüberwachung auf modernen Prozessoren.
\english{Include support for Intel and AMD rapl performance events for power monitoring on modern processors.}
\note{Das war auf [m] für Modul-Kompilat eingestellt, wir kümmern uns nicht darum und wählen N für ein Nein.}

%3.29.3
\subsubsection{Intel cstate performance events}
CONFIG\_PERF\_EVENTS\_INTEL\_CSTATE \colorbox{yellow!80}{[=m] \textbf{[N]}}\\
Einbeziehung der Unterstützung für Intel cstate performance events für die Leistungsüberwachung auf modernen Prozessoren.
\english{Include support for Intel cstate performance events for power monitoring on modern processors.}
\note{Das war auf [m] für Modul-Kompilat eingestellt, wir kümmern uns nicht darum und wählen N für ein Nein.}

%3.29.4
\subsubsection{AMD Processor Power Reporting Mechanism}
CONFIG\_PERF\_EVENTS\_AMD\_POWER [=m] \textbf{[M]}\\
Unterstützung von Stromversorgungsberichten für AMD-Prozessoren.\\
Derzeit wird die Schnittstelle X86\_FEATURE\_ACC\_POWER (CPUID Fn8000\_0007\_EDX[12]) genutzt, um den durchschnittlichen Stromverbrauch von Prozessoren der Familie 15h zu berechnen.
\english{Provide power reporting mechanism support for AMD processors.\\
Currently, it leverages X86\_FEATURE\_ACC\_POWER (CPUID Fn8000\_0007\_EDX[12]) interface to calculate the average power consumption on Family 15h processors.}

%3.29.5
\subsubsection{AMD Uncore performance events}
CONFIG\_PERF\_EVENTS\_AMD\_UNCORE [=m] \textbf{[M]}\\
Unterstützung für AMD-Uncore-Leistungsereignisse für die Verwendung mit z.\,B.\\ \texttt{perf stat -e amd\_l3/\dots/,amd\_df/\dots/}.\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{amd-uncore} genannt.
\english{Include support for AMD uncore performance events for use with e.g., perf stat -e amd\_l3/.../,amd\_df/.../.\\
To compile this driver as a module, choose M here: the module will be called `amd-uncore'.}

%3.29.6
\subsubsection{AMD Zen3 Branch Sampling support}
CONFIG\_PERF\_EVENTS\_AMD\_BRS [=y] \textbf{[Y]}\\
Aktivieren Sie die AMD Zen3 Branch Sampling-Unterstützung (BRS), die bis zu 16 aufeinanderfolgende Verzweigungen in Registern erfasst.
\english{Enable AMD Zen3 branch sampling support (BRS) which samples up to 16~consecutive taken branches in registers.}

%3.30 Enable support for 16-bit segments
\subsection{Enable support for 16-bit segments}
CONFIG\_X86\_16BIT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Diese Option wird von Programmen wie Wine benötigt, um 16-Bit-Legacy-Code im geschützten Modus auf x86-Prozessoren auszuführen.
Die Deaktivierung dieser Option spart etwa 300 Bytes auf i386, oder etwa 6K Text plus 16K Laufzeitspeicher auf x86-64.
\english{This option is required by programs like Wine to run 16-bit protected mode legacy code on x86 processors.
Disabling this option saves about 300 bytes on i386, or around 6K text plus 16K runtime memory on x86-64,}
\note{Selbst benötige ich keine 16-bit Windows-Programme (Spiele) mehr, deshalb N für Nein.}

%3.31 Enable vsyscall emulation
\subsection{Enable vsyscall emulation}
CONFIG\_X86\_VSYSCALL\_EMULATION \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Dies aktiviert die Emulation der alten vsyscall-Seite.
Die Deaktivierung entspricht in etwa dem Booten mit \texttt{vsyscall=none}, mit der Ausnahme, dass damit auch die hilfreiche die hilfreiche Warnung deaktiviert wird, wenn ein Programm versucht, einen vsyscall zu verwenden.
Wenn diese Option auf N gesetzt ist, werden angreifende Programme einfach segfault, und geben Adressen der Form \texttt{0xffffffffff600?00} an.
Diese Option wird von vielen Programmen benötigt, die vor 2013 gebaut wurden, und auch bei neueren Programmen sollte man vorsichtig sein, wenn sie auf N gesetzt ist.
Die Deaktivierung dieser Option spart etwa \qty{7}{\kilo\byte} an Kernelgröße und möglicherweise \qty{4}{\kilo\byte} an zusätzlichem Laufzeit"=Seitentabellenspeicher ein.
\english{This enables emulation of the legacy vsyscall page.
Disabling it is roughly equivalent to booting with vsyscall=none, except that it will also disable the helpful warning if a program tries to use a vsyscall.
With this option set to N, offending programs will just segfault, citing addresses of the form 0xffffffffff600?00.\\
This option is required by many programs built before 2013, and care should be used even with newer programs if set to N.\\
Disabling this option saves about 7K of kernel size and possibly 4K of additional runtime pagetable memory.}

%3.32 IOPERM and IOPL Emulation
\subsection{IOPERM and IOPL Emulation}
CONFIG\_X86\_IOPL\_IOPERM [=y] \textbf{[Y]}\\
Dies ermöglicht die ioperm()- und iopl()-Systemaufrufe, die für Legacy-Anwendungen erforderlich sind.
Bei der Legacy-IOPL-Unterstützung handelt es sich um einen weitreichenden Mechanismus, der es dem Userspace ermöglicht, neben dem Zugriff auf alle \num{65536} E/A-Ports auch Interrupts zu deaktivieren.
Um diesen Zugriff zu erhalten, benötigt der Aufrufer CAP\_SYS\_RAWIO-Fähigkeiten und die Erlaubnis von potenziell aktiven Sicherheitsmodulen.
Die Emulation schränkt die Funktionalität des Syscalls auf den Zugriff auf alle E/A-Ports ein, verhindert aber die Möglichkeit, Interrupts aus dem Userspace zu deaktivieren, was bei Verwendung des Hardware-IOPL-Mechanismus möglich wäre.
\english{This enables the ioperm() and iopl() syscalls which are necessary for legacy applications.\\
Legacy IOPL support is an overbroad mechanism which allows user space aside of accessing all {65536}~I/O ports also to disable interrupts.
To gain this access the caller needs CAP\_SYS\_RAWIO capabilities and permission from potentially active security modules.\\
The emulation restricts the functionality of the syscall to only allowing the full range I/O port access, but prevents the ability to disable interrupts from user space which would be granted if the hardware IOPL mechanism would be used.}
\note{Wir könnten diese Emulation versuchen auszuschalten, ist aber ein Sicherheitsrisiko.}

%3.33
\subsection{Late microcode loading (DANGEROUS)}
CONFIG\_MICROCODE\_LATE\_LOADING [=n] \textbf{[N]}\\
Das späte Laden von Mikrocode, wenn das System hochgefahren ist und Befehle ausführt, ist eine heikle Angelegenheit und sollte nach Möglichkeit vermieden werden.
Allein schon die Synchronisierung aller Kerne und SMT-Threads ist ein heikler Vorgang, der nicht garantiert, dass die Kerne nach dem Laden nicht in einen Softlock geraten.
Verwenden Sie diese Funktion daher auf eigene Gefahr. Das späte Laden beeinträchtigt den Kernel, es sei denn, der Mikrocode-Header gibt an, dass das späte Laden durch die minimale Revisionsprüfung sicher ist.
Diese minimale Revisionsprüfung kann in der Kernel-Befehlszeile mit \glqq microcode.minrev=Y\grqq{} erzwungen werden.
\english{Loading microcode late, when the system is up and executing instructions is a tricky business and should be avoided if possible.
Just the sequence of synchronizing all cores and SMT threads is one fragile dance which does not guarantee that cores might not softlock after the loading.
Therefore, use this at your own risk.
Late loading taints the kernel unless the microcode header indicates that it is safe for late loading via the minimal revision check.
This minimal revision check can be enforced on the kernel command line with ``microcode.minrev=Y''.}

%3.34
\subsection{/dev/cpu/*/msr -- Model-specific register support}
CONFIG\_X86\_MSR [=y] \textbf{[Y]}\\
Dieses Gerät ermöglicht privilegierten Prozessen Zugriff auf die modellspezifischen x86-Register (MSRs).\\
Es handelt sich um ein Zeichengerät mit Major 202 und Minors 0 bis 31 für \texttt{/dev/cpu/0/msr} bis \texttt{/dev/cpu/31/msr}.
MSR-Zugriffe sind bei Multiprozessorsystemen an eine bestimmte CPU gerichtet.
\english{This device gives privileged processes access to the x86 Model-Specific Registers (MSRs).
It is a character device with major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
MSR accesses are directed to a specific CPU on multi-processor systems.}

%3.35
\subsection{/dev/cpu/*/cpuid - CPU information support}
CONFIG\_X86\_CPUID [=y] \textbf{[Y]}\\
Dieses Gerät ermöglicht Prozessen den Zugriff auf den x86 CPUID-Befehl, der auf einem bestimmten Prozessor ausgeführt werden soll.
Es handelt sich um ein Zeichengerät mit Major 203 und Minors 0 bis 31 für \texttt{/dev/cpu/0/cpuid} bis \texttt{/dev/cpu/31/cpuid}.
\english{This device gives processes access to the x86 CPUID instruction to be executed on a specific processor.
It is a character device with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to /dev/cpu/31/cpuid.}

%former 3.36
{\color{gray}
\subsection*{Enable 5-level page tables support \tiny{bis 6.15}}
CONFIG\_X86\_5LEVEL \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
5-Level-Paging ermöglicht den Zugriff auf einen größeren Adressraum: bis zu \qty{128}{\pebi\byte} virtueller Adressraum und \qty{4}{\pebi\byte} physikalischer Adressraum.
Es wird von zukünftigen Intel-CPUs unterstützt werden.
Ein Kernel mit aktivierter Option kann auf Rechnern gebootet werden, die 4- oder 5-Level-Paging unterstützen.
Siehe Documentation/arch/x86/x86\_64/5level-paging.rst für weitere Informationen.\\
Sagen Sie N, wenn Sie unsicher sind.
\english{5-level paging enables access to larger address space: up to 128~PiB of virtual address space and 4~PiB of physical address space.\\
It will be supported by future Intel CPUs.\\
A kernel with the option enabled can be booted on machines that support 4- or 5-level paging.\\
See Documentation/arch/x86/x86\_64/5level-paging.rst for more information.\\
Say N if unsure.}
\note{Wir verwenden keine so großen Maschinen, also N. 4-Level mit \qty{256}{\tebi\byte} ist momentan ausreichend. Der Linux-Kernel 6.16 führt die bedingungslose Aktivierung von fünfstufigen Seitentabellen ein.}
}

%3.36 Enable statistic for Change Page Attribute
\subsection{Enable statistic for Change Page Attribute}
CONFIG\_X86\_CPA\_STATISTICS \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Statistiken zum Mechanismus \glqq Ändern von Seitenattributen\grqq{} anzeigen, mit dessen Hilfe die Wirksamkeit der Beibehaltung großer und umfangreicher Seitenzuordnungen bei Änderung der Zuordnungsschutzfunktionen ermittelt werden kann.
\english{Expose statistics about the Change Page Attribute mechanism, which helps to determine the effectiveness of preserving large and huge page mappings when mapping protections are changed.}
\note{Das ist ein Entwicklerwerkzeug, das wir nicht benötigen, deshalb N.}

%3.37
\subsection{AMD Secure Memory Encryption (SME) support}
CONFIG\_AMD\_MEM\_ENCRYPT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Sagen Sie Ja, um die Unterstützung für die Verschlüsselung des Systemspeichers zu aktivieren.
Dies erfordert einen AMD-Prozessor, der Secure Memory Encryption (SME) unterstützt.
\english{Say yes to enable support for the encryption of system memory.
This requires an AMD processor that supports Secure Memory Encryption (SME).}

{\color{gray}
\subsubsection*{Activate AMD Secure Memory Encryption (SME) by default \tiny{bis 6.8}}
CONFIG\_AMD\_MEM\_ENCRYPT\_ACTIVE\_BY\_DEFAULT [=n] \textbf{[N]}\\
Sagen Sie Ja, damit der Systemspeicher standardmäßig verschlüsselt wird, wenn er auf einem AMD"=Prozessor läuft, der Secure Memory Encryption (SME) unterstützt.
Wenn Sie Y wählen, kann die Verschlüsselung des Systemspeichers mit der Befehlszeilenoption \texttt{mem\_encrypt=off} deaktiviert werden.
Ist der Wert auf N gesetzt, kann die Verschlüsselung des Systemspeichers mit der Befehlszeilenoption \texttt{mem\_encrypt=on} aktiviert werden.
\english{Say yes to have system memory encrypted by default if running on an AMD processor that supports Secure Memory Encryption (SME).
If set to Y, then the encryption of system memory can be deactivated with the mem\_encrypt=off command line option.
If set to N, then the encryption of system memory can be activated with the mem\_encrypt=on command line option.}
}

%3.38
\subsection{NUMA Memory Allocation and Scheduler Support}
CONFIG\_NUMA \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Aktivieren Sie die NUMA-Unterstützung (Non-Uniform Memory Access).
Der Kernel wird versuchen, den von einer CPU verwendeten Speicher dem lokalen Speicher-Controller der CPU zuzuweisen und dem Kernel mehr Kenntnis über NUMA zu geben.\\
Für 64-Bit wird dies empfohlen, wenn das System Intel Core i7 (oder höher), AMD Opteron oder EM64T NUMA ist.\\
Für 32-Bit ist dies nur erforderlich, wenn Sie einen 32-Bit-Kernel auf einer 64-Bit-NUMA-Plattform booten.
Andernfalls sollten Sie N angeben.
\english{Enable NUMA (Non-Uniform Memory Access) support.
The kernel will try to allocate memory used by a CPU on the local memory controller of the CPU and add some more NUMA awareness to the kernel.
For 64-bit this is recommended if the system is Intel Core i7 (or later), AMD Opteron, or EM64T NUMA.
Otherwise, you should say N.}
\note{Nur erforderlich, wenn man ein System mit mehr als einem Sockel (CPUs) betreibt.
Wir setzen Laptops ein, deshalb ist ein N möglich.}

\subsubsection{Old style AMD Opteron NUMA detection}
CONFIG\_AMD\_NUMA [=y] \textbf{[N]}\\
Aktivieren Sie die Erkennung der AMD NUMA"=Knoten-Topologie.
Wenn Sie ein AMD-Multiprozessorsystem haben, sollten Sie hier Y angeben.
Dies verwendet eine alte Methode, um die NUMA-Konfiguration direkt von der eingebauten Northbridge des Opteron zu lesen.\\
Es wird empfohlen, stattdessen X86\_64\_ACPI\_NUMA zu verwenden, das auch Priorität hat, wenn beide einkompiliert sind.
\english{Enable AMD NUMA node topology detection.
You should say Y here if you have a multi processor AMD system.
This uses an old method to read the NUMA configuration directly from the builtin Northbridge of Opteron.
It is recommended to use X86\_64\_ACPI\_NUMA instead, which also takes priority if both are compiled in.}

\subsubsection{ACPI NUMA detection}
CONFIG\_X86\_64\_ACOU\_NUMA [=y] \textbf{[Y]}\\
Aktivieren Sie die ACPI-SRAT-basierte Erkennung der Knotentopologie.
\english{Enable ACPI SRAT based node topology detection.}

%moved to Memory Management options - linux_configuration_13_memory management_options
% \paragraph{NUMA emulation}$~$\\
% CONFIG\_NUMA\_EMU [=n] \textbf{[N]}\\
% Aktivieren Sie die NUMA-Emulation. Eine flache Maschine wird in virtuelle Knoten aufgeteilt, wenn sie mit
% \texttt{numa=fake=N} gebootet wird, wobei N die Anzahl der Knoten ist.
% Dies ist nur für die Fehlersuche nützlich.
% \english{Enable NUMA emulation.
% A flat machine will be split into virtual nodes when booted with "numa=fake=N", where N is the number of nodes.
% This is only useful for debugging.}

\subsubsection{Maximum NUMA Nodes (as a power of 2)}
CONFIG\_NODES\_SHIFT \colorbox{yellow!80}{[=10] \textbf{[6]}}\\
(Maximale NUMA-Knoten (als eine Potenz von 2))\\
Geben Sie die maximale Anzahl der auf dem Zielsystem verfügbaren NUMA-Knoten an.
Erhöht den reservierten Speicherplatz für verschiedene Tabellen.
\english{Specify the maximum number of NUMA Nodes available on the target system.
Increases memory reserved to accommodate various tables.}
\note{Wenn MAXSMP definiert ist, dann wird default=10, bei X86\_64 default=6, sonst =3.}

%3.39 Enable sysfs memory/probe interface
\subsection{Enable sysfs memory/probe interface}
CONFIG\_ARCH\_MEMORY\_PROBE [=n] \textbf{[N]}\\
Diese Option aktiviert eine sysfs-Speicher/Probe-Schnittstelle für Tests.\\
Siehe Documentation/admin-guide/mm/memory-hotplug.rst für weitere Informationen.
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{This option enables a sysfs memory/probe interface for testing.
See Documentation/admin-guide/mm/memory-hotplug.rst for more information.
If you are unsure how to answer this question, answer N.}

\subsection{Support non-standard NVDIMMs and ADR protected memory}
CONFIG\_X86\_PMEM\_LEGACY \colorbox{yellow!80}{[=m] \textbf{[N]}}\\
Behandeln Sie Speicher, der mit dem nicht standardmäßigen e820-Typ von 12 markiert ist, wie er vom Intel Sandy Bridge-EP Referenz-BIOS verwendet wird, als geschützten Speicher.
Der Kernel bietet diese Regionen dem \texttt{pmem}-Treiber an, so dass sie für persistenten Speicher verwendet werden können.\\
Sagen Sie Y, wenn Sie unsicher sind.
\english{Treat memory marked using the non-standard e820 type of 12 as used by the Intel Sandy Bridge-EP reference BIOS as protected memory.
The kernel will offer these regions to the `pmem' driver so they can be used for persistent storage.\\
Say Y if unsure.}
\note{Verwenden wir nicht, deshalb ein N für Nein.}

\subsection{Check for low memory corruption}
CONFIG\_X86\_CHECK\_BIOS\_CORRUPTION \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Regelmäßige Überprüfung auf Speicherbeschädigung im niedrigen Speicher, die vermutlich durch das BIOS verursacht wird.
Auch wenn dies in der Konfiguration aktiviert ist, zur Laufzeit ist es deaktiviert.
Aktivieren Sie es, indem Sie \texttt{memory\_corruption\_check=1} in der Kernel-Befehlszeile eingeben.
Standardmäßig werden die unteren 64~k des Speichers alle 60 Sekunden überprüft; siehe die Parameter \texttt{memory\_corruption\_check\_size} und \texttt{memory\_corruption\_check\_period} in Documentation/""admin-guide/kernel-parameters.rst, um dies anzupassen.
Wenn diese Option mit den Standardparametern aktiviert ist, hat sie so gut wie keinen Overhead, da sie eine relativ kleine Menge an Speicher reserviert und diesen nur selten durchsucht.
Sie erkennt Korruption und verhindert, dass sie das laufende System beeinträchtigt.
Sie ist jedoch als Diagnosewerkzeug gedacht; wenn eine wiederholte BIOS-verursachte Beschädigung stets denselben Speicher betrifft, können Sie \texttt{memmap=} verwenden, um zu verhindern, dass der Kernel diesen Speicher verwendet.\\[1em]
\noindent\fbox{%
\parbox{445\unitlength}{Hinweis: Kann ausgeschaltet werden, wenn im \texttt{journalctl} niemals \glqq corrupted low memory\grqq{} erscheint.}
}
\english{Periodically check for memory corruption in low memory, which is suspected to be caused by BIOS.
Even when enabled in the configuration, it is disabled at runtime.
Enable it by setting ``memory\_corruption\_check=1'' on the kernel command line.
By default it scans the low 64k of memory every 60 seconds; see the memory\_corruption\_check\_size and memory\_corruption\_check\_period parameters in Documentation/admin-guide/kernel-parameters.rst to adjust this.\\
When enabled with the default parameters, this option has almost no overhead, as it reserves a relatively small amount of memory and scans it infrequently.
It both detects corruption and prevents it from affecting the running system.\\
It is, however, intended as a diagnostic tool; if repeatable BIOS-originated corruption always affects the same memory, you can use memmap= to prevent the kernel from using that memory.}
\note{Wir setzen dies auf N für Nein, da auch die obengenannte Meldung nie kommt.}

\subsubsection{Set the default setting of memory\_corruption\_check}
CONFIG\_X86\_BOOTPARAM\_MEMORY\_CORRUPTION\_CHECK [=y] \textbf{[Y]}\\
Legt fest, ob der Standardstatus von \texttt{memory\_corruption\_check} ein- oder ausgeschaltet ist.
\english{Set whether the default state of memory\_corruption\_check is on or off.}

\subsubsection{MTRR (Memory Type Range Register) support}
CONFIG\_MTRR [=y] \textbf{[Y]}\\
Bei Prozessoren der Intel P6-Familie (Pentium Pro, Pentium II und später) können die Memory Type Range Register (MTRRs) verwendet werden, um den Zugriff des Prozessors auf Speicherbereiche zu steuern.
Dies ist besonders nützlich, wenn Sie eine Videokarte (VGA) an einem PCI- oder AGP-Bus haben.
Durch die Aktivierung von Write-Combining können Bus-Schreibübertragungen zu einer größeren Übertragung kombiniert werden, bevor sie über den PCI/AGP-Bus geleitet werden.
Dies kann die Leistung von Bildschreiboperationen um das 2,5-fache oder mehr erhöhen.
Wenn Sie hier Y angeben, wird eine /proc/mtrr-Datei erstellt, die zur Manipulation der MTRRs Ihres Prozessors verwendet werden kann.
Normalerweise sollte der X-Server dies verwenden.\\
Dieser Code hat eine recht generische Schnittstelle, so dass ähnliche Steuerregister auf anderen Prozessoren ebenfalls leicht unterstützt werden können:\\
Die Prozessoren Cyrix 6x86, 6x86MX und M II verfügen über Address Range Registers (ARRs), die eine ähnliche Funktionalität wie MTRRs bieten.
In diesen Fällen werden die ARRs zur Emulation der MTRRs verwendet.
Die AMD-Prozessoren K6-2 (Stepping 8 und höher) und K6-3 haben zwei MTRRs. Der Centaur C6 (WinChip) hat 8 MCRs, die Schreibkombinationen ermöglichen.
Alle diese Prozessoren werden von diesem Code unterstützt und es ist sinnvoll, hier Y anzugeben, wenn Sie einen dieser Prozessoren haben.\\
Die Angabe von Y an dieser Stelle behebt auch ein Problem mit fehlerhaften SMP-BIOSen, die die MTRRs nur für die Boot-CPU und nicht für die sekundären CPUs setzen.
Das kann zu allen möglichen Problemen führen, also ist es gut, hier Y zu sagen.\\
Sie können sicher Y sagen, auch wenn Ihr Rechner keine MTRRs hat, Sie werden nur etwa 9 KB zu Ihrem Kernel hinzufügen.
Siehe $<$file:Documentation/arch/x86/mtrr.rst$>$ für weitere Informationen.
\english{On Intel P6 family processors (Pentium Pro, Pentium II and later) the Memory Type Range Registers (MTRRs) may be used to control processor access to memory ranges.
This is most useful if you have a video (VGA) card on a PCI or AGP bus.
Enabling write-combining allows bus write transfers to be combined into a larger transfer before bursting over the PCI/AGP bus.
This can increase performance of image write operations 2.5 times or more.
Saying Y here creates a /proc/mtrr file which may be used to manipulate your processor's MTRRs.
Typically the X server should use this.\\
This code has a reasonably generic interface so that similar control registers on other processors can be easily supported as well:\\
The Cyrix 6x86, 6x86MX and M II processors have Address Range Registers (ARRs) which provide a similar functionality to MTRRs.
For these, the ARRs are used to emulate the MTRRs.
The AMD K6-2 (stepping 8 and above) and K6-3 processors have two MTRRs.
The Centaur C6 (WinChip) has 8 MCRs, allowing write-combining.
All of these processors are supported by this code and it makes sense to say Y here if you have one of them.
\\Saying Y here also fixes a problem with buggy SMP BIOSes which only set the MTRRs for the boot CPU and not for the secondary CPUs.
This can lead to all sorts of problems, so it's good to say Y here.\\
You can safely say Y even if your machine doesn't have MTRRs, you'll just add about 9 KB to your kernel.\\
See $<$file:Documentation/arch/x86/mtrr.rst$>$ for more information.}

\subsubsection{MTRR cleanup support}
CONFIG\_MTRR\_SANITIZER [=y] \textbf{[Y]}\\
Umwandlung des MTRR-Layouts von kontinuierlich in diskret, damit X-Treiber Rückschreibeinträge hinzufügen können.
Kann mit \texttt{disable\_mtrr\_cleanup} in der Kernel-Kommandozeile deaktiviert werden.
Die größte MTRR-Eintragsgröße für einen kontinuierlichen Block kann mit \texttt{mtrr\_chunk\_size} festgelegt werden.\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{Convert MTRR layout from continuous to discrete, so X drivers can add writeback entries.\\
Can be disabled with disable\_mtrr\_cleanup on the kernel command line.
The largest mtrr entry size for a continuous block can be set with mtrr\_chunk\_size.\\
If unsure, say Y.}
\note{Für normale Systeme Y für Ja. Nur bei einem \glqq headless server\grqq{} ein N.}

\paragraph{MTRR cleanup enable value (0-1)}$~$\\
CONFIG\_MTRR\_SANITIZER\_ENABLE\_DEFAULT [=1] \textbf{[1]}\\
Aktivieren Sie den \glqq mtrr cleanup\grqq{}-Standardwert
\english{Enable mtrr cleanup default value}

\paragraph{MTRR cleanup spare reg num (0-7)}$~$\\
CONFIG\_MTRR\_SANITIZER\_SPARE\_REG\_NR\_DEFAULT [=0] \textbf{[0]}\\
MTRR cleanup spare entries Defaulteintrag, dies kann über \texttt{mtrr\_spare\_reg\_nr=N} auf der Kernel"=Befehlszeile geändert werden.
\english{mtrr cleanup spare entries default, it can be changed via mtrr\_spare\_reg\_nr=N on the kernel command line.}

%3.41.4
\subsubsection{x86 PAT support}
CONFIG\_X86\_PAT [=y] \textbf{[Y]}\\
Verwenden Sie PAT-Attribute zur Einrichtung der Cache-Steuerung auf Seitenebene.\\
PATs sind die modernen Äquivalente von MTRRs und sind viel flexibler als MTRRs.
Sagen Sie hier N, wenn Sie Probleme beim Booten (Boot-Absturz, Boot-Hänger,
spontane Neustarts) oder einen nicht funktionierenden Grafiktreiber feststellen.\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{Use PAT attributes to setup page level cache control.\\
PATs are the modern equivalents of MTRRs and are much more flexible than MTRRs.\\
Say N here if you see bootup problems (boot crash, boot hang, spontaneous reboots)
or a non-working video driver.\\
If unsure, say Y.}
\note{Überprüfe mit \texttt{cat /proc/cpuinfo | grep pat}, ob das System PAT unterstützt.}

%3.42
\subsection{User Mode Instruction Prevention}
CONFIG\_X86\_UMIP [=y] \textbf{[Y]}\\
User Mode Instruction Prevention (UMIP) ist eine Sicherheits\-funktion in einigen x86-Prozessoren.
Wenn sie aktiviert ist, wird ein allgemeiner Schutzfehler ausgegeben, wenn die Anweisungen SGDT, SLDT, SIDT, SMSW oder STR im Benutzermodus ausgeführt werden.
Diese Befehle geben unnötigerweise Informationen über den Hardwarezustand preis.\\
Die große Mehrheit der Anwendungen verwendet diese Befehle nicht.
Für die wenigen, die sie verwenden, wird in bestimmten Fällen eine Software-Emulation im geschützten und virtuellen 8086"=Modus vorgesehen.
Die emulierten Ergebnisse sind Scheinergebnisse.
\english{User Mode Instruction Prevention (UMIP) is a security feature in some x86 processors.
If enabled, a general protection fault is issued if the SGDT, SLDT, SIDT, SMSW or STR instructions are executed in user mode.
These instructions unnecessarily expose information about the hardware state.\\
The vast majority of applications do not use these instructions.
For the very few that do, software emulation is provided in specific cases in protected and virtual-8086 modes. Emulated results are dummy.}

%3.43
\subsection{Indirect Branch Tracking}
CONFIG\_X86\_KERNEL\_IBT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Erstellen Sie den Kernel mit Unterstützung für Indirect Branch Tracking, einem hardwaregestützten Schutz für den Kontrollflussintegrität mit grober Granularität.
Dadurch wird sichergestellt, dass alle indirekten Aufrufe auf einer ENDBR-Anweisung landen müssen.
Der Compiler instrumentiert den Code entsprechend, um dies zu erreichen.\\
Zusätzlich zum Erstellen des Kernels mit IBT sollten alle Funktionen, die keine indirekten Aufrufziele sind, versiegelt werden, um zu verhindern, dass sie jemals zu solchen werden.\\
Dies erfordert LTO-ähnliche objtool-Läufe und verlangsamt den Build-Vorgang.
Dadurch wird die Anzahl der ENDBR-Anweisungen im Kernel-Image erheblich reduziert.
\english{Build the kernel with support for Indirect Branch Tracking, a hardware support course-grain forward-edge Control Flow Integrity protection.
It enforces that all indirect calls must land on an ENDBR instruction, as such, the compiler will instrument the code with them to make this happen.\\
In addition to building the kernel with IBT, seal all functions that are not indirect call targets, avoiding them ever becoming one.\\
This requires LTO like objtool runs and will slow down the build.
It does significantly reduce the number of ENDBR instructions in the kernel image.}
\note{Wir können hier N wählen, hat natürlich Sicherheitsmerkmale. Compilieren geht schneller!}

%3.44
\subsection{Memory Protection Keys}
CONFIG\_X86\_INTEL\_MEMORY\_PROTECTION\_KEYS [=y] \textbf{[Y]}\\
Memory Protection Keys bietet einen Mechanismus zur Erzwingung seitenbasierter Schutzmaßnahmen, ohne dass die Seitentabellen geändert werden müssen, wenn eine Anwendung ihre Schutzdomänen ändert.
Einzelheiten siehe Documentation/core-api/protection-keys.rst\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{Memory Protection Keys provides a mechanism for enforcing page-based protections, but without requiring modification of the page tables when an application changes protection domains.\\
For details, see Documentation/core-api/protection-keys.rst\\
If unsure, say y.}

%3.45 TSX enable mode (auto)
\subsection{TSX enable mode () \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_X86\_INTEL\_MEMORY\_PROTECTION\_KEYS [=y] \textbf{[Y]}\\
Intels TSX-Funktion (Transactional Synchronization Extensions) ermöglicht die Optimierung von Sperrprotokollen durch Lock Elision, was zu einer spürbaren Leistungssteigerung führen kann.
Andererseits hat sich gezeigt, dass TSX für Seitenkanalangriffe (z.\,B. TAA) ausgenutzt werden kann, und es ist wahrscheinlich, dass in Zukunft weitere Angriffe dieser Art entdeckt werden.
Daher ist TSX standardmäßig nicht aktiviert (aka \texttt{tsx=off}).
Ein Administrator kann diese Entscheidung durch den Befehlszeilenparameter \texttt{tsx=on} außer Kraft setzen.
Auch wenn TSX aktiviert ist, versucht der Kernel, die bestmögliche TAA-Abschwächung zu aktivieren, je nach dem für den jeweiligen Rechner verfügbaren Mikrocode.
Mit dieser Option kann der Standard-TSX"=Modus zwischen \texttt{tsx=on}, \texttt{=off} und \texttt{=auto} eingestellt werden.
Siehe Documentation/admin-guide/kernel-parameters.txt für weitere Details.
Sagen Sie off, wenn Sie sich nicht sicher sind, auto, wenn TSX in Gebrauch ist, aber auf sicheren Plattformen
verwendet werden sollte, oder on, wenn TSX in Gebrauch ist und der Sicherheitsaspekt von TSX nicht relevant ist.
\english{Intel's TSX (Transactional Synchronization Extensions) feature allows to optimize
locking protocols through lock elision which can lead to a noticeable performance boost.\\
On the other hand it has been shown that TSX can be exploited to form side channel attacks (e.g. TAA)
and chances are there will be more of those attacks discovered in the future.\\
Therefore TSX is not enabled by default (aka tsx=off).
An admin might override this decision by tsx=on the command line parameter.
Even with TSX enabled, the kernel will attempt to enable the best possible TAA mitigation setting depending on the microcode available for the particular machine.\\
This option allows to set the default tsx mode between tsx=on, =off and =auto.
See Documentation/admin-guide/kernel-parameters.txt for more details.\\
Say off if not sure, auto if TSX is in use but it should be used on safe platforms or on if TSX is in use and the security aspect of tsx is not relevant.}

\subsubsection{off}
CONFIG\_X86\_INTEL\_TSX\_MODE\_OFF [=n] \textbf{[N]}\\
TSX ist, wenn möglich, deaktiviert -- entspricht dem Befehlszeilenparameter \texttt{tsx=off}.
\english{TSX is disabled if possible -- equals to tsx=off command line parameter.}

\subsubsection{on}
CONFIG\_X86\_INTEL\_TSX\_MODE\_ON [=n] \textbf{[N]}\\
TSX ist auf TSX-fähiger Hardware immer aktiviert -- gleichbedeutend mit dem Befehlszeilenparameter \texttt{tsx=on}
\english{TSX is always enabled on TSX capable HW -- equals the tsx=on command line parameter.}

\subsubsection{auto}
CONFIG\_X86\_INTEL\_TSX\_MODE\_AUTO [=y] \textbf{[Y]}\\
TSX wird auf TSX-fähiger Hardware aktiviert, die als sicher gegen Seitenkanalangriffe gilt -- gleichbedeutend mit dem Befehlszeilenparameter \texttt{tsx=auto}.
\english{TSX is enabled on TSX capable HW that is believed to be safe against side channel attacks- equals the tsx=auto command line parameter.}

%3.46
\subsection{Software Guard eXtensions (SGX)}
CONFIG\_X86\_SGX \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Intel(R) Software Guard eXtensions (SGX) ist eine Reihe von CPU-Befehlen, die von Anwendungen verwendet werden können, um private Code- und Datenbereiche, die so genannten Enklaven, zu reservieren.
Auf den privaten Speicher einer Enklave kann nur von Code zugegriffen werden, der innerhalb der Enklave läuft.
Zugriffe von außerhalb der Enklave, einschließlich anderer Enklaven, werden von der Hardware nicht zugelassen.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{Intel(R) Software Guard eXtensions (SGX) is a set of CPU instructions that can be used by applications to set aside private regions of code and data, referred to as enclaves.
An enclave's private memory can only be accessed by code running within the enclave.
Accesses from outside the enclave, including other enclaves, are disallowed by hardware.\\
If unsure, say N.}
\note{N,\\
Y, wenn Sie eine echte Verwendung dafür haben, denn die tatsächliche Sicherheit dieser Funktion ist umstritten.}

%3.47
\subsection{X86 userspace shadow stack}
CONFIG\_X86\_USER\_SHADOW\_STACK [=y] \textbf{[Y]}\\
Der Schattenstapelschutz ist eine Hardwarefunktion, die eine Beschädigung der Rücksprungadresse einer Funktion erkennt.
Dies hilft, ROP-Angriffe abzuschwächen.
Anwendungen müssen aktiviert sein, um sie zu nutzen, und der alte Userspace erhält den Schutz nicht \glqq umsonst\grqq{}.
CPUs, die Shadow Stacks unterstützen, wurden erstmals im Jahr~2020 vorgestellt.
Weitere Informationen finden Sie unter Documentation/arch/x86/shstk.rst.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{Shadow stack protection is a hardware feature that detects function return address corruption.
This helps mitigate ROP attacks.
Applications must be enabled to use it, and old userspace does not get protection ``for free''.\\
CPUs supporting shadow stacks were first released in 2020.\\
See Documentation/arch/x86/shstk.rst for more information.\\
If unsure, say N.}
\note{Y, ein Ja aus Sicherheitsgründen}

%3.48
\subsection{EFI runtime service support}
CONFIG\_EFI [=y] \textbf{[Y]}\\
Dies ermöglicht es dem Kernel, verfügbare EFI-Laufzeitdienste (wie die EFI-Variablendienste) zu nutzen.\\
Diese Option ist nur auf Systemen mit EFI-Firmware sinnvoll.
Außerdem sollten Sie den neuesten ELILO-Lader verwenden, der unter \url{http://elilo.sourceforge.net} verfügbar ist, um die Vorteile der EFI-Laufzeitdienste zu nutzen.
Aber auch mit dieser Option sollte der resultierende Kernel weiterhin auf bestehenden Nicht-EFI-Plattformen booten.
\english{This enables the kernel to use EFI runtime services that are available (such as the EFI variable services).\\
This option is only useful on systems that have EFI firmware.
In addition, you should use the latest ELILO loader available at $<$http://elilo.sourceforge.net$>$ in order to take advantage of EFI runtime services.
However, even with this option, the resultant kernel should continue to boot on existing non-EFI platforms.}
\note{Um von EFI booten zu können, dürfen wir dies nicht deaktivieren.}

\subsubsection{EFI stub support}
CONFIG\_EFI\_STUB [=y] \textbf{[Y]}\\
Mit dieser Kernel-Funktion kann ein bzImage direkt von der EFI-Firmware geladen werden, ohne dass ein Bootloader erforderlich ist.\\
Weitere Informationen finden Sie unter Documentation/admin-guide/efi-stub.rst.
\english{This kernel feature allows a bzImage to be loaded directly by EFI firmware without the use of a bootloader.\\
See \texttt{Documentation/admin-guide/efi-stub.rst} for more information.}
\note{Y, nur, wenn Sie den Kernel direkt als EFI-Binary booten und nicht mit \texttt{grub}}

\paragraph{EFI handover protocol (DEPRECATED)}$~$\\
CONFIG\_EFI\_STUB \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
(EFI-Übergabeprotokoll (VERALTET))\\
Wählen Sie dies, um Unterstützung für das veraltete EFI-Handover-Protokoll zu erhalten, das alternative Einstiegspunkte in den EFI-Stub definiert.
Dies ist eine Praxis, die keine Grundlage in der UEFI-Spezifikation hat und ein Vorwissen seitens des Bootloaders über Linux/x86-spezifische Wege der Übergabe der Kommandozeile und initrd erfordert, und wo im Speicher diese Assets geladen werden können.\\
Im Zweifelsfall sagen Sie Y.
Auch wenn die entsprechende Unterstützung im Upstream-GRUB oder anderen Bootloadern nicht vorhanden ist, bauen die meisten Distros GRUB mit zahlreichen Downstream-Patches und können sich daher auf das Handover-Protokoll verlassen.
\english{Select this in order to include support for the deprecated EFI handover protocol, which defines alternative entry points into the EFI stub.
This is a practice that has no basis in the UEFI specification, and requires a priori knowledge on the part of the bootloader about Linux/x86 specific ways of passing the command line and initrd, and where in memory those assets may be loaded.\\
If in doubt, say Y.
Even though the corresponding support is not present in upstream GRUB or other bootloaders, most distros build GRUB with numerous downstream patches applied, and may rely on the handover protocol as as result.}
\note{Ein Versuch wäre es wert, das \glqq Handover-Protokoll\grqq{} zu deaktivieren, da es obsolet wurde.}

\paragraph{EFI mixed-mode support}$~$\\
CONFIG\_EFI\_MIXED \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Wenn Sie diese Funktion aktivieren, kann ein 64-Bit-Kernel auf einer 32-Bit-Firmware gebootet werden, vorausgesetzt, Ihre CPU unterstützt den 64-Bit-Modus.\\
Beachten Sie, dass es nicht möglich ist, einen Mixed-Mode-fähigen Kernel über den EFI-Boot-Stub zu booten -- es muss ein Bootloader verwendet werden, der das EFI-Handover-Protokoll unterstützt.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{Enabling this feature allows a 64-bit kernel to be booted on a 32-bit firmware,
provided that your CPU supports 64-bit mode.\\
Note that it is not possible to boot a mixed-mode enabled kernel via the EFI boot stub -- a
bootloader that supports the EFI handover protocol must be used.\\
If unsure, say N.}
\note{Nur auf alter Apple-Hardware relevant, deshalb N.}

{\color{gray}
\subsubsection*{Enable EFI fake memory map \tiny{abgeschafft seit 6.11}}
CONFIG\_EFI\_FAKE\_MEMMAP [=n] \textbf{[N]}\\
Wenn Sie hier Y angeben, wird die Boot-Option \texttt{efi\_fake\_mem} aktiviert.
Durch Angabe dieses Parameters können Sie einem bestimmten Speicherbereich beliebige Attribute hinzufügen,
indem Sie die ursprüngliche (von der Firmware bereitgestellte) EFI-Memmap aktualisieren.
Dies ist nützlich für das Debugging von EFI-Memmap-bezogenen Funktionen, z.\,B. Address Range Mirroring.
\english{Saying Y here will enable ``efi\_fake\_mem'' boot option. By specifying this parameter,
you can add arbitrary attribute to specific memory range by updating original (firmware provided) EFI memmap.
This is useful for debugging of EFI memmap related feature, e.g. Address Range Mirroring feature.}}

\subsubsection{Export EFI runtime maps to sysfs {\tiny seit 6.2}}
CONFIG\_EFI\_RUNTIME\_MAP [=y] \textbf{[Y]}\\
Exportieren Sie EFI-Laufzeitspeicherbereiche nach \texttt{/sys/firmware/efi/runtime-map}.
Diese Speichermap wird vom 2. Kernel benötigt, um virtuelle EFI-Mappings nach kexec einzurichten, aber sie kann auch für Debugging-Zwecke verwendet werden.\\
Siehe auch \texttt{Documentation/ABI/testing/sysfs-firmware-efi-runtime-map}.
\english{Export EFI runtime memory regions to \texttt{/sys/firmware/efi/runtime-map}.
That memory map is required by the 2nd kernel to set up EFI virtual mappings after kexec, but can also be used for debugging purposes.\\
See also \texttt{Documentation/ABI/testing/sysfs-firmware-efi-runtime-map}.}
\note{Kann nicht deaktiviert werden, wenn kexec und EFI runtime service eingeschaltet ist.}

%3.49 Timer frequency ()
\subsection{Timer frequency () \texorpdfstring{$\rightarrow$}{->}}
Ermöglicht die Konfiguration der Timer-Frequenz.
Es ist üblich, den Timer-Interrupt mit \qty{1000}{\hertz} laufen zu lassen, aber \qty{100}{\hertz} kann für Server und NUMA-Systeme vorteilhafter sein, die keine schnelle Reaktion für die Benutzerinteraktion benötigen und bei denen es zu Buskonflikten und Cacheline-Bounches als Folge von Timer-Interrupts kommen kann.
Beachten Sie, dass der Timer-Interrupt in einer SMP-Umgebung auf jedem Prozessor auftritt, was zu NR\_CPUS * HZ Anzahl der Timer-Interrupts pro Sekunde führt.
\english{Allows the configuration of the timer frequency.
It is customary to have the timer interrupt run at 1000 Hz but 100 Hz may be more beneficial for servers and NUMA systems that do not need to have a fast response for user interaction and that may experience bus contention and cacheline bounces as a result of timer interrupts.\\
Note that the timer interrupt occurs on each processor in an SMP environment leading to NR\_CPUS * HZ number of timer interrupts per second.}
\note{\qty{100}{\hertz} für Server, \qty{300}{\hertz} für Desktops, \qty{1000}{\hertz} für Anforderungen mit niedrigen Latenzzeiten}

\subsubsection{100~Hz}
CONFIG\_HZ\_100 [=n] \textbf{[N]}\\
\qty{100}{\hertz} ist eine typische Wahl für Server, SMP- und NUMA-Systeme mit vielen Prozessoren, die eine geringere Leistung aufweisen können, wenn zu viele Timer-Interrupts auftreten.
\english{100~Hz is a typical choice for servers, SMP and NUMA systems with lots of processors that may show reduced performance if too many timer interrupts are occurring.}

\subsubsection{250~Hz}
CONFIG\_HZ\_250 [=n] \textbf{[N]}\\
\qty{250}{\hertz} ist ein guter Kompromiss, der eine gute Serverleistung ermöglicht und auch auf SMP- und NUMA-Systemen eine gute interaktive Reaktionsfähigkeit zeigt.
Wenn Sie NTSC-Video oder Multimedia verwenden, wählen Sie stattdessen 300~Hz.
\english{250~Hz is a good compromise choice allowing server performance while also showing good interactive responsiveness even on SMP and NUMA systems.
If you are going to be using NTSC video or multimedia, selected 300Hz instead.}

\subsubsection{300~Hz}
CONFIG\_HZ\_300 \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
\qty{300}{\hertz} ist ein guter Kompromiss, der eine gute Serverleistung und gleichzeitig eine gute interaktive Reaktionsfähigkeit selbst auf SMP- und NUMA-Systemen ermöglicht und sowohl bei PAL- als auch bei NTSC-Bildraten für Video- und Multimedia-Arbeiten genau eingehalten wird.
\english{300~Hz is a good compromise choice allowing server performance while also showing good interactive responsiveness even on SMP and NUMA systems and exactly dividing by both PAL and NTSC frame rates for video and multimedia work.}

\subsubsection{1000~Hz}
CONFIG\_HZ\_1000 \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
\qty{1000}{\hertz} ist die bevorzugte Wahl für Desktop-Systeme und andere Systeme, die schnelle interaktive Reaktionen auf Ereignisse erfordern.
\english{1000~Hz is the preferred choice for desktop systems and other systems requiring fast interactive responses to events.}

%3.50 Physical address where the kernel is loaded
\subsection{Physical address where the kernel is loaded}
CONFIG\_PHYSICAL\_START [=0x1000000] \textbf{[0x1000000]}\\
Dies gibt die physikalische Adresse an, unter der der Kernel geladen wird.
Wenn der Kernel nicht verschiebbar ist (CONFIG\_RELOCATABLE=n), dekomprimiert sich bzImage an die oben genannte physikalische Adresse und wird von dort aus gestartet.
Andernfalls wird bzImage von der Adresse aus gestartet, an der es vom Bootloader geladen wurde, und ignoriert die obige physikalische Adresse.
In normalen kdump-Fällen muss diese Option nicht gesetzt/geändert werden, da bzImage nun als vollständig relozierbares Image (CONFIG\_RELOCATABLE=y) kompiliert und zum Laden und Ausführen von einer anderen Adresse verwendet werden kann.
Diese Option ist vor allem für die Leute nützlich, die kein bzImage für die Erfassung des Crash-Dumps verwenden wollen und stattdessen vmlinux einsetzen wollen.
vmlinux ist nicht relocatable, daher muss ein Kernel speziell kompiliert werden, um von einem bestimmten Speicherbereich (normalerweise ein reservierter Bereich) zu laufen, und diese Option ist sehr nützlich.
Wenn Sie also bzImage zum Erfassen des Crash-Dumps verwenden, lassen Sie den Wert hier unverändert auf 0x1000000 und setzen Sie CONFIG\_RELOCATABLE=y.\\
Andernfalls, wenn Sie vmlinux für die Aufzeichnung des Crash-Dumps verwenden wollen, ändern Sie diesen Wert auf den Beginn des reservierten Bereichs.
Mit anderen Worten, er kann auf der Grundlage des "X"-Wertes gesetzt werden, wie er im "crashkernel=YM@XM"-Befehlszeilen-Boot-Parameter angegeben ist, der an den panic-ed-Kernel übergeben wird.
Weitere Details zu Crash Dumps finden Sie in Documentation/admin-guide/kdump/kdump.rst.
Die Verwendung von bzImage für die Aufzeichnung des Crash-Dumps wird empfohlen, da man nicht zwei Kernel erstellen muss.
Derselbe Kernel kann als Produktionskernel und als Erfassungskernel verwendet werden.
Die obige Option sollte verschwinden, nachdem die Unterstützung von relocatable bzImage eingeführt wurde.
Sie ist aber noch vorhanden, weil es Benutzer gibt, die weiterhin vmlinux für die Dump-Erfassung verwenden.
Diese Option sollte im Laufe der Zeit verschwinden.
Ändern Sie diese Option nicht, wenn Sie nicht wissen, was Sie tun.
\english{This gives the physical address where the kernel is loaded.\\
If the kernel is not relocatable (CONFIG\_RELOCATABLE=n) then bzImage will decompress itself to above physical address and run from there.
Otherwise, bzImage will run from the address where it has been loaded by the boot loader.
The only exception is if it is loaded below the above physical address, in which case it will relocate itself there.\\
In normal kdump cases one does not have to set/change this option as now bzImage can be compiled as a completely relocatable image (CONFIG\_RELOCATABLE=y) and be used to load and run from a different address.
This option is mainly useful for the folks who don't want to use a bzImage for capturing the crash dump and want to use a vmlinux instead.
vmlinux is not relocatable hence a kernel needs to be specifically compiled to run from a specific memory area (normally a reserved region) and this option comes handy.\\
So if you are using bzImage for capturing the crash dump, leave the value here unchanged to 0x1000000 and set CONFIG\_RELOCATABLE=y.
Otherwise if you plan to use vmlinux for capturing the crash dump change this value to start of the reserved region.
In other words, it can be set based on the ``X'' value as specified in the ``crashkernel=YM\@XM'' command line boot parameter passed to the panic-ed kernel.
Please take a look at Documentation/admin-guide/kdump/kdump.rst for more details about crash dumps.\\
Usage of bzImage for capturing the crash dump is recommended as one does not have to build two kernels.
Same kernel can be used as production kernel and capture kernel.
Above option should have gone away after relocatable bzImage support is introduced.
But it is present because there are users out there who continue to use vmlinux for dump capture.
This option should go away down the line.\\
Don't change this unless you know what you are doing.}

%3.51 Build a relocatable kernel
\subsection{Build a relocatable kernel}
CONFIG\_RELOCATABLE [=y] \textbf{[Y]}\\
Dadurch wird ein Kernel-Image erstellt, das die Informationen über den Standortwechsel beibehält, so dass es an einem anderen Ort als den standardmäßigen \qty{1}{\mega\byte} geladen werden kann.
Die Verschiebungen machen das Kernel-Binary etwa \qty{10}{\percent} größer, werden aber zur Laufzeit verworfen.
Eine Anwendung ist der kexec on panic-Fall, bei dem der Wiederherstellungs-Kernel an einer anderen physikalischen Adresse liegen muss als der primäre Kernel.
Anmerkung: Wenn CONFIG\_RELOCATABLE=y ist, dann läuft der Kernel von der Adresse aus, an der er geladen wurde, und von der zur Kompilierzeit physische Adresse (CONFIG\_PHYSICAL\_START) als Mindeststandort verwendet.
\english{This builds a kernel image that retains relocation information so it can be loaded someplace besides the default 1MB.\\
The relocations tend to make the kernel binary about 10\% larger, but are discarded at runtime.\\
One use is for the kexec on panic case where the recovery kernel must live at a different physical address than the primary kernel.\\
Note: If CONFIG\_RELOCATABLE=y, then the kernel runs from the address it has been loaded at and the compile time physical address (CONFIG\_PHYSICAL\_START) is used as the minimum location.}

\subsubsection{Randomize the address of the kernel image (KASLR)}
CONFIG\_RANDOMIZE\_BASE [=y] \textbf{[Y]}\\
Zur Unterstützung der Kernel Address Space Layout Randomization (KASLR) werden die physische Adresse, an der das Kernel-Image dekomprimiert wird, und die virtuelle Adresse, auf die das Kernel-Image abgebildet wird, randomisiert.
Dies ist ein Sicherheitsmerkmal, das Exploit-Versuche verhindert, die auf der Kenntnis des Speicherorts von Kernel-Code-Interna beruhen.
Bei 64-Bit werden die physische und die virtuelle Adresse des Kernels getrennt randomisiert.
Die physische Adresse liegt irgendwo zwischen 16~MB und dem Anfang des physischen Speichers (bis zu 64~TB). Die virtuelle Adresse wird von 16~MB bis zu 1~GB randomisiert (9 Bits Entropie).
Beachten Sie, dass dadurch auch der für Kernel-Module verfügbare Speicherplatz von \qty{1.5}{\giga\byte} auf \qty{1}{\giga\byte} reduziert wird.
Bei 32-Bit werden die physischen und virtuellen Adressen des Kernels zusammen randomisiert.
Sie werden von 16~MB bis zu 512~MB randomisiert (8 Bits Entropie).\\
Die Entropie wird mit dem RDRAND-Befehl erzeugt, sofern er unterstützt wird.
Wenn RDTSC unterstützt wird, wird sein Wert ebenfalls in den Entropie-Pool gemischt.
Wenn weder RDRAND noch RDTSC unterstützt werden, wird die Entropie aus dem i8254"=Zeitgeber gelesen.
Die nutzbare Entropie ist dadurch begrenzt, dass der Kernel mit 2-GB-Adressierung aufgebaut ist und dass PHYSICAL\_ALIGN mindestens 2~MB betragen muss.
Infolgedessen sind theoretisch nur 10~Bits Entropie möglich, aber die Implementierungen sind aufgrund des Speicherlayouts noch weiter eingeschränkt.\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{In support of Kernel Address Space Layout Randomization (KASLR), this randomizes the physical address at which the kernel image is decompressed and the virtual address where the kernel image is mapped, as a security feature that deters exploit attempts relying on knowledge of the location of kernel code internals.\\
On 64-bit, the kernel physical and virtual addresses are randomized separately.
The physical address will be anywhere between 16MB and the top of physical memory (up to 64TB).
The virtual address will be randomized from 16MB up to 1GB (9 bits of entropy).
Note that this also reduces the memory space available to kernel modules from 1.5GB to 1GB.\\
On 32-bit, the kernel physical and virtual addresses are randomized together.
They will be randomized from 16MB up to 512MB (8 bits of entropy).\\
Entropy is generated using the RDRAND instruction if it is supported.
If RDTSC is supported, its value is mixed into the entropy pool as well.
If neither RDRAND nor RDTSC are supported, then entropy is read from the i8254 timer.
The usable entropy is limited by the kernel being built using 2GB addressing, and that PHYSICAL\_ALIGN must be at a minimum of 2MB.
As a result, only 10 bits of entropy are theoretically possible, but the implementations are further limited due to memory layouts.\\
If unsure, say Y.}

%3.52 Alignment value to which kernel should be aligned
\subsection{Alignment value to which kernel should be aligned}
CONFIG\_PHYSICAL\_ALIGN [=0x200000] \textbf{[0x200000]}\\
Dieser Wert legt die Ausrichtungsbeschränkungen für die physikalische Adresse fest, von der der Kernel geladen und ausgeführt wird.
Der Kernel wird für eine Adresse kompiliert, die den obigen Ausrichtungsbeschränkungen entspricht.
Wenn der Bootloader den Kernel an einer nicht ausgerichteten Adresse lädt und CONFIG\_RELOCATABLE gesetzt ist, verschiebt sich der Kernel an die nächstgelegene Adresse, die auf den obigen Wert ausgerichtet ist, und wird von dort aus gestartet.
Wenn der Bootloader den Kernel an einer nicht ausgerichteten Adresse lädt und CONFIG\_RELOCATABLE nicht gesetzt ist, ignoriert der Kernel die Ladeadresse zur Laufzeit und dekomprimiert sich an die Adresse, für die er kompiliert wurde, und läuft von dort aus.
Die Adresse, für die der Kernel kompiliert wurde, erfüllt bereits die oben genannten Ausrichtungsbeschränkungen.
Das Endergebnis ist also, dass der Kernel von einer physikalischen Adresse aus läuft, die die oben genannten Ausrichtungsbeschränkungen erfüllt.
Bei 32-Bit muss dieser Wert ein Vielfaches von 0x2000 sein.
Bei 64-Bit muss dieser Wert ein Vielfaches von 0x200000 sein.\\
Ändern Sie dies nicht, wenn Sie nicht wissen, was Sie tun.
\english{This value puts the alignment restrictions on physical address where kernel is loaded and run from.
Kernel is compiled for an address which meets above alignment restriction.\\
If bootloader loads the kernel at a non-aligned address and CONFIG\_RELOCATABLE is set, kernel will move itself to nearest address aligned to above value and run from there.\\
If bootloader loads the kernel at a non-aligned address and CONFIG\_RELOCATABLE is not set, kernel will ignore the run time load address and decompress itself to the address it has been compiled for and run from there.
The address for which kernel is compiled already meets above alignment restrictions.
Hence the end result is that kernel runs from a physical address meeting above alignment restrictions.\\
On 32-bit this value must be a multiple of 0x2000. On 64-bit this value must be a multiple of 0x200000.\\
Don't change this unless you know what you are doing.}

%3.53 Randomize the kernel memory sections
\subsection{Randomize the kernel memory sections}
CONFIG\_RANDOMIZE\_MEMORY [=y] \textbf{[Y]}\\
Randomisiert die virtuelle Basisadresse von Kernel-Speicherabschnitten (physische Speicherzuordnung, vmalloc \& vmemmap).
Dieses Sicherheitsmerkmal macht Exploits, die sich auf vorhersehbare Speicherplätze verlassen, weniger zuverlässig.
Die Reihenfolge der Zuweisungen bleibt unverändert.
Entropie wird auf die gleiche Weise wie bei RANDOMIZE\_BASE erzeugt.
Aktuelle Implementierung in der optimalen Konfiguration haben im Durchschnitt \num{30000} verschiedene mögliche virtuelle Adressen für jeden Speicherabschnitt.\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{Randomizes the base virtual address of kernel memory sections (physical memory mapping, vmalloc \& vmemmap).
This security feature makes exploits relying on predictable memory locations less reliable.\\
The order of allocations remains unchanged. Entropy is generated in the same way as RANDOMIZE\_BASE.
Current implementation in the optimal configuration have in average 30,000 different possible virtual addresses for each memory section.\\
If unsure, say Y.}

%3.54 Physical memory mapping padding
\subsection{Physical memory mapping padding}
CONFIG\_RANDOMIZE\_MEMORY\_PHYSICAL\_PADDING [=0xa] \textbf{[0xA]}\\
Definieren Sie die Auffüllung in Terabytes, die während der Kernel-Speicherrandomisierung zur vorhandenen physischen Speichergröße hinzugefügt wird.
Dies ist nützlich für die Unterstützung von Speicher-Hotplug, verringert aber die für die Adress-Randomisierung verfügbare Entropie.\\
Wenn Sie unsicher sind, belassen Sie es beim Standardwert.
\english{Define the padding in terabytes added to the existing physical memory size during kernel memory randomization.
It is useful for memory hotplug support but reduces the entropy available for address randomization.\\
If unsure, leave at the default value.}

%3.55
\subsection{Linear Address Masking support}
CONFIG\_ADDRESS\_MASKING [=y] \textbf{[Y]}\\
Linear Address Masking (LAM) ändert die Prüfung, die auf lineare 64-Bit-Adressen angewandt wird, und ermöglicht der Software
die nicht übersetzten Adressbits für Metadaten zu verwenden.\\
Diese Fähigkeit kann für die effiziente Implementierung von Adress-Sanitizern (ASAN) und für Optimierungen in JITs genutzt werden.
\english{Linear Address Masking (LAM) modifies the checking that is applied to 64-bit linear addresses, allowing software to use of the untranslated address bits for metadata.
The capability can be used for efficient address sanitizers (ASAN) implementation and for optimizations in JITs.}
\note{Diese Option wird nur bei X86\_64 und bei den Optionen (COMPILE\_TEST [=n] $||$ !CPU\_MITIGATIONS [=y]) angezeigt.}

%3.56 former: Disable the 32-bit vDSO (needed for glibc 2.3.3)
\subsection{Workaround for glibc 2.3.2 / 2.3.3 (released in year 2003/2004)}
CONFIG\_COMPAT\_VDSO [=n] \textbf{[N]}\\
Bestimmte fehlerhafte Versionen der glibc stürzen ab, wenn sie mit einem 32-Bit vDSO konfrontiert werden, das nicht auf die in der Segmenttabelle angegebene Adresse abgebildet ist.
Adresse zugeordnet ist, die in der Segmenttabelle angegeben ist.\\
Der Fehler wurde eingeführt durch f866314b89d56845f55e6f365e18b31ec978ec3a und behoben durch\\
3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a und 49ad572a70b8aeb91e57483a11dd1b77e31c4468.\\
Glibc~2.3.3 ist die einzige veröffentlichte Version mit dem Fehler, aber OpenSUSE 9 enthält eine fehlerhafte \glqq glibc 2.3.2\grqq{}.
Das Symptom des Fehlers ist, dass alles beim Start abstürzt und sagt:\\
\texttt{dl\_main: Assertion \`~(void \*) ph-$>$p\_vaddr == \_rtld\_local.\_dl\_sysinfo\_dso}\\
Wenn Sie hier Y sagen, wird der Standardwert der Bootoption vdso32 von 1 auf 0 geändert, wodurch die 32-Bit vDSO vollständig deaktiviert wird.
Dies umgeht zwar den Glibc-Bug, beeinträchtigt aber die Leistung.\\
Wenn Sie unsicher sind, sagen Sie N: Wenn Sie Ihren eigenen Kernel kompilieren, ist es unwahrscheinlich, dass Sie eine fehlerhafte Version der glibc verwenden.
\english{Certain buggy versions of glibc will crash if they are presented with a 32-bit vDSO that is not mapped at the address indicated in its segment table.\\
The bug was introduced by f866314b89d56845f55e6f365e18b31ec978ec3a and fixed\\
by 3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a and 49ad572a70b8aeb91e57483a11dd1b77e31c4468.
Glibc 2.3.3 is the only released version with the bug, but OpenSUSE~9 contains a buggy ``glibc 2.3.2''.\\
The symptom of the bug is that everything crashes on startup, saying:
dl\_main:\\Assertion \texttt{(void *) ph$->$p\_vaddr == \_rtld\_local.\_dl\_sysinfo\_dso} failed!\\
Saying Y here changes the default value of the vdso32 boot option from 1 to 0, which turns off the 32-bit vDSO entirely.
This works around the glibc bug but hurts performance.\\
If unsure, say N: if you are compiling your own kernel, you are unlikely to be using a buggy version of glibc.}

\subsection{vsyscall table for legacy applications () \texorpdfstring{$\rightarrow$}{->}}
Legacy-Benutzercode, der nicht weiß, wie er den vDSO finden kann, erwartet, dass er drei Syscalls ausgeben kann, indem er feste Adressen im Kernel-Bereich aufruft.
Da dieser Ort nicht mit ASLR randomisiert wird, kann er dazu verwendet werden, die Ausnutzung von Sicherheitslücken zu unterstützen.
Diese Einstellung kann zur Boot-Zeit über den Kernel-Befehlszeilenparameter \texttt{vsyscall=[emulate|xonly|none]} geändert werden.\\
Der Emulationsmodus ist veraltet und kann nur noch über die Kernel-Befehlszeile aktiviert werden.
Auf einem System mit ausreichend aktueller glibc (2.14 oder neuer) und ohne statische Binärdateien können Sie \glqq None\grqq{} ohne Leistungseinbußen verwenden um die Sicherheit zu verbessern.\\
Wenn Sie unsicher sind, wählen Sie \glqq Nur Ausführung emulieren\grqq{}.
\english{Legacy user code that does not know how to find the vDSO expects to be able to issue three syscalls by calling fixed addresses in kernel space.
Since this location is not randomized with ASLR, it can be used to assist security vulnerability exploitation.\\
This setting can be changed at boot time via the kernel command line parameter vsyscall=[emulate|xonly|none].
Emulate mode is deprecated and can only be enabled using the kernel command line.\\
On a system with recent enough glibc (2.14 or newer) and no static binaries, you can say None without a performance penalty to improve security.\\
If unsure, select ``Emulate execution only''.}

\subsubsection{Emulate execution only}
CONFIG\_LEGACY\_VSYSCALL\_XONLY [=y] \textbf{[Y]}\\
Der Kernel fängt und emuliert Aufrufe in die feste vsyscall-Adresszuordnung und lässt keine Lesezugriffe zu.
Diese Konfiguration wird empfohlen, wenn der Userspace den Legacy-Vsyscall-Bereich verwenden könnte, aber keine Unterstützung für die binäre Instrumentierung von Legacy-Code benötigt wird. Sie entschärft bestimmte Verwendungen des vsyscall-Bereichs als Puffer zur Umgehung von ASLR.
\english{The kernel traps and emulates calls into the fixed vsyscall address mapping and does not allow reads.
This configuration is recommended when userspace might use the legacy vsyscall area but support for legacy binary instrumentation of legacy code is not needed.
It mitigates certain uses of the vsyscall area as an ASLR-bypassing buffer.}

\subsubsection{None}
CONFIG\_LEGACY\_VSYSCALL\_NONE [=n] \textbf{[N]}\\
Es wird überhaupt keine vsyscall-Zuordnung geben.
Dies eliminiert jegliches Risiko einer ASLR"=Umgehung aufgrund der festen vsyscall"=Adressen-Zuordnung.
Versuche, die vsyscalls zu verwenden, werden an dmesg gemeldet, so dass entweder alte oder bösartige Userspace"=Programme identifiziert werden können.
\english{There will be no vsyscall mapping at all.
This will eliminate any risk of ASLR bypass due to the vsyscall fixed address mapping.
Attempts to use the vsyscalls will be reported to dmesg, so that either old or malicious userspace programs can be identified.}

%3.58 Built-in kernel command line
\subsection{Built-in kernel command line}
CONFIG\_CMDLINE\_BOOL [=n] \textbf{[N]}\\
Ermöglicht die Angabe von Boot-Argumenten für den Kernel zur Erstellungszeit.
Auf einigen Systemen (z.\,B. eingebetteten [embedded]) ist es notwendig oder praktisch, einige oder alle Kernel-Boot-Argumente mit dem Kernel selbst bereitzustellen (d.\,h. sich nicht darauf zu verlassen, dass der Bootloader sie bereitstellt).
Um Kommandozeilenargumente in den Kernel zu kompilieren, setzen Sie diese Option auf Y und geben Sie dann die Boot-Argumente in CONFIG\_CMDLINE ein.
Bei Systemen mit voll funktionsfähigen Bootloadern (d.\,h. nicht eingebetteten) sollte diese Option auf N gesetzt bleiben.
\english{Allow for specifying boot arguments to the kernel at build time.
On some systems (e.g. embedded ones), it is necessary or convenient to provide some or all of the kernel boot arguments with the kernel itself (that is, to not rely on the boot loader to provide them.)\\
To compile command line arguments into the kernel, set this option to 'Y', then fill in the boot arguments in CONFIG\_CMDLINE.\\
Systems with fully functional boot loaders (i.e. non-embedded) should leave this option set to 'N'.}

%3.59
\subsection{Enable the LDT (local descriptor table)}
CONFIG\_MODIFY\_LDT\_SYSCALL \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Linux kann es Benutzerprogrammen erlauben, mit dem Systemaufruf modify\_ldt(2) eine prozessspezifische x86 Local Descriptor Table (LDT) zu installieren.
Dies ist erforderlich, um 16-Bit- oder segmentierten Code wie DOSEMU oder einige Wine-Programme auszuführen.
Sie wird auch von einigen sehr alten Threading-Bibliotheken verwendet.\\
Das Aktivieren dieser Funktion fügt eine kleine Menge an Overhead für Kontextwechsel hinzu und vergrößert die Angriffsfläche für den Kernel auf niedriger Ebene.
Durch die Deaktivierung wird der Systemaufruf modify\_ldt(2) entfernt.\\
Hier \glqq N\grqq{} zu sagen, kann für eingebettete oder Server-Kernel sinnvoll sein.
\english{Linux can allow user programs to install a per-process x86 Local Descriptor Table (LDT) using the modify\_ldt(2) system call.
This is required to run 16-bit or segmented code such as DOSEMU or some Wine programs.
It is also used by some very old threading libraries.\\
Enabling this feature adds a small amount of overhead to context switches and increases the low-level kernel attack surface.
Disabling it removes the modify\_ldt(2) system call.\\
Saying 'N' here may make sense for embedded or server kernels.}
\note{Sie können diese Option getrost ausschließen, wenn Sie ein einfacher WINE-Benutzer sind und die meisten Ihrer Anwendungen funktionieren, ohne dass Sie etwas am Kernel ändern müssen.
Aktivieren Sie diese Option nur, wenn Sie über ein WINE-Programm gestolpert sind, das sie benötigt.}

%3.60 Enforce strict size checking for sigaltstack
\subsection{Enforce strict size checking for sigaltstack}
CONFIG\_STRICT\_SIGALTSTACK\_SIZE [=n] \textbf{[N]}\\
Aus historischen Gründen ist MINSIGSTKSZ eine Konstante, die mit der AVX512-Unterstützung bereits zu klein wurde.
Fügen Sie einen Mechanismus hinzu, um die strenge Überprüfung der Sigaltstack"=Größe gegen die tatsächliche Größe des FPU-Rahmens zu erzwingen.
Diese Option aktiviert die Überprüfung standardmäßig.
Sie kann auch über die Kernel-Kommandozeilenoption \texttt{strict\_sas\_size} unabhängig von diesem Konfigurationsschalter gesteuert werden.
Das Aktivieren dieser Option könnte bestehende Anwendungen zerstören, die einen zu kleinen Sigaltstack zuweisen, aber \glq funktionieren\grq{}, weil sie nie ein Signal geliefert bekommen.\\
Sagen Sie N, wenn Sie diese Prüfung nicht wirklich erzwingen wollen.
\english{For historical reasons MINSIGSTKSZ is a constant which became already too small with AVX512 support.
Add a mechanism to enforce strict checking of the sigaltstack size against the real size of the FPU frame.
This option enables the check by default.
It can also be controlled via the kernel command line option \texttt{strict\_sas\_size} independent of this config switch.
Enabling it might break existing applications which allocate a too small sigaltstack but \texttt{work} because they never get a signal delivered.\\
Say 'N' unless you want to really enforce this check.}

%3.61
\subsection{Kernel Live Patching}
CONFIG\_LIVEPATCH [=n] \textbf{[N]}\\
Geben Sie hier Y an, wenn Sie Kernel-Live-Patching unterstützen wollen. Diese Option hat keine Auswirkungen auf die
Laufzeit, bis ein Kernel-\glqq Patch\grqq{}-Modul die von dieser Option bereitgestellte Schnittstelle verwendet,
um einen Patch zu registrieren, was dazu führt, dass Aufrufe der gepatchten Funktionen auf den neuen Funktionscode
im Patch-Modul umgeleitet werden.
\english{Say Y here if you want to support kernel live patching.
This option has no runtime impact until a kernel ``patch'' module uses the interface provided by this option to register a patch, causing calls to patched functions to be redirected to new function code contained in the patch module.}
\note{Diese Option ist nur sichtbar, wenn folgendes gesetzt ist:\\(DYNAMIC\_FTRACE\_WITH\_REGS [=y] $||$ DYNAMIC\_FTRACE\_WITH\_ARGS [=y]) $\&\&$ MODULES [=y] $\&\&$ SYSFS [=y] $\&\&$ KALLSYMS\_ALL [=n] $\&\&$ HAVE\_LIVEPATCH [=y] $\&\&$ !TRIM\_UNUSED\_KSYMS [=n]}


%3.62 Split Lock Detect and Bus Lock Detect support
\subsection{Split Lock Detect and Bus Lock Detect support {\tiny seit 6.13}}
CONFIG\_X86\_BUS\_LOCK\_DETECT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Aktivieren der Funktionen Split Lock Detect und Bus Lock Detect.\\
Siehe $<$file:Documentation/arch/x86/buslock.rst$>$ für weitere Informationen.
\english{Enable Split Lock Detect and Bus Lock Detect functionalities.\\
See $<$file:Documentation/arch/x86/buslock.rst$>$ for more information.}
\note{Testweise schalten wir das vorerst ab.}


