%
% Thomas Kuschel 2023
\newcommand{\version}{V6.7}
% preconditions:
% install on ARCH linux:
%  pacman -S texlive-plaingeneric
%  pacman -S texlive-binextra
%  pacman -S texlive-langgerman
%  pacman -S hyphen hyphen-de

\documentclass[10pt,a4paper]{article}
%\documentclass[12pt,a4paper]{report}


\usepackage[a4paper,margin=25mm]{geometry}
\usepackage[ngerman]{babel} %Verwendung von \glqq \qrgg{}
\usepackage{hyperref}
\setcounter{secnumdepth}{7}%numbering down to paragraphs, subparagraphs
%% \usepackage{ulem} %strike through with /sout{}
% you have to install texlive-plaingeneric first :
\usepackage{ulem}

% to get rid off the warning with \texttt{ \{ \} }
%\usepackage{lmodern}
%\usepackage{textcomp}

% using \colorbox with !%%
\usepackage{framed, xcolor}

% Hurenkinder und Schusterjungen verhindern
%\clubpenalty10000
%\widowpenalty10000
%\displaywidowpenalty=10000

% The following is to use subparagraph without intending:
\makeatletter
\renewcommand\subparagraph{%
 \@startsection {subparagraph}{5}{\z@ }{3.25ex \@plus 1ex
 \@minus .2ex}{-1em}{\normalfont \normalsize \bfseries }}%
\newcounter{subsubparagraph}[subparagraph]
\renewcommand\thesubsubparagraph{%
 \thesubparagraph.\@arabic\c@subsubparagraph}
\newcommand\subsubparagraph{%
 \@startsection {subsubparagraph}	% counter
							  {6}	% level
			  {\z@ }%{\parindent}	% no indent%indent
 {3.25ex \@plus 1ex \@minus .2ex}	% beforeskip
						   {-1em}	% afterskip
 {\normalfont\normalsize\bfseries}}
\newcommand\l@subsubparagraph{\@dottedtocline{6}{10em}{5em}}
\newcommand{\subsubparagraphmark}[1]{}
\def\toclevel@subsubparagraph{6}

\newcounter{subsubsubparagraph}[subsubparagraph]
\renewcommand\thesubsubsubparagraph{%
 \thesubsubparagraph.\@arabic\c@subsubsubparagraph}
\newcommand\subsubsubparagraph{%
 \@startsection {subsubsubparagraph} % counter
								 {7} % level
							  {\z@ } % no indent
	{3.25ex \@plus 1ex \@minus .2ex} % beforeskip
							  {-1em} % afterskip
   {\normalfont\normalsize\bfseries}}
\newcommand\l@subsubsubparagraph{\@dottedtocline{7}{10em}{5em}}
\newcommand{\subsubsubparagraphmark}[1]{}
\def\toclevel@subsubsubparagraph{7}
\makeatother

\begin{document}

\section*{Linux Configuration \version}
\subsection{Einführung}
Dieses Dokument dient zur Beschreibung von diversen Einstellungen
bei der Konfiguration mittels \texttt{ make menuconfig } unter Linux.\\
Es wird nicht näher darauf eingegangen, wie der Kernel kompiliert wird
oder welche Voreinstellungen, Programme etc. zum Kompilieren benötigt
werden.\\
Zu Beginn der jeweiligen Konfigurationszeile wird der Standardwert
(Default) angezeigt. Mein Vorschlag folgt danach.\\
Z.\,B. bei CONFIG\_WERROR~[=n]~\textbf{[Y]}\\
Hier ist der Standarwert ein Nein [n], meine persönliche Einstellung ein Ja [Y].\\[0.5em]
\textit{\copyright KW4NZ, Thomas Kuschel\\Wenn Sie Tippfehler finden oder Korrekturen wünschen,
dann schicken Sie dies mit Erläuterungen und dem Hinweis auf die obenstehende
Version \version ~an:
\href{mailto:oe1tkt@gmail.com}{oe1tkt@gmail.com}}
%\section{General setup \( \rightarrow \) }
\section{General setup \texorpdfstring{$\rightarrow$}{->}}

\subsection{Compile also drivers which will not load}
CONFIG\_COMPILE\_TEST [=n] \textbf{[~]}\\
\textit{Kompilieren Sie auch Treiber, die nicht geladen werden können}\\
Einige Treiber können auf einer anderen Plattform kompiliert werden als
auf der, für die sie gedacht sind. Obwohl sie dort nicht geladen werden
können (oder selbst wenn sie geladen werden können, können sie aufgrund
fehlender Hardware-Unterstützung nicht verwendet werden), möchten
Entwickler, im Gegensatz zu Distributoren, solche Treiber vielleicht
trotzdem kompilieren und testen.

\subsection{Compile the kernel with warnings as errors}
CONFIG\_WERROR \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
\textit{Den Kernel mit Fehlermeldungen bei Warnungen kompilieren}\\
Ein Build sollte keine Compiler-Warnungen ausgeben, dies aktiviert die
Flags '-Werror' (für C) und '-Dwarnings' (für Rust) um diese Regel
standardmäßig zu setzen. Bestimmte Warnungen von anderen Tools z.~B. der
Linker könnte mit dieser Option Fehler generieren. Deaktivieren ist
sinnvoll, wenn Sie einen neuen (oder sehr alten) Compiler bzw. Linker
mit seltenen, ungewöhnlichen Warnungen haben. Haben Sie auf Ihrer
Architektur Probleme, dann müssen Sie diese Konfiguration deaktivieren,
um den Kernel erfolgreich zu bauen. Im Zweifelsfall sagen sie Y für Ja.
\\\begin{scriptsize}
Für den Laptop wird der Kernel ohne Warnungen kompiliert, ansonsten wird ein Fehler generiert.
\end{scriptsize}

\subsection{Local version -- append to kernel release}
CONFIG\_LOCALVERSION [=] \textbf{[~]}\\
\textit{Lokale Version -- an die Kernelversion anhängen}\\
Type: string\\
Hängen Sie eine zusätzliche Zeichenkette an das Ende Ihrer Kernelversion
an.\\
Dies wird angezeigt, wenn Sie z.\,B. \texttt{uname} eingeben. Die hier
angegebene Zeichenfolge wird an den Inhalt von einem Dateinamen mit
\texttt{localverion*} als Objekt und im Quellbaum, in dieser Reihenfolge
angezeigt. Die Zeichenkette darf maximal 64 Zeichen lang sein.

\subsection{Automatically append version information to the version string}
CONFIG\_LOCALVERSION\_AUTO [=y] \textbf{[Y]}\\
Dies versucht automatisch festzustellen, ob der aktuelle Baum ein
Release-Tree ist, indem es nach \textbf{Git}-Tags sucht, die zur aktuellen
Top-of-Tree-Revision gehören.\\
Eine Zeichenkette des Formats \texttt{-gxxxxxxxx} wird der lokalen Version
hinzugefügt, wenn ein git-basierter Baum gefunden wird.  Die so erzeugte
Zeichenkette wird nach allen passenden \glqq localversion*\grqq -Dateien
und nach dem in CONFIG\_LOCALVERSION eingestellten Wert angehängt. (Die hier
tatsächlich verwendete Zeichenkette sind die ersten 12 Zeichen, die durch
die Ausführung des Befehls erzeugt werden:\\
\indent\texttt{\$ git rev-parse --verify HEAD}\\
der innerhalb des Skripts \glqq scripts/setlocalversion\grqq{}  ausgeführt wird.)
\subsection{Build ID Salt}
CONFIG\_BUILD\_SALT [=] \textbf{[~]}\\
Type: string\\
Dies wird verwendet, um die Binaries und ihre Debug-Infos zu verknüpfen.
Wenn diese Option gesetzt ist, dann wird dieser Wert in die Berechnung der
Build-ID einbezogen. Wird von Distributionen verwendet, die sicherstellen 
wollen, dass es eineindeutige IDs zwischen verschiedenen Builds gibt.
Üblicherweise brauchen wir das nicht.

\subsection{Kernel compression mode \texorpdfstring{$\rightarrow$}{->}}
Der Linux-Kernel ist eine Art selbstextrahierende, ausführbare Datei.
Es stehen mehrere Kompressionsalgorithmen zur Verfügung, die sich in
Effizienz, Kompressions- und Dekompressionsgeschwindigkeit unterscheiden.
Die Komprimierungsgeschwindigkeit ist nur bei der Erstellung eines Kernels
relevant. Die Dekomprimierungsgeschwindigkeit ist bei jedem Systemstart
von Bedeutung. (Eine ältere Version dieser Funktionalität (nur bzip2)
für 2.4 wurde von Christian Ludwig bereitgestellt)
Hohe Komprimierungsoptionen sind vor allem für Benutzer nützlich, die
wenig Festplattenplatz zur Verfügung haben (embedded systems), für die
aber die Ram-Größe weniger wichtig ist.\\
Überblick: Gzip werden von den älteren Kernelversionen unterstützt,\\
Arch Linux (since Linux/x86 5.9.0) Standard: ZSTD (former: XZ since 4.14.4, predecessor GZIP,XZ)\\
Debian 11.6: XZ\\
@TODO Weitere Linux Distributionen
\subsubsection{Gzip}
CONFIG\_KERNEL\_GZIP [=n] \textbf{[~]}\\
Die alte und bewährte gzip-Kompression. Sie bietet ein gutes
Gleichgewicht zwischen Kompressionsrate und
Dekompressionsgeschwindigkeit.
\subsubsection{Bzip2}
CONFIG\_KERNEL\_BZIP2  [=n] \textbf{[~]}\\
Die Kompressionsrate und auch die Geschwindigkeit der ist durchschnittlich. Die Geschwindigkeit
der Dekomprimierung ist die langsamste. Größe des Kernels ist etwa 10~\% kleiner
im Vergleich zu GZIP. Es benötigt auch einen großen Speicherbereich, bei 
modernen Kerneln benötigt man zumindest 8~MB~RAM oder mehr beim Booten.
\subsubsection{LZMA}
CONFIG\_KERNEL\_LZMA [=n] \textbf{[~]}\\
Dieser Kompressionsalgorithmus hat die höchste Komprimierung. Die Geschwindigkeit der
Dekomprimierung liegt zwischen GZIP und BZIP2.
Komprimierung ist die langsamste. Kernelgröße beträgt etwa 33~\% weniger als mit GZIP.
\subsubsection{XZ}
CONFIG\_KERNEL\_XZ [=n] \textbf{[~]}\\
XZ verwendet den LZMA2-Algorithmus und befehlssatzspezifische
BCJ-Filter, die das Komprimierungsverhältnis des ausführbaren
Codes verbessern können. Die Größe des Kernels ist mit XZ im
Vergleich zu GZIP etwa 30~\% kleiner. Auf Architekturen, für die
es einen BCJ-Filter gibt (i386, x86\_64, ARM, IA-64, PowerPC und
SPARC), erzeugt XZ einen um einige Prozent kleineren Kernel als
einfaches LZMA.
Die Geschwindigkeit ist in etwa die gleiche wie bei LZMA: Die Dekomprimierungsgeschwindigkeit von
XZ ist besser als die von bzip2, aber schlechter als die von gzip und LZO.
Die Komprimierung ist langsam.
\subsubsection{LZO}
CONFIG\_KERNEL\_LZO [=n] \textbf{[~]}\\
Kompressionsrate ist die schlechteste aller anderen. Kernelgröße ist etwa 10~\% größer als GZIP.
Jedoch ist die Geschwindigkeit beim Komprimieren und Dekomprimieren die höchste.

\subsubsection{LZ4}
CONFIG\_KERNEL\_LZ4  [=n] \textbf{[~]}\\
LZ4 ist eine LZ77-Typ-Komprimierung mit einer festen, byte-orientierten Enkodierung.\\
Siehe auch \url{http://code.google.com/p/lz4}.\\
Komprimierungsverhältnis ist noch schlechter als LZO. 8~\% größere Kernelgröße als bei LZO.
Dekomprimierung ist jedoch von der Geschwindigkeit her schneller als LZO.

\subsubsection{ZSTD}
CONFIG\_KERNEL\_ZSTD [=y] \textbf{[Y]}\\
ZSTD ist ein Komprimierungsalgorithmus, der auf eine Zwischenkomprimierung
mit schneller Dekomprimierungsgeschwindigkeit abzielt. Er
komprimiert besser als GZIP und dekomprimiert etwa so schnell wie
LZO, ist aber langsamer als LZ4. Sie benötigen mindestens
192~KB~RAM oder mehr zum Booten. Das Kommandozeilenprogramm \texttt{zstd}
ist für die Komprimierung erforderlich.

\subsection{Default init path}
CONFIG\_DEFAULT\_INIT [=] \textbf{[~]}\\
Diese Option legt den Standard-Init-Pfad für das System fest,
wenn in der Kernel-Befehlszeile keine solche init=-Option übergeben wird.
Wenn der angeforderte Pfad nicht vorhanden ist, wird trotzdem versucht,
weitere Orte zu finden (z.~B. /sbin/init usw.). Wenn dieser Pfad leer ist,
wird einfach die Fallback-Liste verwendet, wenn init= nicht übergeben wird.

\subsection{Default hostname}
CONFIG\_DEFAULT\_HOSTNAME [=archlinux] \textbf{[=archlinux]}\\
Diese Option legt den Standard-Hostnamen des Systems fest,
noch bevor der Userspace das Kommando sethostname(2) aufruft.
Der Kernel verwendet hier traditionell ''(none)'', Sie möchten
vielleicht eine andere Voreinstellung verwenden, um ein minimales
System mit weniger Konfiguration benutzbar zu machen.

\subsection{System V IPC}
CONFIG\_SYSVIPC [=y] \textbf{[Y]}\\
Die Inter-Prozess-Kommunikation IPC ist eine Zusammenstellung
aus Bibliotheksfunktionen (libraries) und Systemaufrufen die Prozesse (laufende Programme)
synchronisiert und Daten untereinander austauschen kann. Generell ist das eine gute Sache,
einige Programme würden auch nicht funktionieren wenn Sie hier kein Y (ja) setzen.

\subsection{POSIX Message Queues}
CONFIG\_POSIX\_MQUEUE [=y] \textbf{[Y]}\\
Die POSIX-Variante der Nachrichtenwarteschlangen (message queues) ist ein Teil der IPC.
In POSIX-Nachrichtenwarteschlangen hat jede Nachricht eine Priorität, die über die Reihenfolge
des Empfangs durch einen Prozess entscheidet. Wenn Sie Programme kompilieren und ausführen wollen,
die z.~B. für Solaris geschrieben wurden und die POSIX-Warteschlangen (Funktionen mq\_\*) verwenden,
sagen Sie hier Y.
POSIX-Nachrichtenwarteschlangen sind via Dateisystem als \glqq mqueue\grqq{}  sichtbar und können irgendwo
eingehängt werden, wenn Sie Dateisystemoperationen auf Nachrichtenwarteschlangen durchführen wollen.

\subsection{General notification queue}
CONFIG\_WATCH\_QUEUE [=y] \textbf{[Y]}\\
Dies ist eine allgemeine Benachrichtigungswarteschlange für den Kernel,
um Ereignisse an den Userspace weiterzuleiten, indem sie in Pipes gesplittet werden.
Sie kann in Verbindung mit Watches für Schlüssel-/Schlüsseländerungsbenachrichtigungen (key/keyring) und
Gerätebenachrichtigungen verwendet werden.\\
Bemerkung: Bei Debian Bullseye ist dies nicht gesetzt (N).

\subsection{Enable process\_vm\_readv/writev\ syscalls}
CONFIG\_CROSS\_MEMORY\_ATTACH [=y] \textbf{[Y]}\\
Die Aktivierung dieser Option fügt die Systemaufrufe process\_vm\_readv und
process\_vm\_writev hinzu, die es einem Prozess mit den richtigen Rechten ermöglichen,
direkt aus dem Adressraum eines anderen Prozesses zu lesen oder in diesen zu schreiben.
Weitere Einzelheiten finden Sie in der Manpage.

\subsection{uselib syscall (for libc5 and earlier)}
CONFIG\_USELIB [=n] \textbf{[N]}\\
Diese Option schaltet den uselib-Systemaufruf ein, der im dynamic-Linker von libc5 und früher verwendet wird.
Das aktuelle glibc verwendet diesen Systemaufruf nicht mehr, deshalb kann man diese Option
ausschalten wenn sie
keine Programme mehr verwenden, die auf libc5 (oder früher) compiliert wurden.\\
Bemerkung: Debian Bullseye verwendet dies noch (Y).

\subsection{Auditing support}
CONFIG\_AUDIT [=y] \textbf{[Y]}\\
Aktivieren Sie eine Überwachungsinfrastruktur, die mit einem anderen Kernel-Subsystem
verwendet werden kann, wie z.~B. SELinux (das dies für die Protokollierung der Ausgabe
von avc-Nachrichten benötigt).  Die Systemaufrufüberprüfung ist auf Architekturen,
die sie unterstützen, enthalten.

\subsection{IRQ subsystem  \texorpdfstring{$\rightarrow$}{->}}
Über diese Schnittstelle kann man Funktionen und Parameter für den
Kernelbau auswählen.
Merkmale können entweder eingebaut, modularisiert oder ignoriert werden.
Parameter müssen als dezimale oder hexadezimale Zahlen oder als Text eingegeben
werden.

\subsubsection{Expose irq internals in debugfs}
CONFIG\_GENERIC\_IRQ\_DEBUGFS [=n] \textbf{[N]}\\
Legt interne Zustandsinformationen über debugfs offen.
Hauptsächlich für Entwickler und zur Fehlersuche bei schwer
zu diagnostizierenden Interrupt-Problemen.

\subsection{Timers subsystem \texorpdfstring{$\rightarrow$}{->}}
\subsubsection{Timer tick handling \texorpdfstring{$\rightarrow$}{->}}
Sie müssen aus den folgenden drei Möglichkeiten eine wählen:
\paragraph{Periodic timer ticks (constant rate, no dynticks)} $~$ \\
CONFIG\_HZ\_PERIODIC [=n] \textbf{[N]}\\
Diese Option sorgt dafür, dass der Tick periodisch mit einer konstanten Rate läuft,
auch wenn die CPU ihn nicht braucht.
\paragraph{Idle dynticks system (tickless idle)} $~$ \\
CONFIG\_NO\_HZ\_IDLE [=n] \textbf{[N]}\\
Diese Option ermöglicht ein tickloses idle-System (Leerlaufsystem):
Timer-Interrupts werden nur bei Bedarf ausgelöst, wenn das System im
Leerlauf ist. Dies ist v.a. zum Energiesparen interessant.
\paragraph{Full dynticks system (tickless)} $~$ \\
CONFIG\_NO\_HZ\_FULL [=y] \textbf{[Y]}\\
Diese Option ermöglicht ein tickloses idle-System (Leerlaufsystem):
Timer-Interrupts werden nur bei Bedarf ausgelöst, wenn das System im
Leerlauf ist. Dies ist v.a. zum Energiesparen interessant.\\
Wird bei Linux-Distributionen ausgewählt.

\subsubsection{Force user context tracking}
CONFIG\_CONTEXT\_TRACKING\_USER\_FORCE [=n] \textbf{[N]}\\
Die wichtigste Voraussetzung für das Funktionieren von Full-Dynticks ist die
Unterstützung des Subsystems zur Verfolgung des Benutzerkontextes.
Es gibt aber auch noch andere Abhängigkeiten, die erfüllt werden müssen, damit
die vollständigen Dynticks funktionieren.\\
Diese Option dient zum Testen, wenn eine Systemarchitektur das Backend für die
Benutzerkontextverfolgung implementiert, aber noch nicht alle Anforderungen erfüllt,
um die volle Dynticks-Funktion zu ermöglichen.
Ohne die vollständigen Dynticks gibt es keine Möglichkeit,
die Unterstützung für die Benutzerkontextverfolgung und die Teilsysteme,
die darauf angewiesen sind, zu testen: RCU Userspace extended quiescent state
und tickless cputime accounting. Diese Option kommt mit dem Fehlen des vollständigen
dynticks-Subsystems zurecht, indem sie die Benutzerkontextverfolgung auf
allen CPUs im System erzwingt.

Sagen Sie nur dann ja (Y), wenn Sie an der Entwicklung eines Architektur-Backends
für die Benutzerkontextverfolgung arbeiten.
Sagen Sie ansonsten N, da diese Option einen Overhead mit sich bringt, den Sie in
der Praxis nicht haben wollen.

\subsubsection{Old Idle dynticks config}
CONFIG\_NO\_HZ \colorbox{yellow!80}{[=y] \textbf{[N]}}\\*
\textit{Alte Leerlauf-Dynticks-Konfiguration}\\
Dies ist der alte Konfigurationseintrag, der Dynticks im Leerlauf aktiviert.
\sout{Wir behalten ihn noch eine Weile bei, um die Abwärtskompatiblität mit älteren
Konfigurations\-dateien zu gewähr\-leisten.}
\\\begin{scriptsize}
	Alte Dynticks-Konfiguration wird nicht mehr unterstützt.
\end{scriptsize}

\subsubsection{High Resolution Timer Support}
CONFIG\_HIGH\_RES\_TIMERS [=y] \textbf{[Y]}\\
\textit{Unterstützung von Timern mit hoher Auflösung}\\
Diese Option aktiviert die Unterstützung hochauflösender Timer.
Wenn ihre Hardware dazu nicht in der Lage ist, erhöht diese
Option nur die Größe des Kernel-Images.

\subsubsection{Clocksource watchdog maximum allowable skew}
CONFIG\_CLOCKSOURCE\_WATCHDOG\_MAX\_SKEW\_US [=100] \textbf{[100]}\\
\textit{Maximal zulässige Abweichung der Watchdog-Taktquelle}\\
Geben Sie den maximal zulässigen Wert für den Watchdog-Versatz
in Mikrosekunden an, bevor die Clocksource als instabil gemeldet wird.
Der Standardwert basiert auf einem Watchdog-Intervall von einer halben
Sekunde und der maximalen Frequenzdrift von NTP von 500 Teilen pro Million.
Wenn die Clocksource gut genug für NTP ist, ist sie auch gut genug
für den Watchdog der Clocksource!\\
Bereich (Range):  50 -- 1000

\subsection{BPF subsystem \texorpdfstring{$\rightarrow$}{->}}
Berkeley Packet Filter, Firewall-Filtertechnik im Kernel

\subsubsection{Enable bpf() system call}
CONFIG\_BPF\_SYSCALL [=y] \textbf{[Y]}\\
Aktivieren Sie den Systemaufruf bpf(), der es ermöglicht,
BPF-Programme und -Maps über Dateideskriptoren zu manipulieren.

\subsubsection{Enable BPF Just In Time compiler}
CONFIG\_BPF\_JIT [=y] \textbf{[Y]}\\
BPF-Programme werden normalerweise von einem BPF-Interpreter verarbeitet.
Diese Option ermöglicht es dem Kernel, nativen Code zu erzeugen,
wenn ein Programm in den Kernel geladen wird. Dadurch wird die Verarbeitung
von BPF-Programmen erheblich beschleunigt.\\
Beachten Sie, dass ein Administrator diese Funktion durch Ändern aktivieren sollte:\\[0.5em]                                                   
\indent\texttt{/proc/sys/net/core/bpf\_jit\_enable}\\
\indent\texttt{/proc/sys/net/core/bpf\_jit\_harden (optional)}\\
\indent\texttt{/proc/sys/net/core/bpf\_jit\_kallsyms (optional)}

\paragraph{Permanently enable BPF JIT and remove BPF interpreter}$~$\\
CONFIG\_BPF\_JIT\_ALWAYS\_ON [=y] \textbf{[Y]}\\
Aktiviert BPF JIT und entfernt den BPF-Interpreter um spekulative Ausführungen
von BPF-An\-wei\-sun\-gen durch den Interpreter zu verhindern.
Wenn CONFIG\_BPF\_JIT\_ALWAYS\_ON eingeschaltet ist, dann wird
\texttt{/proc/sys/net/core/bpf\_jit\_enable} permanent auf 1 gesetzt, alle
Versuche diese Einstellung auf andere Werte zu legen wird mit einem Fehler
zurückgewiesen.
\subsubsection{Disable unprivileged BPF by default}
CONFIG\_BPF\_UNPRIV\_DEFAULT\_OFF [=y] \textbf{[Y]}\\
Deaktiviert die unprivilegierte BPF standardmäßig, indem der entsprechende Eintrag\\
\texttt{/proc/sys/kernel/unprivileged\_bpf\_disabled} auf 2 gesetzt wird.
Ein Administrator kann sie immer noch wieder aktivieren,
indem er sie später auf 0 setzt, oder sie dauerhaft deaktiviert, indem
er sie auf 1 setzt (von wo aus kein weiterer Übergang auf 0 mehr möglich ist).\\
Unprivilegierte BPF könnte verwendet werden, um bestimmte potenzielle Seitenkanalschwachstellen
für spekulative Ausführung auf nicht gemilderter betroffener Hardware auszunutzen.
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit Y.
\subsubsection{Preload BPF file system with kernel specific program
 and map iterators \texorpdfstring{$\rightarrow$}{->}}
BPF\_PRELOAD [=n] \textbf{[N]}\\
Dadurch wird ein Kernelmodul mit mehreren eingebetteten BPF-Programmen erstellt,
die als für den Menschen lesbare Dateien in den BPF-FS-Einhängepunkt
eingefügt werden, was bei der Fehlersuche und der Untersuchung von BPF-Programmen
und -Maps nützlich ist.
\paragraph{bpf\_preload kernel module\\} $~$ \\
\textit{Dies ist nur sichtbar wenn der übergeordnete Punkt aktiviert ist.}\\
CONFIG\_BPF\_PRELOAD\_UMD [=m] \textbf{[~]}\\
Dadurch wird ein Kernelmodul mit mehreren eingebetteten BPF-Programmen
erstellt, die als für den Menschen lesbare Dateien in den BPF-FS-Einhängepunkt eingefügt werden,
was bei der Fehlersuche und der Untersuchung von BPF-Programmen und -Maps nützlich ist.
\subsubsection{Enable BPF LSM Instrumentation}
CONFIG\_BPF\_LSM [=y] \textbf{[Y]}\\
Ermöglicht die Instrumentierung der Sicherheitshaken mit BPF-Programmen zur Implementierung dynamischer
MAC- und Prüfungsrichtlinien. Wenn Sie unsicher sind, wie Sie diese Frage beantworten
sollten, antworten Sie mit N.
\subsection{Preemption Model (Preemptible Kernel (Low-Latency Desktop)) \texorpdfstring{$\rightarrow$}{->}}

Eingestellt auf : Low-Latency, d.~h. nur kleine Verzögerungen beim Modell des Multitaskings.
Es gibt drei Einstellungen:
\subsubsection{No Forced Preemption (Server)}
CONFIG\_PREEMPT\_NONE [=n] \textbf{[N]}\\
Das war das traditionelle Linux Modell der Unterbrechungen, das sich auf den Durchsatz konzentrierte.
Wird vor allem für den Server-Einsatz verwendet. Es gibt durchaus gute Performance für die Latenz, jedoch
keine Garantie dafür und es kann zu zufälligen, längeren Verzögerungszeiten kommen.

Für einen Serverbetrieb wird diese Einstellung empfohlen, damit der maximale Durchsatz an Rechenleistung
entsteht.
\subsubsection{Voluntary Kernel Preemption (Desktop)}
CONFIG\_PREEMPT\_VOLUNTARY [=n] \textbf{[N]}\\
Diese Einstellung reduziert die Latenz des Kernels durch zusätzliche \glqq explizite Unterbrechungspunkte\glqq{}
im Kernel.
Diese neuen Unterbrechungspunkte wurden ausgewählt, um die maximale Latenz beim neuerlichen Zuordnen
des Schedulers zu reduzieren und dadurch schnelle Reaktionszeiten der Applikationen zu gewährleisten. --
Auf Kosten eines geringeren Durchsatzes wird dies erreicht.
\subsubsection{Preemptible Kernel (Low-Latency Desktop)}
CONFIG\_PREEMPT [=y] \textbf{[Y]}\\
Bei dieser Einstellung wird die Latenz des Kernels weiter erniedrigt indem der gesamte Code des Kernels
(keine kritischen, geschützten Bereiche) unterbrechbar gemacht wird. Dadurch wird ein reibungsloses
Arbeiten mit Applikationen aus Nutzersicht erreicht, sogar unter Volllast.
Wähle diese Einstellung, wenn man einen Desktop oder ein Embedded-System mit einer Latenz im
Millisekundenbereich möchte. Natürlich geht diese Einstellung mit einem leicht geringerem Durchsatz an
Rechenleistung einher.
\subsection{Preemtion behaviour defined on boot}
CONFIG\_PREEMPT\_DYNAMIC [=y] \textbf{[Y]}\\
Diese Option ermöglicht es, das Präemptionsmodell über den
Kernel-Kommandozeilenparameter zu definieren und damit das
während der Kompilierung definierte Standard-Präemptionsmodell
außer Kraft zu setzen.
Diese Funktion ist vor allem für Linux-Distributionen
interessant, die eine vorgefertigte Kernel-Binärdatei
bereitstellen, um die Anzahl der angebotenen Kernel-Varianten
zu reduzieren und dennoch verschiedene Anwendungsfälle zu
ermöglichen.

Der Laufzeit-Overhead ist vernachlässigbar, wenn
HAVE\_STATIC\_CALL\_INLINE aktiviert ist, aber wenn Laufzeit-Patching
für die spezifische Architektur nicht verfügbar ist,
sollte der potenzielle Overhead in Betracht gezogen werden.
Interessant wird es, wenn derselbe vorgefertigte Kernel
sowohl für Server- als auch für Desktop-Workloads verwendet
werden soll.
\subsection{Core Scheduling for SMT}
CONFIG\_SCHED\_CORE [=y] \textbf{[Y]}\\
Kern-Scheduling für SMT

Diese Option ermöglicht Core Scheduling, ein Mittel zur
koordinierten Auswahl von Aufgaben zwischen SMT-Geschwistern.
Wenn diese Option aktiviert ist - siehe prctl
(PR\_SCHED\_CORE)
 - stellt die Aufgabenauswahl sicher, dass alle SMT-Geschwister
eine Aufgabe aus der gleichen \glqq Kerngruppe\grqq{} ausführen und
den Leerlauf erzwingen, wenn keine passende Aufgabe gefunden
wird.
Diese Funktion wird unter anderem verwendet:

- Entschärfung einiger (nicht aller) SMT-Seitenkanäle;

- Begrenzung der SMT-Interferenz zur Verbesserung des Determinismus und/oder der Leistung.\\
SCHED\_CORE ist standardmäßig deaktiviert. Wenn es aktiviert und unbenutzt ist, was
bei Linux-Distributionen wahrscheinlich der Fall ist,
sollte es keine messbaren Auswirkungen auf die Leistung
haben.

\subsection{CPU/Task time and stats accounting \texorpdfstring{$\rightarrow$}{->}}

\subsubsection{Cputime accounting (Full dynticks CPU time accounting) \texorpdfstring{$\rightarrow$}{->}}
\paragraph{Full dynticks CPU time accounting} $~$\\
CONFIG\_VIRT\_CPU\_ACCOUNTING\_GEN [=y] \textbf{[Y]}\\
Wählen Sie diese Option, um die Berechnung der Task- und CPU-Zeit auf
Full-Dynticks-Systemen zu aktivieren.
Diese Berechnung wird durch die Überwachung aller Kernel-Benutzer-Grenzen mithilfe des
Kontextverfolgungs-Subsystems implementiert.\\
Die Berechnung erfolgt daher auf Kosten eines erheblichen Overheads.\\
Im Moment ist dies nur sinnvoll, wenn Sie an der Entwicklung des vollständigen
Dynticks-Subsystems arbeiten.

\subsubsection{Fine granularity task level IRQ time accounting}
CONFIG\_IRQ\_TIME\_ACCOUNTING [=y] \textbf{[Y]}\\
Wählen Sie diese Option aus, um eine fein granulare Berechnung der
Task-Irq-Zeit zu aktivieren.
Dies geschieht durch das Lesen eines Zeitstempels bei jedem Übergang
zwischen dem softirq- und dem hardirq-Zustand, so dass es zu geringen
Leistungseinbußen kommen kann.\\
Im Zweifelsfall sagen Sie hier N für Nein. 

\subsubsection{BSD Process Accounting}
CONFIG\_BSD\_PROCESS\_ACCT [=y] \textbf{[Y]}\\
Wenn Sie hier Y (für Ja) angeben, kann ein Programm auf Benutzerebene den Kernel
(über einen speziellen Systemaufruf) anweisen, Prozessabrechnungsinformationen
in eine Datei zu schreiben: Jedes Mal, wenn ein Prozess beendet wird, werden
Informationen über diesen Prozess vom Kernel an die Datei angehängt.
Die Informationen beinhalten Dinge wie die Erstellungszeit, den besitzenden
Benutzer, den Befehlsnamen, den Speicherverbrauch, das kontrollierende Terminal
usw. (die vollständige Liste kann in der acct-Struktur in
\textless{}file:include/linux/acct.h\textgreater{} gefunden werden).
Es obliegt dem Programm auf Benutzerebene, nützliche Dinge mit diesen
Informationen zu tun. Dies ist im Allgemeinen eine gute Idee, also sagen
Sie Y für Ja.

\paragraph{BSD Process Accounting version 3 file format} $~$\\
CONFIG\_BSD\_PROCESS\_ACCT\_V3 [=y] \textbf{[Y]}\\
Wenn Sie hier Y (für Ja) angeben, werden die Prozessabrechnungsinformationen
in ein neues Dateiformat geschrieben, das auch die Prozess-IDs der einzelnen
Prozesse und ihrer Eltern protokolliert. Beachten Sie, dass dieses
Dateiformat nicht mit den früheren v0/v1/v2-Dateiformaten kompatibel ist,
so dass Sie aktualisierte Werkzeuge für die Verarbeitung benötigen.
Eine vorläufige Version dieser Werkzeuge ist unter
\url{http://www.gnu.org/software/acct/} verfügbar.

\subsubsection{Export task/process statistics through netlink}
CONFIG\_TASKSTATS [=y] \textbf{[Y]}\\
Export ausgewählter Statistiken für Aufgaben/Prozesse über die generische
Netlink-Schnittstelle. Im Gegensatz zur BSD-Prozessabrechnung sind die
Statistiken während der Lebensdauer von Auf\-gaben/Pro\-zes\-sen als Antwort auf
Befehle verfügbar. Wie BSD-Accounting werden sie beim Beenden von Tasks in
den Benutzerbereich gesendet.\\
Sagen Sie N, wenn Sie unsicher sind.

\paragraph{Enable per-task delay accounting} $~$\\
CONFIG\_TASK\_DELAY\_ACCT [=y] \textbf{[Y]}\\
Sammeln Sie Informationen über die Zeit, die eine Task für das Warten auf
Systemressourcen wie CPU, synchrone Block-E/A-Abwicklung und Auslagerung
von Seiten aufwendet. Solche Statistiken können bei der Festlegung der
Prioritäten eines Tasks im Verhältnis zu anderen Tasks für CPU-, IO-,
RSS-Limits usw. helfen.\\
Sagen Sie N, wenn Sie unsicher sind.

\paragraph{Enable extended accounting over taskstats}$~$\\
CONFIG\_TASK\_XACCT [=y] \textbf{[Y]}\\
Sammeln von erweiterten Task-Accounting-Daten und Senden der Daten an
das Userland zur Verarbeitung über die Taskstats-Schnittstelle.\\
Sagen Sie N, wenn Sie unsicher sind.

\subparagraph{Enable per-task storage I/O accounting}$~$\\
CONFIG\_TASK\_IO\_ACCOUNTING [=y] \textbf{[Y]}\\
Sammeln von Informationen über die Anzahl
der Bytes an Speicher-E/A, die dieser Task verursacht hat.\\
Sagen Sie N, wenn Sie unsicher sind.

\subsubsection{Pressure stall information tracking}
CONFIG\_PSI [=y] \textbf{[Y]}\\
Sammeln Sie Metriken, die anzeigen, wie überlastet die CPU-, Speicher-
und IO-Ka\-pa\-zi\-tät im System sind.

Wenn Sie hier Y angeben, erstellt der Kernel /proc/pressure/ mit die
Druckstatistikdateien cpu, memory und io. Diese zeigen den Anteil der
Walltime an, in dem einige oder alle Tasks im System aufgrund der
Beanspruchung der jeweiligen Ressource verzögert sind.

In Kerneln mit cgroup-Unterstützung verfügen cgroups (nur cgroup2) über
cpu.pressure-,\\*
memory.pressure- und io.pressure-Dateien, die nur die
Druckstaus für die gruppierten Aufgaben zusammenfassen.\\
Weitere Einzelheiten finden Sie unter Documentation/accounting/psi.rst.\\
Sagen Sie N, wenn Sie unsicher sind.

\paragraph{Require boot parameter to enable pressure stall information tracking} $~$\\
CONFIG\_PSI\_DEFAULT\_DISABLED [=n] \textbf{[N]}\\
Wenn diese Option gesetzt ist, ist die Verfolgung von Druck\-stau\-informationen
standardmäßig deaktiviert, kann aber durch die Übergabe von psi=1 auf der
Kernel-Befehlszeile beim Booten aktiviert werden.\\
Diese Funktion fügt dem Task-Wakeup- und Sleep-Pfad des Schedulers etwas Code hinzu.
Der Overhead ist zu gering, um gängige planungsintensive Arbeitslasten in der Praxis
zu beeinträchtigen (z.~B. Web\-server, Memcache), aber es zeigt sich in künstlichen
Scheduler-Stresstests, wie z.~B. Hackbench.\\
Wenn Sie paranoid sind und nicht sicher, wofür der Kernel verwendet wird,
sagen Sie Y für Ja.\\
Sagen Sie N, wenn Sie unsicher sind.

\subsection{CPU isolation}
CONFIG\_CPU\_ISOLATION [=y] \textbf{[Y]}\\
Stellen Sie sicher, dass CPUs, auf denen kritische Aufgaben laufen,
nicht durch irgendwelche \glqq Störquellen\grqq{} wie ungebundene Workqueues, Timers,
kthreads usw. gestört werden.\\
Ungebundene Aufgaben werden auf Housekeeping-CPUs verlagert.
Dies wird durch den Boot-Parameter \glqq isolcpus=\grqq{} gesteuert.\\
Sagen Sie Y für ja, wenn Sie unsicher sind.

\subsection{RCU Subsystem \texorpdfstring{$\rightarrow$}{->}}
Read -- Copy -- Update (Lesen, Kopieren, Aktualisieren)
\subsubsection{Make expert-level adjustments to RCU configuration}
CONFIG\_RCU\_EXPERT [=y] \textbf{[Y]}\\
Diese Option muss aktiviert werden, wenn Sie Anpassungen der RCU-Konfiguration
auf Expertenebene vornehmen möchten.
Standardmäßig können solche Anpassungen nicht vorgenommen werden,
was den oft vorteilhaften Nebeneffekt hat, dass \glqq make oldconfig\grqq{} Sie
davon abhält, alle möglichen detaillierten Fragen darüber zu stellen,
wie Sie zahlreiche obskure RCU-Optionen eingerichtet haben möchten.\\
Sagen Sie Y, wenn Sie Anpassungen an RCU auf Expertenebene vornehmen müssen.\\
Sagen Sie N, wenn Sie unsicher sind.

\subsubsection{Force selection of TASKS\_RCU}
CONFIG\_FORCE\_TASKS\_RCU [=n] \textbf{[N]}\\
Diese Option erzwingt eine aufgabenbasierte RCU-Implementierung die nur
freiwillige Kontextwechsel verwendet (keine Preemption!), Leerlauf und
Benutzermodus-Ausführung als Ruhezustände verwendet.  
Nicht für manuelle Auswahl in den meisten Fällen.

\subsubsection{Force selection of Tasks Rude RCU}
CONFIG\_FORCE\_TASKS\_RUDE\_RCU [=n] \textbf{[N]}\\
Diese Option erzwingt eine Task-basierte RCU-Implementierung, die nur
Kontextwechsel (einschließlich Preemption) und die Ausführung im
Benutzermodus als Ruhezustand verwendet. Sie erzwingt IPIs und
Kontextwechsel auf allen Online-CPUs, auch auf den Idle-CPUs, also
mit Vorsicht verwenden. 
In den meisten Fällen nicht für die manuelle Auswahl geeignet.

\subsubsection{Force selection of Tasks Trace RCU}
CONFIG\_FORCE\_TASKS\_TRACE\_RCU [=n] \textbf{[N]}\\
Diese Option ermöglicht eine Task-basierte RCU-Implementierung, die
explizite rcu\_read\_lock\_trace()-Lesemarker verwendet und es ermöglicht,
dass diese Leser sowohl in der Leerlaufschleife als auch in den
CPU-Hotplug-Codepfaden erscheinen. Es kann IPIs auf Online-CPUs erzwingen,
auch auf Idle-CPUs, also mit Vorsicht verwenden.
In den meisten Fällen nicht für die manuelle Auswahl geeignet.

\subsubsection{Tree-based hierarchical RCU fanout value}
CONFIG\_RCU\_FANOUT [=64] \textbf{[64]}\\
Diese Option steuert den Fanout von hierarchischen Implementierungen von
RCU, so dass RCU auf Maschinen mit einer großen Anzahl von CPUs effizient
arbeiten kann. Dieser Wert muss mindestens die vierte Wurzel von NR\_CPUS
sein, wodurch NR\_CPUS wahnsinnig groß werden kann. Der Standardwert von
RCU\_FANOUT sollte für Produktionssysteme verwendet werden, aber wenn Sie
die RCU-Implementierung selbst einem Stresstest unterziehen, ermöglichen
kleine RCU\_FANOUT-Werte das Testen von Codepfaden für große Systeme auf
kleinen (kleineren) Systemen.\\
Wählen Sie eine bestimmte Zahl, wenn Sie RCU selbst testen.
Nehmen Sie den Standardwert, wenn Sie unsicher sind.\\
Symbol: RCU\_FANOUT [=64]\\
Type  : integer (Ganzzahl)\\
Bereich (range) : [2 64]

\subsubsection{Tree-based hierarchical RCU leaf-level fanout value}
CONFIG\_RCU\_FANOUT\_LEAF [=16] \textbf{[16]}\\
Diese Option steuert das Fanout auf Blattebene bei hierarchischen
Implementierungen von RCU und ermöglicht es, Cache-Misses gegen
Sperrkonflikte abzuwägen. Systeme, die ihre Scheduling"=Clock"=Interrupts
aus Gründen der Energieeffizienz synchronisieren, werden die
Standardeinstellung bevorzugen, da der kleinere Leaf-Level-Fanout die
Lock-Contention-Level akzeptabel niedrig hält. Sehr große Systeme
(Hunderte oder Tausende von CPUs) werden stattdessen diesen Wert auf den
maximal möglichen Wert setzen wollen, um die Anzahl der Cache-Misses zu
reduzieren, die während der Initialisierung der RCU-Grace-Periode auftreten.
Diese Systeme neigen dazu, CPU-gebunden zu laufen, und werden daher nicht
von synchronisierten Interrupts unterstützt, und neigen daher dazu, sie zu
verzerren, was den Sperrkonflikt so weit reduziert, dass große Fanouts auf
Blattebene gut funktionieren. Das heißt, wenn Sie den Fanout auf Blattebene
auf eine große Zahl setzen, wird dies wahrscheinlich zu problematischen
Sperrkonflikten auf den rcu\_node-Strukturen auf Blattebene führen, es sei
denn, Sie booten mit dem Kernelparameter skew\_tick.\\
Wählen Sie eine bestimmte Zahl, wenn Sie die RCU selbst testen.\\
Wählen Sie den maximal zulässigen Wert für große Systeme, aber bedenken Sie,
dass Sie möglicherweise auch den Kernel-Boot-Parameter skew\_tick setzen
müssen, um Konflikte bei den Sperren der rcu\_node-Strukturen zu vermeiden.
Nehmen Sie den Standardwert, wenn Sie unsicher sind.\\
Symbol: RCU\_FANOUT\_LEAF [=64]\\
Type  : integer (Ganzzahl)\\
Bereich (range) : [2 64]

\subsubsection{Enable RCU priority boosting}
CONFIG\_RCU\_BOOST [=y] \textbf{[Y]}\\
Diese Option erhöht die Priorität von preemptierten RCU-Lesern, die
die aktuelle preemptible RCU-Schonfrist zu lange blockieren.
Diese Option verhindert auch, dass schwere Lasten den Aufruf von RCU-Callbacks
blockieren.\\
Geben Sie hier Y an, wenn Sie mit Echtzeitanwendungen oder großen Lasten arbeiten.\\
Sagen Sie hier N ein, wenn Sie unsicher sind.

\paragraph{Milliseconds to delay boosting after RCU grace-period start}$~$\\
CONFIG\_RCU\_BOOST\_DELAY [=500] \textbf{[500]}\\
Diese Option gibt die Zeit an, die nach dem Beginn einer bestimmten Karenzzeit
gewartet werden soll, bevor die Priorität von RCU-Lesern, die diese Karenzzeit
blockieren, erhöht wird.\\
Beachten Sie, dass jeder RCU-Leser, der eine beschleunigte RCU-Schonfrist
blockiert, sofort hochgestuft wird.\\ 
Akzeptieren Sie die Standardeinstellung, wenn Sie unsicher sind.\\
Symbol: RCU\_BOOST\_DELAY [=500]\\
Typ : Integer (Ganzzahl)\\
Bereich : [0 3000]

\paragraph{Perform RCU expedited work in a real-time kthread}$~$\\
CONFIG\_RCU\_EXP\_KTHREAD [=n] \textbf{[N]}\\
Verwenden Sie diese Option, um die Latenzzeiten der beschleunigten Neuheitsschonfristen
weiter zu reduzieren, was allerdings mit mehr Störungen verbunden ist.
Diese Option ist standardmäßig auf PREEMPT\_RT=y-Kerneln deaktiviert,
die beschleunigte Neuheitsschonfristen nach dem Booten durch die bedingungslose
Einstellung rcupdate.rcu\_normal\_after\_boot=1 deaktivieren.\\
Akzeptieren Sie die Voreinstellung, wenn Sie unsicher sind.

\subsubsection{Offload RCU callback processing from boot-selected CPUs}
CONFIG\_RCU\_NOCB\_CPU [=y] \textbf{[Y]}\\
Verwenden Sie diese Option, um den Jitter des Betriebssystems für aggressive HPC- oder
Echtzeit-Workloads zu reduzieren.
Sie kann auch verwendet werden, um RCU-Callback-Aufrufe auf energieeffiziente CPUs in
batteriebetriebenen asymmetrischen Multiprozessoren auszulagern. Der Preis für diesen
reduzierten Jitter ist, dass der Overhead von call\_rcu() ansteigt und dass bei einigen
Workloads ein erheblicher Anstieg der Kontextwechselraten zu verzeichnen ist.\\
Diese Option entlastet den Aufruf von Callbacks von der Gruppe von CPUs, die zur
Boot-Zeit durch den rcu\_nocbs-Parameter angegeben wird. Für jede dieser CPUs wird ein
kthread (\glqq rcuox/N\grqq{}) erstellt, um Callbacks aufzurufen, wobei \glqq N\grqq{} die CPU ist, die
entlastet wird, und wobei \glqq x\grqq{} \glqq p\grqq{} für RCU-preempt
(PREEMPTION-Kernel) und \glqq s\grqq{} für
RCU-sched (!PREEMPTION-Kernel) ist. Nichts hindert diesen kthread daran, auf den
angegebenen CPUs zu laufen, aber (1) die kthreads können zwischen jedem Callback
preempted werden, und (2) Affinität oder cgroups können verwendet werden, um die
kthreads zu zwingen, auf jeder gewünschten Gruppe von CPUs zu laufen.\\
Sagen Sie hier Y, wenn Sie trotz des zusätzlichen Overheads ein geringeres
OS-Jitter benötigen.\\
Sagen Sie hier N, wenn Sie unsicher sind.

\paragraph{Offload RCU callback processing from all CPUs by default}$~$\\
CONFIG\_RCU\_NOCB\_CPU\_DEFAULT\_ALL [=n] \textbf{[N]}\\
Verwenden Sie diese Option, um die Callback-Verarbeitung standardmäßig von allen
CPUs zu entlasten, wenn der Boot-Parameter rcu\_nocbs oder nohz\_full nicht vorhanden
ist. Dadurch wird auch die Notwendigkeit vermieden, Boot-Parameter zu verwenden, um
den Effekt der Entlastung aller CPUs beim Booten zu erreichen.\\
Geben Sie hier Y an, wenn Sie alle CPUs standardmäßig beim Booten entlasten wollen.\\
Sagen Sie hier N, wenn Sie sich nicht sicher sind.

\paragraph{Offload RCU callback from real-time kthread}$~$\\
CONFIG\_RCU\_NOCB\_CPU\_CB\_BOOST [=n] \textbf{[N]}\\
Verwenden Sie diese Option, um ausgelagerte Rückrufe als SCHED\_FIFO aufzurufen, um
ein Aushungern durch schwere SCHED\_OTHER-Hintergrundlast zu vermeiden. Natürlich
führt die Ausführung als SCHED\_FIFO während Callback Floods dazu, dass die rcuo[ps]
kthreads die CPU für Hunderte von Millisekunden oder mehr monopolisieren.
Wenn Sie diese Option aktivieren, müssen Sie daher sicherstellen, dass
latenzempfindliche Aufgaben entweder mit höherer Priorität oder auf einer anderen CPU
ausgeführt werden.\\
Geben Sie hier Y an, wenn Sie die RT-Priorität für die Auslagerung von kthreads
festlegen möchten.\\
Sagen Sie hier N, wenn Sie einen !PREEMPT\_RT-Kernel bauen und sich unsicher sind.

\subsubsection{Tasks Trace RCU readers use memory barriers in user and idle}
CONFIG\_TASKS\_TRACE\_RCU\_READ\_MB [=n] \textbf{[N]}\\
Verwenden Sie diese Option, um die Anzahl der IPIs (inter-processor interrupts),
die an CPUs gesendet werden,
die im Benutzerraum ausgeführt werden oder sich im Leerlauf befinden, während Tasks
RCU-Tilgungsfristen verfolgen, weiter zu reduzieren.
Da eine vernünftige Einstellung des Kernel-Boot-Parameters
rcupdate.rcu\_task\_ipi\_delay solche IPIs für viele Arbeitslasten eliminiert, ist
die richtige Einstellung dieser Kconfig-Option vor allem für aggressive
Echtzeitinstallationen und für batteriebetriebene Geräte wichtig, daher die oben
gewählte Standardeinstellung.\\
Sagen Sie hier Y, wenn Sie IPIs hassen.\\
Sagen Sie hier N, wenn Sie leseseitige Speicherbarrieren hassen.\\
Nehmen Sie die Standardeinstellung, wenn Sie unsicher sind.

\subsubsection{RCU callback lazy invocation functionality}
CONFIG\_RCU\_LAZY [=y] \textbf{[Y]}\\
Um Strom zu sparen, sollten Sie RCU-Rückrufe stapeln und nach einer Verzögerung,
einem Speicherdruck oder einer zu großen Rückrufliste flushen.

\subsubsection{RCU callback-batch backup time check}
CONFIG\_RCU\_DOUBLE\_CHECK\_CB\_TIME [=y] \textbf{[Y]}\\
Verwenden Sie diese Option, um eine präzisere Durchsetzung des Modulparameters
rcutree.rcu\_resched\_ns in Situationen zu ermöglichen, in denen ein einziger
RCU-Callback Hunderte von Mikrosekunden lang laufen könnte, wodurch die
32-Callback-Batching-Funktion, die verwendet wird, um die Kosten der feinkörnigen,
aber teuren local\_clock()-Funktion zu amortisieren, unterlaufen wird.\\
Diese Option rundet rcutree.rcu\_resched\_ns auf den nächsten Jiffy auf und setzt
die 32-Callback-Batching-Funktion außer Kraft, wenn diese Grenze überschritten wird.\\
Sagen Sie hier Y, wenn Sie eine strengere Durchsetzung des Rückruflimits benötigen.\\
Sagen Sie hier N, wenn Sie unsicher sind.

\subsection{Kernel .config support}
CONFIG\_IKCONFIG [=y] \textbf{[Y]}\\
Mit dieser Option kann der gesamte Inhalt der \glqq .config\grqq{}-Datei des Linux-Kernels im
Kernel gespeichert werden. Sie dokumentiert, welche Kernel-Optionen in einem
laufenden Kernel oder in einem On-Disk-Kernel verwendet werden.
Diese Informationen können mit dem Skript scripts/extract-ikconfig aus der
Kernel-Image-Datei extrahiert und als Eingabe verwendet werden, um den aktuellen
Kernel neu zu erstellen oder einen anderen Kernel zu bauen.
Sie können auch aus einem laufenden Kernel extrahiert werden, indem
/proc/config.gz gelesen wird, falls dies aktiviert ist (siehe unten).\\
Definiert mit init/Kconfig:686

\subsubsection{Enable access to .config through /proc/config.gz}
CONFIG\_IKCONFIG\_PROC [=y] \textbf{[Y]}\\
Diese Option ermöglicht den Zugriff auf die Kernelkonfigurationsdatei über
/proc/config.gz.

\subsection{Enable kernel headers through /sys/kernel/kheaders.tar.xz}
CONFIG\_IKHEADERS [=m] \textbf{[M]}\\
Diese Option ermöglicht den Zugriff auf die In-Kernel-Header, die während des
Build-Prozesses erzeugt werden. Diese können verwendet werden, um
eBPF-Tracing-Programme oder ähnliche Programme zu erstellen. Wenn Sie die Header
als Modul erstellen, wird ein Modul namens kheaders.ko erstellt, das bei Bedarf
geladen werden kann, um Zugriff auf die Header zu erhalten.

\subsection{Kernel log buffer size (16 \texorpdfstring{$\Rightarrow$}{=>} 64KB, 17 \texorpdfstring{$\Rightarrow$}{=>} 128KB)}
CONFIG\_LOG\_BUF\_SHIFT [=17] \textbf{[17]}\\
Wählen Sie die minimale Größe des Kernel-Protokollpuffers als eine Potenz von 2 aus.
Die endgültige Größe wird durch den Konfigurationsparameter LOG\_CPU\_MAX\_BUF\_SHIFT
beeinflusst, siehe unten. Eine höhere Größe kann auch durch den Boot-Parameter
\glqq log\_buf\_len\grqq{} erzwungen werden.\\
Beispiele:\\
\indent 17 $\Rightarrow$ 128 KB\\
\indent 16 $\Rightarrow$ 64 KB\\
\indent 15 $\Rightarrow$ 32 KB\\
\indent 14 $\Rightarrow$ 16 KB\\
\indent 13 $\Rightarrow$ 8 KB\\
\indent 12 $\Rightarrow$ 4 KB\\
Symbol: LOG\_BUF\_SHIFT\\
Type: Integer (Ganzzahl)\\
Bereich (range): [12 25]
\subsection{CPU kernel log buffer size contribution (13 \texorpdfstring{$\Rightarrow$}{=>} 8 KB, 17 \texorpdfstring{$\Rightarrow$}{=>} 128KB)}
CONFIG\_LOG\_BUF\_SHIFT [=12] \textbf{[12]}\\
Diese Option ermöglicht es, die Standardgröße des Ringpuffers entsprechend der Anzahl
der CPUs zu erhöhen. Der Wert definiert den Beitrag jeder CPU als eine Potenz von 2.
Der beanspruchte Speicherplatz beträgt in der Regel nur wenige Zeilen, kann aber viel
mehr sein, wenn Probleme gemeldet werden, z.~B. bei Rückverfolgungen.
Die erhöhte Größe bedeutet, dass ein neuer Puffer zugewiesen werden muss und der
ursprüngliche statische Puffer ungenutzt ist. Dies ist nur auf Systemen mit mehr CPUs
sinnvoll. Daher wird dieser Wert nur verwendet, wenn die Summe der Beiträge größer ist
als die Hälfte des Standard-Kernel-Ringpuffers, wie durch \texttt{LOG\_BUF\_SHIFT} definiert.
Die Standardwerte sind so eingestellt, dass mehr als 16 CPUs erforderlich sind, um die
Zuweisung auszulösen. Diese Option wird auch ignoriert, wenn der Kernelparameter
\glqq log\_buf\_len\grqq{} verwendet wird, da er eine exakte (Zweierpotenz) Größe des
Ringpuffers erzwingt. Die Anzahl der möglichen CPUs wird für diese Berechnung verwendet,
wobei Hotplugging ignoriert wird, so dass die Berechnung für das Worst-Case-Szenario
optimal ist und gleichzeitig ein einfacher Algorithmus ab dem Hochfahren verwendet
werden kann. Beispiele für Verschiebungswerte und ihre Bedeutung:\\
\indent 17 $\Rightarrow$ 128 KB für jede CPU\\
\indent 16 $\Rightarrow$  64 KB für jede CPU\\
\indent 15 $\Rightarrow$  32 KB für jede CPU\\
\indent 14 $\Rightarrow$  16 KB für jede CPU\\
\indent 13 $\Rightarrow$   8 KB für jede CPU\\
\indent 12 $\Rightarrow$   4 KB für jede CPU\\
Symbol: LOG\_CPU\_MAX\_BUF\_SHIFT\\
Type: Integer (Ganzzahl)\\
Bereich (range): [0 21]

\subsection{Printk indexing debugfs interface)}
CONFIG\_PRINTK\_INDEX [=y] \textbf{[Y]}\\
Unterstützung für die Indizierung aller zur Kompilierzeit bekannten
printk-Formate unter\\
$<$debugfs$>$/printk/index/$<$module$>$ hinzufügen.
Dies kann als Teil der Wartung von Daemonen, die /dev/kmsg überwachen,
verwendet werden, da es die Überprüfung der in einem Kernel vorhandenen
printk-Formate erlaubt, was die Erkennung von Fällen ermöglicht,
in denen überwachte printks geändert oder nicht mehr vorhanden sind.\\
Es gibt keine zusätzlichen Laufzeitkosten für printk, wenn dies aktiviert ist. 

\subsection{Scheduler features \texorpdfstring{$\rightarrow$}{->}}
Scheduler-Funktionen

\subsubsection{Enable utilization clamping for RT/FAIR tasks}
CONFIG\_UCLAMP\_TASK [=y] \textbf{[Y]}\\
Diese Funktion ermöglicht es dem Scheduler, die geklemmte Auslastung jeder CPU
auf der Grundlage der auf dieser CPU geplanten RUNNABLE-Tasks zu verfolgen.
Mit dieser Option kann der Benutzer die minimale und maximale CPU-Auslastung
angeben, die für RUNNABLE-Aufgaben zulässig ist. Die maximale Auslastung
definiert die maximale Häufigkeit, mit der ein Task laufen soll, während die
minimale Auslastung die minimale Häufigkeit definiert, mit der er laufen soll.\\
Sowohl die Minimal- als auch die Maximalwerte für die Auslastung sind Hinweise
für den Scheduler, um seine Frequenzauswahl zu verbessern, aber sie erzwingen
oder gewähren keine bestimmte Bandbreite für Tasks.\\
Im Zweifelsfall sagen Sie N für Nein.

\paragraph{Number of supported utilization clamp buckets}$~$\\
CONFIG\_UCLAMP\_BUCKETS\_COUNT [=5] \textbf{[5]}\\
Legt die Anzahl der zu verwendenden Klammerbereiche fest. Der Bereich der
einzelnen Buckets ist SCHED\_CAPACITY\_SCALE/UCLAMP\_BUCKETS\_COUNT.
Je höher die Anzahl der Clamp-Buckets, desto feiner die Granularität und
desto höher die Präzision der Clamp-Aggregation und -Verfolgung während der
Laufzeit.
Mit dem minimalen Konfigurationswert haben wir beispielsweise 5 Clamp-Buckets,
die jeweils 20 \% Auslastung verfolgen. Eine um 25 \% gesteigerte Aufgabe
wird im Bucket [20..39]\% gezählt und setzt den effektiven Wert der
Bucketklemme auf 25 \%.
Wenn eine zweite, um 30 \% erhöhte Aufgabe auf derselben CPU eingeplant wird,
wird diese Aufgabe im selben Bucket wie die erste Aufgabe gezählt und erhöht
den effektiven Bucket-Clamp-Wert auf 30 \%.
Der effektive Klemmwert eines Bereichs wird auf seinen Nennwert (20 \% im
obigen Beispiel) zurückgesetzt, wenn keine weiteren Aufgaben mehr in diesem
Bereich gezählt werden. Bei einigen Aufgaben kann eine zusätzliche
Verstärkungs-/Kappungsmarge hinzugefügt werden. Im obigen Beispiel wird
die 25 \%-Aufgabe auf 30 \% angehoben, bis sie die CPU verlässt.
Sollte dies auf bestimmten Systemen nicht akzeptabel sein, ist es immer
möglich, den Spielraum zu verringern, indem die Anzahl der Clamp-Buckets
erhöht wird, um den verbrauchten Speicher gegen die Genauigkeit der
Laufzeitverfolgung einzutauschen.\\
Im Zweifelsfall sollten Sie den Standardwert verwenden.

\subsection{Memory placement aware NUMA scheduler}
CONFIG\_NUMA\_BALANCING [=y] \textbf{[Y]}\\
Diese Option bietet Unterstützung für die automatische
NUMA-kompatible Speicher-/Task-Platzierung.
Der Mechanismus ist recht primitiv und basiert darauf, dass Speicher
migriert wird, wenn er Referenzen auf den Knoten hat, auf dem die Aufgabe läuft.\\
Dieses System ist auf UMA-Systemen inaktiv.

\subsubsection{Automatically enable NUMA aware memory/task placemnent}
CONFIG\_NUMA\_BALANCING\_DEFAULT\_ENABLED [=y] \textbf{[Y]}\\
Wenn diese Option gesetzt ist, wird der automatische NUMA-Ausgleich aktiviert,
wenn das System auf einem NUMA-Rechner läuft.

\subsection{Control Group support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_CGROUPS [=y] \textbf{[Y]}\\
(Unterstützung der Kontrollgruppe)\\
Diese Option bietet Unterstützung für die Gruppierung von Prozessgruppen zur Verwendung mit Prozesskontrollsubsystemen wie Cpusets, CFS, Speicherkontrolle oder Geräteisolierung.
\\Siehe
\begin{itemize}
\item Dokumentation/scheduler/sched-design-CFS.rst (CFS)
\item Documentation/admin-guide/cgroup-v1/ (Funktionen für Gruppierung,
 Isolierung und Ressourcenkontrolle)
\end{itemize}
Sagen Sie N, wenn Sie unsicher sind.

\subsubsection{Favor dynamic modification latency reduction by default}
CONFIG\_CGROUP\_FAVOR\_DYNMODS [=n] \textbf{[N]}\\
Diese Option aktiviert standardmäßig die Einhängeoption
\glqq favordynmods\grqq{}, die die Latenzzeiten dynamischer C-Gruppen-Änderungen
wie Task-Migrationen und Controller-Ein-/Ausschaltungen
auf Kosten von Hot-Path-Operationen wie Forks und Exits
verteuert.\\
Sagen Sie N, wenn Sie unsicher sind.

\subsubsection{Memory controller}
CONFIG\_MEMCG [=y] \textbf{[Y]}\\
Ermöglicht die Kontrolle über den Speicherbedarf von Tasks in einer cgroup.

\subsubsection{IO controller}
CONFIG\_BLK\_CGROUP [=y] \textbf{[Y]}\\
Generische Block IO Controller cgroup Schnittstelle. Dies ist die gemeinsame
cgroup-Schnittstelle, die von verschiedenen IO-Kontrollstrategien verwendet
werden sollte.\\
Derzeit wird sie vom CFQ IO Scheduler zur Erkennung von Task-Gruppen und zur
Steuerung der Zuweisung von Festplattenbandbreite (proportionale
Zeitscheibenzuweisung) an solche Task-Gruppen verwendet. Sie wird auch von
der Bio-Throttling-Logik in der Blockschicht verwendet, um eine Obergrenze
für die IO-Raten auf einem Gerät einzuführen.\\
Diese Option aktiviert nur die generische Infrastruktur des Block-IO-Controllers.
Man muss auch die tatsächliche IO-Kontrolllogik/-Politik aktivieren.
Um die proportionale Aufteilung der Festplattenbandbreite in CFQ zu aktivieren,
setzen Sie
CONFIG\_BFQ\_GROUP\_IOSCHED=y; für die Aktivierung der Drosselungspolitik
setzen Sie CONFIG\_BLK\_DEV\_THROTTLING=y.\\
Weitere Informationen finden Sie unter
Documentation/admin-guide/cgroup-v1/blkio-controller.rst.

\subsubsection{CPU controller \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_CGROUP\_SCHED [=y] \textbf{[Y]}\\
Diese Funktion ermöglicht es dem CPU-Scheduler, Task-Gruppen zu erkennen und
die Zuweisung von CPU-Bandbreite an solche Task-Gruppen zu steuern.
Er verwendet cgroups, um Tasks zu gruppieren.

\paragraph{Group scheduling for SCHED\_OTHER}$~$\\
CONFIG\_FAIR\_GROUP\_SCHED [=y] \textbf{[Y]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\subparagraph{CPU bandwidth provisioning for FAIR\_GROUP\_SCHED}$~$\\
CONFIG\_CFS\_BANDWIDTH [=y] \textbf{[Y]}\\
Mit dieser Option können Benutzer CPU-Bandbreitenraten (Limits) für Aufgaben
festlegen, die innerhalb des Fair Group Schedulers laufen.
Gruppen, für die kein Limit festgelegt wurde, gelten als uneingeschränkt
und werden ohne Einschränkung ausgeführt.\\
Weitere Informationen finden Sie unter Documentation/scheduler/sched-bwc.rst.

\paragraph{Group scheduling for SCHED\_RR/FIFO}$~$\\
CONFIG\_RT\_GROUP\_SCHED [=n] \textbf{[N]}\\
Mit dieser Funktion können Sie den Task-Gruppen explizit echte CPU-Bandbreite
zuweisen. Wenn sie aktiviert ist, wird es auch unmöglich, Echtzeitaufgaben
für Nicht-Root-Benutzer zu planen, bis Sie ihnen Echtzeitbandbreite zuweisen.\\
Weitere Informationen finden Sie unter Documentation/scheduler/sched-rt-group.rst.

\subsubsection{Utilization clamping per group of tasks}
CONFIG\_UCLAMP\_TASK\_GROUP [=y] \textbf{[Y]}\\
Mit dieser Funktion kann der Scheduler die geklemmte Auslastung jeder CPU auf der
Grundlage der RUNNABLE-Tasks, die derzeit auf dieser CPU geplant sind, verfolgen.
Wenn diese Option aktiviert ist, kann der Benutzer eine minimale und maximale
CPU-Bandbreite angeben, die für jede einzelne Aufgabe in einer Gruppe zulässig ist.
Mit der maximalen Bandbreite kann die maximale Frequenz, die ein Task verwenden kann,
festgelegt werden, während mit der minimalen Bandbreite eine minimale Frequenz
festgelegt werden kann, die ein Task immer verwenden wird.
Bei aktivierter aufgabengruppenbasierter Auslastungsbegrenzung wird ein eventuell
angegebener aufgabenspezifischer Begrenzungswert durch den von cgroup angegebenen
Begrenzungswert eingeschränkt. Sowohl die minimale als auch die maximale Task-Klemmung
kann nicht größer sein als die entsprechende auf Task-Gruppen-Ebene definierte Klemmung.\\
Im Zweifelsfall sagen Sie N.

\subsubsection{PIDs controller}
CONFIG\_CGROUP\_PIDS [=y] \textbf{[Y]}\\
Erzwingt die Begrenzung der Prozessanzahl im Bereich einer cgroup. Jeder Versuch, mehr
Prozesse zu forken, als in der cgroup erlaubt sind, schlägt fehl.
PIDs sind grundsätzlich eine globale Ressource, da es ziemlich trivial ist, eine
PID-Erschöpfung zu erreichen, bevor man auch nur eine konservative kmemcg-Grenze erreicht.
Infolgedessen ist es möglich, ein System zum Stillstand zu bringen, ohne durch andere
cgroup-Richtlinien eingeschränkt zu werden. Der PID-Regler ist dafür ausgelegt, dies zu verhindern.
Es sollte beachtet werden, dass organisatorische Operationen (wie z.~B. das Anhängen an
eine cgroup-Hierarchie) *nicht* durch den PIDs-Controller blockiert werden, da das PIDs-Limit
nur die Fähigkeit eines Prozesses zum Forking, nicht aber zum Anhängen an eine cgroup beeinflusst.

\subsubsection{RDMA controller}
CONFIG\_CGROUP\_RDMA [=y] \textbf{[Y]}\\
Ermöglicht die Durchsetzung der vom IB-Stack definierten RDMA-Ressourcen. Es ist relativ
einfach für Verbraucher, RDMA-Ressourcen zu erschöpfen, was dazu führen kann, dass Ressourcen
für andere Verbraucher nicht mehr verfügbar sind. Der RDMA-Controller ist dafür ausgelegt,
dies zu verhindern. Das Anhängen von Prozessen mit aktiven RDMA-Ressourcen an die
cgroup-Hierarchie ist erlaubt, auch wenn die Grenze der Hierarchie überschritten werden kann.

\subsubsection{Freezer controller}
CONFIG\_CGROUP\_FREEZER [=y] \textbf{[Y]}\\
Ermöglicht das Einfrieren und Aufheben des Einfrierens aller Aufgaben in einer C-Group.
Diese Option betrifft die ORIGINAL cgroup-Schnittstelle. Der cgroup2-Speicher-Controller
enthält standardmäßig wichtige In-Kernel-Speicherverbraucher.\\
Wenn Sie cgroup2 verwenden, sagen Sie N.

\subsubsection{HugeTLB controller}
CONFIG\_CGROUP\_HUGETLB [=y] \textbf{[Y]}\\
Bietet eine cgroup-Steuerung für HugeTLB-Seiten. Wenn Sie dies aktivieren, können Sie die
HugeTLB-Nutzung pro cgroup begrenzen. Die Begrenzung wird während eines Seitenfehlers
durchgesetzt. Da HugeTLB keine Seitenrückforderung unterstützt, bedeutet die Durchsetzung
des Limits zum Zeitpunkt des Seitenfehlers, dass die Anwendung ein SIGBUS-Signal erhält,
wenn sie versucht, über das Limit hinaus auf HugeTLB-Seiten zuzugreifen. Dies setzt voraus,
dass die Anwendung im Voraus weiß, wie viele HugeTLB-Seiten sie für ihre Nutzung benötigt.
Die Kontrollgruppe wird im dritten Page-lru-Zeiger verfolgt. Dies bedeutet, dass wir die
Steuergruppe nicht mit einer riesigen Seite von weniger als 3 Seiten verwenden können.

\subsubsection{Cpuset controller}
CONFIG\_CPUSETS [=y] \textbf{[Y]}\\
Mit dieser Option können Sie CPUSETs erstellen und verwalten, die es ermöglichen, ein System
dynamisch in Gruppen von CPUs und Speicherknoten zu partitionieren und Aufgaben zuzuweisen,
die nur innerhalb dieser Gruppen ausgeführt werden.
Dies ist vor allem auf großen SMP- oder NUMA-Systemen nützlich.\\
Sagen Sie N, wenn Sie unsicher sind.

\paragraph{Include legacy /proc/$<$pid$>$/cpuset file}$~$\\
CONFIG\_PROC\_PID\_CPUSET [=y] \textbf{[Y]}\\
This option will let you create and manage CPUSETs which allow dynamically partitioning a
system into sets of CPUs and Memory Nodes and assigning tasks to run only within those sets.
This is primarily useful on large SMP or NUMA systems.\\
Say N if unsure.

\subsubsection{Device controller}
CONFIG\_CGROUP\_DEVICE [=y] \textbf{[Y]}\\
Bietet einen cgroup-Controller an, der Whitelists für Geräte implementiert,
die ein Prozess in der cgroup mknod oder öffnen kann.

\subsubsection{Simple CPU accounting controller}
CONFIG\_CGROUP\_CPUACCT [=y] \textbf{[Y]}\\*
(Einfacher CPU-Accounting-Controller)\\
Bietet einen einfachen Controller für die Überwachung des gesamten
CPU-Verbrauchs der Tasks in einer cgroup an.

\subsubsection{Perf controller}
CONFIG\_CGROUP\_PERF [=y] \textbf{[Y]}\\
Diese Option erweitert den Modus perf per-cpu, um die Überwachung auf Threads zu beschränken,
die zu der angegebenen cgroup gehören und auf der angegebenen CPU laufen.
Sie kann auch verwendet werden, um die cgroup ID in Stichproben zu haben,
so dass sie Leistungsereignisse zwischen cgroups überwachen kann.\\
Sagen Sie N, wenn Sie unsicher sind.

\subsubsection{Support for eBPF programs attached to cgroups}
CONFIG\_CGROUP\_BPF [=y] \textbf{[Y]}\\
Erlaubt das Anhängen von eBPF-Programmen an eine cgroup mit dem
bpf(2)-Syscall-Befehl\\
\texttt{BPF\_PROG\_ATTACH}.\\
In welchem Kontext auf diese Programme zugegriffen wird, hängt von der Art des Attachments ab.
Zum Beispiel werden Programme, die mit BPF\_CGROUP\_INET\_INGRESS angehängt werden,
auf dem Ingress-Pfad von inet-Sockets ausgeführt.

\subsubsection{Misc resource controller}
CONFIG\_CGROUP\_MISC [=y] \textbf{[Y]}\\
Bietet einen Controller für verschiedene Ressourcen auf einem Host.
Verschiedene skalare Ressourcen sind die Ressourcen auf dem Host-System, die nicht wie die
anderen cgroups abstrahiert werden können. Dieser Controller verfolgt und begrenzt die
verschiedenen Ressourcen, die von einem Prozess verwendet werden, der an eine
cgroup-Hierarchie angeschlossen ist.\\
Weitere Informationen finden Sie im Abschnitt misc cgroup in /Documentation/admin-guide/cgroup-v2.rst.

\subsubsection{Debug controller}
CONFIG\_CGROUP\_DEBUG [=n] \textbf{[N]}\\
Diese Option aktiviert einen einfachen Controller, der Debugging"=Informationen über das
cgroups"=Frame\-work exportiert. Dieser Controller ist nur für das Debugging von Kontroll-C-Gruppen gedacht.
Seine Schnitt\-stellen sind nicht stabil.\\
Sagen Sie N.

\subsection{Namespaces support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_NAMESPACES [=y] \textbf{[Y]}\\
(Unterstützung von Namensräumen, namespaces)\\
Bietet die Möglichkeit, Aufgaben mit verschiedenen Objekten unter Verwendung derselben Kennung
arbeiten zu lassen. Zum Beispiel kann sich dieselbe IPC-ID auf verschiedene Objekte beziehen oder
dieselbe Benutzer-ID oder pid kann sich auf verschiedene Aufgaben beziehen, wenn sie in verschiedenen
Namensräumen verwendet werden.

\subsubsection{UTS namespace}
CONFIG\_UTS\_NS [=y] \textbf{[Y]}\\
In diesem Namensraum sehen Aufgaben verschiedene Informationen, die mit dem Systemaufruf uname()
bereitgestellt werden 

\subsubsection{TIME namespace}
CONFIG\_TIME\_NS [=y] \textbf{[Y]}\\
In diesem Namespace können boottime und monotone Uhren eingestellt werden.
Die Zeit läuft dann mit der gleichen Geschwindigkeit weiter.

\subsubsection{IPC namespace}
CONFIG\_IPC\_NS [=y] \textbf{[Y]}\\
In diesem Namensraum arbeiten Aufgaben mit IPC-IDs (Interprozess-IDs), die jeweils
verschiedenen IPC-Objekten in verschiedenen Namensräumen entsprechen.

\subsubsection{User namespace}
CONFIG\_USER\_NS [=y] \textbf{[Y]}\\
Dies ermöglicht es Containern, d.~h. V-Servern, Benutzernamensräume zu verwenden,
um verschiedene Benutzerinformationen für verschiedene Server bereitzustellen.
Wenn Benutzernamensräume im Kernel aktiviert sind, wird empfohlen, dass die Option \texttt{MEMCG} ebenfalls
aktiviert wird und dass der Benutzerbereich die Speicherkontrollgruppen verwendet,
um die Speichermenge zu begrenzen, die nicht privilegierte Benutzer verwenden können.

\paragraph{Allow unprivileged users to create namespaces}$~$\\
CONFIG\_USERS\_NS\_UNPRIVILEGED [=y] \textbf{[Y]}\\
Wenn diese Funktion deaktiviert ist, können unprivilegierte Benutzer keine neuen Namensräume
erstellen. Die Möglichkeit, dass Benutzer ihre eigenen Namespaces erstellen können, war Teil mehrerer
kürzlich erfolgter lokaler Privilegienerweiterungen. Wenn Sie also Benutzernamespaces benötigen,
aber paranoid bzw. sicherheitsbewusst sind, sollten Sie diese Funktion deaktivieren.
Diese Einstellung kann zur Laufzeit mit dem
\texttt{kernel.unprivileged\_userns\_clone sysctl}
außer Kraft gesetzt werden.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{PID namespace}
CONFIG\_PID\_NS [=y] \textbf{[Y]}\\
Unterstützung von Prozess-ID-Namensräumen.  Dies ermöglicht es, mehrere Prozesse mit der gleichen pid
zu haben, solange sie sich in verschiedenen pid-Namensräumen befinden.  Dies ist ein Baustein von Containern.

\subsubsection{Network namespace}
CONFIG\_NET\_NS [=y] \textbf{[Y]}\\
Ermöglicht es dem Benutzer, scheinbar mehrere Instanzen des Netzwerkstapels zu erstellen.

\subsection{Checkpoint/restore support}
CONFIG\_CHECKPOINT\_RESTORE [=y] \textbf{[Y]}\\
Ermöglicht zusätzliche Kernel-Funktionen in einer Art Checkpoint/Restore.
Insbesondere fügt es zu\-sätz\-liche prctl-Codes zum Einrichten von Prozesstext, Daten- und Heap-Segmentgrößen
sowie einige zusätzliche /proc-Dateisystemeinträge hinzu.\\
Wenn Sie unsicher sind, geben Sie hier N an.


\subsection{Automatic process group scheduling}
CONFIG\_SCHED\_AUTOGROUP [=y] \textbf{[Y]}\\
Mit dieser Option wird der Scheduler für gängige Desktop-Workloads optimiert,
indem automatisch Aufgabengruppen erstellt und aufgefüllt werden.
Diese Trennung von Arbeitslasten isoliert aggressive CPU-Brenner (wie Build-Jobs) von Desktop-Anwendungen.
Die automatische Erstellung von Aufgabengruppen basiert derzeit auf der Aufgabensitzung.

\subsection{Kernel\texorpdfstring{$\rightarrow$}{->}user space relay support (formerly relayfs)}
CONFIG\_RELAY [=y] \textbf{[Y]}\\
Diese Option aktiviert die Unterstützung für die Relaisschnittstelle in bestimmten Dateisystemen
(wie debugfs). Sie wurde entwickelt, um einen effizienten Mechanismus für Werkzeuge und Einrichtungen
zur Weiterleitung großer Datenmengen aus dem Kernelbereich in den Benutzerbereich bereitzustellen.\\
Wenn Sie unsicher sind, sagen Sie N.

\subsection{Initial RAM filesystem and RAM disk (initramfs/initrd) support}
CONFIG\_BLK\_DEV\_INITRD [=y] \textbf{[Y]}\\
Das anfängliche RAM-Dateisystem ist ein ramfs, das vom Bootloader (loadlin oder lilo) geladen und vor
dem normalen Bootvorgang als root eingehängt wird. Es wird typischerweise verwendet, um Module zu laden,
die zum Einhängen des \glqq echten\grqq{} Root-Dateisystems benötigt werden, usw.\\
Siehe $<$file:Documentation/admin-guide/initrd.rst$>$ für Details.
Wenn die RAM-Disk-Unter\-stützung\\
(BLK\_DEV\_RAM) eben\-falls enthalten ist, aktiviert dies auch die anfängliche
RAM-Disk-Unterstützung (initrd) und fügt 15 KByte (auf einigen anderen Architekturen mehr) zur Kernelgröße hinzu.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Initramfs source file(s)}
CONFIG\_INITRAMFS\_SOURCE [=] \textbf{[~]}\\
Dies kann entweder ein einzelnes cpio-Archiv mit der Endung .cpio oder eine durch Leerzeichen getrennte
Liste von Verzeichnissen und Dateien zur Erstellung des initramfs-Abbilds sein.
Ein cpio-Archiv sollte ein Dateisystemarchiv enthalten, das als initramfs-Abbild verwendet werden soll.
Verzeichnisse sollten ein Dateisystem-Layout enthalten, das in das initramfs-Abbild aufgenommen werden
soll. Die Dateien sollten Einträge in dem Format enthalten, das vom
Programm \texttt{usr/gen\_init\_cpio} im Kernelbaum beschrieben wird.
Wenn mehrere Verzeichnisse und Dateien angegeben werden, wird das initramfs-Abbild die Summe aller
dieser Verzeichnisse und Dateien sein.\\
Siehe $<$file:Documentation/driver-api/early-userspace/early\_userspace\_support.rst$>$
für weitere Details.\\
Wenn Sie sich nicht sicher sind, lassen Sie das Feld leer.\\
Symbol: INITRAMFS\_SOURCE [=]\\
Type : string (Zeichenkette)

\subsubsection{Support initial ramdisk/ramfs compressed using gzip}
CONFIG\_RD\_GZIP [=y] \textbf{[Y]}\\
Unterstützung des Ladens eines gzip-kodierten Anfangs-Ramdisk-
oder Cpio-Puffers.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Support initial ramdisk/ramfs compressed using bzip2}
CONFIG\_RD\_BZIP2 [=y] \textbf{[Y]}\\
Unterstützung des Ladens eines bzip2-kodierten Anfangs-Ramdisk- 
oder Cpio-Puffers.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Support initial ramdisk/ramfs compressed using LZMA}
CONFIG\_RD\_LZMA [=y] \textbf{[Y]}\\
Unterstützung des Ladens eines LZMA-kodierten Anfangs-Ramdisk- 
oder Cpio-Puffers.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Support initial ramdisk/ramfs compressed using XZ}
CONFIG\_RD\_XZ [=y] \textbf{[Y]}\\
Unterstützung des Ladens eines XZ-kodierten Anfangs-Ramdisk- 
oder Cpio-Puffers.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Support initial ramdisk/ramfs compressed using LZO}
CONFIG\_RD\_LZO [=y] \textbf{[Y]}\\
Unterstützung des Ladens eines LZO-kodierten Anfangs-Ramdisk- 
oder Cpio-Puffers.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Support initial ramdisk/ramfs compressed using LZ4}
CONFIG\_RD\_LZ4 [=y] \textbf{[Y]}\\
Unterstützung des Ladens eines LZ4-kodierten Anfangs-Ramdisk- 
oder Cpio-Puffers.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Support initial ramdisk/ramfs compressed using ZSTD}
CONFIG\_RD\_ZSTD [=y] \textbf{[Y]}\\
Unterstützung des Ladens eines ZSTD-kodierten Anfangs-Ramdisk- 
oder Cpio-Puffers.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsection{Boot config support}
CONFIG\_BOOT\_CONFIG [=y] \textbf{[Y]}\\
Extra boot config ermöglicht es dem Systemadministrator, eine Konfigurationsdatei
als zusätzliche Erweiterung der Kernel-Cmdline beim Booten zu übergeben.
Die Bootkonfigurationsdatei muss am Ende von \mbox{initramfs} mit Prüfsumme, Größe und
magischem Wort angehängt werden.\\
Siehe $<$file:Documentation/admin-guide/bootconfig.rst$>$ für Details.\\
Wenn Sie unsicher sind, sagen Sie Y.


\subsubsection{Force unconditional bootconfig processing}
CONFIG\_BOOT\_CONFIG\_FORCE [=n] \textbf{[N]}\\
Wenn diese Kconfig-Option gesetzt ist, wird die BOOT\_CONFIG-Verarbeitung auch dann
durchgeführt, wenn der Kernel-Boot-Parameter "bootconfig" weggelassen wird.
Tatsächlich gibt es mit dieser Kconfig-Option keine Möglichkeit, den Kernel dazu
zu bringen, die von BOOT\_CONFIG gelieferten Kernel-Boot-Parameter zu ignorieren.\\
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Embed bootconfig file in the kernel}
CONFIG\_BOOT\_CONFIG\_EMBED [=n] \textbf{[N]}\\
Eine mit BOOT\_CONFIG\_EMBED\_FILE angegebene bootconfig-Datei in den Kernel einbetten.
Normalerweise wird die bootconfig-Datei mit dem initrd-Image geladen. Wenn das System
jedoch initrd nicht unterstützt, hilft Ihnen diese Option, indem sie eine bootconfig-Datei
beim Erstellen des Kernels einbettet.\\
Wenn Sie unsicher sind, sagen Sie N.

\subsection{Preserve cpio archive mtimes in initramfs}
CONFIG\_INITRAMFS\_PRESERVE\_MTIME [=y] \textbf{[Y]}\\
Jeder Eintrag in einem initramfs cpio-Archiv enthält einen mtime-Wert.
Wenn diese Option aktiviert ist, übernehmen die extrahierten cpio-Einträge diese mtime,
wobei die mtime-Einstellung des Verzeichnisses aufgeschoben wird, bis nach der
Erstellung aller untergeordneten Einträge.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsection{Compiler optimization level \texorpdfstring{$\rightarrow$}{->}}
Optimierungsgrad des Compilers, Auswahl aus den folgenden zwei Punkten:

\subsubsection{Optimize for performance (-O2)}
CONFIG\_CC\_OPTIMIZE\_FOR\_PERFORMANCE [=y] \textbf{[Y]}\\
Dies ist die Standardoptimierungsstufe für den Kernel, die mit dem Compiler-Flag \texttt{-O2}
erstellt wird, um die beste Leistung und die hilfreichsten Warnungen bei der
Kompilierung zu erhalten.

\subsubsection{Optimize for size (-Os)}
CONFIG\_CC\_OPTIMIZE\_FOR\_SIZE [=n] \textbf{[N]}\\
Wenn Sie diese Option wählen, wird \texttt{-Os} an Ihren Compiler übergeben,
was zu einem kleineren Kernel führt.

\subsection{Configure standard kernel features (expert users)}
CONFIG\_EXPERT [=n] \textbf{[~]}\\
Mit dieser Option können bestimmte Basis-Kerneloptionen und -einstellungen
deaktiviert oder optimiert werden. Dies ist für spezielle Umgebungen gedacht,
die einen \glqq Nicht-Standard\grqq{}-Kernel tolerieren können.\\
Verwenden Sie diese Option nur, wenn Sie wirklich wissen, was Sie tun.

\subsubsection{Load all symbols for debugging/ksymoops}
CONFIG\_KALLSYMS [=y] \textbf{[Y]}\\
(sichtbar wenn EXPERT [=n])\\
Geben Sie hier Y ein, damit der Kernel symbolische Absturzinformationen und
symbolische Stack-Backtraces ausgibt. Dies erhöht die Größe des Kernels etwas,
da alle Symbole in das Kernel-Image geladen werden müssen.

\paragraph{Test the basic functions and performance of kallsyms}$~$\\
CONFIG\_KALLSYMS\_SELFTEST [=n] \textbf{[N]}\\
Testen Sie die Grundfunktionen und die Leistung einiger Schnittstellen, wie z.~B.
\texttt{kallsyms\_lookup\_name}. Außerdem wird die Kompressionsrate des
kallsyms-Kompressionsalgorithmus für den aktuellen Symbolsatz berechnet.
Starten Sie den Selbsttest automatisch nach dem Systemstart.\\
Es wird empfohlen, \texttt{dmesg | grep kallsyms\_selftest} auszuführen,
um die Testergebnisse zu sammeln.
In der letzten Zeile wird \texttt{finish} angezeigt, was bedeutet,
dass der Test abgeschlossen ist. 

\paragraph{Include all symbols in kallsyms}$~$\\
CONFIG\_KALLSYMS\_ALL [=y] \textbf{[Y]}\\
Normalerweise enthält kallsyms nur die Symbole von Funktionen für schönere
OOPS-Meldungen und Backtraces (d.~h. Symbole aus den Abschnitten text und
inittext). Dies ist für die meisten Fälle ausreichend. Nur wenn Sie Kernel-Live-Patching
oder andere weniger häufige Anwendungsfälle (z.~B. wenn ein Debugger verwendet
wird) aktivieren wollen, sind alle Symbole erforderlich (d.~h. die Namen von Variablen
aus den Data-Abschnitten usw.).\\
Diese Option stellt sicher, dass alle Symbole in das Kernel-Image geladen werden
(d.~h. Symbole aus allen Sektionen), was die Kernelgröße erhöht (je nach Kernelkonfiguration
kann sie 300KiB oder etwas Ähnliches betragen).\\
Sagen Sie N, es sei denn, Sie brauchen wirklich alle Symbole,
oder Kernel-Live-Patching.

\subsection{Kernel Performance Events And Counters \texorpdfstring{$\rightarrow$}{->}}
Kernel-Leistungsereignisse und -Zähler

\subsubsection{Kernel performance events and counters}
CONFIG\_PERF\_EVENTS [=y] \textbf{[Y]}\\
Aktivieren Sie die Kernel-Unterstützung für verschiedene von Software und Hardware
bereitgestellte Leistungsereignisse.

Software-Ereignisse werden entweder integriert oder über die Verwendung von generischen
Tracepoints unterstützt.

Die meisten modernen CPUs unterstützen Leistungsereignisse über Leistungszählerregister.
Diese Register zählen die Anzahl bestimmter Arten von hw-Ereignissen: z.~B. ausgeführte
Anweisungen, erlittene Cachemisses oder falsch vorhergesagte Verzweigungen -- ohne den
Kernel oder Anwendungen zu verlangsamen. Diese Register können auch Unterbrechungen
auslösen, wenn eine bestimmte Anzahl von Ereignissen überschritten wird -- und können so
dazu verwendet werden, ein Profil des Codes zu erstellen, der auf dieser CPU läuft.

Das Linux-Performance-Event-Subsystem bietet eine Abstraktion dieser Software- und
Hardware-Event-Fähigkeiten, die über einen Systemaufruf zugänglich sind und von dem
Dienstprogramm \texttt{perf} in \texttt{tools/perf/} verwendet werden.
Es stellt Zähler pro Task
und pro CPU zur Verfügung und bietet darüber hinaus Ereignisfunktionen.\\
Sagen Sie Y, wenn Sie unsicher sind.

\paragraph{Debug: use vmalloc to back perf mmap() buffers}$~$\\
CONFIG\_DEBUG\_PERF\_USE\_VMALLOC [=n] \textbf{[N]}\\
Verwendung von vmalloc-Speicher zur Sicherung von mmap()-Puffern. Hauptsächlich nützlich zum Debuggen des vmalloc-Codes auf Plattformen, die dies nicht erfordern.
Sagen Sie N, wenn Sie unsicher sind.

\subsection{Profiling support}
CONFIG\_PROFILING [=y] \textbf{[Y]}\\
Sagen Sie hier Y, um die erweiterten Unterstützungsmechanismen für das Profiling zu
aktivieren, die von Profilern verwendet werden.

\subsection{Kexec and crash features \texorpdfstring{$\rightarrow$}{->}}
Kexec und Absturzmerkmale

\subsubsection{Enable kexec system call}
CONFIG\_KEXEC [=y] \textbf{[Y]}\\
\texttt{kexec} ist ein Systemaufruf, der die Fähigkeit implementiert, den aktuellen Kernel
herunterzufahren und einen anderen Kernel zu starten. Es ist wie ein Neustart, aber er ist
unabhängig von der System-Firmware. Und wie ein Neustart können Sie damit jeden Kernel
starten, nicht nur Linux.
Der Name kommt von der Anlehnung mit dem Systemaufruf \texttt{exec}.
Es ist ein fortlaufender Prozess, um sicher zu sein, dass die Hardware eines Rechners
ordnungsgemäß heruntergefahren wird, seien Sie also nicht überrascht, wenn dieser Code bei
Ihnen zunächst nicht funktioniert. Zum Zeitpunkt des Verfassens dieses Artikels ist die
genaue Hardwareschnittstelle noch stark im Wandel, so dass keine gute Empfehlung
ausgesprochen werden kann.

\subsubsection{Enable kexec file based system call}
CONFIG\_KEXEC\_FILE [=y] \textbf{[Y]}\\
(Aktivieren des dateibasierten Systemaufrufs kexec)\\
Dies ist eine neue Version des Systemaufrufs \texttt{kexec}. Dieser Systemaufruf ist dateibasiert und
nimmt Dateideskriptoren als Systemaufrufsargument für Kernel und initramfs anstelle einer Liste
von Segmenten, wie sie vom kexec-Systemaufruf akzeptiert wird.

\paragraph{Verify kernel signature during kexec\_file\_load() syscall}$~$\\
CONFIG\_KEXEC\_SIG [=y] \textbf{[Y]}\\
Mit dieser Option wird der Syscall \texttt{kexec\_file\_load()} auf eine gültige Signatur des
Kernel-Images geprüft. Das Image kann immer noch ohne gültige Signatur geladen werden, es sei denn,
Sie aktivieren auch KEXEC\_SIG\_FORCE, aber wenn es eine Signatur gibt, die überprüft werden kann,
dann muss sie auch gültig sein.
Zusätzlich zu dieser Option müssen Sie die Signaturprüfung für den entsprechenden Kernel-Image-Typ,
der geladen wird, aktivieren, damit dies funktioniert.

\subparagraph{Require a valid signature in kexec\_file\_load() syscall}$~$\\
CONFIG\_KEXEC\_SIG\_FORCE [=n] \textbf{[N]}\\
Diese Option macht die Überprüfung der Kernelsignatur für den Syscall
\texttt{kexec\_file\_load()} zwingend erforderlich.

\subparagraph{Enable bzImage signature verification support}$~$\\
CONFIG\_KEXEC\_BZIMAGE\_VERIFY\_SIG [=n] \textbf{[N]}\\
Aktivierung der Unterstützung von bzImage für die Signaturprüfung.

\subsubsection{kexec jump}
CONFIG\_KEXEC\_JUMP [=y] \textbf{[Y]}\\
Sprung zwischen Original-Kernel und kexeced-Kernel und Aufruf von Code im physikalischen
Adressmodus über KEXEC

\subsubsection{kexec crash dumps}
CONFIG\_KEXEC\_DUMP [=y] \textbf{[Y]}\\
Absturzdump (Speicherauszug) erzeugen, nachdem er von kexec gestartet wurde.
Dies sollte normalerweise nur in speziellen Crash-Dump-Kerneln gesetzt werden, die im Hauptkernel
mit kexec-tools in einen speziell reservierten Bereich geladen werden und dann später nach einem
Absturz von kdump/kexec ausgeführt werden. Der Crash-Dump-Kernel muss mit PHYSICAL\_START auf eine
Speicheradresse kompiliert werden, die nicht vom Hauptkernel oder BIOS verwendet wird, oder er muss
als relocatable image (CONFIG\_RELOCATABLE=y) erstellt werden.\\
Für weitere Details siehe Documentation/admin-guide/kdump/kdump.rst

Für s390 aktiviert diese Option auch zfcpdump.\\
Siehe auch $<$file:Documentation/s390/zfcpdump.rst$>$

\paragraph{Update the crash elfcorehdr on system configuration changes}$~$\\
CONFIG\_CRASH\_HOTPLUG [=y] \textbf{[Y]}\\
Aktivierung der direkten Aktualisierung der Crash-Elfcorehdr (die die Liste der CPUs und
Speicherbereiche enthält, die bei einem Absturz gelöscht werden sollen) als Reaktion auf
Hot-Plug/Unplug oder Online/Offline von CPUs oder Speicher. Dies ist ein sehr viel
fortschrittlicherer Ansatz als der Versuch dies im Userspace zu tun.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{Specify the maximum number of memory regions for the elfcorehdr}$~$\\
CONFIG\_CRASH\_MAX\_MEMORY\_RANGES [=8192] \textbf{[8192]}\\
Für den Pfad des Systemaufrufs \texttt{kexec\_file\_load()} ist die maximale Anzahl
der Speicherbereiche anzugeben, die der elfcorehdr-Puffer/das elfcorehdr-Segment aufnehmen kann.
Diese Regionen werden über \texttt{walk\_system\_ram\_res()} ermittelt, z.~B. die
'System RAM'-Einträge in /proc/iomem. Dieser Wert wird mit NR\_CPUS\_DEFAULT kombiniert und mit
\texttt{sizeof(Elf64\_Phdr)} multipliziert, um die endgültige elfcorehdr-Speicherpuffer-/Segmentgröße
zu bestimmen. Der Wert 8192 beispielsweise deckt ein (dünn besiedeltes) 1TiB-System ab,
das aus 128MiB-Memblöcken besteht, und führt zu einer elfcorehdr-Speicher\-puffer-/Segmentgröße
von unter 1MiB. Dies ist eine vernünftige Wahl, um sowohl Baremetal- als auch virtuelle
Maschinenkonfigurationen zu unterstützen.\\
Für den Syscall-Pfad \texttt{kexec\_load()}
ist CRASH\_MAX\_MEMORY\_RANGES Teil der Berechnung hinter dem Wert,
der über das Attribut /sys/kernel/crash\_elfcorehdr\_size bereitgestellt wird.

\section{64-bit kernel}
CONFIG\_64BIT [=y] \textbf{[Y]}\\
Sagen Sie Y für ja, zur Erstellung eines 64-Bit-Kernels - früher bekannt als x86\_64\\
Sagen Sie N für nein, um einen 32-Bit-Kernel zu erstellen - früher bekannt als i386

\section{Processor type and features \texorpdfstring{$\rightarrow$}{->}}
Prozessortyp und Eigenschaften

\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 Multi\-prozessor"=Maschinen, verwendet aber nur
eine CPU einer Multi\-pro\-zes\-sor"=Ma\-schine.
Wenn Sie hier Y angeben, läuft der Kernel auf vielen, aber nicht auf
allen Uni\-pro\-zes\-sor"=Ma\-schi\-nen.

Auf einer Uni\-pro\-zes\-sor"=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 Prozessor\-familie\grqq{} die Architektur \glqq 586\grqq{} oder \glqq Pentium\grqq{} auswählen.

Ebenso funktionieren Multi\-pro\-zes\-sor"=Kernel für die \glqq PPro\grqq{}"=Ar\-chi\-tek\-tur
möglicherweise nicht auf allen Pentium"=basierten Boards.

Benutzer von Multi\-prozessor-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.

\subsection{Support x2apic}
CONFIG\_X86\_X2APIC [=y] \textbf{[Y]}\\
Dies ermöglicht die Unterstützung von x2apic auf CPUs, die über diese Funktion verfügen.
Dies ermöglicht 32-Bit-Apic-IDs (so dass es sehr große Systeme unterstützen kann) und greift auf den
lokalen apic über MSRs und nicht über mmio zu. Einige Intel-Systeme ab ca. 2022 sind in den x2APIC-Modus
gesperrt und können nicht auf die alten APIC-Modi zurückgreifen, wenn SGX oder TDX im BIOS aktiviert
sind. Ohne Aktivierung dieser Option booten sie mit stark eingeschränkter Funktionalität.\\
Wenn Sie nicht wissen, was Sie hier tun sollen, sagen Sie N.

\subsection{Enable MPS table}
CONFIG\_X86\_MPPARSE [=y] \textbf{[Y]}\\
Für alte smp-Systeme, die keine richtige acpi-Unterstützung haben. Neuere Systeme
(insbesondere mit 64bit-CPUs) mit acpi-Unterstützung, werden von MADT und DSDT überschrieben.

\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.

\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)
64-Bit-x86-Plattformen auswählen:
\begin{itemize}
	\item Numascale NumaChip
	\item ScaleMP vSMP
	\item SGI Ultraviolet
\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.

\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.

\subsection{AMD ACPI2Platform devices support}
CONFIG\_X86\_AMD\_PLATFORM\_DEVICE [=y] \textbf{[Y]}\\
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.

\subsection{Intel SoC IOSF Sideband support for SoC platforms}
CONFIG\_IOSF\_MBI [=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.

\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.

\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 "Y".

\subsection{Linux guest support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_HYPERVISOR\_GUEST [=y] \textbf{[Y]}\\
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.

\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.

\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.

\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.

\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.

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

\subparagraph{Limit Xen pv-domain memory to 512GB}$~$\\
CONFIG\_XEN\_512GB [=y] \textbf{[Y]}\\
Begrenzen der paravirtualisierten Benutzerdomänen auf 512~GB RAM.
Die Xen-Tools und die Tools zur Analyse von Crash-Dumps unterstützen möglicherweise keine pv-Domänen
mit mehr als 512~GB~RAM. Diese Option steuert die Standardeinstellung des Kernels, um nur bis zu
512~GB oder mehr zu verwenden.
Es ist jederzeit möglich, die Standardeinstellung durch Angabe des Boot-Parameters
\texttt{xen\_512gb\_limit} zu ändern.

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

\paragraph{Enable Xen debug and tuning parameters in debugfs}$~$\\
CONFIG\_XEN\_DEBUG\_FS [=n] \textbf{[N]}\\
Der Betrieb als Xen PV-Gast wird unterstützt.

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

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

\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.

\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.

\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.

\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.

\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.

\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.

\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/}.

\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.

\subsection{Processor family (Generic-x86-64) \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}.\\[1em]
Derzeit (Kernelversion 6.6.x) können Sie nur aus fünf auswählen:

\subsubsection{Opteron/Athlon64/Hammer/K8}
CONFIG\_MK8 [=n] \textbf{[N]}\\
Wählen Sie diese Option für einen Prozessor der AMD Opteron- oder Athlon64 Hammer"=Fa\-mi\-lie.
Er\-mög\-licht die Verwendung einiger erweiterter Anweisungen und übergibt entsprechende
Optimierungsflags an den GCC.

\subsubsection{Intel P4 / older Netburst based Xeon}
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.

\subsubsection{Intel P4 / older Netburst based Xeon}
CONFIG\_MCORE2 [=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).

\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.

\subsubsection{Generic-x86-64}
CONFIG\_GENERIC\_CPU [=y] \textbf{[N]}\\
Allgemeine x86-64-CPU. Läuft gleich gut auf allen x86-64-CPUs.

\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 3~GB. 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 3~GB Arbeitsspeicher vorhanden und das System enthält ein auf 32~Bit
begrenztes Gerät.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsection{Enable Maximum number of SMP Processors and NUMA Nodes}
CONFIG\_MAXSMP [=n] \textbf{[N]}\\
Aktivieren der maximalen Anzahl von CPUs- und NUMA-Knoten für diese Architektur.\\
Wenn Sie unsicher sind, sagen Sie N.

\subsection{Maximum number of CPUs}
CONFIG\_NR\_CPUS [=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 8192, andernfalls
ist der maximale Wert 512.  Der Mindestwert, der Sinn macht, ist 2.

Dies dient lediglich dazu, Speicher zu sparen: jede unterstützte CPU fügt dem Kernel-Image
etwa 8~kB hinzu.

\subsection{Cluster scheduler support}
CONFIG\_SCHED\_CLUSTER [=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.

\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.

\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.

\subsection{Reroute for broken boot IRQs}
CONFIG\_X86\_REROUTE\_FOR\_BROKEN\_BOOT\_IRQS [=y] \textbf{[Y]}\\
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.

\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.

\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.

\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).

\subsubsection{AMD MCE features}
CONFIG\_X86\_MCE\_AMD [=y] \textbf{[N]}\\
Zusätzliche Unterstützung für AMD-spezifische MCE-Funktionen wie den
DRAM-Fehlerschwellenwert (DRAM Error Threshold).

\subsection{Machine check injector support}
CONFIG\_X86\_MCE\_INJECT [=m] \textbf{[M]}\\
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.

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

\subsubsection{Intel uncore performance events}
CONFIG\_PERF\_EVENTS\_INTEL\_UNCORE [=m] \textbf{[M]}\\
Unterstützung für Intel-Uncore-Leistungsereignisse. Diese sind auf NehalemEX
und moderneren Prozessoren verfügbar.

\subsubsection{Intel/AMD rapl performance events}
CONFIG\_PERF\_EVENTS\_INTEL\_RAPL [=m] \textbf{[M]}\\
Unterstützung für Intel- und AMD-RAPL-Leistungsereignisse zur
Leistungsüberwachung auf modernen Prozessoren.

\subsubsection{Intel cstate performance events}
CONFIG\_PERF\_EVENTS\_INTEL\_CSTATE [=m] \textbf{[M]}\\
Einbeziehung der Unterstützung für Intel cstate performance events für die
Leistungsüberwachung auf modernen Prozessoren.

\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 Schnitt\-stel\-le X86\_FEATURE\_ACC\_POWER
(CPUID Fn8000\_0007\_EDX[12]) genutzt,
um den durchschnittlichen Stromverbrauch von Prozessoren der Familie 15h zu
berechnen. 

\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/.../,amd\_df/.../}.\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{amd-uncore} genannt.

\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.

\subsubsection{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 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.

\subsubsection{Late microcode loading (DANGEROUS)}
CONFIG\_MICROCODE\_LATE\_LOADING [=n] \textbf{[N]}\\
Das späte Laden von Mikrocode, wenn das System bereits läuft und Befehle ausführt, ist eine heikle
Angelegenheit und sollte nach Möglichkeit vermieden werden. Allein die Abfolge der Synchronisierung
aller Kerne und SMT-Threads ist ein zerbrechlicher Tanz, der nicht garantiert, dass die Kerne nach
dem Laden nicht softlocking werden. Daher sollten Sie dies auf eigenes Risiko tun. Das späte Laden
färbt auch den Kernel.

\subsubsection{/dev/cpu/*/msr - Model-specific register support}
CONFIG\_X86\_MSR [=y] \textbf{[Y]}\\
Dieses Gerät ermöglicht privilegierten Prozessen den Zugriff auf die modellspezifischen x86-Register (MSRs).\\
Es ist 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.

\subsubsection{/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}.

\subsubsection{Enable 5-level page tables support}
CONFIG\_X86\_5LEVEL [=y] \textbf{[Y]}\\
5-Level-Paging ermöglicht den Zugriff auf einen größeren Adressraum:
bis zu 128~PiB virtueller Adressraum und 4~PiB 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.

\subsubsection{Enable statistic for Change Page Attribute}
CONFIG\_X86\_CPA\_STATISTICS [=y] \textbf{[Y]}\\
Statistiken über den Mechanismus zum Ändern von Seitenattributen offenlegen, der dabei hilft,
die Wirksamkeit der Erhaltung großer und umfangreicher Seitenzuordnungen zu bestimmen,
wenn Zuordnungsschutzmaßnahmen geändert werden.

\subsubsection{AMD Secure Memory Encryption (SME) support}
CONFIG\_AMD\_MEM\_ENCRYPT [=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.

\paragraph{Activate AMD Secure Memory Encryption (SME) by default}$~$\\
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"=Pro\-zes\-sor 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.

\subsubsection{NUMA Memory Allocation and Scheduler Support}
CONFIG\_NUMA [=y] \textbf{[Y]}\\
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.

\paragraph{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-Multi\-pro\-zes\-sor\-system 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.

\paragraph{ACPI NUMA detection}$~$\\
CONFIG\_X86\_64\_ACOU\_NUMA [=y] \textbf{[Y]}\\
Aktivieren Sie die auf ACPI SRAT basierende Knoten-Topologie-Erkennung.

\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.

\paragraph{Maximum NUMA Nodes (as a power of 2)}$~$\\
CONFIG\_NODES\_SHIFT [=5]  \textbf{[5]}\\
(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.

\subsubsection{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.

\subsubsection{Support non-standard NVDIMMs and ADR protected memory}
CONFIG\_X86\_PMEM\_LEGACY [=m] \textbf{[M]}\\
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.

\subsubsection{Check for low memory corruption}
CONFIG\_X86\_CHECK\_BIOS\_CORRUPTION [=y] \textbf{[Y]}\\
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.}
}

\paragraph{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.

\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.

\paragraph{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.

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

\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-Be\-fehls\-zei\-le geändert werden.

\subsubsection{Indirect Branch Tracking}
CONFIG\_X86\_KERNEL\_IBT [=y] \textbf{[Y]}\\
Bauen Sie den Kernel mit Unterstützung für Indirect Branch Tracking auf, eine Hardware-Unterstützung, die die Integrität
des Kontrollflusses an den Rändern schützt. Sie erzwingt, dass alle indirekten Aufrufe auf einer ENDBR-Anweisung landen
müssen, und der Compiler wird den Code mit ihnen instrumentieren, damit dies geschieht.\\
Zusätzlich zur Erstellung des Kernels mit IBT werden alle Funktionen, die keine indirekten Aufrufziele sind, versiegelt,
um zu verhindern, dass sie jemals zu solchen werden.\\
Dies erfordert LTO wie objtool-Läufe und verlangsamt den Bau. Es reduziert jedoch die Anzahl der ENDBR-Anweisungen im
Kernel-Image erheblich.

\subsubsection{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.

\subsubsection{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.

\paragraph{off}$~$\\
CONFIG\_X86\_INTEL\_TSX\_MODE\_OFF [=n] \textbf{[N]}\\
TSX ist, wenn möglich, deaktiviert -- entspricht dem Befehlszeilenparameter \texttt{tsx=off}.

\paragraph{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}

\paragraph{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}.

\subsubsection{Software Guard eXtensions (SGX)}
CONFIG\_X86\_SGX [=y] \textbf{[Y]}\\
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.

\subsubsection{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 "umsonst". 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.

\subsubsection{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.

\paragraph{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.

\subparagraph{EFI handover protocol (DEPRECATED)}$~$\\
CONFIG\_EFI\_STUB [=y] \textbf{[Y]}\\
(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.

\subparagraph{EFI mixed-mode support}$~$\\
CONFIG\_EFI\_MIXED [=y] \textbf{[Y]}\\
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.

\paragraph{Enable EFI fake memory map}$~$\\
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.

\subsubsection{Timer frequency () \texorpdfstring{$\rightarrow$}{->}}
Ermöglicht die Konfiguration der Timer-Frequenz. Es ist üblich, den Timer-Interrupt mit 1000 Hz laufen
zu lassen, aber 100 Hz 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.

\paragraph{100~Hz}$~$\\
CONFIG\_HZ\_100 [=n] \textbf{[N]}\\
100~Hz 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.
\paragraph{250~Hz}$~$\\
CONFIG\_HZ\_250 [=n] \textbf{[N]}\\
250~Hz 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.
\paragraph{300~Hz}$~$\\
CONFIG\_HZ\_300 [=y] \textbf{[Y]}\\
300~Hz 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.
\paragraph{1000~Hz}$~$\\
CONFIG\_HZ\_1000 [=n] \textbf{[N]}\\
1000~Hz ist die bevorzugte Wahl für Desktop-Systeme und andere Systeme, die schnelle interaktive
Reaktionen auf Ereignisse erfordern.

\subsubsection{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.

\subsubsection{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 1~MB geladen werden kann.
Die Verschiebungen machen das Kernel-Binary etwa 10~\% 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.

\paragraph{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 1,5~GB auf 1~GB 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.

\subsubsection{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.

\subsubsection{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 30.000 verschiedene mögliche virtuelle Adressen für jeden Speicherabschnitt.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{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.

\subsubsection{Disable the 32-bit vDSO (needed for glibc 2.3.3)}
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.

\subsubsection{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\glqq{}.

\paragraph{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.

\paragraph{None}$~$\\
CONFIG\_LEGACY\_VSYSCALL\_NONE [=n] \textbf{[N]}\\
Es wird überhaupt keine vsyscall-Zu\-ordnung geben. Dies eliminiert jegliches Risiko einer ASLR-Um\-ge\-hung
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.

\subsubsection{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.

\subsubsection{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.

\subsubsection{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.

\section{Mitigations for speculative execution vulnerabilities \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_SPECULATION\_MITIGATIONS [=y] \textbf{[Y]}\\
Sagen Sie hier Y, um Optionen zu aktivieren, die Abhilfemaßnahmen für Hardware-Schwachstellen durch spekulative
Ausführung ermöglichen. Wenn Sie N sagen, werden alle Abhilfemaßnahmen deaktiviert. Sie sollten wirklich wissen,
was Sie tun, um dies anzugeben.

\subsection{Remove the kernel mapping in user mode}
CONFIG\_PAGE\_TABLE\_ISOLATION [=y] \textbf{[Y]}\\
Diese Funktion reduziert die Anzahl der Hardware-Seitenkanäle, indem sie sicherstellt, dass die meisten
Kernel-Adressen nicht in den Benutzerraum abgebildet werden. Siehe Documentation/arch/x86/pti.rst für
weitere Details.

\subsection{Avoid speculative indirect branches in kernel}
CONFIG\_RETPOLINE [=y] \textbf{[Y]}\\
Kompilieren Sie den Kernel mit den retpoline Compiler-Optionen, um Datenlecks zwischen Kernel und Benutzer
zu verhindern, indem spekulative indirekte Verzweigungen vermieden werden. Erfordert einen Compiler mit
\texttt{-mindirect-branch=thunk-extern} Unterstützung für vollen Schutz. Der Kernel kann langsamer laufen.

\subsubsection{Enable return-thunks}
CONFIG\_RETHUNK [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit der Compileroption return-thunks, um Datenlecks zwischen Kernel und Benutzer zu
verhindern, indem Rückgabespekulationen vermieden werden. Erfordert einen Compiler mit
\texttt{-mfunction-return=thunk-extern} Unterstützung für vollen Schutz. Der Kernel kann langsamer laufen.

\paragraph{Enable UNRET on kernel entry}$~$\\
CONFIG\_CPU\_UNRET\_ENTRY [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit Unterstützung für die \texttt{retbleed=unret}-Abschwächung.

\subsection{Mitigate RSB underflow with call depth tracking}
CONFIG\_CALL\_DEPTH\_TRACKING [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit Call-Depth-Tracking, um das Intel SKL Return-Speculation-Buffer (RSB) Underflow-Problem
zu entschärfen. Die Entschärfung ist standardmäßig ausgeschaltet und muss in der Kernel-Befehlszeile über die
Option \texttt{retbleed=stuff} aktiviert werden. Für nicht betroffene Systeme ist der Overhead dieser Option
marginal, da die Verfolgung der Aufruftiefe zur Laufzeit generierte Call Thunks in einem vom Compiler generierten
Padding-Bereich und Call Patching verwendet. Dies erhöht die Textgröße um $\sim 5$\%. Bei nicht betroffenen Systemen
ist dieser Platz ungenutzt. Auf betroffenen SKL-Systemen führt dies zu einem erheblichen Leistungsgewinn gegenüber
der IBRS-Abschwächung.

\subsubsection{Enable call thunks and call depth tracking debugging}
CONFIG\_CALL\_THUNKS\_DEBUG [=n] \textbf{[N]}\\
Aktiviere Call/Ret-Zähler zur Erkennung von Ungleichgewichten und baue ein lautes dmesg über die Erzeugung von
Callthunks und Call-Patching zur Fehlersuche ein. Die Debug-Ausdrucke müssen in der Kernel-Befehlszeile mit
\texttt{debug-callthunks} aktiviert werden. Aktivieren Sie dies nur, wenn Sie Call Thunks debuggen wollen,
da dies einen spürbaren Laufzeit-Overhead erzeugt. Wenn Sie unsicher sind, sagen Sie N.

\subsection{Enable IBPB on kernel entry}
CONFIG\_CPU\_IBPB\_ENTRY [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit Unterstützung für die \texttt{retbleed=ibpb}-Abschwächung.

\subsection{Enable IBRS on kernel entry}
CONFIG\_CPU\_IBRS\_ENTRY [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit Unterstützung für die \texttt{spectre\_v2=ibrs}-Abschwächung.
Dadurch werden sowohl spectre\_v2 als auch retbleed auf Kosten der Leistung abgeschwächt.

\subsection{Mitigate speculative RAS overflow on AMD}
CONFIG\_CPU\_SRSO [=y] \textbf{[N]}\\
Aktiviert die SRSO-Abschwächung, die auf AMD Zen1-4-Maschinen benötigt wird.

\subsection{Mitigate Straight-Line-Speculation}
CONFIG\_SLS [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit Straight-Line-Speculation-Optionen, um ihn vor Straight-Line-Speculation zu
schützen. Das Kernel-Image könnte etwas größer sein.

\subsection{Force GDS Mitigation}
CONFIG\_GDS\_FORCE\_MITIGATION [=n] \textbf{[N]}\\
Gather Data Sampling (GDS) ist eine Hardware-Schwachstelle, die unberechtigten spekulativen Zugriff auf
Daten ermöglicht, die zuvor in Vektorregistern gespeichert wurden. Diese Option ist gleichbedeutend mit
der Einstellung \texttt{gather\_data\_sampling=force} in der Befehlszeile. Die Mikrocode-Abschwächung
wird verwendet, falls vorhanden, andernfalls wird AVX als Abschwächung deaktiviert. Auf betroffenen
Systemen, denen der Microcode fehlt, wird jeder Userspace-Code, der AVX bedingungslos verwendet, bei
gesetzter Option abbrechen. Das Setzen dieser Option auf Systemen, die nicht für GDS anfällig sind, hat
keine Auswirkungen.\\
Im Zweifelsfall sagen Sie N.

\section{Power management and ACPI options \texorpdfstring{$\rightarrow$}{->}}
Energieverwaltung und ACPI-Optionen

\subsection{Suspend to RAM and standby}
CONFIG\_SUSPEND [=y] \textbf{[Y]}\\
Ermöglicht dem System, in Ruhezustände einzutreten, in denen der Hauptspeicher mit Strom versorgt wird und
somit sein Inhalt erhalten bleibt, wie z.~B. der Suspend-to-RAM-Zustand (z.~B. der ACPI S3-Zustand).

\subsection{Hibernation (aka `suspend to disk')}
CONFIG\_HIBERNATION [=y] \textbf{[Y]}\\
Aktiviert die Funktion \glqq Suspend to Disk\grqq{} (STD),
die in den Benutzeroberflächen gewöhnlich als \glqq Ruhezustand\grqq{}
bezeichnet wird. STD setzt das System an einen Haltepunkt und schaltet es aus; beim Neustart wird dieser Haltepunkt
wiederhergestellt. Sie können Ihren Rechner mit \texttt{echo disk > /sys/power/state} in den Ruhezustand versetzen,
nachdem Sie \texttt{resume=/dev/swappartition} in der Kernel-Befehlszeile in der Konfigurationsdatei Ihres Bootloaders
angegeben haben. Alternativ können Sie auch die zusätzlichen Userland-Tools verwenden, die unter
\url{http://suspend.sf.net} verfügbar sind. Im Prinzip sind weder ACPI noch APM erforderlich, obwohl beispielsweise
ACPI für die letzten Schritte verwendet wird, wenn es verfügbar ist. Einer der Gründe für die Verwendung von
Software-Suspend ist, dass die Firmware-Hooks für Suspend-Zustände wie Suspend-to-RAM (STR) oft nicht sehr gut mit
Linux funktionieren. Es wird ein Abbild erstellt, das in der aktiven Auslagerungsdatei gespeichert wird.
Beim nächsten Start übergeben Sie dem Kernel das Argument \texttt{resume=/dev/swappartition}, damit er das gespeicherte
Abbild erkennt, den Speicherstatus daraus wiederherstellt und wie zuvor weiterarbeitet.
Wenn Sie nicht wollen, dass der vorherige Zustand wiederhergestellt wird, verwenden Sie das Kernel-Befehlszeilenargument
\texttt{noresume}. Beachten Sie jedoch, dass fsck auf Ihren Dateisystemen ausgeführt wird und Sie mkswap auf der
Swap-Partition ausführen müssen, die für den Suspend verwendet wird. In begrenztem Umfang funktioniert es auch mit
Swap-Dateien (für Details siehe $<$file:Documentation/power/swsusp-and-swap-files.rst$>$).
Sie können jetzt booten, ohne den Vorgang fortzusetzen, und ihn später fortsetzen, aber in der Zwischenzeit können Sie
die Swap-Partition(en)/Datei(en), die am Suspendieren beteiligt waren, nicht verwenden. In diesem Fall dürfen Sie auch
nicht die Dateisysteme verwenden, die vor dem Suspendieren gemountet waren. Insbesondere dürfen Sie keine
journalisierten Dateisysteme mounten, die vor dem Suspending gemountet wurden, da diese sonst auf unschöne Weise
beschädigt werden. Weitere Informationen finden Sie in $<$file:Documentation/power/swsusp.rst$>$.

\subsubsection{Userspace snapshot device}
CONFIG\_HIBERNATION\_SNAPSHOT\_DEV [=y] \textbf{[Y]}\\
Gerät, das von den uswsusp-Werkzeugen verwendet wird. Sagen Sie N, wenn kein Snapshotting aus dem Userspace benötigt
wird, dies reduziert auch die Angriffsfläche des Kernels. Im Zweifelsfall sagen Sie Y.

\subsubsection{Default resume partition}
CONFIG\_PM\_STD\_PARTITION [=] \textbf{[~]}\\
Die Standard-Wiederaufnahmepartition ist die Partition, auf der die Suspend-to-Disk-Implementierung nach einem
Suspend-Disk-Image suchen wird. Die hier angegebene Partition wird für fast jeden Benutzer anders sein. Es sollte eine
gültige Swap-Partition sein (zumindest im Moment), die vor dem Suspendieren eingeschaltet wird. Die angegebene
Partition kann durch die Angabe von:\\
\texttt{resume=/dev/<anderes Gerät>}\\
überschrieben werden, wodurch die Partition für die Wiederaufnahme auf das angegebene Gerät gesetzt wird.
Beachten Sie, dass es derzeit keine Möglichkeit gibt, das Gerät anzugeben, auf dem das suspendierte Image
gespeichert werden soll. Es wird einfach das erste verfügbare Swap-Gerät ausgewählt.

\subsection{Opportunistic sleep}
CONFIG\_PM\_AUTOSLEEP [=n] \textbf{[N]}\\
Ermöglicht es dem Kernel, automatisch einen Systemübergang in einen globalen Ruhezustand auszulösen, wenn es keine aktiven Weckquellen gibt.

\subsection{Userspace opportunistic sleep}
CONFIG\_PM\_USERSPACE\_AUTOSLEEP [=n] \textbf{[N]}\\
Benachrichtigt den Kernel über eine aggressive Benutzerraum-Energieverwaltungspolitik für den automatischen Schlaf. Diese Option
ändert das Verhalten verschiedener schlafempfindlicher Codes, um mit häufigen, vom Benutzer initiierten Übergängen in einen
globalen Schlafzustand umzugehen. Wenn Sie hier Y sagen, werden Codepfade deaktiviert, die die meisten Benutzer wirklich aktiviert
lassen sollten. Aktivieren Sie dies nur, wenn es sehr häufig vorkommt, dass man für sehr kurze Zeiträume ($<= 2$~Sekunden) schläft/wach
ist. Nur Plattformen, wie z.~B. Android, die opportunistischen Ruhezustand von einem Userspace-Energieverwaltungsdienst implementieren,
sollten diese Option aktivieren, nicht aber andere Maschinen. Daher sollten Sie hier N sagen, es sei denn, Sie sind sich sehr sicher,
dass Sie dies wollen. Die Option hat andernfalls schlechte, unerwünschte Auswirkungen und sollte nicht nur zum Spaß aktiviert werden.

\subsection{User space wakeup sources interface}
CONFIG\_PM\_WAKELOCKS [=n] \textbf{[N]}\\
Ermöglicht es dem Benutzer, Wakeup-Quellobjekte mit Hilfe einer sysfs-basierten Schnittstelle zu erstellen, zu aktivieren und zu deaktivieren.

\subsection{Device power management core functionality}
CONFIG\_PM\_WAKELOCKS [=y] \textbf{[Y]}\\
Aktivierung von Funktionen, die es ermöglichen, E/A-Geräte in einen energiesparenden (stromsparenden) Zustand zu versetzen, z.~B. nach einer
bestimmten Zeit der Inaktivität (autosuspended), und sie als Reaktion auf ein von der Hardware erzeugtes Wake-up-Ereignis oder eine Anforderung
des Treibers aufzuwecken. Damit diese Funktion funktioniert, ist in der Regel eine Hardwareunterstützung erforderlich, und die Bustreiber der
Busse, an denen die Geräte angeschlossen sind, sind für die tatsächliche Handhabung von Suspendierungsanforderungen und Weckereignissen zuständig.

\subsubsection{Power Management Debug Support}
CONFIG\_PM\_DEBUG [=y] \textbf{[Y]}\\
Diese Option aktiviert verschiedene Debugging-Funktionen im Power-Management-Code. Dies ist hilfreich bei der Fehlersuche und der Meldung
von PM-Fehlern, wie z.~B. der Suspend-Unterstützung.

\paragraph{Extra PM attributes in sysfs for low-level debugging/testing}$~$\\
CONFIG\_PM\_ADVANCED\_DEBUG [=n] \textbf{[N]}\\
Hinzufügen zusätzlicher sysfs-Attribute, die den Zugriff auf einige Power-Management-Felder von Ge\-rä\-te\-ob\-jek\-ten aus dem Userspace ermöglichen.
Wenn Sie kein Kernel-Entwickler sind, der am Debuggen/Testen von Power Management interessiert ist, sagen Sie N für nein.

\paragraph{Test suspend/resume and wakealarm during bootup}$~$\\
CONFIG\_PM\_TEST\_SUSPEND [=n] \textbf{[N]}\\
Mit dieser Option können Sie Ihren Rechner während des Bootvorgangs in den Ruhezustand versetzen und ihn einige Sekunden später mit einem
RTC-Weckalarm aufwecken. Aktivieren Sie dies mit einem Kernelparameter wie \texttt{test\_suspend=mem}. Wahrscheinlich sollten Sie
den RTC-Treiber Ihres Systems statisch einbinden, um sicherzustellen, dass er verfügbar ist, wenn dieser Test läuft.

\subsection{Suspend/resume event tracing}
CONFIG\_PM\_TRACE\_RTC [=y] \textbf{[Y]}\\
Dies ermöglicht es, den letzten PM-Ereignispunkt in der RTC über Neustarts hinweg zu speichern, so dass Sie einen Rechner, der während des
Suspendierens (oder häufiger während des Wiederaufnehmens) einfach hängen bleibt, debuggen können. Um diese Debugging-Funktion zu nutzen,
sollten Sie versuchen, den Rechner in den Suspend-Modus zu versetzen, ihn neu zu starten und dann Folgendes auszuführen\\[.5em]
\texttt{dmesg -s 1000000 | grep 'hash matches'}\\[.5em]
ACHTUNG: Diese Option führt dazu, dass die Echtzeituhr Ihres Rechners nach einem Neustart auf eine ungültige Zeit gesetzt wird.

\subsection{Enable workqueue power-efficient mode by default}
CONFIG\_WQ\_POWER\_EFFICIENT\_DEFAULT [=y] \textbf{[Y]}\\
Pro-CPU-Workqueues werden im Allgemeinen bevorzugt, da sie dank der Cache-Lokalität eine bessere Leistung aufweisen; leider neigen
Pro-CPU-Workqueues dazu, mehr Strom zu verbrauchen als ungebundene Workqueues. Durch die Aktivierung des Kernelparameters
\texttt{workqueue.power\_efficient} werden die Pro-CPU-Workqueues, die nachweislich erheblich zum Stromverbrauch beitragen,
ungebunden, was zu einem messbar geringeren Stromverbrauch auf Kosten eines geringen Leistungsoverheads führt. Diese Konfigurationsoption
legt fest, ob \texttt{workqueue.power\_efficient} standardmäßig aktiviert ist.\\
Im Zweifelsfall sagen Sie N.

\subsection{Energy Model for devices with DVFS (CPUs, GPUs, etc)}
CONFIG\_ENERGY\_MODEL [=y] \textbf{[Y]}\\
Mehrere Teilsysteme (z.~B. das thermische System und/oder der Aufgabenplaner) können Informationen über den Energieverbrauch von Geräten
nutzen, um intelligentere Entscheidungen zu treffen. Diese Konfigurationsoption aktiviert den Rahmen, von dem aus die Subsysteme auf die
Energiemodelle zugreifen können. Die genaue Verwendung des Energiemodells ist subsystemabhängig.\\
Im Zweifelsfall sagen Sie N.

\subsection{ACPI (Advanced Configuration and Power Interface) Support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_ACPI [=y] \textbf{[Y]}\\
Die Unterstützung von ACPI (Advanced Configuration and Power Interface) für Linux erfordert eine ACPI-kompatible Plattform (Hardware/Firmware)
und setzt das Vorhandensein von OS-directed configuration and power management (OSPM) Software voraus. Mit dieser Option wird Ihr Kernel um
etwa 70K erweitert. Linux ACPI bietet einen robusten funktionalen Ersatz für mehrere ältere Konfigurations- und Energieverwaltungsschnittstellen,
einschließlich der Plug-and-Play-BIOS-Spezifikation (PnP BIOS), der MultiProzessor-Spezifikation (MPS) und der Advanced Power Management (APM)-Spezifikation.
Wenn sowohl ACPI- als auch APM-Unterstützung konfiguriert sind, wird ACPI verwendet.
Die Linux-Unterstützung für ACPI basiert auf der ACPI Component Architecture (ACPI CA) der Intel Corporation. Weitere Informationen über die ACPI~CA
finden Sie unter: \url{https://acpica.org/} ACPI ist eine offene Industriespezifikation, die ursprünglich von Hewlett-Packard, Intel, Microsoft,
Phoenix und Toshiba mitentwickelt wurde. Derzeit wird sie von der ACPI Specification Working Group (ASWG) im Rahmen des UEFI-Forums entwickelt,
und jedes UEFI-Mitglied kann der ASWG beitreten und zur ACPI-Spezifikation beitragen.\\
Die Spezifikation ist verfügbar unter: \url{https://uefi.org/specifications}.

\subsubsection{AML debugger interface}
CONFIG\_ACPI\_DEBUGGER [=n] \textbf{[N]}\\
Aktiviert das In-Kernel-Debugging von AML-Funktionen: Statistiken, interner Objekt-Dump, Aus\-füh\-rung von Einzel\-schritt-Kontroll\-methoden. Dies befindet
sich noch in der Entwicklung, derzeit führt die Aktivierung nur zur Kompilierung der ACPICA-Debugger-Dateien.

\subsubsection{ACPI Serial Port Console Redirection Support}
CONFIG\_ACPI\_SPCR\_TABLE [=y] \textbf{[Y]}\\
Aktiviert die Unterstützung für die Serial Port Console Redirection (SPCR) Tabelle. Diese Tabelle enthält Informationen über die Konfiguration
der earlycon-Konsole.

\subsubsection{ACPI Firmware Performance Data Table (FPDT] support}
CONFIG\_ACPI\_FPDT [=y] \textbf{[Y]}\\
Aktiviert die Unterstützung für die Firmware Performance Data Table (FPDT). Diese Tabelle enthält Informationen über das Timing des Systemstarts,
der S3-Suspend- und S3-Resume-Firmware-Codepfade.

\subsubsection{Allow supported ACPI revision to be overridden}
CONFIG\_ACPI\_FPDT [=y] \textbf{[Y]}\\
(Erlaubt das Überschreiben der unterstützten ACPI-Revision)\\
Die Plattform-Firmware auf einigen Systemen erwartet, dass Linux \glqq 5\grqq{} als unterstützte ACPI-Revision zurückgibt, was dazu führt, dass sie
Systemkonfigurationsinformationen auf eine besondere Weise offenlegt. Basierend darauf, was ACPI als unterstützte Revision exportiert,
konfiguriert beispielsweise das Dell~XPS~13 (2015) sein Audiogerät so, dass es entweder im HDA-Modus oder im I2S-Modus arbeitet, wobei
ersterer unter Linux verwendet werden soll, bis letzterer vollständig unterstützt wird (sowohl im Kernel als auch im Userspace). Diese
Option ermöglicht eine DMI-basierte Besonderheit für den oben genannten Dell-Rechner (so dass HDA-Audio von der Plattform-Firmware dem
Kernel offengelegt wird) und macht es möglich, den Kernel zu zwingen, \glqq 5\grqq{} als unterstützte ACPI-Revision über den
Befehlszeilenschalter \texttt{acpi\_rev\_override} zurückzugeben.

\subsubsection{EC read/write access through /sys/kernel/debug/ec}
CONFIG\_ACPI\_EC\_DEBUGFS [=m] \textbf{[M]}\\
Sagen Sie N, um die Schnittstelle Embedded Controller /sys/kernel/debug zu deaktivieren. Beachten Sie, dass die Verwendung dieser Schnittstelle
Ihren Embedded Controller so verwirren kann, dass ein normaler Neustart nicht ausreicht. Sie müssen dann Ihr System ausschalten und den Akku
des Laptops für einige Sekunden entfernen. Ein Embedded Controller ist in der Regel auf Laptops vorhanden und liest Sensorwerte wie
Batteriestatus und Temperatur aus. Der Kernel greift auf den EC über ACPI-geparsten Code zu, der von BIOS-Tabellen bereitgestellt wird.
Diese Option ermöglicht den direkten Zugriff auf den EC, ohne dass ACPI-Code involviert ist.\\
Somit ist diese Option eine Debug-Option, die beim Schreiben von ACPI-Treibern hilft und zur Identifizierung von ACPI-Code oder
EC-Firmware-Fehlern verwendet werden kann.

\subsubsection{AC Adapter}
CONFIG\_ACPI\_AC [=y] \textbf{[Y]}\\
Dieser Treiber unterstützt das AC-Adapter-Objekt, das anzeigt, ob ein System mit Wechselstrom betrieben wird oder nicht.
Wenn Sie ein System haben, das zwischen Wechselstrom und Batterie umschalten kann, sagen Sie Y. Um diesen Treiber als Modul
zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{ac} heißen.

\subsubsection{Battery}
CONFIG\_ACPI\_BATTERY [=y] \textbf{[Y]}\\
Dieser Treiber bietet Unterstützung für Batterieinformationen über /proc/acpi/battery. Wenn Sie ein mobiles System mit
einer Batterie haben, sagen Sie Y. Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{battery} genannt.

\subsubsection{Button}
CONFIG\_ACPI\_BUTTON [=y] \textbf{[Y]}\\
Dieser Treiber verarbeitet Ereignisse für die Tasten Power, Sleep und Deckel. Ein Daemon liest Ereignisse von Eingabegeräten
oder über Netlink und führt benutzerdefinierte Aktionen wie das Herunterfahren des Systems aus. Dies ist für die
softwaregesteuerte Abschaltung erforderlich. Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{button} genannt.

\subsubsection{Video}
CONFIG\_ACPI\_VIDEO [=m] \textbf{[M]}\\
Dieser Treiber implementiert die ACPI-Erweiterungen für Display-Adapter für integrierte Grafikgeräte auf dem Motherboard,
wie in der ACPI 2.0-Spezifikation, Anhang B, angegeben.
Er unterstützt grundlegende Vorgänge wie das Definieren des Video-POST-Geräts, das Abrufen von EDID-Informationen und
das Einrichten eines Videoausgangs. Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{video} genannt.

\subsubsection{Fan}
CONFIG\_ACPI\_FAN [=y] \textbf{[Y]}\\
Dieser Treiber unterstützt ACPI-Lüftergeräte und ermöglicht es Anwendungen im Benutzermodus, grundlegende
Lüftersteuerungen (Ein, Aus, Status) durchzuführen. Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{fan} genannt.

\subsubsection{ACPI Time and Alarm (TAD) Device Support}
CONFIG\_ACPI\_TAD [=m] \textbf{[N]}\\
Das ACPI Time and Alarm (TAD) Gerät ist eine Alternative zur Real Time Clock (RTC). Seine Weckzeitgeber ermöglichen es dem System,
nach Ablauf einer bestimmten Zeitspanne vom Zustand S3 (oder optional S4/S5) in den Zustand S0 überzugehen.
Im Vergleich zum RTC-Alarm bietet der TAD eine größere Flexibilität bei den Wake-Timern.
Die Zeitfunktionen des TAD behalten die Tageszeitinformationen bei, auch wenn die Plattform ausgeschaltet ist.

\subsubsection{Dock}
CONFIG\_ACPI\_DOCK [=y] \textbf{[Y]}\\
Dieser Treiber unterstützt ACPI-gesteuerte Dockingstationen und Wechsellaufwerkseinschübe wie den IBM Ultrabay
und den Dell Module Bay.

\subsubsection{Processor}
CONFIG\_ACPI\_PROCESSOR [=y] \textbf{[Y]}\\
Dieser Treiber bietet Unterstützung für das ACPI-Prozessor-Paket. Er wird von mehreren Varianten der cpufreq-Treiber
für den Leistungszustand, die Wärmeentwicklung, die Drosselung und den Leerlauf benötigt.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul heißt dann \texttt{processor}.

\subsubsection{IPMI}
CONFIG\_ACPI\_IPMI [=m] \textbf{[M]}\\
Dieser Treiber ermöglicht dem ACPI den Zugriff auf den BMC-Controller. Und er verwendet die IPMI-Anfrage/Antwort-Nachricht
zur Kommunikation mit dem BMC-Controller, der sich auf dem Server befindet.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird als \texttt{acpi\_ipmi} aufgerufen.

\subsubsection{Processor Aggregator}
CONFIG\_ACPI\_PROCESSOR\_AGGREGATOR [=m] \textbf{[M]}\\
ACPI 4.0 definiert einen Prozessor-Aggregator, der es dem Betriebssystem ermöglicht, eine spezifische Prozessorkonfiguration
und -steuerung durchzuführen, die für alle Prozessoren der Plattform gilt. Derzeit ist nur der logische Leerlauf des Prozessors
definiert, der den Stromverbrauch senken soll. Dieser Treiber unterstützt das neue Gerät.

\subsubsection{Thermal Zone}
CONFIG\_ACPI\_THERMAL [=y] \textbf{[Y]}\\
Dieser Treiber unterstützt ACPI-Thermozonen. Die meisten mobilen und einige Desktop-Systeme unterstützen ACPI-Wärmezonen.
Es wird DRINGEND empfohlen, diese Option zu aktivieren, da Ihr(e) Prozessor(en) sonst beschädigt werden können. Um diesen Treiber
als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{thermal} genannt.

\subsubsection{Allow upgrading ACPI tables via initrd}
CONFIG\_ACPI\_TABLE\_UPGRADE [=y] \textbf{[Y]}\\
Diese Option bietet die Möglichkeit, beliebige ACPI-Tabellen über initrd zu aktualisieren.
Keine funktionale Änderung, wenn keine ACPI-Tabellen über initrd übergeben werden, daher ist es sicher, Y zu sagen.
Siehe Documentation/admin-guide/acpi/initrd\_table\_override.rst für Details

\subsubsection{Debug Statements}
CONFIG\_ACPI\_DEBUG [=y] \textbf{[Y]}\\
Das ACPI-Sub\-system kann Debug-Aus\-gaben er\-zeu\-gen.
Die Angabe von Y aktiviert diese Ausgabe und erhöht die Ker\-nel\-grö\-ße um etwa 50K.\\
Verwenden Sie die Kernel-Befehlszeilen\-parameter \texttt{acpi.debug\_layer} und \texttt{acpi.debug\_level}, die in
Do\-cu\-men\-tation/firmware-guide/acpi/debug.rst und Docu\-men\-tation/admin-guide/kernel-parameters.rst dokumentiert sind,
um die Art und Menge der Debug-Ausgabe zu steuern.

\subsubsection{PCI slot detection driver}
CONFIG\_ACPI\_PCI\_SLOT [=y] \textbf{[Y]}\\
Dieser Treiber erstellt Einträge in \texttt{/sys/bus/pci/slots/} für alle PCI-Steckplätze im System.
Dies kann helfen, PCI-Bus-Adressen, d.~h. Segment/Bus/Gerät/Funktions-Tupel, mit physischen Steckplätzen im System zu korrelieren.\\
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Container and Module Devices}
CONFIG\_ACPI\_CONTAINER [=y] \textbf{[Y]}\\
Dieser Treiber unterstützt ACPI-Container- und Modulgeräte (IDs ACPI0004, PNP0A05 und PNP0A06).
Dies hilft, Hotplug von Knoten, CPUs und Speicher zu unterstützen.

\subsubsection{Memory Hotplug}
CONFIG\_ACPI\_HOTPLUG\_MEMORY [=y] \textbf{[Y]}\\
Dieser Treiber unterstützt ACPI-Speicher-Hotplug.  Die Treiberfelder enthalten Benachrichtigungen über
ACPI-Speichergeräte (PNP0C80), die Speicherbereiche darstellen, die zur Laufzeit ein- oder ausgeschaltet
werden können. Wenn Ihre Hardware und Firmware das Hinzufügen oder Entfernen von Speichergeräten zur Laufzeit
nicht unterstützen, müssen Sie diesen Treiber nicht aktivieren.

\subsubsection{Smart Battery System}
CONFIG\_ACPI\_SBS [=m] \textbf{[N]}\\
Dieser Treiber unterstützt das Smart Battery System, eine andere Art des Zugriffs auf Batterieinformationen,
die bei einigen Laptops zu finden ist. Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Die Module
heißen dann sbs und sbshc.

\subsubsection{Hardware Error Device}
CONFIG\_ACPI\_HED [=y] \textbf{[Y]}\\
Dieser Treiber unterstützt das Hardware Error Device (PNP0C33), das dazu dient, einige über SCI gemeldete
Hardwarefehler zu melden, hauptsächlich die korrigierten Fehler.

\subsubsection{Allow ACPI methods to be inserted/replaced at run time}
CONFIG\_ACPI\_CUSTOM\_METHOD [=m] \textbf{[M]}\\
Mit dieser Debug-Funktion können ACPI-AML-Methoden eingefügt und/oder ersetzt werden, ohne dass das System
neu gestartet werden muss.\\
Für Details siehe: Documentation/firmware-guide/acpi/method-customizing.rst.\\
HINWEIS: Diese Option ist sicherheitsrelevant, da sie es erlaubt, dass root (uid=0) Benutzer in beliebigen
Kernelspeicher schreiben können und so bestimmte Sicherheitsmaßnahmen umgehen können (z.~B. wenn es root
nicht erlaubt ist, zusätzliche Kernelmodule nach dem Booten zu laden, kann diese Funktion verwendet werden,
um diese Einschränkung zu umgehen).

\subsubsection{Boottime Graphics Resource Table support}
CONFIG\_ACPI\_BGRT [=y] \textbf{[Y]}\\
Dieser Treiber bietet Unterstützung für die ACPI Boottime Graphics Resource Table, die es dem Betriebssystem
ermöglicht, Daten aus dem Firmware-Boot-Splash zu beziehen.\\
Er erscheint unter \texttt{/sys/firmware/acpi/bgrt/} .

\subsubsection{ACPI NVDIMM Firmware Interface Table (NFIT)}
CONFIG\_ACPI\_NFIT [=m] \textbf{[M]}\\
Infrastruktur, um ACPI 6-konforme Plattformen auf NVDIMMs zu untersuchen (NFIT) und einen libnvdimm-Gerätebaum
zu registrieren. Zusätzlich zu den Speichergeräten ermöglicht dies libnvdimm auch die Weitergabe von
ACPI.\_DSM-Nachrichten für die Plattform/Dimm-Konfiguration. Um diesen Treiber als Modul zu kompilieren,
wählen Sie hier M: Das Modul wird \texttt{nfit} genannt.

\paragraph{Enable debug for NVDIMM security commands}$~$\\
CONFIG\_NFIT\_SECURITY\_DEBUG [=n] \textbf{[N]}\\
Einige NVDIMM-Geräte und -Controller unterstützen Verschlüsselung und andere Sicherheitsfunktionen.
Die Nutzdaten für die Befehle, die diese Funktionen aktivieren, können sensibles Sicherheitsmaterial
im Klartext enthalten. Deaktivieren Sie das Debuggen dieser Befehls-Payloads standardmäßig. Wenn Sie ein
Kernel-Entwickler sind, der aktiv an der Aktivierung der NVDIMM-Sicherheit arbeitet, sagen Sie Y,
andernfalls sagen Sie N.

\subsubsection{NUMA support}
CONFIG\_ACPI\_NUMA [=y] \textbf{[Y]}\\
\textit{Für diese Option ist keine Hilfe verfügbar.}

\paragraph{ACPI Heterogeneous Memory Attribute Table Support}$~$\\
CONFIG\_ACPI\_HMAT [=y] \textbf{[Y]}\\
Wenn diese Option gesetzt ist, lässt der Kernel die ACPI HMAT (Heterogeneous Memory Attributes Table)
der Plattform auslesen und melden, Speicherinitiatoren mit ihren Zielen registrieren und Leistungsattribute
über das sysfs-Gerät des Knotens exportieren, falls vorhanden.

\subsubsection{ACPI Platform Error Interface (APEI)}
CONFIG\_ACPI\_APEI [=y] \textbf{[Y]}\\
APEI ermöglicht es, Fehler (z.~B. vom Chipsatz) an das Betriebssystem zu melden. Dies verbessert
insbesondere die NMI-Behandlung. Darüber hinaus unterstützt es Fehlerserialisierung und Fehlerinjektion.

\paragraph{ACPI Generic Hardware Error Source}$~$\\
CONFIG\_ACPI\_APEI\_GHES [=y] \textbf{[Y]}\\
Generic Hardware Error Source bietet eine Möglichkeit, Plattform-Hardware-Fehler (z.~B. vom Chipsatz) zu melden.
Sie arbeitet im so genannten \glqq Firmware First\grqq{}-Modus, d.~h. Hardwarefehler werden zunächst an die
Firmware gemeldet und dann von der Firmware an Linux weitergeleitet.
Auf diese Weise können einige Nicht-Standard-Hardware-Fehlerregister oder Nicht-Standard-Hardware-Verbindungen
von der Firmware überprüft werden, um wertvollere Hardware-Fehlerinformationen für Linux zu erhalten.

\paragraph{ACPI PCIe AER logging/recovering support}$~$\\
CONFIG\_ACPI\_APEI\_PCIEAER [=y] \textbf{[Y]}\\
PCIe-AER-Fehler können über den APEI-Firmware-First-Modus gemeldet werden. Aktivieren Sie diese Option,
um die entsprechende Unterstützung zu aktivieren.

\subsubsection{ACPI memory error recovering support}
CONFIG\_ACPI\_APEI\_MEMORY\_FAILURE [=y] \textbf{[Y]}\\
Speicherfehler können über den APEI-Firmware-First-Modus gemeldet werden. Aktivieren Sie diese Option,
um die Unterstützung für die Speicherwiederherstellung zu aktivieren.

\subsubsection{APEI Error INJection (EINJ)}
CONFIG\_ACPI\_APEI\_EINJ [=m] \textbf{[M]}\\
EINJ bietet einen Hardware-Fehlerinjektionsmechanismus, der hauptsächlich zur Fehlersuche und zum Testen
der anderen Teile von APEI und einiger anderer RAS-Funktionen verwendet wird.

\subsubsection{APEI Error Record Serialization Table (ERST) Debug Support}
CONFIG\_ACPI\_APEI\_ERST\_DEBUG [=m] \textbf{[M]}\\
ERST ist eine von APEI bereitgestellte Möglichkeit, Hardware-Fehler\-infor\-mationen in einem dauerhaften Speicher
zu speichern und von dort abzurufen. Aktivieren Sie dies, wenn Sie die ERST-Kernel\-un\-ter\-stüt\-zung und
Firmware-Implementierung debuggen und testen wollen.

\subsubsection{Intel DPTF (Dymnamic Platform and Thermal Framework) Support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_ACPI\_DPTF [=y] \textbf{[Y]}\\
Intel Dynamic Platform and Thermal Framework (DPTF) ist eine Hardware-/Softwarelösung auf Plattformebene für
das Energie- und Wärmemanagement. Als Container für mehrere Energie-/Thermo\-tech\-no\-lo\-gi\-en bietet DPTF einen
koordinierten Ansatz für verschiedene Richtlinien, die den Hardwarezustand eines Systems beeinflussen.

\paragraph{Platform Power DPTF Participant}$~$\\
CONFIG\_DPTF\_POWER [=m] \textbf{[M]}\\
Dieser Treiber bietet Unterstützung für das Dynamic Platform and Thermal Framework (DPTF) Platform Power
Participant Device (INT3407). Dieser Teilnehmer ist für die Offenlegung der Plattformtelemetrie verantwortlich:
\begin{itemize}
	\item max\_platform\_power (max. Plattformleistung)
	\item platform\_power\_source (Plattformstromquelle)
	\item adapter\_rating (Leistung des Netzteils)
	\item battery\_steady\_power (Dauerleistung der Batterie)
	\item ladegerät\_typ (Ladegerättyp)
\end{itemize}
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul heißt dann \texttt{dptf\_power}.

\paragraph{PCH FIVR DPTF Participant}$~$\\
CONFIG\_DPTF\_PCH\_FIVR [=m] \textbf{[M]}\\
Dieser Treiber fügt Unterstützung für Dynamic Platform and Thermal Framework (DPTF) PCH FIVR Participant
Device Support hinzu. Dieser Treiber ermöglicht es, die Frequenz des PCH FIVR (Fully Integrated Voltage Regulator)
zu schalten. Dieser Teilnehmer ist für die Bereitstellung verantwortlich:
\begin{itemize}
	\item freq\_mhz\_low\_clock
	\item freq\_mhz\_high\_clock
\end{itemize}
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{dptf\_pch\_fivr} heißen.

\subsubsection{Extended Error Log support}
CONFIG\_ACPI\_EXTLOG [=m] \textbf{[M]}\\
Bestimmte Anwendungen wie die vorausschauende Fehleranalyse (Predictive Failure Analysis, PFA) erfordern mehr Informationen
über den Fehler, als in den Prüfbänken der Prozessormaschine beschrieben werden können. Die meisten Server-Prozessoren
protokollieren zusätzliche Informationen über den Fehler in Prozessor-Uncore-Registern. Da die Adressen und das Layout
dieser Register von einem Prozessor zum anderen sehr unterschiedlich sind, kann die Systemsoftware sie nicht ohne weiteres
nutzen. Erschwerend kommt hinzu, dass einige der zusätzlichen Fehlerinformationen nicht ohne detaillierte Kenntnisse der
Plattformtopologie erstellt werden können. Die erweiterte MCA-Protokollierung ermöglicht es der Firmware, der Systemsoftware
synchron mit MCE oder CMCI zusätzliche Fehlerinformationen zu liefern. Dieser Treiber unterstützt diese Funktionalität mit
einem entsprechenden Tracepoint, der diese Informationen an den Userspace weiterleitet.

\subsubsection{ACPI configfs support}
CONFIG\_ACPI\_CONFIGFS [=m] \textbf{[M]}\\
Wählen Sie diese Option, um die Unterstützung für die ACPI-Konfiguration aus dem Userspace zu aktivieren. Die konfigurierbaren
ACPI-Gruppen sind dann unter /config/acpi sichtbar, vorausgesetzt, configfs ist unter /config eingebunden.

\subsubsection{ACPI Platform Firmware Runtime Update and Telemetry}
CONFIG\_ACPI\_PFRUT [=m] \textbf{[M]}\\
Dieser Mechanismus ermöglicht es, bestimmte Teile der Plattform-Firmware während des laufenden Betriebs (Laufzeit) zu
aktualisieren, ohne dass ein Neustart erforderlich ist. Dies ist von entscheidender Bedeutung, wenn das System zu
100~\% verfügbar sein muss und sich die mit einem Neustart verbundene Ausfallzeit nicht leisten kann, oder wenn die vom
System ausgeführte Arbeit besonders wichtig ist, so dass sie nicht unterbrochen werden kann und es nicht sinnvoll ist,
zu warten, bis sie abgeschlossen ist. Der bestehende Firmware-Code kann geändert (Treiber-Update) oder durch Hinzufügen
neuen Codes zur Firmware erweitert werden (Code-Injektion). Außerdem ermöglicht der Telemetrietreiber dem Benutzer, mit
Hilfe der Plattform-Firmware-Laufzeit-Telemetrieschnittstelle Telemetriedaten aus der Firmware abzurufen. Um die Treiber
als Module zu kompilieren, wählen Sie hier M: die Module heißen dann \texttt{pfr\_update} und \texttt{pfr\_telemetry}.

\subsubsection{ACPI PCC Address Space}
CONFIG\_ACPI\_PCC [=y] \textbf{[Y]}\\
Der PCC-Adressraum, der auch als PCC-Operationsbereich bezeichnet wird, bezieht sich auf den Bereich des PCC-Unterraums,
der auf die PCC-Signatur folgt. Die PCC Operation Region arbeitet mit der PCC Table (Platform Communications Channel Table)
zusammen. PCC-Unterräume, die für die Verwendung als PCC Operation Region markiert sind, dürfen nicht als PCC-Unterräume
für die Standard-ACPI-Funktionen wie CPPC, RASF, PDTT und MPST verwendet werden. Diese Standardfunktionen müssen stattdessen
immer die PCC-Tabelle verwenden. Aktivieren Sie diese Funktion, wenn Sie den PCC Address Space Handler einrichten und
installieren möchten, um PCC OpRegion in der Firmware zu behandeln.

\subsubsection{ACPI FFH Address Space}
CONFIG\_ACPI\_FFH [=y] \textbf{[Y]}\\
Der FFH (Fixed Function Hardware) Adressraum, auch FFH Operation Region genannt, erlaubt es, plattformspezifische OpRegions
zu definieren. Aktivieren Sie diese Funktion, wenn Sie den FFH-Adressraum-Handler einrichten und installieren möchten,
um die FFH-OpRegion in der Firmware zu behandeln.

\subsubsection{PMIC (Power Management Integrated Circuit) operation region support}
CONFIG\_PMIC\_OPREGION [=y] \textbf{[Y]}\\
Wählen Sie diese Option, um die Unterstützung für den ACPI-Betriebsbereich des PMIC-Chips zu aktivieren. Der Betriebsbereich
kann zur Steuerung von Stromschienen und zum Lesen/Schreiben von Sensoren auf dem PMIC-Chip verwendet werden.

\subsubsection{ACPI operation region support for TPS68470 PMIC}
CONFIG\_TPS68470\_PMIC\_OPREGION [=y] \textbf{[Y]}\\
Diese Konfiguration fügt ACPI-Betriebsbereich-Unterstützung für TI TPS68470 PMIC hinzu. Der Baustein TPS68470 ist eine
fortschrittliche Energieverwaltungseinheit, die ein Kompaktkameramodul (CCM) mit Strom versorgt, Takte für Bildsensoren
erzeugt, eine Dual-LED für den Blitz ansteuert und zwei LED-Treiber für allgemeine Anzeigen enthält.
Dieser Treiber ermöglicht die Unterstützung der ACPI-Betriebsregion für die Steuerung von Spannungsreglern und Taktgebern.
Bei dieser Option handelt es sich um ein bool, da sie eine ACPI-Betriebsregion bereitstellt, die verfügbar sein muss,
bevor eines der Geräte, die diese Option verwenden, getestet wird.

\subsubsection{Platform Runtime Mechanism Support}
CONFIG\_ACPI\_PRMT [=y] \textbf{[Y]}\\
Der Plattform-Laufzeit-Mechanismus (Platform Runtime Mechanism, PRM) ist eine Firmware-Schnitt\-stelle, die eine Reihe von
ausführbaren Binärdateien bereitstellt, die vom AML-Interpreter oder direkt von Gerätetreibern aufgerufen werden können.
Sagen Sie Y, um den AML-Interpreter für die Ausführung des PRM-Codes zu aktivieren. Während diese Funktion im Prinzip
optional ist, kann das Weglassen dieser Funktion den Rechenaufwand für die Initialisierung einiger Serversysteme erheblich
erhöhen.

\subsection{CPU Frequency scaling \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_CPU\_FREQ [=y] \textbf{[Y]}\\
Mit der CPU-Frequenzskalierung können Sie die Taktfrequenz von CPUs im laufenden Betrieb ändern. Dies ist eine gute Methode,
um Strom zu sparen, denn je niedriger die CPU-Taktfrequenz, desto weniger Strom verbraucht die CPU. Beachten Sie, dass
dieser Treiber die CPU-Taktfrequenz nicht automatisch ändert. Sie müssen entweder einen dynamischen cpufreq-Governor
(siehe unten) nach dem Booten aktivieren oder ein Userspace-Tool verwenden.\\
Details finden Sie in $<$file:Documentation/admin-guide/pm/cpufreq.rst$>$. Im Zweifelsfall sagen Sie N.

\subsubsection{CPU frequency transition statistics}
CONFIG\_CPU\_FREQ\_STAT [=y] \textbf{[Y]}\\
Exportieren Sie CPU-Häufigkeitsstatistiken über sysfs. Im Zweifelsfall sagen Sie N.

\subsubsection{Default CPUFreq governor () \texorpdfstring{$\rightarrow$}{->}}
Diese Option legt fest, welcher CPUFreq-Governor beim Start geladen werden soll.
Im Zweifelsfall ist die Standardeinstellung zu verwenden.

\paragraph{performance}$~$\\
CONFIG\_CPU\_FREQ\_DEFAULT\_GOV\_PERFORMANCE [=n] \textbf{[N]}\\
Verwenden Sie den CPUFreq-Governor \glq performance\grq{} als Standard. Damit wird die Frequenz statisch auf die höchste von
der CPU unterstützte Frequenz eingestellt.

\paragraph{powersave}$~$\\
CONFIG\_CPU\_FREQ\_DEFAULT\_GOV\_POWERSAVE [=n] \textbf{[N]}\\
Verwenden Sie den CPUFreq-Governor \glq powersave\grq{} als Standard. Damit wird die Frequenz statisch auf die niedrigste
von der CPU unterstützte Frequenz eingestellt.

\paragraph{userspace}$~$\\
CONFIG\_CPU\_FREQ\_DEFAULT\_GOV\_USERSPACE [=n] \textbf{[N]}\\
Verwenden Sie den CPUFreq-Governor \glq userspace\grq{} als Standard. Damit können Sie die CPU-Frequenz manuell einstellen
oder ein Userspace-Programm soll die CPU dynamisch einstellen können, ohne den Userspace-Governor manuell
aktivieren zu müssen.

\paragraph{schedutil}$~$\\
CONFIG\_CPU\_FREQ\_DEFAULT\_GOV\_SCHEDUTIL [=y] \textbf{[Y]}\\
Verwenden Sie standardmäßig den CPUFreq-Governor \glq schedutil\grq{}. Wenn Sie sich nicht sicher sind, sehen Sie in
der Hilfe zu diesem Gouverneur nach. Der Fallback-Regler ist \glqq performance\grqq{}.

\subsubsection{`performance' governor}
CONFIG\_CPU\_FREQ\_GOV\_PERFORMANCE [=y] \textbf{[Y]}\\
Dieser cpufreq-Regler setzt die Frequenz statisch auf die höchste verfügbare CPU-Frequenz. Um diesen Treiber
als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{cpufreq\_performance} heißen.
Im Zweifelsfall sagen Sie Y.

\subsubsection{`powersave' governor}
CONFIG\_CPU\_FREQ\_GOV\_POWERSAVE [=y] \textbf{[Y]}\\
Dieser cpufreq-Regler setzt die Frequenz statisch auf die niedrigste verfügbare CPU-Frequenz. Um diesen Treiber
als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{cpufreq\_powersave} heißen.
Im Zweifelsfall wählen Sie Y.

\subsubsection{`userspace' governor for userspace frequency scaling}
CONFIG\_CPU\_FREQ\_GOV\_USERSPACE [=y] \textbf{[Y]}\\
Aktivieren Sie diesen cpufreq-Governor, wenn Sie die CPU-Frequenz entweder manuell einstellen wollen oder wenn
ein Userspace-Programm in der Lage sein soll, die CPU dynamisch einzustellen, wie bei
LART \url{http://www.lartmaker.nl/}. Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{cpufreq\_userspace} heißen. Im Zweifelsfall sagen Sie Y.

\subsubsection{`ondemand' cpufreq policy governor}
CONFIG\_CPU\_FREQ\_GOV\_ONDEMAND [=y] \textbf{[Y]}\\
`ondemand' -- Dieser Treiber fügt einen dynamischen cpufreq policy governor hinzu.
Der Gouverneur führt eine periodische Abfrage durch und ändert die Frequenz auf der Grundlage der CPU-Auslastung.
Die Unterstützung für diesen Gouverneur hängt von der Fähigkeit der CPU ab, schnelle Frequenzwechsel durchzuführen
(d.~h. Frequenzübergänge mit sehr geringer Latenzzeit). Um diesen Treiber als Modul zu kompilieren,
wählen Sie hier M: Das Modul wird \texttt{cpufreq\_ondemand} heißen.
Details finden Sie in $<$file:Documentation/admin-guide/pm/cpufreq.rst$>$. Im Zweifelsfall sagen Sie N.

\subsubsection{`conservative' cpufreq governor}
CONFIG\_CPU\_FREQ\_GOV\_CONSERVATIVE [=y] \textbf{[Y]}\\
`konservativ' -- dieser Treiber ähnelt dem \glqq On-Demand\grqq{}-Regler sowohl in seinem Quellcode als auch in
seinem Zweck, der Unterschied besteht in seiner Optimierung für eine bessere Eignung in einer batteriebetriebenen
Umgebung. Die Frequenz wird sanft erhöht und gesenkt, anstatt auf 100~\% zu springen, wenn die Geschwindigkeit
erforderlich ist. Wenn Sie einen Desktop-Rechner haben, sollten Sie stattdessen den \glqq On-Demand\grqq{}-Regler
in Betracht ziehen. Wenn Sie jedoch einen Laptop, einen PDA oder sogar einen AMD64-basierten Computer verwenden
(wegen der inakzeptablen schrittweisen Latenzprobleme zwischen den minimalen und maximalen Frequenzübergängen in
der CPU), werden Sie wahrscheinlich diesen Regler verwenden wollen. Um diesen Treiber als Modul zu kompilieren,
wählen Sie hier M: Das Modul wird \texttt{cpufreq\_conservative} heißen.\\
Einzelheiten finden Sie in $<$file:Documentation/admin-guide/pm/cpufreq.rst$>$.\\Im Zweifelsfall sagen Sie N.

\subsubsection{`schedutil' cpufreq policy governor}
CONFIG\_CPU\_FREQ\_GOV\_SCHEDUTIL [=y] \textbf{[Y]}\\
Dieser Gouverneur trifft seine Entscheidungen auf der Grundlage der vom Scheduler bereitgestellten Nutzungsdaten.
Er stellt die CPU-Frequenz so ein, dass sie proportional zu dem vom Scheduler gelieferten Verhältnis zwischen
Auslastung und Kapazität ist. Wenn die Auslastung frequenzinvariant ist, ist die neue Frequenz auch proportional
zur maximal verfügbaren Frequenz. Wenn dies nicht der Fall ist, ist sie proportional zur aktuellen Frequenz der CPU.
Der Kipppunkt der Frequenz liegt in beiden Fällen bei einer Auslastung/Kapazität von 80~\%.\\
Im Zweifelsfall sagen Sie N.

\subsubsection*{*** CPU frequency scaling drivers ***}
(Treiber zur Skalierung der CPU-Frequenz)

\subsubsection{Intel P state control}
CONFIG\_X86\_INTEL\_PSTATE [=y] \textbf{[Y]}\\
Dieser Treiber bietet einen P-Status für Intel-Core-Prozessoren. Der Treiber implementiert einen internen
Gouverneur und wird der Skalierungstreiber und Gouverneur für Sandy-Bridge-Prozessoren werden.
Wenn dieser Treiber aktiviert ist, wird er der bevorzugte Skalierungstreiber für Sandy-Bridge-Prozessoren.\\
Im Zweifelsfall sagen Sie N.

\subsubsection{Processor Clocking Control interface driver}
CONFIG\_X86\_PCC\_CPUFREQ [=y] \textbf{[Y]}\\
Dieser Treiber bietet Unterstützung für die PCC-Schnittstelle. Einzelheiten finden Sie unter:\\
$<$file:Documentation/admin-guide/pm/cpufreq\_drivers.rst$>$. Um diesen Treiber als Modul zu kompilieren,
wählen Sie hier M:
Das Modul wird \texttt{pcc-cpufreq} heißen. Im Zweifelsfall sagen Sie N.

\subsubsection{AMD Processor P-State driver}
CONFIG\_X86\_AMD\_PSTATE [=y] \textbf{[Y]}\\
Dieser Treiber fügt einen CPUFreq-Treiber hinzu, der einen feinkörnigen Frequenzsteuerungsbereich für die
Prozessorleistung anstelle der alten Leistungsstufen verwendet. In den ACPI-Tabellen des Systems muss
\_CPC vorhanden sein.\\
Details finden Sie unter: $<$file:Documentation/admin-guide/pm/amd-pstate.rst$>$.
Im Zweifelsfall sagen Sie N.

\paragraph{AMD Processor P-State default mode}$~$\\
CONFIG\_X86\_AMD\_PSTATE\_DEFAULT\_MODE [=3] \textbf{[3]}\\
Wählen Sie den Standardmodus, den der amd-pstate-Treiber auf unterstützter Hardware verwenden soll.
Der eingestellte Wert hat die folgenden Bedeutungen: 
\begin{itemize}
\item[] 1 \texorpdfstring{$\rightarrow$}{->} Deaktiviert
\item[] 2 \texorpdfstring{$\rightarrow$}{->} Passiv
\item[] 3 \texorpdfstring{$\rightarrow$}{->} Aktiv (EPP)
\item[] 4 \texorpdfstring{$\rightarrow$}{->} Geführt
\end{itemize}
Für Details, siehe: $<$file:Documentation/admin-guide/pm/amd-pstate.rst$>$.\\
Symbol: X86\_AMD\_PSTATE\_DEFAULT\_MODE [=3]\\
Type  : Ganzzahl (integer)\\
Bereich (range): [1 4]

\subsubsection{selftest for AMD Processor P-State driver}
CONFIG\_X86\_AMD\_PSTATE\_UT [=m] \textbf{[M]}\\
Dieses Kernelmodul wird für Tests verwendet. Hier kann man mit Sicherheit M sagen.
Es kann auch ohne aktiviertes X86\_AMD\_PSTATE eingebaut werden. Derzeit werden nur Tests für amd-pstate
unterstützt. Wenn X86\_AMD\_PSTATE deaktiviert ist, kann es den Benutzern sagen, dass der Test nur auf dem
amd-pstate Treiber laufen kann, bitte setzen Sie X86\_AMD\_PSTATE aktiviert.
In der Zukunft werden Vergleichstests hinzugefügt werden. Es kann amd-pstate deaktiviert und acpi-cpufreq
aktiviert werden, um Testfälle auszuführen und dann die Testergebnisse zu vergleichen.

\subsubsection{ACPI Processor P-State driver}
CONFIG\_X86\_ACPI\_CPUFREQ [=m] \textbf{[M]}\\
Dieser Treiber fügt einen CPUFreq-Treiber hinzu, der die ACPI Processor Performance States nutzt.
Dieser Treiber unterstützt auch Intel Enhanced Speedstep und neuere AMD-CPUs. Um diesen Treiber als Modul
zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{acpi-cpufreq} heißen.\\
Details finden Sie unter $<$file:Documentation/cpu-freq/$>$. Im Zweifelsfall sagen Sie N.

\paragraph{Legacy cpb sysfs knob support for AMD CPUs}$~$\\
CONFIG\_X86\_ACPI\_CPUFREQ\_CPB [=y] \textbf{[Y]}\\
Der powernow-k8-Treiber stellte früher einen sysfs-Regler namens \texttt{cpb} zur Verfügung,
um die Core Performance Boosting-Funktion von AMD-CPUs zu deaktivieren. Diese Datei wurde nun durch den
allgemeineren \glqq boost\grqq{}-Eintrag abgelöst.
Wenn Sie diese Option aktivieren, stellt der acpi\_cpufreq-Treiber aus Kompatibilitätsgründen den alten
Eintrag zusätzlich zum neuen \glqq boost\grqq{}-Eintrag bereit.

\subsubsection{AMD Opteron/Athlon64 PowerNow!}
CONFIG\_X86\_POWERNOW\_K8 [=m] \textbf{[M]}\\
Dies fügt den CPUFreq-Treiber für K8/frühe Opteron/Athlon64-Prozessoren hinzu. Unterstützung für K10 und
neuere Prozessoren ist jetzt in acpi-cpufreq enthalten. Um diesen Treiber als Modul zu kompilieren,
wählen Sie hier M: Das Modul wird \texttt{powernow-k8} heißen.\\
Details finden Sie in $<$file:Documentation/cpu-freq/$>$.

\subsubsection{AMD frequency sensitivity feedback powersave bias}
CONFIG\_X86\_AMD\_FREQ\_SENSITIVITY [=m] \textbf{[M]}\\
Dies fügt dem On-Demand-Governor eine AMD-spezifische Powersave-Bias-Funktion hinzu, die es ihm ermöglicht,
auf der Grundlage von Rückmeldungen der Hardware energiebewusstere Entscheidungen über Frequenzänderungen
zu treffen (verfügbar ab AMD-Familie 16h). Durch das Hardware-Feedback erfährt die Software, wie
\glqq empfindlich\grqq{} die Arbeitslasten der CPUs gegenüber Frequenzänderungen sind.
CPU-gebundene Arbeitslasten sind empfindlicher, d.~h. sie werden bei einer Frequenzerhöhung besser funktionieren.
Speicher-/IO-gebundene Arbeitslasten reagieren weniger empfindlich, d.~h. sie werden nicht unbedingt besser,
wenn die Frequenz erhöht wird.\\
Im Zweifelsfall sagen Sie N.

\subsubsection{Intel Enhanced SpeedStep (deprecated)}
CONFIG\_X86\_SPEEDSTEP\_CENTRINO [=n] \textbf{[N]}\\
Dies ist veraltet und diese Funktionalität ist nun in acpi\_cpufreq (X86\_ACPI\_CPUFREQ) integriert.
Verwenden Sie diesen Treiber anstelle von speedstep\_centrino.
Dies fügt den CPUFreq-Treiber für Enhanced SpeedStep-fähige mobile CPUs hinzu.
Dies bedeutet Intel Pentium M (Centrino) CPUs oder 64bit-fähige Intel Xeons. Um diesen Treiber als Modul
zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{speedstep-centrino} heißen.\\
Details finden Sie unter $<$file:Documentation/cpu-freq/$>$. Im Zweifelsfall wählen Sie N.

\subsubsection{Intel Pentium 4 clock modulation}
CONFIG\_X86\_P4\_CLOCKMOD [=m] \textbf{[N]}\\
Dies fügt den CPUFreq-Treiber für Intel Pentium 4 / XEON Prozessoren hinzu. Wenn er aktiviert ist,
senkt er die CPU-Temperatur durch Überspringen von Takten. Dieser Treiber sollte nur in Ausnahmefällen
verwendet werden, wenn eine sehr niedrige Leistung benötigt wird, da er starke Verlangsamungen und spürbare
Latenzen verursacht. Normalerweise sollte stattdessen Speedstep verwendet werden.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{p4-clockmod} genannt.\\
Für Details werfen Sie einen Blick auf $<$file:Documentation/cpu-freq/$>$. Wenn Sie sich nicht absolut
sicher sind, wählen Sie N.

\subsubsection*{*** shared options ***}
(gemeinsame Optionen)

\subsection{CPU Idle \texorpdfstring{$\rightarrow$}{->}}
(CPU im Leerlauf)

\subsubsection{CPU idle PM support}
CONFIG\_CPU\_IDLE [=y] \textbf{[Y]}\\
CPU idle ist ein allgemeiner Mechanismus zur Unterstützung der softwaregesteuerten Verwaltung der
Prozessorleistung im Leerlauf. Es umfasst modulare plattformübergreifende Regler, die während der
Laufzeit ausgetauscht werden können. Wenn Sie eine ACPI-aktivierte Plattform verwenden, sollten Sie hier Y angeben.
PM steht für \glqq power management\grqq{} -- Verwaltung der Prozessorleistung.

\paragraph{Ladder governor (for periodic timer tick)}$~$\\
CONFIG\_CPU\_IDLE\_GOV\_LADDER [=y] \textbf{[Y]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\paragraph{Menu governor (for tickless system)}$~$\\
CONFIG\_CPU\_IDLE\_GOV\_MENU [=y] \textbf{[Y]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\paragraph{Timer events oriented (TEO) governor (for tickless systems)}$~$\\
CONFIG\_CPU\_IDLE\_GOV\_TEO [=y] \textbf{[Y]}\\
Dieser Gouverneur implementiert eine vereinfachte Methode zur Auswahl des Ruhezustands, die sich auf
Timer-Ereignisse konzentriert und keine Steigerung der Interaktivität bewirkt.
Einige Arbeitslasten profitieren davon, und es sollte im Allgemeinen sicher zu verwenden sein.\\
Sagen Sie hier Y, wenn Sie mit den Alternativen nicht zufrieden sind.

\paragraph{Haltpoll governor (for virtualized systems)}$~$\\
CONFIG\_CPU\_IDLE\_GOV\_HALTPOLL [=y] \textbf{[Y]}\\
Dieser Gouverneur implementiert die Auswahl des Leerlaufzustands von haltpoll, der in Verbindung mit
dem haltpoll cpuidle-Treiber verwendet wird und es ermöglicht, eine bestimmte Zeit lang zu pollen,
bevor der Leerlaufzustand erreicht wird. Einige virtualisierte Arbeitslasten profitieren von dieser Funktion.

\paragraph{Halt poll cpuidle driver}$~$\\
CONFIG\_HALTPOLL\_CPUIDLE [=m] \textbf{[N]}\\
Diese Option aktiviert den \glqq halt poll cpuidle\grqq{}-Treiber, der eine Abfrage vor dem Anhalten
im Gast ermöglicht (effizienter als die Abfrage im Host über halt\_poll\_ns für einige Szenarien).

\subsection{CPUidle Driver for Intel Processors}
CONFIG\_INTEL\_IDLE [=y] \textbf{[Y]}\\
Aktivieren Sie intel\_idle, einen cpuidle-Treiber, der das Wissen über native Intel-Hardware-Idle-Funk\-tio\-nen enthält.
Der acpi\_idle-Treiber kann zur gleichen Zeit konfiguriert werden, um Prozessoren zu behandeln,
die intel\_idle nicht unterstützt.

\section{Bus options (PCI etc.) \texorpdfstring{$\rightarrow$}{->}}
\textit{Bus-Optionen (PCI usw.)}

\subsection{Support mmconfig PCI config space access}
CONFIG\_PCI\_MMCONFIG [=y] \textbf{[Y]}\\
(Unterstützung des mmconfig PCI"=Konfigurationsraumzugriffs)\\
\textit{Für diese Option gibt es keine Hilfe.}

\section{Binary Emulations \texorpdfstring{$\rightarrow$}{->}}
\textit{Binäre Emulationen}

\subsection{IA32 Emulation}
CONFIG\_IA32\_EMULATION [=y] \textbf{[N]}\\
Code einbinden, um ältere 32-Bit-Programme unter einem 64-Bit-Kernel auszuführen.
Sie sollten dies wahrscheinlich aktivieren, es sei denn, Sie sind sich zu 100~\% sicher,
dass Sie keine 32-Bit-Programme mehr haben.

\subsection{x32 ABI for 64-bit mode}
CONFIG\_X86\_X32\_ABI [=n] \textbf{[N]}\\
Fügen Sie Code ein, um Binärdateien für die native 32-Bit-ABI x32 für 64-Bit-Prozessoren auszuführen.
Ein x32-Prozess erhält Zugriff auf die vollständige 64-Bit-Registerdatei und den breiten Datenpfad,
während Zeiger auf 32~Bit belassen werden, um den Speicherbedarf zu verringern.

\section{Virtualization \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_VIRTUALIZATION [=y] \textbf{[Y]}\\
Sagen Sie hier Y, um Optionen für die Verwendung Ihres Linux-Hosts zur Ausführung anderer
Betriebssysteme in virtuellen Maschinen (Gäste) zu erhalten. Diese Option allein fügt keinen
Kernel-Code hinzu. Wenn Sie N sagen, werden alle Optionen in diesem Untermenü übersprungen
und deaktiviert.

\subsection{Kernel-based Virtual Machine (KVM) support}
CONFIG\_KVM [=m] \textbf{[M]}\\
Unterstützung für das Hosten vollständig virtualisierter Gastmaschinen mit
Hardware"=Virtualisierungserweiterungen. Sie benötigen einen relativ aktuellen Prozessor mit
Virtualisierungserweiterungen. Außerdem müssen Sie eines oder mehrere der unten aufgeführten
Prozessormodule auswählen. Dieses Modul ermöglicht den Zugriff auf die Hardware-Funktionen
über einen Geräteknoten namens /dev/kvm. Um dies als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{kvm} heißen.\\
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{KVM for Intel (and compatible) processors support}
CONFIG\_KVM\_INTEL [=m] \textbf{[M]}\\
Bietet Unterstützung für KVM auf Prozessoren, die mit Intels VT-Erweiterungen, auch bekannt
als Virtual Machine Extensions (VMX), ausgestattet sind.
Um dies als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{kvm-intel} genannt.

\paragraph{Software Guard eXtension (SGX) Virtualization}$~$\\
CONFIG\_X86\_SGX\_KVM [=y] \textbf{[Y]}\\
Ermöglicht KVM-Gästen, SGX-Enklaven zu erstellen. Dies schließt die Unterstützung ein,
\glqq rohen\grqq{}, nicht wiederverwendbaren Enklavenspeicher für Gäste über einen Geräteknoten,
z.~B. /dev/sgx\_vepc, freizugeben. Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{KVM for AMD processors support}
CONFIG\_KVM\_AMD [=m] \textbf{[M]}\\
Bietet Unterstützung für KVM auf Prozessoren, die mit Intels VT-Erweiterungen, auch bekannt
Bietet Unterstützung für KVM auf AMD-Prozessoren, die mit den AMD-V (SVM)-Erweiterungen
ausgestattet sind. Um dies als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{kvm-amd} genannt.

\paragraph{AMD Secure Encrypted Virtualization (SEV) support}$~$\\
CONFIG\_KVM\_AMD\_SEV [=y] \textbf{[N]}\\
Bietet Unterstützung für den Start von verschlüsselten VMs (SEV) und verschlüsselten VMs
mit verschlüsseltem Status (SEV-ES) auf AMD-Prozessoren.

\subsubsection{System Management Mode emulation}
CONFIG\_KVM\_SMM [=y] \textbf{[Y]}\\
Bietet Unterstützung für KVM zur Emulation des Systemverwaltungsmodus (SMM) in virtuellen
Maschinen. Dies kann von der Firmware der virtuellen Maschine verwendet werden, um UEFI Secure
Boot zu implementieren.

\subsubsection{Support for Xen hypercall interface}
CONFIG\_KVM\_XEN [=y] \textbf{[Y]}\\
Bietet KVM-Unterstützung für das Hosten von Xen HVM-Gästen und die Weitergabe von
Xen-Hyper\-auf\-rufen an den Userspace. Im Zweifelsfall sagen Sie N.

\section{General architecture-dependent options \texorpdfstring{$\rightarrow$}{->}}
(Allgemeine architekturabhängige Optionen)

\subsection{Kprobes}
CONFIG\_KPROBES [=y] \textbf{[Y]}\\
Mit Kprobes können Sie an fast jeder Kerneladresse trappen und eine Callback-Funktion ausführen.
register\_kprobe() legt einen Probepoint fest und spezifiziert den Callback.
Kprobes ist nützlich für Kernel-Debugging, nicht-intrusive Instrumentierung und Tests.\\
Im Zweifelsfall sagen Sie "N".

\subsection{Optimize very unlikely/likely branches}
CONFIG\_JUMP\_LABEL [=y] \textbf{[Y]}\\
Diese Option ermöglicht eine transparente Verzweigungsoptimierung, die die Ausführung bestimmter
fast-immer-wahrer oder fast-immer-falscher Verzweigungsbedingungen im Kernel noch billiger macht.
Bestimmte leistungsempfindliche Kernel-Codes wie Trace-Points, Scheduler-Funktionen, Netzwerk-Code
und KVM haben solche Verzweigungen und bieten Unterstützung für diese Optimierungstechnik.
Wenn festgestellt wird, dass der Compiler \glqq asm goto\grqq{} unterstützt, kompiliert der Kernel
solche Verzweigungen mit einer einfachen nop-Anweisung. Wenn das Bedingungsflag auf true gesetzt wird,
wird der nop-Befehl in einen Sprungbefehl umgewandelt, um den bedingten Befehlsblock auszuführen.
Diese Technik senkt den Overhead und die Belastung der Verzweigungsvorhersage des Prozessors und macht
den Kernel im Allgemeinen schneller. Die Aktualisierung der Bedingung ist zwar langsamer, aber das
kommt immer sehr selten vor. (Bei 32-Bit-x86 können die erforderlichen Optionen, die zu den
Compiler-Flags hinzugefügt werden, die Größe des Kernels leicht erhöhen).

\subsubsection{Static key selftest}
CONFIG\_STATIC\_KEYS\_SELFTEST [=n] \textbf{[N]}\\
Bootzeit-Selbsttest des Branch-Patching-Codes.

\subsection{Static call selftest}
CONFIG\_STATIC\_CALL\_SELFTEST [=n] \textbf{[N]}\\
Bootzeit-Selbsttest des Call-Patching-Codes.

\subsection{Enable seccomp to safely execute untrusted bytecode}
CONFIG\_SECCOMP [=n] \textbf{[N]}\\
Diese Kernel-Funktion ist nützlich für numerische Anwendungen, die während ihrer Ausführung
mit nicht vertrauenswürdigem Bytecode umgehen müssen. Durch die Verwendung von Pipes oder anderen
Transporten, die dem Prozess als Dateideskriptoren zur Verfügung gestellt werden und die
Lese-/Schreib-Syscalls unterstützen, ist es möglich, diese Anwendungen mit seccomp in ihrem eigenen
Adressraum zu isolieren. Sobald seccomp über prctl(PR\_SET\_SECCOMP) oder den seccomp()-Syscall
aktiviert ist, kann es nicht mehr deaktiviert werden, und die Task darf nur einige wenige sichere
Syscalls ausführen, die für jeden seccomp-Modus definiert sind. Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Show seccomp filter cache status in /proc/pid/seccomp\_cache}
CONFIG\_SECCOMP\_CACHE\_DEBUG [=n] \textbf{[N]}\\
Dies ermöglicht der Schnittstelle /proc/pid/seccomp\_cache die Überwachung der
seccomp-Cache-Daten. Das Dateiformat kann sich ändern. Zum Lesen der Datei ist
CAP\_SYS\_ADMIN erforderlich. Diese Option ist nur zur Fehlersuche gedacht.
Die Aktivierung birgt das Risiko, dass ein Angreifer die seccomp-Filterlogik ableiten kann.\\
Wenn Sie unsicher sind, sagen Sie N.

\subsection{Stack Protector buffer overflow detection}
CONFIG\_STACKPROTECTOR [=y] \textbf{[Y]}\\
Diese Option schaltet die GCC-Funktion \glqq stack-protector\grqq{} ein.
Diese Funktion legt am Anfang von Funktionen einen Canary-Wert (Kanarienvogelwert) auf den
Stack kurz vor der
Rücksprungadresse und überprüft den Wert kurz vor der eigentlichen Rückkehr. Stack-basierte
Pufferüberläufe (die diese Rücksprungadresse überschreiben müssen) überschreiben nun auch den
Canary-Wert, was erkannt wird und der Angriff wird dann durch eine Kernel-Panik neutralisiert.
Bei Funktionen, die ein 8-Byte- oder größeres Zeichenarray auf dem Stack haben, wird die Logik
des Stack-Protector-Canarys hinzugefügt. Diese Funktion erfordert gcc Version 4.2 oder höher,
oder eine gcc-Distribution, die die Funktion zurückportiert hat (\texttt{-fstack-protector}).
Auf einem x86-\glqq defconfig\grqq{}-Build fügt diese Funktion Canary-Prüfungen zu etwa
3\% aller Kernel-Funktionen hinzu, was die Kernel-Codegröße um etwa 0,3\% erhöht.

\subsubsection{Strong Stack Protector}
CONFIG\_STACKPROTECTOR\_STRONG [=y] \textbf{[Y]}\\
Bei Funktionen wird die Stack-Protector-Canary-Logik unter einer der folgenden Bedingungen hinzugefügt:
\begin{itemize}
\item[-] die Adresse einer lokalen Variablen wird als Teil der rechten Seite einer Zuweisung oder eines
Funktionsarguments verwendet
\item[-] die lokale Variable ist ein Array (oder eine Union, die ein Array enthält), unabhängig von Typ oder Länge des Arrays
\item[-] Lokale Variablen werden als Register verwendet
\end{itemize}
Diese Funktion erfordert gcc Version 4.9 oder höher, oder eine gcc-Distribution, die die Funktion
zurück\-por\-tiert hat (\texttt{-fstack-protector-strong}).
Auf einem x86-\glqq defconfig\grqq{}-Build fügt diese Funktion Canary-Prüfungen zu etwa 20\% aller
Kernel-Funktionen hinzu, was die Größe des Kernel-Codes um etwa 2\% erhöht.

\subsection{Link Time Optimization (LTO) () \texorpdfstring{$\rightarrow$}{->}}

\subsubsection{None}
CONFIG\_LTO\_NONE [=y] \textbf{[Y]}\\
Erstellen Sie den Kernel normal, ohne Link Time Optimization (LTO).

\subsection{Provide system calls for 32-bit time\_t}
CONFIG\_COMPAT\_32BIT\_TIME [=y] \textbf{[Y]}\\
Dies ermöglicht die Unterstützung von 32 Bit time\_t zusätzlich zur Unterstützung von
64~Bit time\_t. Dies ist auf allen 32-Bit-Architekturen und 64-Bit-Architekturen als Teil
der Kompatibilitäts-Syscall-Behandlung relevant.

\subsection{Use a virtually-mapped stack}
CONFIG\_VMAP\_STACK [=y] \textbf{[Y]}\\
Aktivieren Sie dies, wenn Sie virtuell gemappte Kernel-Stacks mit Guard Pages verwenden wollen.
Dies führt dazu, dass Kernel-Stack-Überläufe sofort abgefangen werden und keine schwer zu
diagnostizierende Korruption verursachen. Um dies mit Software-KASAN-Modi zu verwenden, muss die
Architektur die Unterstützung von virtuellen Mappings mit echtem Schattenspeicher unterstützen
und KASAN\_VMALLOC muss aktiviert sein.

\subsection{Support for randomizing kernel stack offset on syscall entry}
CONFIG\_RANDOMIZE\_KSTACK\_OFFSET [=y] \textbf{[Y]}\\
Der Kernel-Stack-Offset kann (nach pt\_regs) mit etwa 5~Bits Entropie randomisiert werden,
wodurch Angriffe auf Speicherbeschädigung vereitelt werden, die auf Stack-Adress-Determinismus
oder auf die Offenlegung der Adressen von Cross-Syscalls angewiesen sind.
Die Funktion wird über den Kernel-Boot-Parameter \texttt{randomize\_kstack\_offset=on/off} gesteuert
und hat, wenn sie ausgeschaltet ist, aufgrund der Verwendung von statischen Verzweigungen
(siehe JUMP\_LABEL) keinen Overhead.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Default state of kernel stack offset randomization}
CONFIG\_RANDOMIZE\_KSTACK\_OFFSET\_DEFAULT [=y] \textbf{[Y]}\\
Die Randomisierung des Kernel-Stack-Offsets wird durch den Kernel-Boot-Parameter\\
\texttt{randomize\_kstack\_offset=on/off} gesteuert, und diese Konfiguration wählt den
Standard-Boot-Status.

\subsection{Locking event counts collection}
CONFIG\_LOCK\_EVENT\_COUNTS [=y] \textbf{[Y]}\\
Ermöglicht eine leichtgewichtige Zählung verschiedener sperrungsbezogener Ereignisse im System
mit minimalen Auswirkungen auf die Leistung. Dies verringert die Wahrscheinlichkeit, dass sich
das Anwendungsverhalten aufgrund von Zeitunterschieden ändert. Die Zählungen werden über
debugfs gemeldet.

\subsection{GCOV-based kernel profiling \texorpdfstring{$\rightarrow$}{->}}
(GCOV-basierte Kernel-Profilierung)

\subsubsection{Enable gcov-based kernel profiling}
CONFIG\_GCOV\_KERNEL [=n] \textbf{[N]}\\
Diese Option aktiviert die gcov-basierte Code-Profilierung (z.~B. für Code-Abdeckungsmessungen).
Wenn Sie unsicher sind, sagen Sie N.\\[.5em]
Geben Sie zusätzlich CONFIG\_GCOV\_PROFILE\_ALL=y an, um Profilerstellungsdaten für den gesamten
Kernel zu erhalten. Um die Profilerstellung für bestimmte Dateien oder Verzeichnisse zu aktivieren,
fügen Sie eine Zeile ähnlich der folgenden in das jeweilige Makefile ein:\\[.5em]
Für eine einzelne Datei (z.~B. main.o):\\
\indent \texttt{GCOV\_PROFILE\_main.o := y}\\[.5em]
Für alle Dateien in einem Verzeichnis:\\
\indent \texttt{GCOV\_PROFILE := y}\\[.5em]
Um Dateien von der Profilerstellung auszuschließen, auch wenn CONFIG\_GCOV\_PROFILE\_ALL
angegeben ist, verwenden Sie:\\
\indent \texttt{GCOV\_PROFILE\_main.o := n}\\[.5em]
und:\\
\indent \texttt{GCOV\_PROFILE := n}\\[.5em]
Beachten Sie, dass das debugfs-Dateisystem gemountet sein muss, um auf die Profilerstellungsdaten
zugreifen zu können.

\subsection{GCC plugins \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_GCC\_PLUGINS [=y] \textbf{[Y]}\\
GCC-Plugins sind ladbare Module, die zusätzliche Funktionen für den Compiler bereitstellen.
Sie sind nützlich für die Laufzeitinstrumentierung und die statische Analyse.\\
Siehe Documentation/kbuild/gcc-plugins.rst für Details.

\subsubsection{Generate some entropy during boot and runtime}
CONFIG\_GCC\_PLUGIN\_LATENT\_ENTROPY [=n] \textbf{[N]}\\
Mit der Eingabe von Y wird der Kernel einen Teil des Kernel-Codes instrumentieren,
um sowohl aus dem ursprünglichen als auch aus dem künstlich erzeugten Programmzustand
etwas Entropie zu gewinnen.
Dies ist insbesondere bei eingebetteten Systemen hilfreich, bei denen es normalerweise wenig
\glqq natürliche\grqq{} Entropiequellen gibt.
Der Preis ist eine gewisse Verlangsamung des Boot-Prozesses (etwa 0,5~\%) und der fork- und
irq-Verarbeitung. Beachten Sie, dass die auf diese Weise extrahierte Entropie nicht
kryptografisch sicher ist!\\
Dieses Plugin wurde von grsecurity/PaX portiert. Mehr Informationen unter:
 \begin{itemize}
	\item[] \url{https://grsecurity.net/}
	\item[] \url{https://pax.grsecurity.net/}
 \end{itemize}


\section{Enable loadable module support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_MODULES [=y] \textbf{[Y]}\\
Kernel-Module sind kleine Stücke kompilierten Codes, die in den laufenden Kernel eingefügt werden können,
anstatt dauerhaft in den Kernel eingebaut zu werden. Sie verwenden das Werkzeug
\texttt{modprobe}, um sie hinzuzufügen (und manchmal zu entfernen).\\
Wenn Sie hier Y angeben, können viele Teile des Kernels als Module gebaut werden (indem Sie M anstelle
von Y antworten, wo dies angegeben ist):\\
Dies ist besonders nützlich für selten verwendete Optionen, die zum Booten nicht benötigt werden.
Weitere Informationen finden Sie in den Man Pages für \texttt{modprobe},
\texttt{lsmod}, \texttt{modinfo}, \texttt{insmod} und \texttt{rmmod}.\\
Wenn Sie hier Y angeben, müssen Sie \texttt{make modules\_install} ausführen, um die Module unter\\
/lib/modules/ abzulegen, wo sie von modprobe gefunden werden können (möglicherweise müssen Sie dazu
root sein).
Wenn Sie unsicher sind, sagen Sie Y.

\subsection{Module debugging}
CONFIG\_MODULE\_DEBUG [=n] \textbf{[N]}\\
Ermöglicht das Aktivieren/Deaktivieren von Funktionen, die Ihnen beim Debuggen von Modulen helfen können.
Auf Produktionssystemen benötigen Sie diese Optionen nicht.

\subsection{Forced module loading}
CONFIG\_MODULE\_FORCE\_LOAD [=y] \textbf{[Y]}\\
Erlaubt das Laden von Modulen ohne Versionsinformationen (z.~B. \texttt{modprobe --force}).
Erzwungenes Laden von Modulen setzt das `F' (forced) taint Flag und ist normalerweise eine wirklich
schlechte Idee.

\subsection{Module unloading}
CONFIG\_MODULE\_UNLOAD [=y] \textbf{[Y]}\\
Ohne diese Option können Sie keine Module entladen (beachten Sie, dass einige Module möglicherweise
ohnehin nicht entladbar sind), was Ihren Kernel kleiner, schneller und einfacher macht.
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Forced module unloading}
CONFIG\_MODULE\_FORCE\_UNLOAD [=y] \textbf{[Y]}\\
Mit dieser Option können Sie das Entladen eines Moduls erzwingen, auch wenn der Kernel es für unsicher
hält: Der Kernel wird das Modul entfernen, ohne darauf zu warten, dass jemand die Verwendung des Moduls
beendet (mit der Option \texttt{-f} von \texttt{rmmod}).
Dies ist hauptsächlich für Kernel-Entwickler und verzweifelte Benutzer gedacht. Wenn Sie unsicher sind,
sagen Sie N.

\subsubsection{Tainted module unload tracking}
CONFIG\_MODULE\_UNLOAD\_TAINT\_TRACKING [=y] \textbf{[Y]}\\
Mit dieser Option können Sie eine Aufzeichnung über jedes entladene Modul führen, das den Kernel
beschädigt hat. Zusätzlich zur Anzeige einer Liste der verknüpften (oder geladenen) Module, z.~B.
bei der Erkennung einer schlechten Seite (siehe bad\_page()), werden auch die oben genannten
Details angezeigt. Wenn Sie unsicher sind, sagen Sie N.

\subsection{Module versioning support}
CONFIG\_MODVERSIONS [=n] \textbf{[N]}\\
Normalerweise müssen Sie Module verwenden, die mit Ihrem Kernel kompiliert wurden. Wenn Sie
hier Y angeben, ist es manchmal möglich, Module zu verwenden, die für andere Kernel kompiliert wurden,
indem Sie genügend Informationen zu den Modulen hinzufügen, um (hoffentlich) alle Änderungen zu erkennen,
die sie mit dem von Ihnen verwendeten Kernel inkompatibel machen würden.\\
Wenn Sie unsicher sind, sagen Sie N.

\subsection{Source checksum for all modules}
CONFIG\_MODULE\_SRCVERSION\_ALL [=y] \textbf{[Y]}\\
Module, die eine MODULE\_VERSION enthalten, bekommen ein zusätzliches \glqq srcversion\grqq{}-Feld in
ihre modinfo-Sektion eingefügt, das eine Summe der Quelldateien enthält, aus denen sie entstanden sind.
Dies hilft den Betreuern, genau zu sehen, welche Quelle verwendet wurde, um ein Modul zu bauen
(da andere manchmal die Modulquelle ändern, ohne die Version zu aktualisieren). Mit dieser Option wird
ein solches \glqq srcversion\grqq{}-Feld für alle Module erstellt. Wenn Sie unsicher sind, sagen Sie N.

\subsection{Module signature verification}
CONFIG\_MODULE\_SIG [=y] \textbf{[Y]}\\
Überprüfung von Modulen auf gültige Signaturen beim Laden: Die Signatur wird einfach an das Modul
angehängt. Für weitere Informationen siehe $<$file:Documentation/admin-guide/module-signing.rst$>$.
Beachten Sie, dass diese Option die OpenSSL-Entwicklungspakete als Kernel-Build-Abhängigkeit hinzufügt,
so dass das Signierwerkzeug seine Krypto-Bibliothek verwenden kann. Sie sollten diese Option aktivieren,
wenn Sie entweder CONFIG\_SECURITY\_LOCKDOWN\_LSM oder eine durch eine andere LSM auferlegte
Lockdown-Funktionalität verwenden wollen -- andernfalls werden unsignierte Module unabhängig von der
Lockdown-Policy ladbar sein.
!!!WARNUNG!!! Wenn Sie diese Option aktivieren, MÜSSEN Sie sicherstellen, dass das Modul nach dem
Signieren NICHT gestrippt wird. Dies schließt den Debuginfo-Strip ein, der von einigen Paketierern
(wie z.~B. rpmbuild) durchgeführt wird, sowie die Einbindung in ein initramfs, das die Modulgröße
reduzieren möchte.

\subsubsection{Require modules to be validly signed}
CONFIG\_MODULE\_SIG\_FORCE [=n] \textbf{[N]}\\
Ablehnung von unsignierten Modulen oder signierten Modulen, für die wir keinen Schlüssel haben.
Ohne diesen Schlüssel werden solche Module den Kernel einfach verunreinigen.

\subsubsection{Automatically sign all modules}
CONFIG\_MODULE\_SIG\_ALL [=y] \textbf{[Y]}\\
Signiere alle Module während make modules\_install. Ohne diese Option müssen die Module manuell
signiert werden, und zwar mit dem Werkzeug scripts/sign-file.

\subsection{Which hash algorithm should modules be signed with? () \texorpdfstring{$\rightarrow$}{->}}
Damit wird festgelegt, welche Art von Hashing-Algorithmus bei der Signaturerstellung verwendet wird.
Dieser Algorithmus \textbf{muss} direkt in den Kernel eingebaut werden, damit eine Signaturprüfung
stattfinden kann. Es ist nicht möglich, ein signiertes Modul zu laden, das den Algorithmus enthält,
um die Signatur dieses Moduls zu überprüfen.

\subsubsection{Sign modules with SHA-1}
CONFIG\_MODULE\_SIG\_SHA1 [=n] \textbf{[N]}\\
\textit{Für diese Option gibt es keine Hilfe.}
\subsubsection{Sign modules with SHA-224}
CONFIG\_MODULE\_SIG\_SHA224 [=n] \textbf{[N]}\\
\textit{Für diese Option gibt es keine Hilfe.}
\subsubsection{Sign modules with SHA-256}
CONFIG\_MODULE\_SIG\_SHA256 [=n] \textbf{[N]}\\
\textit{Für diese Option gibt es keine Hilfe.}
\subsubsection{Sign modules with SHA-384}
CONFIG\_MODULE\_SIG\_SHA384 [=n] \textbf{[N]}\\
\textit{Für diese Option gibt es keine Hilfe.}
\subsubsection{Sign modules with SHA-512}
CONFIG\_MODULE\_SIG\_SHA512 [=y] \textbf{[Y]}\\
\textit{Für diese Option gibt es keine Hilfe.}


\subsection{Module compression mode}
Mit dieser Option können Sie den Algorithmus auswählen, der zur Komprimierung von Modulen verwendet
wird, wenn \texttt{make modules\_install} ausgeführt wird. (oder Sie können wählen, dass Module
überhaupt nicht komprimiert werden.) Externe Module werden während der Installation ebenfalls auf
die gleiche Weise komprimiert. Für Module innerhalb einer initrd oder initramfs ist es effizienter,
stattdessen die gesamte initrd oder initramfs zu komprimieren. Dies ist vollständig kompatibel mit
signierten Modulen. Bitte beachten Sie, dass das zum Laden von Modulen verwendete Werkzeug den
entsprechenden Algorithmus unterstützen muss. module-init-tools KANN gzip unterstützen, und kmod KANN
gzip, xz und zstd unterstützen.
Ihr Build-System muss das entsprechende Komprimierungswerkzeug bereitstellen, um die Module zu
komprimieren. Im Zweifelsfall wählen Sie `None'.

\subsubsection{None}
CONFIG\_MODULE\_COMPRESSION\_NONE [=n] \textbf{[N]}\\
Komprimieren Sie die Module nicht. Die installierten Module sind mit der Endung .ko versehen.
\subsubsection{GZIP}
CONFIG\_MODULE\_COMPRESSION\_GZIP [=n] \textbf{[N]}\\
Komprimieren Sie Module mit GZIP. Die installierten Module sind mit der Endung .ko.gz versehen.
\subsubsection{XZ}
CONFIG\_MODULE\_COMPRESSION\_XZ [=n] \textbf{[N]}\\
Komprimieren Sie Module mit XZ. Die installierten Module sind mit der Endung .ko.xz versehen.
\subsubsection{ZSTD}
CONFIG\_MODULE\_COMPRESS\_ZSTD [=y] \textbf{[Y]}\\
Komprimieren Sie Module mit ZSTD. Die installierten Module sind mit der Endung .ko.zst versehen.

\subsection{Support in-kernel module decompression}
CONFIG\_MODULE\_DECOMPRESS [=y] \textbf{[Y]}\\
Unterstützung für die Dekomprimierung von Kernelmodulen durch den Kernel selbst, anstatt sich auf
den Userspace zu verlassen, um diese Aufgabe zu erledigen. Nützlich, wenn die Sicherheitsrichtlinie
für das Load Pinning aktiviert ist. Wenn Sie unsicher sind, sagen Sie N.

\subsection{Allow loading of modules with missing namespace imports}
CONFIG\_MODULE\_ALLOW\_MISSING\_NAMESPACE\_IMPORTS [=y] \textbf{[Y]}\\
Symbole, die mit EXPORT\_SYMBOL\_NS*() exportiert werden, gelten als in einem Namespace exportiert.
Ein Modul, das ein Symbol verwendet, das mit einem solchen Namespace exportiert wurde, muss den
Namespace über MODULE\_IMPORT\_NS() importieren. Es gibt keinen technischen Grund, korrekte
Namespace-Importe zu erzwingen, aber es schafft Konsistenz zwischen Symbolen, die Namespaces
definieren und Benutzern, die Namespaces importieren, die sie verwenden. Diese Option lockert diese
Anforderung und hebt die Durchsetzung beim Laden eines Moduls auf. Wenn Sie unsicher sind, sagen Sie N.

\subsection{Path to modprobe binary}
CONFIG\_MODPROBE\_PATH [=/sbin/modprobe] \textbf{[/sbin/modprobe]}\\
Wenn der Kernel-Code ein Modul anfordert, geschieht dies durch den Aufruf des
User\-space-Dienst\-pro\-gramms
\texttt{modprobe}. Mit dieser Option können Sie den Pfad festlegen, in dem diese Binärdatei
zu finden ist. Dies kann zur Laufzeit über die sysctl-Datei /proc/sys/kernel/modprobe geändert werden.
Wenn Sie diese Option auf eine leere Zeichenkette setzen, wird die Fähigkeit des Kernels,
Module anzufordern, ausgeschaltet (der Userspace kann jedoch weiterhin explizit Module laden).

\section{Enable the block layer \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_BLOCK [=y] \textbf{[Y]}\\
Bietet dem Kernel Unterstützung für die Blockschicht.\\
Deaktivieren Sie diese Option, um die Unterstützung für die Blockschicht aus dem Kernel zu entfernen.
Dies kann für eingebettete Geräte nützlich sein.\\
Wenn diese Option deaktiviert ist:
\begin{itemize}
	\item[-] werden Blockgerätedateien unbrauchbar,
	\item[-] werden einige Dateisysteme (wie ext3) nicht mehr verfügbar.
\end{itemize}
Außerdem werden SCSI-Zeichengeräte und USB-Speicher deaktiviert, da sie verschiedene Definitionen und
Möglichkeiten der Blockschicht nutzen.\\
Sagen Sie hier "Y", es sei denn, Sie wissen, dass Sie wirklich keine Festplatten und dergleichen einbinden wollen.

\subsection{Legacy autoloading support}
CONFIG\_BLOCK\_LEGACY\_AUTOLOAD [=y] \textbf{[Y]}\\
Ermöglicht das Laden von Modulen und das Erstellen von Block-Geräteinstanzen auf der Grundlage
von Zugriffen durch ihre spezielle Gerätedatei. Dies ist ein historisches Linux-Feature und ergibt
in einer udev-Welt, in der Gerätedateien bei Bedarf erstellt werden, keinen Sinn, aber Skripte,
die manuell Geräteknoten erstellen und dann losetup aufrufen, könnten sich auf dieses Verhalten
verlassen.

\subsection{Block layer SG support v4 helper lib}
CONFIG\_BLK\_DEV\_BSGLIB [=y] \textbf{[Y]}\\
Die Teilsysteme werden dies normalerweise bei Bedarf aktivieren. Die Benutzer müssen dies normalerweise
nicht manuell aktivieren. Wenn Sie unsicher sind, sagen Sie N.

\subsection{Block layer data integrity support}
CONFIG\_BLK\_DEV\_INTEGRITY [=y] \textbf{[Y]}\\
Einige Speichermedien erlauben die Speicherung/Abrufung zusätzlicher Informationen, um die Daten zu
schützen. Die Option für die Datenintegrität auf Blockebene bietet Hooks, die von Dateisystemen verwendet
werden können, um eine bessere Datenintegrität zu gewährleisten. Sagen Sie hier Ja, wenn Sie ein
Speichergerät haben, das das T10/SCSI Data Integrity Field oder den T13/ATA External Path Protection
bietet. Im Zweifelsfall sagen Sie N.

\subsection{Zoned block device support}
CONFIG\_BLK\_DEV\_ZONED [=y] \textbf{[Y]}\\
Unterstützung von Blockebenen mit Zonen für Blockgeräte. Diese Option aktiviert die Unterstützung für
ZAC/ZBC/ZNS Host-verwaltete und Host-bewusste Zoned-Block-Geräte. Sagen Sie hier Ja, wenn Sie ein
ZAC-, ZBC- oder ZNS-Speichergerät haben.

\subsection{Block layer bio throttling support}
CONFIG\_BLK\_DEV\_THROTTLING [=y] \textbf{[Y]}\\
Unterstützung der Bio-Drosselung auf der Blockschicht. Sie kann verwendet werden, um die IO-Rate für
ein Gerät zu begrenzen. IO-Rate-Policies sind pro cgroup und man muss blkio cgroup controller mounten
und verwenden, um cgroups zu erstellen und IO-Rate-Policies pro Gerät festzulegen.\\
Siehe Documentation/admin-guide/cgroup-v1/blkio-controller.rst für weitere Informationen.

\subsubsection{Block throttling .low limit interface support (EXPERIMENTAL)}
CONFIG\_BLK\_DEV\_THROTTLING\_LOW [=y] \textbf{[Y]}\\
Hinzufügen der Schnittstelle .low limit für die Blockdrosselung. Das niedrige Limit ist ein
Best-Effort-Limit zur Priorisierung von C-Gruppen. Je nach Einstellung kann das Limit verwendet werden,
um C-Gruppen in Bezug auf Bandbreite/iops zu schützen und die Festplattenressourcen besser zu nutzen.\\
Beachten Sie, dass es sich hierbei um eine experimentelle Schnittstelle handelt, die eines Tages
geändert werden könnte.

\subsection{Enable support for block device writeback throttling}
CONFIG\_BLK\_WBT [=y] \textbf{[Y]}\\
Die Aktivierung dieser Option ermöglicht es der Blockschicht, gepufferte Hintergrund-Schreibvorgänge
der VM zu drosseln, so dass diese reibungsloser ablaufen und weniger Auswirkungen auf die
Vordergrundvorgänge haben. Die Drosselung erfolgt dynamisch nach einem Algorithmus, der lose auf
CoDel basiert und die Echtzeitleistung der Festplatte berücksichtigt.

\subsubsection{Enable writeback throttling by default}
CONFIG\_BLK\_WBT\_MQ [=y] \textbf{[Y]}\\
Aktivieren Sie die Rückschreibdrosselung standardmäßig für anforderungsbasierte Blockgeräte.

\subsection{Enable support for latency based cgroup IO protection}
CONFIG\_BLK\_CGROUP\_IOLATENCY [=y] \textbf{[Y]}\\
Durch die Aktivierung dieser Option wird die .latency-Schnittstelle für die IO-Drosselung aktiviert.
Der IO-Controller versucht, die durchschnittlichen IO-Latenzen unter dem konfigurierten Latenzziel
zu halten und drosselt jeden mit einem höheren Latenzziel als die betroffene Gruppe.\\
Beachten Sie, dass es sich hierbei um eine experimentelle Schnittstelle handelt,
die eines Tages geändert werden könnte.

\subsection{Enable support to track FC I/O Traffic across cgroup applications}
CONFIG\_BLK\_CGROUP\_FC\_APPID [=y] \textbf{[Y]}\\
Die Aktivierung dieser Option ermöglicht die Verfolgung des FC-I/O-Verkehrs über cgroup-Anwendungen
hinweg. Sie ermöglicht es der Fabric und den Speicherzielen, den FC-Verkehr auf der Grundlage von
VM-Tags zu identifizieren, zu überwachen und zu verarbeiten, indem eine anwendungsspezifische
Identifikation in den FC-Frame eingefügt wird.

\subsection{Enable support for cost model based cgroup IO controller}
CONFIG\_BLK\_CGROUP\_IOCOST [=y] \textbf{[Y]}\\
Durch Aktivieren dieser Option wird die .weight-Schnittstelle für die kostenmodellbasierte
proportionale IO-Steuerung aktiviert. Der IO-Controller verteilt die IO-Kapazität zwischen
verschiedenen Gruppen auf der Grundlage ihres Anteils an der Gesamtgewichtsverteilung.

\subsection{Cgroup I/O controller for assigning an I/O priority class}
CONFIG\_BLK\_CGROUP\_IOPRIO [=y] \textbf{[Y]}\\
Aktivieren Sie die Schnittstelle .prio, um Anfragen eine E/A-Prioritätsklasse zuzuweisen.
Die E/A-Prioritätsklasse beeinflusst die Reihenfolge, in der ein E/A-Scheduler und Blockgeräte
Anforderungen verarbeiten. Nur einige E/A-Scheduler und einige Blockgeräte unterstützen E/A-Prioritäten.

\subsection{Block layer debugging information in debugfs}
CONFIG\_BLK\_DEBUG\_FS [=y] \textbf{[Y]}\\
Aufnahme von Debugging-Informationen der Blockschicht in debugfs. Diese Informationen sind vor allem
für Kernel-Entwickler nützlich, aber sie verursachen keine Kosten zur Laufzeit. Wenn Sie nicht gerade
einen Kernel für ein winziges System bauen, sollten Sie hier Y für Ja sagen.

\subsection{Logic for interfacing with Opal enabled SEDs}
CONFIG\_BLK\_SED\_OPAL [=y] \textbf{[Y]}\\
Erstellt die Logik für die Verbindung mit Opal-fähigen Steuergeräten.
Die Aktivierung dieser Option ermöglicht es Benutzern, Sperrbereiche für SED-Geräte mit dem
Opal-Protokoll einzurichten/zu entsperren/zu sperren.

\subsection{Enable inline encryption support in block layer}
CONFIG\_BLK\_INLINE\_ENCRYPTION [=y] \textbf{[Y]}\\
Bauen Sie das blk-crypto-Subsystem auf. Wenn Sie dies aktivieren, kann die Blockschicht die
Verschlüsselung handhaben, so dass Benutzer die Vorteile der Inline-Verschlüsselungshardware
nutzen kön\-nen, falls vorhanden.

\subsubsection{Enable crypto API fallback for blk-crypto}
CONFIG\_BLK\_INLINE\_ENCRYPTION\_FALLBACK [=y] \textbf{[Y]}\\
Wenn dies aktiviert ist, kann die Blockschicht die Inline-Verschlüsselung handhaben, indem sie
auf die Kernel-Krypto-API zurückgreift, wenn keine Inline-Verschlüsselungshardware vorhanden ist.

\subsection{Partition Types \texorpdfstring{$\rightarrow$}{->}}
(Partitionstypen)

\subsubsection{Advanced partition selection}
CONFIG\_PARTITION\_ADVANCED [=y] \textbf{[Y]}\\
Geben Sie hier Y ein, wenn Sie unter Linux Festplatten verwenden möchten, die unter einem Betriebssystem
partitioniert wurden, das auf einer anderen Architektur als Ihr Linux-System läuft.\\
Beachten Sie, dass sich die Antwort auf diese Frage nicht direkt auf den Kernel auswirkt:
Wenn Sie N angeben, überspringt der Konfigurator lediglich alle Fragen zu fremden
Partitionierungsschemata. Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Acorn partition support}$~$\\
CONFIG\_ACORN\_PARTITION [=n] \textbf{[N]}\\
Unterstützung von Festplatten, die unter Acorn-Betriebssystemen partitioniert sind.

\paragraph{AIX basic partition table support}$~$\\
CONFIG\_AIX\_PARTITION [=y] \textbf{[Y]}\\
Geben Sie hier Y ein, wenn Sie das Format der Festplattenpartitionstabelle lesen möchten, das
von IBM- oder Motorola-PowerPC-Maschinen unter AIX verwendet wird. AIX verwendet eigentlich
einen Logical Volume Manager, bei dem \glqq logische Volumes\grqq{} über eine oder mehrere
Festplatten verteilt sein können, aber dieser Treiber funktioniert nur für den einfachen Fall
von zusammenhängenden Partitionen. Andernfalls, sagen wir N.

\paragraph{Alpha OSF partition support}$~$\\
CONFIG\_OSF\_PARTITION [=n] \textbf{[N]}\\
Geben Sie hier Y an, wenn Sie unter Linux Festplatten verwenden möchten, die auf einer
Alpha-Maschine partitioniert wurden.

\paragraph{Amiga partition table support}$~$\\
CONFIG\_AMIGA\_PARTITION [=n] \textbf{[N]}\\
Sagen Sie hier Y, wenn Sie unter Linux Festplatten verwenden möchten, die unter AmigaOS
partitioniert wurden.

\paragraph{Atari partition table support}$~$\\
CONFIG\_ATARI\_PARTITION [=n] \textbf{[N]}\\
Sagen Sie hier Y, wenn Sie unter Linux Festplatten verwenden möchten, die unter dem
Atari-Betriebs\-sys\-tem partitioniert wurden.

\paragraph{Macintosh partition map support}$~$\\
CONFIG\_MAC\_PARTITION [=y] \textbf{[Y]}\\
Sagen Sie hier Y, wenn Sie unter Linux Festplatten verwenden möchten, die auf einem
Macintosh partitioniert wurden.

\paragraph{PC BIOS (MSDOS partition tables) support}$~$\\
CONFIG\_MSDOS\_PARTITION [=y] \textbf{[Y]}\\
Sagen Sie hier Y.

\subparagraph{BSD disklabel (FreeBSD partition tables) support}$~$\\
CONFIG\_BSD\_DISKLABEL [=y] \textbf{[Y]}\\
FreeBSD verwendet ein eigenes Partitionsschema für die Festplatten Ihres PCs. Es benötigt nur
einen Eintrag in der primären Partitionstabelle Ihrer Festplatte und verwaltet diese ähnlich
wie erweiterte DOS-Partitionen, indem es im ersten Sektor eine neue Partitionstabelle im
BSD-Disklabel-Format anlegt. Wenn Sie hier Y angeben, können Sie diese Disklabels lesen und
FreeBSD-Partitionen von Linux aus einbinden, wenn Sie oben bei \glqq UFS file system support\grqq{}
ebenfalls Y angegeben haben. Wenn Sie nicht wissen, was das alles soll, sagen Sie N.

\subparagraph{Minix subpartition support}$~$\\
CONFIG\_MINIX\_SUBPARTITION [=y] \textbf{[Y]}\\
Unterstützung von Minix 2.0.0/2.0.2 Subpartitionstabellen für Linux. Sagen Sie hier Y,
wenn Sie Minix 2.0.0/2.0.2 Subpartitionen mounten und verwenden wollen.

\subparagraph{Solaris (x86) partition table support}$~$\\
CONFIG\_SOLARIS\_X86\_PARTITION [=y] \textbf{[Y]}\\
Wie die meisten Systeme verwendet Solaris x86 ein eigenes Festplattenpartitionstabellenformat,
das mit allen anderen nicht kompatibel ist. Wenn Sie hier Y angeben, können Sie diese
Partitionstabellen lesen und Solaris x86-Partitionen von Linux aus einbinden, wenn Sie oben bei
\glqq UFS-Dateisystemunterstützung\grqq{} ebenfalls Y angegeben haben.

\subparagraph{Unixware slices support}$~$\\
CONFIG\_UNIXWARE\_DISKLABEL [=n] \textbf{[N]}\\
Wie einige Systeme verwendet auch UnixWare eine eigene Slice-Tabelle innerhalb einer Partition
(VTOC -- Virtual Table of Contents). Ihr Format ist mit allen anderen Betriebssystemen nicht
kompatibel. Wenn Sie hier Y angeben, können Sie VTOC lesen und UnixWare-Partitionen von Linux
aus schreibgeschützt einbinden, wenn Sie oben auch Y zu \glqq UFS-Dateisystemunterstützung\grqq{}
oder \glqq System V und Coherent-Dateisystemunterstützung\grqq{} angegeben haben.
Dies wird hauptsächlich verwendet, um Daten von einem UnixWare-Rechner auf Ihren Linux-Rechner
zu übertragen, und zwar über ein Wechselmedium wie magneto-optische, ZIP- oder IDE-Wechselplatten.
Beachten Sie jedoch, dass das Programm \texttt{tar} (\texttt{man tar} oder vorzugsweise
\texttt{info tar}) eine gute Möglichkeit bietet, Dateien und Verzeichnisse zwischen Unixen
(und sogar anderen Betriebssystemen) zu transportieren.
Wenn Sie nicht wissen, was das alles soll, sagen Sie N.

\paragraph{Windows Logical Disk Manager (Dynamic Disk) support}$~$\\
CONFIG\_LDM\_PARTITION [=y] \textbf{[Y]}\\
Sagen Sie hier Y, wenn Sie unter Linux Festplatten verwenden möchten, die mit dem Logical Disk Manager
von Windows 2000/XP oder Vista partitioniert wurden. Sie werden auch als
\glqq dynamische Festplatten\grqq{} bezeichnet.\\
Beachten Sie, dass dieser Treiber nur dynamische Festplatten mit einem schützenden MBR-Label,
d.~h. einer DOS-Partitionstabelle, unterstützt. Dynamische Festplatten mit GPT-Label, wie sie mit Vista
erstellt werden können, werden noch nicht unterstützt. Windows 2000 führte das Konzept der
dynamischen Festplatten ein, um die Einschränkungen des PC-Partitionierungsschemata zu umgehen.
Der Logical Disk Manager ermöglicht es dem Benutzer, eine Festplatte neu zu partitionieren und
übergreifende, gespiegelte, striped oder RAID-Volumes zu erstellen, ohne dass ein Neustart
erforderlich ist. Normale Partitionen werden nun unter Windows 2000, XP und Vista als Basisfestplatten
bezeichnet.\\
Für eine ausführlichere Beschreibung lesen Sie $<$file:Documentation/admin-guide/ldm.rst$>$.\\
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Windows LDM extra logging}$~$\\
CONFIG\_LDM\_DEBUG [=n] \textbf{[N]}\\
Geben Sie hier Y an, wenn Sie möchten, dass LDM ausführlich protokolliert.
Dies könnte hilfreich sein, wenn der Treiber nicht wie erwartet funktioniert und Sie einen Fehler
melden möchten. Wenn Sie unsicher sind, sagen Sie N.

\paragraph{SGI partition support}$~$\\
CONFIG\_SGI\_PARTITION [=n] \textbf{[N]}\\
Wählen Sie hier Y, wenn Sie das von SGI-Maschinen verwendete Format der
Festplattenpartitionstabelle lesen möchten.

\paragraph{Ultrix partition table support}$~$\\
CONFIG\_ULTRIX\_PARTITION [=n] \textbf{[N]}\\
Sagen Sie hier Y, wenn Sie das von DEC (jetzt Compaq) Ultrix-Maschinen verwendete Format der
Festplattenpartitionstabelle lesen möchten. Andernfalls sagen Sie N.

\paragraph{Sun partition tables support}$~$\\
CONFIG\_SUN\_PARTITION [=n] \textbf{[N]}\\
Wie die meisten Systeme verwendet SunOS ein eigenes Format für Festplattenpartitionstabellen,
das mit allen anderen nicht kompatibel ist.
Wenn Sie hier Y angeben, können Sie diese Partitionstabellen lesen und SunOS-Partitionen von Linux aus
einbinden, wenn Sie oben bei \glqq UFS-Dateisystemunterstützung\grqq{} ebenfalls Y angegeben haben.
Dies wird hauptsächlich benutzt, um Daten von einem SPARC unter SunOS zu Ihrem Linux-Rechner über ein
Wechselmedium wie magneto-optische oder ZIP-Laufwerke zu transportieren; beachten Sie jedoch, dass ein
guter portabler Weg, Dateien und Verzeichnisse zwischen Unixen (und sogar anderen Betriebssystemen) zu
transportieren, durch das \texttt{tar}-Programm (\texttt{man tar} oder vorzugsweise
\texttt{info tar}) gegeben ist. Wenn Sie nicht wissen, was das alles soll, sagen Sie N.

\paragraph{Karma Partition support}$~$\\
CONFIG\_KARMA\_PARTITION [=y] \textbf{[Y]}\\
Sagen Sie hier Y, wenn Sie den Rio Karma MP3-Player mounten möchten, da dieser eine
proprietäre Partitionstabelle verwendet.

\paragraph{EFI GUID Partition support}$~$\\
CONFIG\_EFI\_PARTITION [=y] \textbf{[Y]}\\
Geben Sie hier Y an, wenn Sie unter Linux Festplatten verwenden möchten,
die mit EFI GPT partitioniert wurden.

\paragraph{SYSV68 partition table support}$~$\\
CONFIG\_SYSV68\_PARTITION [=n] \textbf{[N]}\\
Geben Sie hier Y ein, wenn Sie das von Motorola-Delta-Maschinen verwendete Format der
Festplattenpartitionstabelle lesen möchten (unter Verwendung von sysv68). Andernfalls sagen Sie N.

\paragraph{Command line partition support}$~$\\
CONFIG\_CMDLINE\_PARTITION [=n] \textbf{[N]}\\
Sagen Sie hier Y, wenn Sie die Partitionstabelle aus bootargs lesen wollen. Das Format für die
Kommandozeile ist genau wie bei mtdparts.

\subsection{IO Schedulers \texorpdfstring{$\rightarrow$}{->}}
(E/A-Zeitplaner)

\subsubsection{MQ deadline I/O scheduler}
CONFIG\_MQ\_IOSCHED\_DEADLINE [=y] \textbf{[Y]}\\
MQ-Version des Deadline-IO-Schedulers.

\subsubsection{Kyber I/O scheduler}
CONFIG\_MQ\_IOSCHED\_KYBER [=m] \textbf{[M]}\\
Der Kyber E/A-Scheduler ist ein Scheduler mit geringem Aufwand, der sich für Multiqueue- und andere
schnelle Geräte eignet. Bei vorgegebenen Ziellatenzen für Lese- und synchrone Schreibvorgänge passt
er die Tiefe der Warteschlangen selbst an, um dieses Ziel zu erreichen.

\subsubsection{BFQ I/O scheduler}
CONFIG\_IOSCHED\_BFQ [=y] \textbf{[Y]}\\
BFQ E/A-Scheduler für BLK-MQ. BFQ verteilt die Bandbreite des Geräts auf alle Prozesse entsprechend
ihrer Gewichtung, unabhängig von den Geräteparametern und bei jeder Arbeitslast. Es garantiert auch
eine niedrige Latenzzeit für interaktive und weiche Echtzeitanwendungen.\\
Weitere Details in Dokumentation/block/bfq-iosched.rst

\paragraph{BFQ hierarchical scheduling support}$~$\\
CONFIG\_BFQ\_GROUP\_IOSCHED [=y] \textbf{[Y]}\\
Aktivierung der hierarchischen Zeitplanung in BFQ unter Verwendung des blkio (cgroupss-v1)
oder io (cgroupss-v2) Controllers.

\subparagraph{BFQ IO controller debugging}$~$\\
CONFIG\_BFQ\_CGROUP\_DEBUG [=n] \textbf{[N]}\\
Aktivierung einer Hilfe zur Fehlersuche.
Derzeit werden zusätzliche Statistikdateien in einer cgroup exportiert, die für die Fehlersuche
nützlich sein können.

\section{Executable file formats \texorpdfstring{$\rightarrow$}{->}}
(Ausführbare Dateiformate)

\subsection{Kernel support for ELF binaries}
CONFIG\_BINFMT\_ELF [=y] \textbf{[Y]}\\
ELF (Executable and Linkable Format) ist ein Format für Bibliotheken und ausführbare Dateien,
das auf verschiedenen Architekturen und Betriebssystemen verwendet wird.
Wenn Sie hier Y angeben, kann Ihr Kernel ELF-Binärdateien ausführen und wird um etwa 13 KB vergrößert.
Die ELF-Unterstützung unter Linux hat inzwischen die traditionellen Linux a.out-Formate (QMAGIC und ZMAGIC)
fast vollständig ersetzt, da es portabel ist (was jedoch *nicht* bedeutet, dass Sie ausführbare Dateien
von verschiedenen Architekturen oder Betriebssystemen ausführen können) und die Erstellung von
Laufzeitbibliotheken sehr einfach macht. Viele neue ausführbare Dateien werden ausschließlich im
ELF-Format vertrieben. Hier sollten Sie unbedingt Y sagen. Informationen über ELF sind im ELF HOWTO
enthalten, das unter \url{http://www.tldp.org/docs.html#howto} verfügbar ist.
Wenn Sie feststellen, dass Sie nach dem Upgrade von Linux-Kernel 1.2 und der Angabe von Y hier immer
noch keine ELF-Binärdateien ausführen können (sie stürzen einfach ab), dann müssen Sie die neuesten
ELF-Laufzeitbibliotheken installieren, einschließlich \texttt{ld.so} (überprüfen Sie die Datei
$<$file:Documentation/Changes$>$ für den Ort und die neueste Version).

\subsection{Write ELF core dumps with partial segments}
CONFIG\_CORE\_DUMP\_DEFAULT\_ELF\_HEADERS [=y] \textbf{[Y]}\\
ELF-Core-Dump-Dateien beschreiben jede Speicherabbildung des abgestürzten Prozesses und können den
Speicherinhalt jedes einzelnen Prozesses enthalten oder auslassen. Der Inhalt eines unveränderten
Text-Mappings wird standardmäßig weggelassen. Bei einem unveränderten Text-Mapping eines ELF-Objekts
ermöglicht die Aufnahme nur der ersten Seite der Datei in einen Core-Dump die Identifizierung der
Build-ID-Bits in der Datei, ohne dass die E/A-Kosten und der Plattenplatz für das Dump des gesamten
Textes anfallen. Versionen von GDB vor 6.7 werden jedoch von ELF-Core-Dump-Dateien in diesem Format
verwirrt. Das Verhalten des Kerndumps kann pro Prozess mit der Pseudodatei /proc/PID/coredump\_filter
gesteuert werden; diese Einstellung wird vererbt.
Siehe Dokumentation/filesystems/proc.rst für Details.
Diese Konfigurationsoption ändert die Standardeinstellung von coredump\_filter, die beim Booten zu
sehen ist.
Wenn Sie unsicher sind, sagen Sie Y.

\subsection{Kernel support for scripts starting with \#!}
CONFIG\_BINFMT\_SCRIPT [=y] \textbf{[Y]}\\
(Kernel-Unterstützung für Skripte, die mit \#!, dem Shebang, anfangen)
Geben Sie hier Y an, wenn Sie interpretierte Skripte ausführen wollen, die mit \#! beginnen,
gefolgt von dem Pfad zu einem Interpreter. Sie können diese Unterstützung als Modul bauen; bis dieses
Modul jedoch geladen ist, können Sie keine Skripte ausführen.
Wenn Sie also dieses Modul aus einem initramfs laden wollen, darf der Teil des initramfs vor dem Laden
dieses Moduls nur aus kompilierten Binärdateien bestehen. Die meisten Systeme werden nicht booten,
wenn Sie hier M oder N angeben. Wenn Sie unsicher sind, sagen Sie Y.

\subsection{Kernel support for MISC binaries}
CONFIG\_BINFMT\_MISC [=y] \textbf{[Y]}\\
Wenn Sie hier Y sagen, wird es möglich sein, Wrapper-gesteuerte Binärformate in den Kernel einzubinden.
Dies ist vor allem dann sinnvoll, wenn Sie Programme verwenden, die einen Interpreter benötigen, wie
Java, Python, .NET oder Emacs-Lisp. Es ist auch nützlich, wenn Sie häufig DOS-Programme unter dem
Linux-DOS-Emulator DOSEMU ausführen (lesen Sie das DOSEMU-HOWTO, verfügbar unter
\url{http://www.tldp.org/docs.html#howto}). Sobald Sie eine solche Binärklasse beim Kernel registriert
haben, können Sie eines dieser Programme einfach starten, indem Sie seinen Namen an einer
Shell-Eingabeaufforderung eingeben; Linux wird es automatisch an den richtigen Interpreter weiterleiten.
Sie können auch andere nette Dinge tun.\\
Lesen Sie die Datei $<$file:Documentation/admin-guide/binfmt-misc.rst$>$,
um zu erfahren, wie Sie diese Funktion nutzen können,
$<$file:Documentation/admin-guide/java.rst$>$, um zu erfahren, wie Sie Java-Unterstützung einbinden
können, und $<$file:Documentation/admin-guide/mono.rst$>$, um zu erfahren, wie Sie Mono-basierte
.NET-Unterstützung einbinden können.
Um binfmt\_misc zu verwenden, müssen Sie es mounten:
\texttt{mount binfmt\_misc -t binfmt\_misc /proc/sys/fs/binfmt\_misc}
Sie können hier M für Modulunterstützung sagen und später das Modul laden, wenn Sie es brauchen;
das Modul heißt \texttt{binfmt\_misc}. Wenn Sie nicht wissen, was Sie an dieser Stelle antworten sollen,
sagen Sie Y.

\section{Memory Management options \texorpdfstring{$\rightarrow$}{->}}
(Speicherverwaltungsoptionen)

\subsection{Support for paging of anonymous memory (swap) \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_SWAP [=y] \textbf{[Y]}\\
Mit dieser Option können Sie wählen, ob Sie Unterstützung für so genannte Swap-Geräte oder
Swap-Dateien in Ihrem Kernel haben möchten, die dazu dienen, mehr virtuellen Speicher als
den tatsächlichen Arbeitsspeicher in Ihrem Computer bereitzustellen.
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Compressed cache for swap pages}
CONFIG\_ZSWAP [=y] \textbf{[Y]}\\
Ein leichtgewichtiger komprimierter Cache für Auslagerungsseiten.  Er nimmt Seiten, die gerade ausgelagert
werden, und versucht, sie in einem dynamisch zugewiesenen RAM-basierten Speicherpool zu komprimieren. Dies
kann zu einer erheblichen E/A-Reduzierung auf dem Swap-Gerät führen und in dem Fall, in dem die
Dekomprimierung aus dem RAM schneller ist als das Lesen aus dem Swap-Gerät, auch die Arbeitslastleistung
verbessern.

\paragraph{Enable the compressed cache for swap pages by default}$~$\\
CONFIG\_ZSWAP\_DEFAULT\_ON [=y] \textbf{[Y]}\\
Wenn diese Option ausgewählt ist, wird der komprimierte Cache für Auslagerungsseiten beim Booten aktiviert,
andernfalls wird er deaktiviert. Die hier getroffene Auswahl kann mit der Kernel-Kommando\-zei\-len\-option
\texttt{zswap.enabled=} überschrieben werden.

\paragraph{Invalidate zswap entries when pages are loaded}$~$\\
CONFIG\_ZSWAP\_EXCLUSIVE\_LOADS\_DEFAULT\_ON [=n] \textbf{[N]}\\
Wenn diese Option ausgewählt ist, werden exklusive Lasten für zswap beim Booten aktiviert, andernfalls wird
sie deaktiviert. Wenn exklusive Ladungen aktiviert sind, wird beim Laden einer Seite aus zswap der
zswap-Eintrag sofort ungültig gemacht, anstatt ihn in zswap zu belassen, bis der Swap-Eintrag freigegeben
wird. Dadurch wird vermieden, dass sich zwei Kopien derselben Seite im Speicher befinden (komprimiert und
unkomprimiert), nachdem eine Seite aus zswap geladen wurde. Der Preis dafür ist, dass die Seite neu
komprimiert wird, wenn sie nie verschmutzt wurde und erneut ausgelagert werden muss.

\paragraph{Default compressor () \texorpdfstring{$\rightarrow$}{->}}
Wählt den Standardkomprimierungsalgorithmus für den komprimierten Cache für Auslagerungsseiten aus.
Einen Überblick darüber, welche Leistung von einem bestimmten Kompressionsalgorithmus erwartet werden kann,
finden Sie in den Benchmarks auf der folgenden LWN-Seite: \url{https://lwn.net/Articles/751795/}\\
Im Zweifelsfall wählen Sie \texttt{LZO}.
Die hier getroffene Auswahl kann durch Verwendung der Kernel-Befehls\-zeilen\-option
\texttt{zswap.compressor=} überschrieben werden.

\subparagraph{Deflate}$~$\\
CONFIG\_ZSWAP\_COMPRESSOR\_DEFAULT\_DEFLATE [=n] \textbf{[N]}\\
Verwenden Sie den Deflate-Algorithmus als Standard-Komprimierungsalgorithmus.
\subparagraph{LZO}$~$\\
CONFIG\_ZSWAP\_COMPRESSOR\_DEFAULT\_LZO [=n] \textbf{[N]}\\
Verwenden Sie den LZO-Algorithmus als Standard-Komprimierungsalgorithmus.
\subparagraph{842}$~$\\
CONFIG\_ZSWAP\_COMPRESSOR\_DEFAULT\_842 [=n] \textbf{[N]}\\
Verwenden Sie den 842-Algorithmus als Standard-Komprimierungsalgorithmus.
\subparagraph{LZ4}$~$\\
CONFIG\_ZSWAP\_COMPRESSOR\_DEFAULT\_LZ4 [=n] \textbf{[N]}\\
Verwenden Sie den LZ4-Algorithmus als Standard-Komprimierungsalgorithmus.
\subparagraph{LZ4HC}$~$\\
CONFIG\_ZSWAP\_COMPRESSOR\_DEFAULT\_LZ4HC [=n] \textbf{[N]}\\
Verwenden Sie den LZ4HC-Algorithmus als Standard-Komprimierungsalgorithmus.
\subparagraph{zstd}$~$\\
CONFIG\_ZSWAP\_COMPRESSOR\_DEFAULT\_ZSTD [=y] \textbf{[Y]}\\
Verwenden Sie den zstd-Algorithmus als Standard-Komprimierungsalgorithmus.

\paragraph{Default allocator () \texorpdfstring{$\rightarrow$}{->}}$~$\\
Wählt den Standardzuweiser für den komprimierten Cache für Auslagerungsseiten aus. Die Voreinstellung ist
aus Kompatibilitätsgründen \glqq zbud\grqq{}, aber lesen Sie bitte die Beschreibung der einzelnen Zuweiser
unten, bevor Sie die richtige Wahl treffen. Die hier getroffene Auswahl kann mit der
Kernel-Kommandozeilenoption \texttt{zswap.zpool=} überschrieben werden.

\subparagraph{zbud}$~$\\
CONFIG\_ZSWAP\_ZPOOL\_DEFAULT\_ZBUD [=n] \textbf{[N]}\\
Verwendung des zbud-Allokators als Standard-Allokator.

\subparagraph{z3fold}$~$\\
CONFIG\_ZSWAP\_ZPOOL\_DEFAULT\_Z3FOLD [=n] \textbf{[N]}\\
Verwendung des z3fold-Allokators als Standard-Allokator.

\subparagraph{zsmalloc}$~$\\
CONFIG\_ZSWAP\_ZPOOL\_DEFAULT\_ZSMALLOC [=n] \textbf{[N]}\\
Verwendung des zsmalloc-Allokators als Standard-Allokator.

\paragraph{2:1 compression allocator (zbud) \texorpdfstring{$\rightarrow$}{->}}$~$\\
CONFIG\_ZBUD [=y] \textbf{[Y]}\\
Ein spezieller Allokator für die Speicherung komprimierter Seiten. Er ist für die Speicherung von bis zu zwei
komprimierten Seiten pro physischer Seite ausgelegt.
Dieses Design schränkt zwar die Speicherdichte ein, hat aber einfache und deterministische
Rückgewinnungseigenschaften, die es einem Ansatz mit höherer Dichte vorziehen, wenn die Rückgewinnung
verwendet wird.

\paragraph{3:1 compression allocator (z3fold) \texorpdfstring{$\rightarrow$}{->}}$~$\\
CONFIG\_Z3FOLD [=y] \textbf{[Y]}\\
Ein spezieller Allokator für die Speicherung komprimierter Seiten. Er ist für die Speicherung von bis zu drei
komprimierten Seiten pro physischer Seite ausgelegt.
Es handelt sich um ein ZBUD-Derivat, so dass die Einfachheit und der Determinismus weiterhin gegeben sind.

\paragraph{N:1 compression allocator (zsmalloc) \texorpdfstring{$\rightarrow$}{->}}$~$\\
CONFIG\_ZSMALLOC [=y] \textbf{[Y]}\\
zsmalloc ist ein Slab-basierter Speicherallokator, der für die effiziente Speicherung von Seiten
verschiedener Komprimierungsstufen entwickelt wurde. Er erreicht die höchste Speicherdichte mit der
geringsten Fragmentierung.

\subparagraph{Export zsmalloc statistics}$~$\\
CONFIG\_ZSMALLOC\_STAT [=n] \textbf{[N]}\\
Diese Option ermöglicht es dem Code in zsmalloc, verschiedene Statistiken über die Vorgänge in zsmalloc zu
sammeln und diese Informationen über debugfs in den Userspace zu exportieren. Wenn Sie unsicher sind,
sagen Sie N.

\subparagraph{Maximum number of physical pages per-zspage}$~$\\
CONFIG\_ZSMALLOC\_CHAIN\_SIZE [=8] \textbf{[8]}\\
Diese Option legt die Obergrenze für die Anzahl der physischen Seiten fest, aus denen eine zmalloc-Seite
(zspage) bestehen kann. Die optimale zspage-Kettengröße wird für jede Größenklasse während der
Initialisierung des Pools berechnet.\\
Eine Änderung dieser Option kann die Eigenschaften der Größenklassen
verändern, z.~B. die Anzahl der Seiten pro zspage und die Anzahl der Objekte pro zspage.
Dies kann auch zu unterschiedlichen Konfigurationen des Pools führen, da zsmalloc Größenklassen mit
ähnlichen Eigenschaften zusammenführt.\\
Weitere Informationen finden Sie in der Dokumentation zu zsmalloc.

\subsection{SLAB allocator options \texorpdfstring{$\rightarrow$}{->}}

\subsubsection{Choose SLAB allocator (SLUB (Unqueued Allocator)) \texorpdfstring{$\rightarrow$}{->}}
Diese Option ermöglicht die Auswahl eines Slab-Allokators.

\paragraph{SLAB (DEPRECATEDUnqueued Allocator)}$~$\\
CONFIG\_SLAB\_DEPRECATED [=n] \textbf{[N]}\\
Veraltet und soll in ein paar Zyklen entfernt werden. Ersetzt durch SLUB. Wenn Sie nicht auf SLUB umsteigen
können, wenden Sie sich bitte an linux-mm@kvack.org und an die Personen, die im Abschnitt SLAB ALLOCATOR der
MAINTAINERS-Datei aufgeführt sind, und erläutern Sie die Gründe. Der reguläre Slab-Allokator, der sich
bewährt hat und bekanntermaßen in allen Umgebungen gut funktioniert. Er organisiert Cache-Hot-Objekte in
Warteschlangen pro CPU und pro Knoten.

\paragraph{SLUB (Unqueued Allocator)}$~$\\
CONFIG\_SLUB [=y] \textbf{[Y]}\\
SLUB ist ein Slab-Allokator, der die Nutzung von Cache-Zeilen minimiert, anstatt Warteschlangen von gecachten
Objekten zu verwalten (SLAB-Ansatz). Die Zwischenspeicherung pro CPU wird durch Slabs von Objekten anstelle
von Objekt-Warteschlangen realisiert. SLUB kann den Speicher effizient nutzen und verfügt über verbesserte
Diagnosefunktionen. SLUB ist die Standardwahl für einen Slab-Allokator.

\subsubsection{Allow slab caches to be merged}
CONFIG\_SLAB\_MERGE\_DEFAULT [=y] \textbf{[Y]}\\
Um die Fragmentierung des Kernspeichers zu verringern, können Slab-Caches zusammengelegt werden, wenn sie
die gleiche Größe und andere Merkmale aufweisen. Dies birgt das Risiko, dass Kernel-Heap-Überläufe Objekte
aus zusammengeführten Caches überschreiben können (und das Cache-Layout leichter zu kontrollieren ist),
wodurch solche Heap-Angriffe von Angreifern leichter ausgenutzt werden können. Wenn die Caches nicht gemischt
werden, können diese Arten von Angriffen normalerweise nur Objekte im selben Cache beschädigen. Um die
Zusammenführung zur Laufzeit zu deaktivieren, kann \texttt{slab\_nomerge} in der Kernel-Befehlszeile
übergeben werden.

\subsubsection{Randomize slab freelist}
CONFIG\_SLAB\_FREELIST\_RANDOM [=y] \textbf{[Y]}\\
Die Reihenfolge der Freelist bei der Erstellung neuer Seiten wird zufällig festgelegt.
Dieses Sicherheitsmerkmal verringert die Vorhersagbarkeit der Kernel-Slab-Zuweisung gegen Heap-Überläufe.

\subsubsection{Harden slab freelist metadata}
CONFIG\_SLAB\_FREELIST\_HARDENED [=y] \textbf{[Y]}\\
Viele Kernel-Heap-Angriffe zielen auf Slab-Cache-Metadaten und andere Infrastrukturen ab.
Diese Optionen bringen geringfügige Leistungseinbußen mit sich, um den Kernel-Slab-Allokator gegen gängige
Freelist-Angriffsmethoden zu härten. Einige Slab-Implementierungen haben mehr Sanity-Checking als andere.
Diese Option ist am effektivsten mit CONFIG\_SLUB.

\subsubsection{Enable SLUB performance statistics}
CONFIG\_SLUB\_STATS [=n] \textbf{[N]}\\
SLUB-Statistiken sind nützlich, um das Zuweisungsverhalten von SLUBs zu debuggen und Wege zur Optimierung
der Zuweisungsfunktion zu finden. Diese Funktion sollte niemals für den produktiven Einsatz aktiviert werden,
da die Führung von Statistiken die Zuweisungsfunktion um einige Prozentpunkte verlangsamt.
Der Befehl \texttt{slabinfo} unterstützt die Ermittlung der aktivsten Slabs, um herauszufinden,
welche Slabs für eine bestimmte Last relevant sind. Versuchen Sie Folgendes: \texttt{slabinfo -DA}

\subsubsection{SLUB per cpu partial cache}
CONFIG\_SLUB\_CPU\_PARTIAL [=y] \textbf{[Y]}\\
Partielle Zwischenspeicher pro CPU beschleunigen die Zuweisung und Freigabe von Objekten, die lokal auf einem
Prozessor liegen, zum Preis einer größeren Unbestimmtheit bei der Latenzzeit der Freigabe. Bei Überlauf
werden diese Caches geleert, was das Einnehmen von Sperren erfordert, die Latenzspitzen verursachen können.
Normalerweise würde man sich bei einem Echtzeitsystem für nein entscheiden.

\subsubsection{Randomize slab caches for normal kmalloc}
CONFIG\_RANDOM\_KMALLOC\_CACHES [=n] \textbf{[N]}\\
Eine Härtungsfunktion, die mehrere Kopien von Slab-Caches für die normale kmalloc-Allokation erstellt und
kmalloc veranlasst, eine zufällig auf der Grundlage der Code-Adresse auszuwählen, was es Angreifern
erschwert, verwundbare Speicherobjekte auf den Heap zu sprühen, um Speicherschwachstellen auszunutzen.
Gegenwärtig ist die Anzahl der Kopien auf 16 festgelegt, ein angemessen großer Wert, der die für verschiedene
Subsysteme oder Module zugewiesenen Speicherobjekte effektiv in verschiedene Caches aufteilt, und zwar auf
Kosten eines begrenzten Grades an Speicher- und CPU-Overhead, der mit der Hardware und der Systemauslastung
zusammenhängt.

\subsection{Page allocator randomization}
CONFIG\_SHUFFLE\_PAGE\_ALLOCATOR [=y] \textbf{[Y]}\\
Die Randomisierung der Seitenzuweisung verbessert die durchschnittliche Auslastung eines direkt abgebildeten
Memory-Side-Cache. In Abschnitt 5.2.27 Heterogeneous Memory Attribute Table (HMAT) der ACPI 6.2a-Spezifikation
finden Sie ein Beispiel dafür, wie eine Plattform das Vorhandensein eines speicherseitigen Cache anzeigt.
Es gibt auch zufällige Sicherheitsvorteile, da es die Vorhersagbarkeit von Seitenzuweisungen reduziert, um
SLAB\_FREELIST\_RANDOM zu ergänzen, aber die Standardgranularität des Shufflings auf MAX\_ORDER,
d.~h. die 10. Reihenfolge der Seiten wird auf der Grundlage der Cache-Nutzung auf x86 ausgewählt.
Die Randomisierung verbessert zwar die Cache-Nutzung, kann sich aber auf Plattformen ohne Cache negativ auf
die Arbeitslast auswirken. Aus diesem Grund wird die Randomisierung standardmäßig nur aktiviert, wenn zur
Laufzeit ein direkt zugeordneter Memory-Side-Cache erkannt wird. Andernfalls kann die Randomisierung mit dem
Kernel-Befehlszeilenparameter \texttt{page\_alloc.shuffle} zwangsweise aktiviert werden.
Sagen Sie Y, wenn Sie unsicher sind.

\subsection{Disable heap randomization}
CONFIG\_COMPAT\_BRK [=n] \textbf{[N]}\\
Die Randomisierung der Heap-Platzierung macht Heap-Exploits schwieriger, aber sie macht auch alte
Binärdateien (einschließlich aller libc5-basierten) kaputt. Diese Option ändert die Standardeinstellung beim
Booten auf Heap-Randomisierung deaktiviert und kann zur Laufzeit überschrieben werden, indem
/proc/sys/kernel/randomize\_va\_space auf 2 gesetzt wird. Auf nicht-alten Distributionen (nach 2000)
ist N normalerweise eine sichere Wahl.

\subsection{Sparse Memory virtual memmap}
CONFIG\_SPARSEMEM\_VMEMMAP [=y] \textbf{[Y]}\\
SPARSEMEM\_VMEMMAP verwendet eine virtuell gemappte Memmap, um texttt{pfn\_to\_page} und\\
\texttt{page\_to\_pfn} Operationen zu optimieren.
Dies ist die effizienteste Option, wenn genügend Kernel-Res\-sour\-cen verfügbar sind.

\subsection{Memory hotplug \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_HOTPLUG [=y] \textbf{[Y]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\subsubsection{Online the newly added memory blocks by default}
CONFIG\_MEMORY\_HOTPLUG\_DEFAULT\_ONLINE [=y] \textbf{[Y]}\\
Diese Option legt die Standardeinstellung für die Hotplug-Onlining-Richtlinie für Speicher fest\\
(/sys/devices/system/memory/auto\_online\_blocks), die bestimmt, was mit neu hinzugefügten
Speicherbereichen geschieht.
Die Richtlinieneinstellung kann jederzeit zur Laufzeit geändert werden.\\
Siehe Documentation/admin-guide/mm/memory-hotplug.rst für weitere Informationen.
Geben Sie hier Y an, wenn Sie möchten, dass alle Hotplug-Speicherblöcke standardmäßig im
\glqq Online\grqq{}-Zustand erscheinen. Geben Sie hier N an, wenn Sie möchten, dass die
Standardrichtlinie alle Hot-Plugged-Speicherblöcke im \glqq Offline\grqq{}-Zustand hält.

\subsubsection{Allow for memory hot remove}
CONFIG\_MEMORY\_HOTREMOVE [=y] \textbf{[Y]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\subsection{Allow for balloon memory compaction/migration}
CONFIG\_BALLOON\_COMPACTION [=y] \textbf{[Y]}\\
Die durch das Ballooning verursachte Speicherfragmentierung kann die Anzahl der zusammenhängenden
2-MB-Speicher\-blöcke, die in einem Gastsystem verwendet werden können, erheblich verringern, was zu
Leistungseinbußen aufgrund der geringeren Anzahl transparenter großer Seiten führt, die vom Gastsystem
verwendet werden können. Das Zulassen der Verdichtung und Migration für Speicherseiten, die als Teil von
Speicher-Ballon-Geräten eingetragen sind, vermeidet das oben beschriebene Szenario und trägt zur Verbesserung
der Speicherdefragmentierung bei.

\subsection{Allow for memory compaction}
CONFIG\_COMPACTION [=y] \textbf{[Y]}\\
Die Verdichtung ist die einzige Speicherverwaltungskomponente, die zuverlässig Speicherblöcke hoher Ordnung
(größere, physisch zusammenhängende Blöcke) bildet. Die Seitenzuweisung ist in hohem Maße auf die Verdichtung
angewiesen, und das Fehlen dieser Funktion kann bei Speicheranforderungen hoher Ordnung zu unerwarteten
OOM-Killer-Aufrufen führen. Sie sollten diese Option nicht deaktivieren, es sei denn, es gibt wirklich einen
triftigen Grund dafür, und dann wären wir sehr daran interessiert, diesen unter
\href{mailto:linux-mm@kvack.org}{linux-mm@kvack.org} zu erfahren.

\subsection{Free page reporting}
CONFIG\_PAGE\_REPORTING [=y] \textbf{[Y]}\\
Die Meldung freier Seiten ermöglicht die inkrementelle Erfassung freier Seiten vom Buddy-Allokator mit
dem Ziel, diese Seiten einer anderen Einheit, z.~B. einem Hypervisor, zu melden, damit der Speicher
innerhalb des Hosts für andere Zwecke freigegeben werden kann.

\subsection{Page migration}
CONFIG\_MIGRATION [=y] \textbf{[Y]}\\
Ermöglicht die Migration des physischen Standorts von Seiten von Prozessen, während die virtuellen
Adressen nicht geändert werden. Dies ist in zwei Situationen nützlich. Erstens auf NUMA-Systemen, um
Seiten näher an die zugreifenden Prozessoren zu bringen. Zweitens bei der Zuweisung großer Seiten,
da durch die Migration Seiten verlagert werden können, um eine große Seitenzuweisung zu erfüllen,
anstatt sie zurückzufordern.

\subsection{Enable KSM for page merging}
CONFIG\_KSM [=y] \textbf{[Y]}\\
Aktivieren Sie Kernel Samepage Merging: KSM scannt in regelmäßigen Abständen die Bereiche des Adressraums
einer Anwendung, die laut einer Anwendung zusammengeführt werden können. Wenn er Seiten mit identischem
Inhalt findet, ersetzt er die vielen Instanzen durch eine einzige Seite mit diesem Inhalt und spart so
Speicher, bis eine oder eine andere Anwendung den Inhalt ändern muss. Empfohlen für die Verwendung mit KVM
oder mit anderen doppelten Anwendungen.\\
Siehe Documentation/mm/ksm.rst für weitere Informationen: KSM ist inaktiv, bis ein Programm festgestellt hat,
dass ein Bereich MADV\_MERGEABLE ist, und root /sys/kernel/mm/ksm/run auf 1 gesetzt hat
(wenn CONFIG\_SYSFS gesetzt ist).

\subsection{Low address space to protect from user allocation}
CONFIG\_DEFAULT\_MMAP\_MIN\_ADDR [=65536] \textbf{[65536]}\\
Dies ist der Teil des niedrigen virtuellen Speichers, der vor der Zuweisung an den Benutzerraum geschützt werden
sollte. Wenn ein Benutzer davon abgehalten wird, auf niedrige Seiten zu schreiben, kann dies dazu beitragen, die
Auswirkungen von NULL-Zeiger-Fehlern im Kernel zu verringern. Für die meisten ia64-, ppc64- und x86-Benutzer mit
viel Adressraum ist ein Wert von 65536 angemessen und sollte keine Probleme verursachen.
Auf Arm und anderen Architekturen sollte er nicht höher als 32768 sein. Programme, die die vm86-Funktionalität nutzen oder
diesen niedrigen Adressraum abbilden müssen, benötigen CAP\_SYS\_RAWIO oder deaktivieren diesen Schutz,
indem sie den Wert auf 0 setzen. Dieser Wert kann nach dem Booten mit dem Parameter /proc/sys/vm/mmap\_min\_addr
geändert werden.

\subsection{Enable recovery from hardware memory errors}
CONFIG\_MEMORY\_FAILURE [=y] \textbf{[Y]}\\
Ermöglicht die Wiederherstellung von Code nach einigen Speicherfehlern auf Systemen mit MCA-Wieder\-her\-stel\-lung.
Dadurch kann ein System auch dann weiterlaufen, wenn ein Teil des Speichers unkorrigierte Fehler aufweist. Dies
erfordert spezielle Hardwareunterstützung und in der Regel ECC-Speicher.

\subsubsection{HWPoison pages injector}
CONFIG\_HWPOISON\_INJECT [=m] \textbf{[M]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\subsection{Transparent Hugepage Support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_TRANSPARENT\_HUGEPAGE [=y] \textbf{[Y]}\\
Transparent Hugepages erlaubt es dem Kernel, große Seiten und große tlb transparent für die Anwendungen zu
verwenden, wann immer dies möglich ist. Diese Funktion kann die Rechenleistung bestimmter Anwendungen verbessern,
indem sie Seitenfehler bei der Speicherzuweisung beschleunigt, die Anzahl der tlb-Misses verringert und das
Durchlaufen der Seitentabelle beschleunigt.
Wenn der Speicher bei eingebetteten Systemen begrenzt ist, können Sie N angeben.

\subsubsection{Transparent Hugepage Support sysfs defaults () \texorpdfstring{$\rightarrow$}{->}}
Wählt die sysfs-Vorgaben für die transparente Hugepage-Unterstützung aus.

\paragraph{always}$~$\\
CONFIG\_TRANSPARENT\_HUGEPAGE\_ALWAYS [=y] \textbf{[Y]}\\
Die ständige Aktivierung von Transparent Hugepage kann den Speicherbedarf von Anwendungen erhöhen, ohne dass
dies einen garantierten Nutzen hat, aber es funktioniert automatisch für alle Anwendungen.

\paragraph{madvise}$~$\\
CONFIG\_TRANSPARENT\_HUGEPAGE\_MADVISE [=n] \textbf{[N]}\\
Die Aktivierung von Transparent Hugepage madvise bringt nur eine Leistungsverbesserung für die Anwendungen, die
madvise(MADV\_HUGEPAGE) verwenden, aber es besteht nicht die Gefahr, dass der Speicherbedarf von Anwendungen
ohne garantierten Nutzen erhöht wird.

\subsubsection{Read-only THP for filesystems (EXPERIMENTAL)}
CONFIG\_READ\_ONLY\_THP\_FOR\_FS [=y] \textbf{[Y]}\\
Erlaubt khugepaged, schreibgeschützte Seiten in THP zu speichern. Dies ist als experimentell gekennzeichnet, da
es sich um eine neue Funktion handelt. Schreibunterstützung für Datei-THPs wird in den nächsten Release-Zyklen
entwickelt werden.

\subsection{Contiguous Memory Allocator}
CONFIG\_CMA [=y] \textbf{[Y]}\\
Dadurch wird der Contiguous Memory Allocator aktiviert, der es anderen Subsystemen ermöglicht, große, physisch
zusammenhängende Speicherblöcke zuzuweisen. CMA reserviert einen Speicherbereich und erlaubt nur die Zuweisung
beweglicher Seiten aus diesem Bereich. Auf diese Weise kann der Kernel den Speicher als Pagecache verwenden,
und wenn ein Subsystem einen zusammenhängenden Bereich anfordert, werden die zugewiesenen Seiten verschoben,
um die zusammenhängende Anforderung zu bedienen. Wenn Sie unsicher sind, sagen Sie N für nein.

\subsubsection{CMA debug messages (DEVELOPMENT)}
CONFIG\_CMA\_DEBUG [=n] \textbf{[N]}\\
Schaltet Debug-Meldungen in CMA ein. Dies erzeugt KERN\_DEBUG-Meldungen für jeden CMA-Aufruf sowie verschiedene
Meldungen während der Verarbeitung von Aufrufen wie dma\_alloc\_from\_contiguous(). Diese Option hat keinen
Einfluss auf Warn- und Fehlermeldungen.

\subsubsection{CMA debugfs interface}
CONFIG\_CMA\_DEBUGFS [=y] \textbf{[Y]}\\
Schaltet die DebugFS-Schnittstelle für CMA ein.

\subsubsection{CMA information through sysfs interface}
CONFIG\_CMA\_SYSFS [=y] \textbf{[Y]}\\
Diese Option legt einige sysfs-Attribute offen, um Informationen von CMA zu erhalten.

\subsubsection{Maximum count of the CMA areas}
CONFIG\_CMA\_AREAS [=7] \textbf{[7]}\\
CMA ermöglicht es, CMA-Bereiche für bestimmte Zwecke zu erstellen, die hauptsächlich als privater Bereich des
Geräts verwendet werden. Mit diesem Parameter wird die maximale Anzahl von CMA-Bereichen im System festgelegt.
Wenn Sie unsicher sind, belassen Sie den Standardwert \glqq 7\grqq{} bei UMA und
\glqq 19\grqq{} bei NUMA.

\subsection{Track memory changes}
CONFIG\_MEM\_SOFT\_DIRTY [=y] \textbf{[Y]}\\
Diese Option ermöglicht die Verfolgung von Speicheränderungen durch Einführung eines Soft-Dirty-Bits auf
pte-s. Dieses Bit wird gesetzt, wenn jemand in eine Seite schreibt, genau wie das reguläre Dirty Bit, aber
im Gegensatz zu letzterem kann es von Hand gelöscht werden. Siehe Documentation/admin-guide/mm/soft-dirty.rst
für weitere Details.

\subsection{Defer initialisation of struct pages to kthreads}
CONFIG\_DEFERRED\_STRUCT\_PAGE\_INIT [=n] \textbf{[N]}\\
Normalerweise werden alle Strukturseiten beim Frühstart in einem einzigen Thread initialisiert. Auf sehr
großen Rechnern kann dies sehr viel Zeit in Anspruch nehmen. Wenn diese Option gesetzt ist, wird bei großen
Maschinen eine Teilmenge der memmap beim Booten aufgerufen und der Rest parallel initialisiert. Dies kann
sich auf die Leistung von Aufgaben auswirken, die zu Beginn der Lebensdauer des Systems ausgeführt werden,
bis diese kthreads die Initialisierung abgeschlossen haben.

\subsection{Enable idle page tracking}
CONFIG\_IDLE\_PAGE\_TRACKING [=y] \textbf{[Y]}\\
Diese Funktion ermöglicht es, die Anzahl der Benutzerseiten zu schätzen, die in einem bestimmten Zeitraum
nicht berührt wurden. Diese Information kann nützlich sein, um die Grenzen der Speichergruppen und/oder die
Platzierung von Aufträgen innerhalb eines Rechenclusters zu optimieren.\\
Siehe Documentation/admin-guide/mm/idle\_page\_tracking.rst für weitere Einzelheiten.

\subsection{Device memory (pmem, HMM, etc...) hotplug support}
CONFIG\_ZONE\_DEVICE [=y] \textbf{[Y]}\\
Die Hotplug-Unterstützung für Gerätespeicher ermöglicht es, pmem oder andere vom Gerätetreiber entdeckte
Speicherregionen in der Memmap zu etablieren. Dies ermöglicht pfn\_to\_page()-Lookups von ansonsten
\glqq gerätephysikalischen\grqq{} Adressen, was unter anderem für die Verwendung einer DAX-Zuordnung
in einer O\_DIRECT-Operation erforderlich ist. Wenn FS\_DAX aktiviert ist, dann sagen Sie Y.

\subsection{Unaddressable device memory (GPU memory, ...)}
CONFIG\_DEVICE\_PRIVATE [=y] \textbf{[Y]}\\
Ermöglicht die Erstellung von Strukturseiten zur Darstellung von nicht adressierbarem Gerätespeicher,
d.~h. Speicher, auf den nur vom Gerät (oder einer Gruppe von Geräten) aus zugegriffen werden kann.
Wahrscheinlich sollten Sie auch HMM\_MIRROR auswählen.

\subsection{Collect percpu memory statistics}
CONFIG\_PERCPU\_STATS [=n] \textbf{[N]}\\
Diese Funktion sammelt Statistiken und stellt sie über debugfs zur Verfügung. Die Informationen umfassen
globale und pro Chunk-Statistiken, die dazu beitragen können, die Speichernutzung der CPU zu verstehen.

\subsection{Enable infrastructure for get\_user\_pages()-related unit tests}
CONFIG\_GUP\_TEST [=n] \textbf{[N]}\\
Stellt /sys/kernel/debug/gup\_test zur Verfügung, das wiederum eine Möglichkeit bietet, ioctl-Aufrufe zu
machen, die kernelbasierte Unit-Tests für die get\_user\_pages*()- und pin\_user\_pages*()-Familie von
API-Aufrufen starten können. Diese Tests umfassen Benchmark-Tests für die schnellen Varianten von
get\_user\_pages*() und pin\_user\_pages*() sowie Smoke-Tests für die nicht schnellen Varianten.
Es gibt auch einen Untertest, der die Ausführung von dump\_page() auf bis zu acht Seiten
(ausgewählt durch Befehlszeilen-Args) innerhalb des Bereichs der User-Space-Adressen ermöglicht.
Diese Seiten werden entweder über pin\_user\_pages*() oder über get\_user\_pages*() angeheftet, wie durch
andere Befehlszeilenargumente angegeben.\\
Siehe tools/testing/selftests/mm/gup\_test.c

% 13.23
\subsection{Enable a module to run time tests on dma\_pool}
CONFIG\_DMAPOOL\_TEST [=n] \textbf{[N]}\\
Stellt ein Testmodul zur Verfügung, das viele Blöcke unterschiedlicher Größe alloziert und freigibt und
berichtet, wie lange es dauert. Damit soll ein konsistenter Weg gefunden werden, um zu messen, wie sich
Änderungen an den dma\_pool\_alloc/free-Routinen auf die Leistung auswirken.

\subsection{Anonymous VMS name support}
CONFIG\_ANON\_VMA\_NAME [=y] \textbf{[Y]}\\
Erlaubt die Benennung anonymer virtueller Speicherbereiche. Mit dieser Funktion können virtuellen
Speicherbereichen Namen zugewiesen werden.\\
Die zugewiesenen Namen können später aus /proc/pid/maps und
/proc/pid/smaps abgerufen werden und helfen bei der Identifizierung einzelner anonymer Speicherbereiche.
Die Zuweisung eines Namens für einen anonymen virtuellen Speicherbereich kann verhindern, dass dieser
Bereich aufgrund des unterschiedlichen Namens mit benachbarten virtuellen Speicherbereichen zusammengelegt
wird.

\subsection{Enable userfaultfd() system call}
CONFIG\_USERFAULTFD [=y] \textbf{[Y]}\\
Aktivieren Sie den Systemaufruf userfaultfd(), der das Abfangen und Behandeln von Seitenfehlern im
Userland ermöglicht.

\subsection{Userfaultfd write protection support for shmem/hugetlbfs}
CONFIG\_PTE\_MARKER\_UFFD\_WP [=y] \textbf{[Y]}\\
Ermöglicht die Erstellung von Marker-PTEs für den Userfaultfd-Schreibschutz.
Sie ist erforderlich, um den userfaultfd-Schreibschutz für dateigebundene Speichertypen wie shmem
und hugetlbfs zu aktivieren.

\subsection{Multi-Gen LRU}
CONFIG\_LRU\_GEN [=y] \textbf{[Y]}\\
Eine hochleistungsfähige LRU-Implementierung zur Überbelegung von Speicher.\\
Siehe Documentation/admin-guide/mm/multigen\_lru.rst für Details.

\subsubsection{Enable by default}
CONFIG\_LRU\_GEN\_ENABLED [=y] \textbf{[Y]}\\
Mit dieser Option wird das Multi-Gen-LRU standardmäßig aktiviert.

\subsubsection{Full stats for debugging}
CONFIG\_LRU\_GEN\_STATS [=n] \textbf{[N]}\\
Aktivieren Sie diese Option nicht, es sei denn, Sie möchten sich die historischen Statistiken der
ausgeschiedenen Generationen zu Fehlersuchzwecken ansehen.
Diese Option hat einen Speicher-Overhead pro memcg und pro Knoten.

\subsection{Data Access Monitoring \texorpdfstring{$\rightarrow$}{->}}
(Überwachung des Datenzugriffs)

\subsubsection{DAMON: Data Access Monitoring Framework}
CONFIG\_DAMON [=y] \textbf{[Y]}\\
Damit wird ein Rahmen geschaffen, der es den Kernel-Subsystemen ermöglicht, die Zugriffshäufigkeit der
einzelnen Speicherbereiche zu überwachen. Diese Informationen können für eine leistungsorientierte
Speicherverwaltung auf DRAM-Ebene nützlich sein.
Weitere Informationen finden Sie unter\\
\url{https://damonitor.github.io/doc/html/latest-damon/index.html}.

\paragraph{Data access monitoring operations for virtual address spaces}$~$\\
CONFIG\_DAMON\_VADDR [=y] \textbf{[Y]}\\
Damit werden die Standardoperationen zur Überwachung des Datenzugriffs für DAMON erstellt, die
für virtuelle Adressräume funktionieren.

\paragraph{Data access monitoring operations for the physical address space}$~$\\
CONFIG\_DAMON\_PADDR [=y] \textbf{[Y]}\\
Damit werden die Standardvorgänge zur Datenzugriffsüberwachung für DAMON erstellt,
die für den physischen Adressraum funktionieren.

\subsubsection{DAMON sysfs interface}
CONFIG\_DAMON\_SYSFS [=y] \textbf{[Y]}\\
Dies bildet die sysfs-Schnittstelle für DAMON. Der Benutzerbereich kann die Schnittstelle für
die Über"-wachung beliebiger Datenzugriffe verwenden.

\subsubsection{DAMON debugfs interface (DEPRECATED!)}
CONFIG\_DAMON\_DBGFS [=y] \textbf{[N]}\\
Damit wird die debugfs-Schnittstelle für DAMON erstellt. Die Benutzerraum-Administratoren können
die Schnittstelle für die Überwachung beliebiger Datenzugriffe verwenden. Wenn Sie unsicher sind,
sagen Sie N.\\
Dies ist veraltet, daher sollten Benutzer auf die sysfs-Schnittstelle (DAMON\_SYSFS) umsteigen.
Wenn Sie auf diese Schnittstelle angewiesen sind und nicht umsteigen können, melden Sie bitte
Ihren Anwendungsfall an damon@lists.linux.dev und linux-mm@kvack.org.

\subsubsection{Build DAMON-based reclaim (DAMON\_RECLAIM)}
CONFIG\_DAMON\_RECLAIM [=y] \textbf{[Y]}\\
Damit wird das DAMON-basierte Reklamationssubsystem aufgebaut. Es findet Seiten, auf die lange
Zeit nicht mehr mit DAMON zugegriffen wurde (Cold) und fordert diese zurück. Dies wird als
proaktive und leichtgewichtige Rückgewinnung bei geringem Speicherdruck vorgeschlagen, während
die traditionelle, auf Seitenscans basierende Rückgewinnung bei hohem Druck verwendet wird.

\subsubsection{Build DAMON-based LRU-lists sorting (DAMON\_LRU\_SORT)}
CONFIG\_DAMON\_LRU\_SORT [=y] \textbf{[Y]}\\
Damit wird das DAMON-basierte LRU-Listensortier-Subsystem aufgebaut. Es versucht, häufig
zugegriffene (heiße) Seiten zu schützen, während selten zugegriffene (kalte) Seiten unter
Speicherdruck zuerst zurückgefordert werden.

\section{Networking support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_NET [=y] \textbf{[Y]}\\
Wenn Sie nicht wirklich wissen, was Sie tun, sollten Sie hier Y sagen. Der Grund dafür ist,
dass einige Programme die Netzwerkunterstützung des Kernels benötigen, auch wenn sie auf einem
eigenständigen Rechner laufen, der nicht mit einem anderen Computer verbunden ist. Wenn Sie von
einem älteren Kernel aufrüsten, sollten Sie auch Ihre Netzwerkwerkzeuge aktualisieren, da
Änderungen am Kernel und an den Werkzeugen oft Hand in Hand gehen. Die Werkzeuge sind in dem
Paket \texttt{net-tools} enthalten, dessen Standort und Versionsnummer in
$<$file:Documentation/Changes$>$ angegeben sind.\\
Für eine allgemeine Einführung in Linux-Netzwerke ist es sehr empfehlenswert,
das NET-HOWTO zu lesen, das unter 
\url{http://www.tldp.org/docs.html#howto} verfügbar ist.

\subsection{Networking options \texorpdfstring{$\rightarrow$}{->}}
(Vernetzungsoptionen)

\subsubsection{Packet socket}
CONFIG\_PACKET [=y] \textbf{[Y]}\\
Das Packet-Protokoll wird von Anwendungen verwendet, die direkt mit Netzwerkgeräten kommunizieren,
ohne dass ein dazwischenliegendes Netzwerkprotokoll im Kernel implementiert ist, z.~B. tcpdump.
Wenn Sie wollen, dass diese Anwendungen funktionieren, wählen Sie Y. Um diesen Treiber als Modul
zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{af\_packet} heißen.\\
Wenn Sie unsicher sind, wählen Sie Y.

\paragraph{Packet: sockets monitoring interface}$~$\\
CONFIG\_PACKET\_DIAG [=m] \textbf{[M]}\\
Unterstützung für die PF\_PACKET-Sockel-Überwachungsschnittstelle, die vom Werkzeug
\texttt{ss} verwendet wird. Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Unix domain sockets}
CONFIG\_UNIX [=y] \textbf{[Y]}\\
Wenn Sie hier Y angeben, wird die Unterstützung für Unix-Domain-Sockets einbezogen;
Sockets sind der Standard-Unix-Mechanismus für den Aufbau von und den Zugriff auf
Netzwerkverbindungen. Viele häufig verwendete Programme wie das X-Window-System und syslog
verwenden diese Sockets, auch wenn Ihr Rechner nicht an ein Netzwerk angeschlossen ist.
Wenn Sie nicht gerade an einem eingebetteten System oder etwas Ähnlichem arbeiten, sollten Sie
hier also unbedingt Y sagen. Sagen Sie Y, wenn Sie nicht genau wissen, was Sie tun.

\paragraph{UNIX: socket monitoring interface}$~$\\
CONFIG\_UNIX\_DIAG [=m] \textbf{[M]}\\
Unterstützung für die vom Tool \texttt{ss} verwendete UNIX-Socket-Überwachungsschnittstelle.
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Transport Layer Security support}
CONFIG\_TLS [=m] \textbf{[M]}\\
Aktivierung der Kernel-Unterstützung für das TLS-Protokoll. Dadurch kann die symmetrische
Verschlüsselung des TLS-Protokolls im Kernel durchgeführt werden.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Transport Layer Security HW offload}$~$\\
CONFIG\_TLS\_DEVICE [=y] \textbf{[Y]}\\
Aktivierung der Kernel-Unterstützung für die HW-Auslagerung des TLS-Protokolls.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Transport Layer Security TCP stack bypass}$~$\\
CONFIG\_TLS\_TOE [=n] \textbf{[N]}\\
Aktivierung der Kernel-Unterstützung für das Legacy-HW-Offload des TLS-Protokolls, das mit der
Semantik des Linux-Netzwerkstacks inkompatibel ist. Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Transformation user configuration interface}
CONFIG\_XFRM\_USER [=y] \textbf{[Y]}\\
Unterstützung für Transformation(XFRM)-Benutzerkonfigurationsschnittstelle wie IPsec, die von
nativen Linux-Tools verwendet wird. Wenn Sie unsicher sind, sagen Sie Y.

\paragraph{Compatible ABI support}$~$\\
CONFIG\_XFRM\_USER\_COMPAT [=n] \textbf{[N]}\\
Transformation(XFRM)-Benutzerkonfigurationsschnittstelle wie IPsec, die von kompatiblen
Linux"=Anwendungen verwendet wird. Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Transformation virtual interface}
CONFIG\_XFRM\_Interface [=m] \textbf{[M]}\\
Damit wird eine virtuelle Schnittstelle zum Routen des IPsec-Verkehrs bereitgestellt.
Wenn Sie unsicher sind, sagen Sie N.  

\subsubsection{Transformation sub policy support}
CONFIG\_XFRM\_SUB\_POLICY [=y] \textbf{[Y]}\\
Unterstützung von Unterrichtsrichtlinien für Entwickler. Durch die Verwendung der
Unterrichtlinie mit der Hauptrichtlinie können zwei Richtlinien gleichzeitig auf dasselbe
Paket angewendet werden. Eine Richtlinie, die kürzer im Kernel lebt, sollte eine Unterrichtlinie
sein. Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Transformation migrate database}
CONFIG\_XFRM\_MIGRATE [=y] \textbf{[Y]}\\
Eine Funktion zur dynamischen Aktualisierung von Locator(s) einer bestimmten
IPsec"=Sicherheitsassoziation. Diese Funktion ist z.~B. in einer mobilen IPv6-Umgebung mit
IPsec-Konfiguration erforderlich, in der mobile Knoten ihren Verbindungspunkt zum Internet
ändern. Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Transformation statistics}
CONFIG\_XFRM\_STATISTICS [=y] \textbf{[Y]}\\
Diese Statistik ist keine SNMP/MIB-Spezifikation, sondern zeigt Statistiken über
Transformationsfehler (oder Fast-Fehler) bei der Paketverarbeitung für Entwickler. Wenn Sie
unsicher sind, sagen Sie N.

\subsubsection{PF\_KEY sockets}
CONFIG\_NET\_KEY [=m] \textbf{[M]}\\
PF\_KEYv2-Buchsenfamilie, kompatibel zu KAME-Buchsen. Sie sind erforderlich, wenn Sie die von
KAME portierten IPsec-Tools verwenden wollen. Sagen Sie Y, wenn Sie nicht wissen, was Sie tun.

\paragraph{PF\_KEY MIGRATE}$~$\\
CONFIG\_NET\_KEY\_MIGRATE [=y] \textbf{[Y]}\\
Hinzufügen einer PF\_KEY MIGRATE Nachricht zur PF\_KEYv2 Socket Familie. Die PF\_KEY
MIGRATE"=Nachricht wird zur dynamischen Aktualisierung von Locator(s) einer bestimmten
IPsec"=Sicherheitsassoziation verwendet. Diese Funktion ist z.~B. in einer mobilen
IPv6"=Umgebung mit IPsec-Konfiguration erforderlich, in der mobile Knoten ihren Verbindungspunkt
zum Internet ändern. Detaillierte Informationen sind im Internet-Entwurf
$<$draft-sugimoto-mip6-pfkey-migrate$>$ zu finden. Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{SMC socket protocol family}
CONFIG\_SMC [=m]] \textbf{[M]}\\
SMC-R bietet eine \glqq Sockets over RDMA\grqq{}-Lösung, die die RDMA over Converged Ethernet
(RoCE)-Technologie nutzt, um AF\_INET-TCP-Verbindungen transparent zu aktualisieren. Die
Linux"=Implementierung der SMC-R-Lösung ist als separate Socket-Familie SMC konzipiert.
Wählen Sie diese Option, wenn Sie SMC-Socket-Anwendungen ausführen möchten.

\paragraph{SMC socket protocol family}$~$\\
CONFIG\_SMC\_DIAG [=m]] \textbf{[M]}\\
Unterstützung für die SMC-Socket-Überwachungsschnittstelle, die von Tools wie \texttt{smcss} verwendet
wird. Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{XDP sockets}
CONFIG\_XDP\_SOCKETS [=y]] \textbf{[Y]}\\
XDP-Sockets ermöglichen einen Kanal zwischen XDP-Programmen und Userspace-Anwendungen.

\paragraph{XDP sockets: monitoring interface}$~$\\
CONFIG\_XDP\_SOCKETS\_DIAG [=m]] \textbf{[M]}\\
Unterstützung für die vom \texttt{ss}-Tool verwendete PF\_XDP-Socket-Überwachungsschnittstelle.
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{TCP/IP networking}
CONFIG\_INET [=y]] \textbf{[Y]}\\
Dies sind die Protokolle, die im Internet und in den meisten lokalen Ethernets verwendet werden.
Es wird dringend empfohlen hier Y anzugeben (dadurch wird Ihr Kernel um etwa 400~KB vergrößert),
da einige Programme (z.~B. das X-Window-System) TCP/IP verwenden, auch wenn Ihr Rechner nicht
mit einem anderen Computer verbunden ist. Sie erhalten das sogenannte Loopback-Gerät, mit dem
Sie sich selbst anpingen können (was ein großer Spaß ist!). Eine ausgezeichnete Einführung in
die Linux-Netzwerktechnik finden Sie im Linux Networking HOWTO, erhältlich bei
\url{http://www.tldp.org/docs.html#howto}. Wenn Sie hier Y sagen
und auch zu \glqq /proc file system support\grqq{} und \glqq Sysctl support\grqq{} unten,
können Sie verschiedene Aspekte des Verhaltens des TCP/IP-Codes ändern, indem Sie in die
(virtuellen) Dateien in /proc/sys/net/ipv4/* schreiben; die Optionen werden in der Datei
$<$file:Documentation/networking/ip-sysctl.rst$>$ erläutert.
Kurze Antwort: Sagen Sie Y.

\paragraph{IP: multicasting}$~$\\
CONFIG\_IP\_MULTICAST [=y] \textbf{[Y]}\\
Dabei handelt es sich um einen Code zur gleichzeitigen Adressierung mehrerer vernetzter Computer,
der Ihren Kernel um etwa 2~KB vergrößert. Sie brauchen Multicasting, wenn Sie am MBONE teilnehmen
wollen, einem Netz mit hoher Bandbreite über dem Internet, das Audio- und Videoübertragungen
überträgt. Weitere Informationen über MBONE finden Sie im WWW unter
\url{https://www.savetz.com/mbone/}.
Für die meisten Leute ist es sicher, N zu sagen.

\paragraph{IP: advanced router}$~$\\
CONFIG\_IP\_ADVANCED\_ROUTER [=y] \textbf{[Y]}\\
Wenn Sie beabsichtigen, Ihren Linux-Rechner hauptsächlich als Router zu betreiben,
d.~h. als Com\-pu\-ter, der Netz\-werk\-pakete weiterleitet und umverteilt, sagen Sie Y;
Ihnen werden dann mehrere Optionen angezeigt, die eine genauere Kontrolle über den
Routing"=Prozess ermöglichen.\\
Die Antwort auf diese Frage wirkt sich nicht direkt auf den Kernel aus: Wenn Sie mit N antworten,
überspringt der Konfigurator einfach alle Fragen zum erweiterten Routing.
Beachten Sie, dass Ihr Rechner nur dann als Router fungieren kann, wenn Sie die IP"=Weiterleitung
in Ihrem Kernel aktivieren; dies können Sie tun, indem Sie \glqq /proc file system support\grqq{}
und \glqq Sysctl support\grqq{} mit Y beantworten und die folgende Zeile\\[.5em]
\texttt{echo "1" > /proc/sys/net/ipv4/ip\_forward}\\[.5em]
beim Booten ausführen, nachdem das Dateisystem /proc eingehängt wurde.\\
Wenn Sie die IP-Weiterleitung einschalten, sollten Sie den rp\_filter in Betracht ziehen, der
eingehende Pakete automatisch zurückweist, wenn der Routing-Tabelleneintrag für ihre Quelladresse
nicht mit der Netzwerkschnittstelle übereinstimmt, an der sie ankommen. Dies hat
Sicherheitsvorteile, weil es das so genannte IP-Spoofing verhindert, kann aber Probleme bereiten,
wenn Sie asymmetrisches Routing verwenden (Pakete von Ihnen zu einem Host nehmen einen anderen
Weg als Pakete von diesem Host zu Ihnen) oder wenn Sie einen nicht routingfähigen Host betreiben,
der mehrere IP-Adressen auf verschiedenen Schnittstellen hat. Um rp\_filter einzuschalten,
verwenden Sie:

\texttt{echo 1 $>$ /proc/sys/net/ipv4/conf/<Gerät>/rp\_filter}\\
oder

\texttt{echo 1 $>$ /proc/sys/net/ipv4/conf/all/rp\_filter}\\
Beachten Sie, dass einige Distributionen dies in Startskripten aktivieren.
Für Details über rp\_filter strict und loose mode lesen Sie
$<$file:Documentation/networking/ip-sysctl.rst$>$. Wenn Sie unsicher sind, geben Sie hier N an.

\subparagraph{FIB TRIE statistics}$~$\\
CONFIG\_IP\_FIB\_TRIE\_STATS [=y] \textbf{[Y]}\\
Behalten Sie die Statistiken über die Struktur der FIB TRIE-Tabelle im Auge. Nützlich zum Testen
und Messen der TRIE-Leistung.

\subparagraph{IP: policy routing}$~$\\
CONFIG\_IP\_MULTIPLE\_TABLES [=y] \textbf{[Y]}\\
Normalerweise entscheidet ein Router, was mit einem empfangenen Paket zu tun ist, und zwar
ausschließlich auf der Grundlage der endgültigen Zieladresse des Pakets. Wenn Sie hier Y angeben,
kann der Linux-Router auch die Quelladresse des Pakets berücksichtigen. Darüber hinaus kann auch
das TOS-Feld (Type-Of-Service) des Pakets für Routing-Entscheidungen verwendet werden.\\
Weitere Informationen finden Sie in der Linux-Dokumentation Advanced Routing and Traffic Control
unter \url{https://lartc.org/howto/lartc.rpdb.html}.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IP: equal cost multipath}$~$\\
CONFIG\_IP\_ROUTE\_MULTIPATH [=y] \textbf{[Y]}\\
Normalerweise geben die Routing-Tabellen eine einzige Aktion an, die für ein bestimmtes Paket auf
deterministische Weise durchgeführt wird. Wenn Sie hier jedoch Y sagen, ist es möglich, mehrere
Aktionen an ein Paketmuster zu knüpfen und damit mehrere alternative Wege für diese Pakete
festzulegen. Der Router betrachtet alle diese Pfade als gleich teuer und wählt einen von ihnen
auf nicht-deterministische Weise aus, wenn ein passendes Paket eintrifft.

\subparagraph{IP: verbose route monitoring}$~$\\
CONFIG\_IP\_ROUTE\_VERBOSE [=y] \textbf{[Y]}\\
Wenn Sie hier Y angeben, was empfohlen wird, gibt der Kernel ausführliche Meldungen über das
Routing aus, zum Beispiel Warnungen über empfangene Pakete, die seltsam aussehen und auf einen
Angriff oder ein falsch konfiguriertes System hindeuten könnten. Die Informationen werden vom
klogd-Daemon verarbeitet, der für die Kernelmeldungen zuständig ist (\glqq man klogd\grqq{}).

\paragraph{IP: kernel level autoconfiguration}$~$\\
CONFIG\_IP\_ADVANCED\_ROUTER [=n] \textbf{[N]}\\
Dies ermöglicht die automatische Konfiguration der IP-Adressen von Geräten und der Routing-Tabelle
beim Booten des Kernels auf der Grundlage von Informationen, die entweder über die
Kernel-Befehlszeile oder über BOOTP- oder RARP-Protokolle bereitgestellt werden.
Sie müssen Y nur für plattenlose Maschinen angeben, die zum Booten Netzwerkzugriff benötigen
(in diesem Fall sollten Sie auch Y für \glqq Root file system on NFS\grqq{} angeben),
da alle anderen Maschinen das Netzwerk in ihren Startskripten konfigurieren.

\paragraph{IP: tunneling}$~$\\
CONFIG\_NET\_IPIP [=m] \textbf{[M]}\\
Tunneling bedeutet, dass Daten eines Protokolltyps in ein anderes Protokoll eingekapselt und über
einen Kanal gesendet werden, der das einkapselnde Protokoll versteht. Dieser spezielle Tunneling-Treiber
implementiert die Verkapselung von IP innerhalb von IP, was sich zwar ziemlich sinnlos anhört, aber
nützlich sein kann, wenn Sie Ihren (oder einen anderen) Rechner in einem anderen Netz erscheinen lassen
wollen, als er tatsächlich ist, oder wenn Sie die Möglichkeiten von Mobile-IP nutzen wollen
(wodurch Laptops nahtlos zwischen Netzen wechseln können, ohne ihre IP-Adressen zu ändern). Wenn Sie
diese Option mit Y bestätigen, werden zwei Module ( = Code, der in den laufenden Kernel eingefügt und
aus ihm entfernt werden kann, wann immer Sie wollen) erzeugt. Die meisten Leute werden das nicht
brauchen und können N sagen.

\paragraph{IP: GRE demultiplexer}$~$\\
CONFIG\_NET\_IPGRE\_DEMUX [=m] \textbf{[M]}\\
Dies ist ein Hilfsmodul zum Demultiplexen von GRE-Paketen anhand von GRE-Versionsfeldkriterien.
Erforderlich für die Module \texttt{ip\_gre} und \texttt{pptp}.

\paragraph{IP: GRE tunnels over IP}$~$\\
CONFIG\_NET\_IPGRE [=m] \textbf{[M]}\\
Tunneling bedeutet, dass Daten eines Protokolltyps in ein anderes Protokoll eingekapselt und
über einen Kanal gesendet werden, der das einkapselnde Protokoll versteht. Dieser spezielle
Tunneling-Treiber implementiert GRE (Generic Routing Encapsulation) und ermöglicht derzeit die
Verkapselung von IPv4 oder IPv6 über eine bestehende IPv4-Infrastruktur. Dieser Treiber ist
nützlich, wenn der andere Endpunkt ein Cisco-Router ist: Cisco mag GRE viel lieber als den
anderen Linux-Tunneltreiber (\glqq IP-Tunneling\grqq{} oben). Außerdem erlaubt GRE die
Weiterverteilung von Multicast durch den Tunnel.

\subparagraph{IP: broadcast GRE over IP}$~$\\
CONFIG\_NET\_IPGRE\_BROADCAST [=y] \textbf{[Y]}\\
Eine Anwendung von GRE/IP ist der Aufbau eines Broadcast-WAN (Wide Area Network), das wie
ein normales Ethernet-LAN (Local Area Network) aussieht, aber über das gesamte Internet
verteilt werden kann. Wenn Sie das tun wollen, sagen Sie hier und bei
\glqq IP-Multicast-Routing\grqq{} unten Y.

\paragraph{IP: multicast routing}$~$\\
CONFIG\_IP\_MROUTE [=y] \textbf{[Y]}\\
Dies wird verwendet, wenn Ihr Rechner als Router für IP-Pakete mit mehreren Zieladressen
fungieren soll. Er wird für das MBONE benötigt, ein Netzwerk mit hoher Bandbreite über dem
Internet, das Audio- und Videoübertragungen überträgt. Um dies zu tun, würden Sie
wahrscheinlich das Programm \texttt{mrouted} ausführen. Wenn Sie davon noch nichts gehört
haben, brauchen Sie es nicht.

\subparagraph{IP: multicast policy routing}$~$\\
CONFIG\_IP\_MROUTE\_MULTIPLE\_TABLES [=y] \textbf{[Y]}\\
Normalerweise führt ein Multicast-Router einen Userspace-Daemon aus und entscheidet auf der
Grundlage der Quell- und Zieladressen, was mit einem Multicast-Paket geschehen soll.
Wenn Sie hier Y angeben, kann der Multicast-Router auch Schnittstellen und Paketmarkierungen
berücksichtigen und mehrere Instanzen von Userspace-Dämonen gleichzeitig laufen lassen, von
denen jeder eine einzelne Tabelle bearbeitet.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IP: PIM-SM version 1 support}$~$\\
CONFIG\_IP\_PIMSM\_V1 [=y] \textbf{[Y]}\\
Kernelseitige Unterstützung für Sparse Mode PIM (Protocol Independent Multicast) Version 1.
Dieses Multicast-Routing-Protokoll ist weit verbreitet, da Cisco es unterstützt.
Sie benötigen eine spezielle Software, um es zu verwenden (pimd-v1).\\
Weitere Informationen
über PIM finden Sie unter \url{http://netweb.usc.edu/pim/}. Sagen Sie Y, wenn Sie
PIM-SM~v1 verwenden wollen. Beachten Sie, dass Sie hier N sagen können, wenn Sie nur
Dense Mode PIM verwenden wollen.

\subparagraph{IP: PIM-SM version 2 support}$~$\\
CONFIG\_IP\_PIMSM\_V2 [=y] \textbf{[Y]}\\
Kernelseitige Unterstützung für Sparse Mode PIM Version 2. Um dies nutzen zu können, benötigen
Sie einen experimentellen Routing-Daemon, der dies unterstützt (pimd oder gated-5). Dieses
Routing-Protokoll ist nicht weit verbreitet, also sagen Sie N, es sei denn, Sie wollen
damit spielen.

\paragraph{IP: TCP syncookie support}$~$\\
CONFIG\_SYN\_COOKIES [=y] \textbf{[Y]}\\
Normale TCP/IP-Netzwerke sind anfällig für einen Angriff, der als "SYN-Flooding" bekannt ist.
Dieser Denial-of-Service-Angriff verhindert, dass legitime Remote-Benutzer während eines laufenden
Angriffs eine Verbindung zu Ihrem Computer herstellen können, und erfordert vom Angreifer, der von
einem beliebigen Ort im Internet aus operieren kann, nur sehr wenig Arbeit. SYN-Cookies bieten
Schutz gegen diese Art von Angriffen. Wenn Sie hier "Y" eingeben, verwendet der TCP/IP-Stack ein
kryptografisches Herausforderungsprotokoll, das als "SYN-Cookies" bekannt ist, um legitime Benutzer
in die Lage zu versetzen, weiterhin eine Verbindung herzustellen, selbst wenn Ihr Rechner angegriffen
wird.
Die rechtmäßigen Benutzer brauchen ihre TCP/IP-Software nicht zu ändern; SYN-Cookies arbeiten für sie
transparent. Technische Informationen über SYN-Cookies finden Sie unter
\url{https://cr.yp.to/syncookies.html}. Wenn Sie SYN-geflutet werden, ist die vom Kernel gemeldete
Quelladresse wahrscheinlich vom Angreifer gefälscht worden; sie wird nur als Hilfe bei der Rückverfolgung
der Pakete zu ihrer tatsächlichen Quelle gemeldet und sollte nicht als absolute Wahrheit angesehen werden.
SYN-Cookies können eine korrekte Fehlermeldung auf Clients verhindern, wenn der Server wirklich überlastet
ist. Wenn dies häufig vorkommt, schalten Sie sie besser aus. Wenn Sie hier Y angeben, können Sie
SYN-Cookies zur Laufzeit deaktivieren, indem Sie Y zu \glqq /proc file system support\grqq{} und
\glqq Sysctl support\grqq{}
unten angeben und den Befehl \texttt{echo 0 $>$ /proc/sys/net/ipv4/tcp\_syncookies} ausführen
nachdem das /proc-Dateisystem eingehängt wurde. Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Virtual (secure) IP: tunneling}$~$\\
CONFIG\_NET\_IPVTI [=m] \textbf{[M]}\\
Tunneling bedeutet, dass Daten eines Protokolltyps in ein anderes Protokoll eingekapselt und über einen
Kanal gesendet werden, der das einkapselnde Protokoll versteht. Dies kann mit xfrm mode tunnel
verwendet werden, um die Vorstellung eines sicheren Tunnels für IPSEC zu vermitteln und dann ein
Routing-Protokoll darüber zu legen.

\paragraph{IP: Foo (IP protocols) over UDP}$~$\\
CONFIG\_NET\_FOU [=m] \textbf{[M]}\\
Mit Foo over UDP kann jedes IP-Protokoll direkt über UDP gekapselt werden, einschließlich Tunneln
(IPIP, GRE, SIT). Durch die Verkapselung in UDP können Netzwerkmechanismen und Optimierungen für UDP
(wie ECMP und RSS) genutzt werden, um einen besseren Service zu bieten.

\paragraph{IP: FOU encapsulation of IP tunnels}$~$\\
CONFIG\_NET\_FOU\_IP\_TUNNELS [=y] \textbf{[Y]}\\
Ermöglicht die Konfiguration von FOU- oder GUE-Kapselung für IP-Tunnel. Wenn diese Option aktiviert ist,
können IP-Tunnel für die Verwendung von FOU- oder GUE-Kapselung konfiguriert werden.

\paragraph{IP: AH transformation}$~$\\
CONFIG\_INET\_AH [=m] \textbf{[M]}\\
Unterstützung für IPsec AH (Authentication Header).
AH kann mit verschiedenen Authentifizierungsalgorithmen verwendet werden. Diese Option aktiviert nicht
nur die AH-Unterstützung selbst, sondern auch die generischen Implementierungen der Algorithmen, die
nach RFC~8221 implementiert werden MÜSSEN. Wenn Sie andere Algorithmen benötigen, müssen Sie diese in
der Krypto-API aktivieren. Sie sollten auch beschleunigte Implementierungen aller benötigten Algorithmen
aktivieren, sofern verfügbar.
Wenn Sie unsicher sind, sagen Sie Y.

\paragraph{IP: ESP transformation}$~$\\
CONFIG\_INET\_ESP [=m] \textbf{[M]}\\
Unterstützung für IPsec ESP (Encapsulating Security Payload).
ESP kann mit verschiedenen Verschlüs\-selungs- und Authentifizierungsalgorithmen verwendet werden. Diese
Option aktiviert nicht nur die ESP"=Unterstützung selbst, sondern auch die generischen Implementierungen
der Algorithmen, die nach RFC~8221 implementiert werden MÜSSEN. Wenn Sie andere Algorithmen benötigen,
müssen Sie diese in der Krypto-API aktivieren. Sie sollten auch beschleunigte Implementierungen aller
benötigten Algorithmen aktivieren, sofern verfügbar. Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{IP: ESP transformation offload}$~$\\
CONFIG\_INET\_ESP\_OFFLOAD [=m] \textbf{[M]}\\
Unterstützung für ESP-Transformationsoffload. Dies ist nur dann sinnvoll, wenn das System wirklich IPsec
verwendet und einen hohen Durchsatz erzielen möchte. Ein typisches Desktop-System braucht dies nicht,
selbst wenn es IPsec verwendet.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IP: ESP in TCP encapsulation (RFC~8229)}$~$\\
CONFIG\_INET\_ESPINTCP [=y] \textbf{[Y]}\\
Unterstützung für die RFC~8229-Kapselung von ESP und IKE über TCP/IPv4-Sockets.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{IP: IPComp transformation}$~$\\
CONFIG\_INET\_IPCOMP [=m] \textbf{[M]}\\
Unterstützung für das IP Payload Compression Protocol
(IPComp) (RFC~3173), das normalerweise für IPsec benötigt wird.\\
Wenn Sie unsicher sind, sagen Sie Y.

\paragraph{INET: socket monitoring interface}$~$\\
CONFIG\_INET\_DIAG [=m] \textbf{[M]}\\
Unterstützung für die INET (TCP, DCCP usw.) Socket"=Überwachungsschnittstelle, die von nativen Linux"=Tools
wie \texttt{ss} verwendet wird. \texttt{ss} ist in iproute2 enthalten und kann derzeit heruntergeladen werden
unter: \url{http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2}\\ 
Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{UDP: socket monitoring interface}$~$\\
CONFIG\_INET\_UDP\_DIAG [=m] \textbf{[M]}\\
Unterstützung für die UDP-Socket-Überwachungsschnittstelle, die vom Tool \texttt{ss} verwendet wird. 
Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{RAW: socket monitoring interface}$~$\\
CONFIG\_INET\_RAW\_DIAG [=m] \textbf{[M]}\\
Unterstützung für die vom \texttt{ss}-Tool verwendete RAW-Socket-Überwachungsschnittstelle.
Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{INET: allow privileged process to administratively close sockets}$~$\\
CONFIG\_INET\_DIAG\_DESTROY [=y] \textbf{[Y]}\\
Stellt eine SOCK\_DESTROY-Operation zur Verfügung, die es privilegierten Prozessen (z.~B. einem
Verbindungsmanager oder einem Netzwerkverwaltungsprogramm wie \texttt{ss}) ermöglicht, von anderen Prozessen
geöffnete Sockets zu schließen. Das Schließen eines Sockets auf diese Weise unterbricht alle blockierenden
Lese-/Schreib-/Verbindungsoperationen auf dem Socket und bewirkt, dass sich zukünftige Socket-Aufrufe so
verhalten, als ob der Socket getrennt worden wäre. Wenn Sie unsicher sind, sagen Sie N.

\paragraph{TCP: advanced congestion control \texorpdfstring{$\rightarrow$}{->}}$~$\\
CONFIG\_TCP\_CONG\_ADVANCED [=y] \textbf{[Y]}\\
Unterstützung für die Auswahl verschiedener TCP-Staukontrollmodule. Fast alle Benutzer können hier sicher nein
sagen, und es wird eine sichere Standardauswahl getroffen (CUBIC mit neuem Reno als Fallback).
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Binary Increase Congestion (BIC) control}$~$\\
CONFIG\_TCP\_CONG\_BIC [=m] \textbf{[M]}\\
BIC-TCP ist eine rein senderseitige Änderung, die eine lineare RTT-Fairness bei großen Fenstern gewähr"-lei"-stet
und gleichzeitig Skalierbarkeit und begrenzte TCP-Freundlichkeit bietet. Das Protokoll kombiniert zwei
Verfahren, die additive Erhöhung und die binäre Sucherhöhung. Bei großen Überlastungsfenstern ge"-währ"-lei"-stet
die additive Erhöhung mit einem großen Inkrement eine lineare RTT-Fairness sowie eine gute Skalierbarkeit.
Bei kleinen Überlastungsfenstern sorgt die binäre Sucherhöhung für TCP-Freundlichkeit.\\
Siehe \url{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/} 

\subparagraph{CUBIC TCP}$~$\\
CONFIG\_TCP\_CONG\_CUBIC [=y] \textbf{[Y]}\\
Dies ist die Version 2.0 von BIC-TCP, die neben anderen Techniken eine kubische Wachstumsfunktion verwendet.\\
Siehe \url{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf}

\subparagraph{TCP Westwood+}$~$\\
CONFIG\_TCP\_CONG\_WESTWOOD [=m] \textbf{[M]}\\
TCP Westwood+ ist eine absenderseitige Modifikation des TCP-Reno-Protokollstapels, die die Leistung der
TCP-Überlastungssteuerung optimiert. Es basiert auf einer Ende-zu-Ende-Bandbreitenschätzung, um das
Überlastungsfenster und den Schwellenwert für den langsamen Start nach einer Überlastungsepisode festzulegen.
Auf der Grundlage dieser Schätzung legt TCP Westwood+ adaptiv einen Schwellenwert für den langsamen Start und
ein Überlastungsfenster fest, das die zum Zeitpunkt des Auftretens der Überlastung genutzte Bandbreite
berücksichtigt. TCP Westwood+ erhöht die Fairness gegenüber TCP Reno in kabelgebundenen Netzen und den
Durchsatz über drahtlose Verbindungen erheblich.

\subparagraph{H-TCP}$~$\\
CONFIG\_TCP\_CONG\_HTCP [=m] \textbf{[M]}\\*
H-TCP ist eine nur sendeseitige Modifikation des TCP-Reno-Protokollstapels, die die Leistung der
TCP-Überlastungssteuerung für Hochgeschwindigkeitsnetzverbindungen optimiert. Es verwendet einen Mode\-switch,
um die Alpha- und Beta-Parameter von TCP Reno auf der Grundlage der Netzbedingungen und in einer Weise zu
ändern, die gegenüber anderen Reno- und H-TCP-Datenströmen fair ist.

\subparagraph{High Speed TCP}$~$\\
CONFIG\_TCP\_CONG\_HSTCP [=m] \textbf{[M]}\\*
Sally Floyds High Speed TCP (RFC~3649) Staukontrolle. Eine Modifikation des
TCP"=Über"-lastungs"-steuerungs"-mechanismus
zur Verwendung mit großen Überlastungsfenstern. In einer Tabelle wird angegeben, um wie viel das
Überlastungsfenster vergrößert werden soll, wenn eine ACK empfangen wird.
Für weitere Einzelheiten siehe \url{https://www.icir.org/floyd/hstcp.html}

\subparagraph{TCP-Hybla congestion control algorithm}$~$\\
CONFIG\_TCP\_CONG\_HYBLA [=m] \textbf{[M]}\\*
TCP-Hybla ist eine Änderung, die nur auf der Absenderseite vorgenommen wird, um die Benachteiligung von
Verbindungen mit langen Übertragungszeiten und großen Bandbreiten zu beseitigen, z.~B. wenn
Satellitenverbindungen beteiligt sind, insbesondere wenn sie einen gemeinsamen Engpass mit normalen
terrestrischen Verbindungen teilen.

\subparagraph{TCP Vegas}$~$\\
CONFIG\_TCP\_CONG\_VEGAS [=m] \textbf{[M]}\\*
TCP Vegas ist eine absenderseitige Änderung von TCP, die den Beginn einer Überlastung durch Schät"-zung der
Bandbreite vorwegnimmt. TCP Vegas passt die Übertragungsrate durch Änderung des Über"-las"-tungs"-fens"-ters an.
TCP Vegas sollte weniger Paketverluste verursachen, ist aber nicht so aggressiv wie TCP Reno.

\subparagraph{TCP NV}$~$\\
CONFIG\_TCP\_CONG\_NV [=m] \textbf{[M]}\\*
TCP NV ist ein Nachfolger von TCP Vegas. Es wurde geändert, um mit 10G-Netzen, Messrauschen durch LRO, GRO und
Unterbrechungskoaleszenz fertig zu werden. Außerdem wird der cwnd-Wert nicht mehr linear, sondern multiplikativ
verringert.\\
Es ist zu beachten, dass die Stauvermeidung (cwnd wird verringert, wenn die Anzahl der Pakete in der
Warteschlange steigt) im Allgemeinen nicht mit der Staukontrolle (cwnd wird nur verringert, wenn es zu
Paketverlusten kommt) koexistieren kann, da die Fairness nicht gewährleistet ist. Ein Szenario, in dem sie
sicher koexistieren können, ist, wenn die CA-Flüsse RTTs~$\ll$~CC-Flüsse RTTs haben.
Für weitere Einzelheiten siehe \url{http://www.brakmo.org/networking/tcp-nv/}

\subparagraph{Scalable TCP}$~$\\
CONFIG\_TCP\_CONG\_SCALABLE [=m] \textbf{[M]}\\*
Scalable TCP ist eine Änderung von TCP nur auf der Absenderseite, die einen MIMD-Algorithmus zur Staukontrolle
verwendet, der einige nette Skalierungseigenschaften hat, obwohl er bekanntermaßen Probleme mit der Fairness hat.
Siehe \url{http://www.deneholme.net/tom/scalable/}

\subparagraph{TCP Low Priority}$~$\\
CONFIG\_TCP\_CONG\_LP [=m] \textbf{[M]}\\*
TCP Low Priority (TCP-LP), ein verteilter Algorithmus, dessen Ziel es ist, nur die überschüssige Bandbreite des
Netzes im Vergleich zum \glqq fairen Anteil\grqq{} der Bandbreite, wie er von TCP angestrebt wird, zu nutzen.
Siehe \url{http://www-ece.rice.edu/networks/TCP-LP/}

\subparagraph{TCP Veno}$~$\\
CONFIG\_TCP\_CONG\_VENO [=m] \textbf{[M]}\\*
TCP Veno ist eine rein senderseitige Erweiterung von TCP, um einen besseren Durchsatz in drahtlosen Netzen zu
erzielen. TCP Veno nutzt die Zustandsunterscheidung, um die schwierige Beurteilung der Paketverlustart zu umgehen.
TCP Veno verkleinert das Überlastungsfenster als Reaktion auf zufällige Paketverluste.
Siehe \url{http://ieeexplore.ieee.org/xpl/freeabs\_all.jsp?arnumber=1177186}

\subparagraph{YeAH TCP}$~$\\
CONFIG\_TCP\_CONG\_YEAH [=m] \textbf{[M]}\\*
YeAH-TCP ist ein absenderseitiger Hochgeschwindigkeits"=TCP"=Überlastungskontrollalgorithmus, der ei"-nen gemischten
Verlust-/Verzögerungsansatz zur Berechnung des Überlastungsfensters verwendet. Seine Entwurfsziele sind hohe
Effizienz, interne, RTT- und Reno-Fairness, Widerstandsfähigkeit gegenüber Verbindungsverlusten und eine möglichst
geringe Belastung der Netzelemente.\\
Weitere Einzelheiten finden Sie hier:
\url{http://wil.cs.caltech.edu/pfldnet2007/paper/YeAH_TCP.pdf} or
\href{https://www.gdt.id.au/~gdt/presentations/2010-07-06-questnet-tcp/reference-materials/papers/baiocchi+castellani+vacirca-yeah-tcp-yet-another-highspeed-tcp.pdf}
{Link via www.gdt.id.au}

\subparagraph{TCP Illinois}$~$\\
CONFIG\_TCP\_CONG\_ILLINOIS [=m] \textbf{[M]}\\*
TCP-Illinois ist eine absenderseitige Modifikation von TCP Reno für Hochgeschwindigkeitsverbindungen mit langer
Verzögerung. Es nutzt die Round-Trip-Zeit, um die Alpha- und Beta-Parameter anzupassen, um einen höheren
durchschnittlichen Durchsatz zu erreichen und Fairness zu wahren.
Für weitere Einzelheiten siehe: \url{http://www.ews.uiuc.edu/~shaoliu/tcpillinois/index.html}

\subparagraph{DataCenter TCP (DCTCP)}$~$\\
CONFIG\_TCP\_CONG\_DCTCP [=m] \textbf{[M]}\\*
DCTCP nutzt die explizite Überlastungsanzeige (Explicit Congestion Notification, ECN) im Netz, um den Endhosts ein
Multi-Bit-Feedback zu geben. Es wurde entwickelt, um Folgendes zu bieten:
\begin{itemize}
	\item[-] Hohe Burst-Toleranz (Incast aufgrund von Partition/Aggregat),
\item[-] Geringe Latenz (kurze Flüsse, Abfragen),
\item[-] hohen Durchsatz (kontinuierliche Datenaktualisierungen, große Dateiübertragungen) mit
		 handels"-üblichen, flach gepufferten Switches. 
\end{itemize} 
Alle Switches im Rechenzentrumsnetz, auf denen DCTCP läuft, müssen die ECN-Kenn"-zeichnung unterstützen und so
konfiguriert sein, dass sie bei Erreichen bestimmter Switch-Pufferschwellenwerte ge"-kenn"-zeichnet werden.
Die Standardheuristik für die ECN-Markierungsschwelle für DCTCP auf Switches liegt bei 20 Paketen (30 KB) bei 1 Gbps
und 65 Paketen ($\approx$ 100 KB) bei 10 Gbps, muss aber möglicherweise noch weiter optimiert werden.\\
Weitere Einzelheiten siehe:\\
\url{http://simula.stanford.edu/~alizade/Site/DCTCP\_files/dctcp-final.pdf}

\subparagraph{CAIA Delay-Gradient (CDG)}$~$\\
CONFIG\_TCP\_CONG\_CDG [=m] \textbf{[M]}\\*
CAIA Delay-Gradient (CDG) ist eine TCP-Überlastungskontrolle, die den TCP-Sender modifiziert, um:
\begin{itemize}
	\item[o] Verwendung des Verzögerungsgradienten als Überlastungssignal.
	\item[o] mit einer durchschnittlichen Wahrscheinlichkeit, die unabhängig von der RTT ist, zurückzufahren.
	\item[o] mit Datenströmen zu koexistieren, die eine verlustbasierte Staukontrolle verwenden.
	\item[o] Paketverluste zu tolerieren, die nicht mit der Überlastung zusammenhängen.
\end{itemize}
Für weitere Einzelheiten siehe:\\
D.A. Hayes und G. Armitage. "Revisiting TCP congestion control using delay gradients".\\
In Networking 2011. Preprint: \url{http://goo.gl/No3vdg}

\subparagraph{BBR TCP}$~$\\
CONFIG\_TCP\_CONG\_BBR [=m] \textbf{[M]}\\*
BBR (Bottleneck Bandwidth and RTT) Die TCP-Überlastungssteuerung zielt darauf ab, die Netzauslastung zu maximieren und Warteschlangen
zu minimieren. Sie erstellt ein explizites Modell der Bottleneck-Zustellrate und der Umlaufverzögerung des Pfades.
Sie toleriert Paketverluste und Verzögerungen, die nicht mit der Überlastung zusammenhängen. Es kann über LAN-, WAN-, Mobilfunk-,
WLAN- oder Kabelmodem-Verbindungen arbeiten. Es kann mit Datenströmen koexistieren, die eine verlustbasierte Staukontrolle verwenden,
und es kann mit flachen Puffern, tiefen Puffern, Bufferbloat, Policern oder AQM-Schemata arbeiten, die kein Verzögerungssignal liefern.
Es erfordert den \texttt{fq} (\glqq Fair Queue\grqq{}) Pacing Packet Scheduler.

\subparagraph{Default TCP congestion control () \texorpdfstring{$\rightarrow$}{->}}$~$\\
Wählen Sie die TCP-Überlastungssteuerung aus, die standardmäßig für alle Verbindungen verwendet werden soll.

\subsubparagraph{Cubic}$~$\\
CONFIG\_DEFAULT\_CUBIC [=y] \textbf{[Y]}\\*
Für diese Option ist keine Hilfe vorhanden.

\subsubparagraph{Reno}$~$\\
CONFIG\_DEFAULT\_RENO [=n] \textbf{[N]}\\*
Für diese Option ist keine Hilfe vorhanden.

\paragraph{TCP: MD5 Signature Option support (RFC~2385)}$~$\\
CONFIG\_TCP\_MD5SIG [=y] \textbf{[Y]}\\*
RFC2385 spezifiziert eine Methode zum MD5-Schutz von TCP-Sitzungen. Die wichtigste (einzige?) Anwendung ist der Schutz von BGP-Sitzungen
zwischen Core-Routern im Internet.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{The IPv6 protocol}$~$\\
CONFIG\_IPV6 [=y] \textbf{[Y]}\\*
Unterstützung für die IP Version 6 (IPv6).\\
Allgemeine Informationen über IPv6 finden Sie unter \url{https://en.wikipedia.org/wiki/IPv6}.
Spezielle Informationen über IPv6 unter Linux finden Sie unter Documentation/networking/ipv6.rst und lesen Sie das HOWTO unter
\url{https://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/}\\
Um diese Protokollunterstützung als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{ipv6} heißen.

\subparagraph{IPv6: Router Preference (RFC~4191) support}$~$\\
CONFIG\_IPV6\_IOAM6\_LWTUNNEL [=y] \textbf{[Y]}\\*
Die Router-Präferenz ist eine optionale Erweiterung der Router-Advertisement-Nachricht, die die Fä"-hig"-keit der Hosts verbessert,
einen geeigneten Router auszuwählen, insbesondere wenn die Hosts in einem Netz mit mehreren Hosts untergebracht sind.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{IPv6: Router Information (RFC~4191) support}$~$\\
CONFIG\_IPV6\_ROUTE\_INFO [=y] \textbf{[Y]}\\*
Unterstützung von Routeninformationen.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: Enable RC~4429 Optimistic DAD}$~$\\
CONFIG\_IPV6\_OPTIMISTIC\_DAD [=y] \textbf{[Y]}\\*
Unterstützung für die optimistische Erkennung von doppelten Adressen. Dadurch können automatisch konfigurierte Adressen schneller verwendet werden.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: AH transformation}$~$\\
CONFIG\_INET6\_AH [=m] \textbf{[M]}\\*
Unterstützung für IPsec AH (Authentication Header).
AH kann mit verschiedenen Authentifizierungsalgorithmen verwendet werden. Diese Option aktiviert nicht nur die AH-Unterstützung selbst,
sondern auch die generischen Implementierungen der Algorithmen, die nach RFC~8221 implementiert werden MÜSSEN.
Wenn Sie andere Algorithmen benötigen, müssen Sie diese in der Krypto-API aktivieren. Sie sollten auch beschleunigte Implementierungen
aller benötigten Algorithmen aktivieren, sofern verfügbar.
Wenn Sie unsicher sind, sagen Sie Y für Ja.

\subparagraph{IPv6: ESP transformation}$~$\\
CONFIG\_INET6\_ESP [=m] \textbf{[M]}\\*
Unterstützung für IPsec ESP (Encapsulating Security Payload).
ESP kann mit verschiedenen Ver"-schlüs"-selungs"= und Authentifizierungsalgorithmen verwendet werden. Diese Option aktiviert nicht nur die
ESP-Unterstützung selbst, sondern auch die generischen Implementierungen der Algorithmen, die nach RFC~8221 implementiert werden MÜSSEN.
Wenn Sie andere Algorithmen benötigen, müssen Sie diese in der Krypto-API aktivieren. Sie sollten auch beschleunigte Implementierungen
aller benötigten Algorithmen aktivieren, sofern verfügbar.
Wenn Sie unsicher sind, sagen Sie Y für Ja.

\subsubparagraph{IPv6: ESP transformation offload}$~$\\
CONFIG\_INET6\_ESP [=m] \textbf{[M]}\\*
Unterstützung für ESP-Transformationsoffload. Dies ist nur dann sinnvoll, wenn das System wirklich IPsec verwendet und einen hohen
Durchsatz erzielen möchte. Ein typisches Desktop-System braucht dies nicht, selbst wenn es IPsec verwendet.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{IPv6: ESP in TCP encapsulation (RFC~8229)}$~$\\
CONFIG\_INET6\_ESPINTCP [=y] \textbf{[Y]}\\*
Unterstützung für die RFC~8229-Kapselung von ESP und IKE über TCP/IPv6-Sockets.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: IPComp transformation}$~$\\
CONFIG\_INET6\_IPCOMP [=m] \textbf{[M]}\\*
Unterstützung für IP Payload Compression Protocol (IPComp) (RFC~3173), typischerweise erforderlich für IPsec.
Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{IPv6: Mobility}$~$\\
CONFIG\_IPV6\_MIP6 [=m] \textbf{[M]}\\*
Unterstützung für IPv6-Mobilität, beschrieben in RFC~3775.\\
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: Identifier Locator Addressing (ILA)}$~$\\
CONFIG\_IPV6\_ILA [=m] \textbf{[M]}\\*
Unterstützung für IPv6 Identifier Locator Addressing (ILA).
ILA ist ein Mechanismus zur Netzwerkvirtualisierung ohne Verkapselung. Das Grundkonzept von ILA besteht darin, dass wir eine 
IPv6-Adresse in einen 64-Bit-Locator und einen 64-Bit-Identifier aufteilen. Der Bezeichner ist die Identität einer Entität in der
Kommunikation (\glqq who\grqq{}) und der Locator drückt den Standort der Entität (\glqq where\grqq{}) aus. 
ILA kann unter Verwendung der Option \texttt{encap ila} mit dem Befehl \texttt{ip -6 route} konfiguriert werden.\\
ILA wird in \url{https://tools.ietf.org/html/draft-herbert-nvo3-ila-00} beschrieben. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Virtual (secure) IPv6: tunneling}$~$\\
CONFIG\_IPV6\_VTI [=m] \textbf{[M]}\\*
Tunneling bedeutet, dass Daten eines Protokolltyps in ein anderes Protokoll eingekapselt und über einen Kanal gesendet werden,
der das einkapselnde Protokoll versteht. Dies kann mit xfrm mode tunnel verwendet werden, um die Vorstellung eines sicheren
Tunnels für IPSEC zu vermitteln und dann ein Routing-Protokoll darüber zu legen.

\subparagraph{IPv6: IPv6-in-IPv4 tunnel (SIT driver)}$~$\\
CONFIG\_IPV6\_SIT [=m] \textbf{[M]}\\*
Tunneling bedeutet, dass Daten eines Protokolltyps in ein anderes Protokoll eingekapselt und über einen Kanal gesendet werden,
der das einkapselnde Protokoll versteht. Dieser Treiber implementiert die Einkapselung von IPv6 in IPv4-Pakete. Dies ist
nützlich, wenn Sie zwei IPv6-Netzwerke über einen reinen IPv4-Pfad verbinden wollen. Wenn Sie hier M sagen, wird ein Modul
namens \texttt{sit} erzeugt. Wenn Sie unsicher sind, sagen Sie Y.

\subsubparagraph{IPv6: IPv6 Rapid Deployment (6RD)}$~$\\
CONFIG\_IPV6\_SIT\_6RD [=y] \textbf{[Y]}\\*
IPv6 Rapid Deployment (6rd; draft-ietf-softwire-ipv6-6rd) baut auf Mechanismen von 6to4 (RFC~3056) auf, um einen
Dienstanbieter in die Lage zu versetzen, IPv6-Unicast-Dienste schnell an IPv4-Standorten einzurichten, für die er
Kundengeräte bereitstellt.
Wie 6to4 verwendet es zustandsloses IPv6 in einer IPv4"=Kapselung, um eine reine IPv4"=Netz"-infra"-struktur zu durch"-queren.
Im Gegensatz zu 6to4 verwendet ein 6rd"=Dienstanbieter ein eigenes IPv6"=Präfix anstelle des festen 6to4"=Präfixes.
Wenn diese Option aktiviert ist, bietet der SIT"=Treiber 6rd"=Funktionalität, indem er eine zusätzliche ioctl"=API zur Konfiguration
des IPv6-Präfixes anstelle des statischen 2002::/16 für 6to4 bereitstellt.\\*
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: IP-in-IPv6 tunnel (RFC~2473)}$~$\\
CONFIG\_IPV6\_TUNNEL [=m] \textbf{[M]}\\*
Unterstützung für IPv6-in-IPv6- und IPv4-in-IPv6-Tunnel, beschrieben in RFC~2473.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: GRE tunnel (RFC~2473)}$~$\\
CONFIG\_IPV6\_GRE [=m] \textbf{[M]}\\*
Tunneling bedeutet, dass Daten eines Protokolltyps in ein anderes Protokoll eingekapselt und über einen Kanal gesendet werden,
der das einkapselnde Protokoll versteht. Dieser spezielle Tunneling-Treiber implementiert GRE (Generic Routing Encapsulation)
und ermöglicht derzeit die Verkapselung von IPv4 oder IPv6 über eine bestehende IPv6-Infrastruktur. Dieser Treiber ist nützlich,
wenn der andere Endpunkt ein Cisco-Router ist: Cisco mag GRE viel lieber als den anderen Linux-Tunneltreiber
(\glqq IP-Tunneling\grqq{} oben). Außerdem erlaubt GRE die Umverteilung von Multicast durch den Tunnel.\\
Wenn Sie hier M sagen, wird ein Modul namens \texttt{ip6\_gre} erzeugt. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: Multiple Routing Tables}$~$\\
CONFIG\_IPV6\_MULTIPLE\_TABLES [=y] \textbf{[Y]}\\*
Unterstützung mehrerer Routing-Tabellen.

\subsubparagraph{IPv6: source address based routing}$~$\\
CONFIG\_IPV6\_SUBTREES [=y] \textbf{[Y]}\\*
Aktivieren Sie das Routing nach Quelladresse oder Präfix.\\
Die Zieladresse ist immer noch der primäre Routing"=Schlüssel, so dass das Mischen von normalen und quell"-präfix"-spezifischen Routen
in derselben Routing"=Tabelle manchmal zu einem unbeabsichtigten Routing"=Verhalten führen kann. Dies kann vermieden werden,
indem unterschiedliche Routing"=Tabellen für die normalen und die quellpräfixspezifischen Routen definiert werden.\\
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: multicast routing}$~$\\
CONFIG\_IPV6\_MROUTE [=y] \textbf{[Y]}\\*
Unterstützung der IPv6-Multicast-Weiterleitung.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{IPv6: multicast policy routing}S~S\\
CONFIG\_IPV6\_MROUTE\_MULTIPLE\_TABLES [=y] \textbf{[Y]}\\*
Normalerweise führt ein Multicast-Router einen Userspace-Daemon aus und entscheidet auf der Grundlage der Quell- und Zieladressen,
was mit einem Multicast-Paket geschehen soll. Wenn Sie hier Y angeben, kann der Multicast-Router auch Schnittstellen und
Paketmarkierungen berück"-sichtigen und mehrere Instanzen von Userspace-Dämonen gleichzeitig laufen lassen, von denen jeder eine
einzelne Tabelle bearbeitet. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{IPv6: multicast policy routing}S~S\\
CONFIG\_IPV6\_MROUTE\_MULTIPLE\_TABLES [=y] \textbf{[Y]}\\*
Unterstützung für das IPv6-PIM-Multicast-Routing-Protokoll PIM-SMv2. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: Segment Routing Header encapsulation support}$~$\\
CONFIG\_IPV6\_SEG6\_LWTUNNEL [=y] \textbf{[Y]}\\*
Unterstützung für die Einkapselung von Paketen in einen äußeren IPv6-Header und einen Segment-Routing-Header
unter Verwendung des leichtgewichtigen Tunnelmechanismus. Aktivieren Sie auch die Unterstützung für die erweiterte lokale
Verarbeitung von SRv6-Paketen auf der Grundlage ihres aktiven Segments. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: Segment Routing HMAC support}$~$\\
CONFIG\_IPV6\_SEG6\_HMAC [=y] \textbf{[Y]}\\*
Unterstützung für die Erzeugung von HMAC-Signaturen und die Überprüfung von SR-aktivierten Paketen.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: RPL Source Routing Header support}$~$\\
CONFIG\_IPV6\_RPL\_LWTUNNEL [=y] \textbf{[Y]}\\*
Unterstützung für RFC~6554 RPL Source Routing Header unter Verwendung des Lightweight"=Tunnel"=Mechanismus.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6: IOAM Pre-allocated Trace insertion support}$~$\\
CONFIG\_IPV6\_IOAM6\_LWTUNNEL [=y] \textbf{[Y]}\\*
Unterstützung für das Einfügen von IOAM Pre-allocated Trace Header unter Verwendung des Lightweight"=Tunnel"=Mechanismus.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{NetLabel subsystem support}$~$\\
CONFIG\_NETLABEL [=y] \textbf{Y}\\*
NetLabel bietet Unterstützung für explizite Netzwerk-Paketkennzeichnungsprotokolle wie CIPSO und RIPSO. Weitere
Informationen finden Sie unter Documentation/netlabel sowie im NetLabel SourceForge-Projekt für Konfigurationswerkzeuge
und zusätzliche Dokumentation.\\
$*$ \url{https://github.com/netlabel/netlabel\_tools}
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{MPTCP: Multipath TCP}$~$\\
CONFIG\_MPTCP [=y] \textbf{Y}\\*
Multipath TCP (MPTCP)-Verbindungen senden und empfangen Daten über mehrere Subflows, um mehrere
Netzwerkpfade zu nutzen. Jeder Subflow verwendet das TCP-Protokoll, und die TCP-Optionen enthalten
Header-Informationen für MPTCP.

\subparagraph{MPTCP: IPv6 support for Multipath TCP}$~$\\
CONFIG\_MPTCP\_IPV6 [=y] \textbf{[Y]}\\*
Für diese Option gibt es keine Hilfe.

\subsubsection{Security Marking}
CONFIG\_NETWORK\_SECMARK [=y] \textbf{[Y]}\\*
Dies ermöglicht die Sicherheitsmarkierung von Netzwerkpaketen, ähnlich wie bei nfmark, aber für
Sicherheitszwecke. Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie
mit N.

\subsubsection{Timestamping in PHY devices}
CONFIG\_NETWORK\_PHY\_TIMESTAMPING [=y] \textbf{[Y]}\\*
Dies ermöglicht die Zeitstempelung von Netzwerkpaketen durch PHYs (oder andere
MII-Bus-Snooping-Geräte) mit Hardware-Zeitstempelfunktionen. Diese Option fügt einen gewissen
Overhead in den Sende- und Empfangswegen hinzu. Wenn Sie unsicher sind, wie Sie diese Frage
beantworten sollen, antworten Sie mit N.

\subsubsection{Network packet filtering framework (Netfilter) \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_NETFILTER [=y] \textbf{[Y]}\\*
Netfilter ist ein Framework zum Filtern und Verarbeiten von Netzwerkpaketen, die Ihren Linux-Rechner
durchlaufen. Die häufigste Anwendung der Paketfilterung ist der Einsatz Ihres Linux-Rechners als
Firewall zum Schutz eines lokalen Netzwerks vor dem Internet. Die Art von Firewall, die durch diese
Kernelunterstützung bereitgestellt wird, wird als \glqq Paketfilter\grqq{} bezeichnet, was bedeutet,
dass sie einzelne Netzwerkpakete auf der Grundlage von Typ, Quelle, Ziel usw. zurückweisen kann.
Die andere Art von Firewall, eine \glqq proxy-basierte\grqq{} Firewall, ist sicherer, aber
aufdringlicher und mühsamer einzurichten; sie untersucht den Netzwerkverkehr viel genauer,
verändert ihn und hat Kenntnisse über die höheren Protokolle, die ein Paketfilter nicht hat.
Außerdem erfordern proxy-basierte Firewalls oft Änderungen an den Programmen, die auf den lokalen
Clients laufen. Proxy-basierte Firewalls brauchen keine Unterstützung durch den Kernel, aber sie
werden oft mit einem Paketfilter kombiniert, der nur funktioniert, wenn man hier Y sagt.\\
Sie sollten hier auch Y angeben, wenn Sie Ihren Linux-Rechner als Gateway zum Internet für ein
lokales Netzwerk von Rechnern ohne global gültige IP-Adresse verwenden wollen. Dies nennt man
\glqq masquerading\grqq{}: Wenn einer der Computer in Ihrem lokalen Netzwerk etwas nach außen
senden möchte, kann sich Ihre Box als dieser Computer \glqq maskieren\grqq{}, d.~h. sie leitet
den Datenverkehr an das vorgesehene Ziel nach außen weiter, verändert aber die Pakete so, dass
es so aussieht, als kämen sie von der Firewall-Box selbst. Das funktioniert in beide Richtungen:
Wenn der externe Rechner antwortet, leitet die Linux-Box den Datenverkehr stillschweigend an den
richtigen lokalen Rechner weiter.\\
Auf diese Weise sind die Computer in Ihrem lokalen Netz für die Außenwelt völlig unsichtbar,
obwohl sie die Außenwelt erreichen und Antworten empfangen können. Es ist sogar möglich, global
sichtbare Server von einem maskierten lokalen Netzwerk aus zu betreiben, indem man einen
Mechanismus namens Portforwarding verwendet. Masquerading wird oft auch als NAT
(Network Address Translation) bezeichnet.\\
Eine weitere Anwendung von Netfilter ist das transparente Proxying: Wenn ein Rechner im lokalen
Netzwerk versucht, eine Verbindung zu einem externen Host herzustellen, kann Ihr Linux-System den
Datenverkehr transparent an einen lokalen Server weiterleiten, in der Regel einen
Caching-Proxy-Server. Eine weitere Verwendung von Netfilter ist der Aufbau einer Bridging-Firewall.
Wenn Sie eine Bridge mit aktivierter Netzwerk-Paketfilterung verwenden, kann iptables den
überbrückten Verkehr \glqq sehen\grqq{}. Für die Filterung des unteren Netzwerks und der
Ethernet-Protokolle über die Brücke, verwenden Sie ebtables (unter bridge netfilter configuration).
Für netfilter gibt es verschiedene Module, die die bisherigen Mechanismen Masquerading (ipmasqadm),
Paketfilterung (ipchains), transparentes Proxying und Portforwarding ersetzen.
Bitte sehen Sie $<$file:Documentation/Changes$>$ unter \glqq iptables\grqq{} nach, wo diese Pakete
zu finden sind.

\paragraph{Advanced netfilter configuration}$~$\\
CONFIG\_NETFILTER\_ADVANCED [=y] \textbf{[Y]}\\*
Wenn Sie hier Y angeben, können Sie zwischen allen Netzfiltermodulen wählen. Wenn Sie N sagen,
werden die ungewöhnlicheren nicht angezeigt, und die grundlegenden Module, die von den meisten
Benutzern benötigt werden, werden standardmäßig mit \glqq M\grqq{} angezeigt. Wenn Sie unsicher
sind, sagen Sie Y.

\subparagraph{Bridged IP/ARP packets filtering}$~$\\
CONFIG\_BRIDGE\_NETFILTER [=m] \textbf{[M]}\\*
Wenn Sie diese Option aktivieren, kann arptables bzw. iptables überbrückten ARP- bzw. IP-Verkehr
sehen. Wenn Sie eine Bridging-Firewall wollen, sollten Sie diese Option aktivieren.
Durch das Aktivieren oder Deaktivieren dieser Option wird ebtables nicht aktiviert oder
deaktiviert.\\
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Core Netfilter Configuration \texorpdfstring{$\rightarrow$}{->}}$~$\\
(Kern-Netfilter-Konfiguration)

\subparagraph{Netfilter ingress support}$~$\\
CONFIG\_NETFILTER\_INGRESS [=y] \textbf{[Y]}\\*
Damit können Sie Pakete bereits am Eingang über die Netfilter-Infrastruktur klassifizieren.

\subparagraph{Netfilter egress support}$~$\\
CONFIG\_NETFILTER\_EGRESS [=y] \textbf{[Y]}\\*
Damit können Sie Pakete vor der Übertragung über die Netfilter-Infrastruktur klassifizieren.

\subparagraph{Netfilter base hook dump support}$~$\\
CONFIG\_NETFILTER\_NETLINK\_HOOK [=m] \textbf{[M]}\\*
Wenn diese Option aktiviert ist, unterstützt der Kernel die Auflistung der
Basis-Netzfilter-Hooks über NFNETLINK. Dies ist hilfreich für die Fehlersuche.

\subparagraph{Netfilter NFACCT over NFNETLINK interface}$~$\\
CONFIG\_NETFILTER\_NETLINK\_ACCT [=m] \textbf{[M]}\\*
Wenn diese Option aktiviert ist, unterstützt der Kernel die erweiterte Abrechnung über NFNETLINK.

\subparagraph{Netfilter NFQUEUE over NFNETLINK interface}$~$\\
CONFIG\_NETFILTER\_NETLINK\_QUEUE [=m] \textbf{[M]}\\*
Wenn diese Option aktiviert ist, unterstützt der Kernel die Warteschlangenbildung für
Pakete über NFNETLINK.

\subparagraph{Netfilter LOG over NFNETLINK interface}$~$\\
CONFIG\_NETFILTER\_NETLINK\_LOG [=m] \textbf{[M]}\\*
Wenn diese Option aktiviert ist, bietet der Kernel Unterstützung für die Protokollierung von
Paketen über NFNETLINK. Dadurch werden die bestehenden ipt\_ULOG- und ebg\_ulog-Mechanismen
überflüssig und es ist auch geplant, die alten syslog-basierten ipt\_LOG- und
ip6t\_LOG-Module zu ersetzen.

\subparagraph{Netfilter OSF over NFNETLINK interface}$~$\\
CONFIG\_NETFILTER\_NETLINK\_OSF [=m] \textbf{[M]}\\*
Wenn diese Option aktiviert ist, unterstützt der Kernel den passiven OS-Fingerprint über NFNETLINK.

\subparagraph{Netfilter connection tracking support}$~$\\
CONFIG\_NF\_CONNTRACK [=m] \textbf{[M]}\\*
Die Verbindungsverfolgung zeichnet auf, welche Pakete Ihren Rechner durchlaufen haben, um
herauszufinden, wie sie zu Verbindungen zusammenhängen.
Dies ist erforderlich, um Masquerading oder andere Arten der Netzwerkadressübersetzung
durchzuführen. Es kann auch verwendet werden, um die Paketfilterung zu verbessern
(siehe \glqq Unterstützung von Verbindungsstatusübereinstimmungen\grqq{} unten).
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Syslog packet logging}$~$\\
CONFIG\_NF\_LOG\_SYSLOG [=m] \textbf{[M]}\\*
Diese Option aktiviert die Unterstützung für die Paketprotokollierung über Syslog. Sie
unterstützt IPv4, IPV6, ARP und gängige Transportprotokolle wie TCP und UDP. Dies ist eine
einfachere, aber weniger flexible Protokollierungsmethode im Vergleich zu
CONFIG\_NETFILTER\_NETLINK\_LOG. Wenn beide aktiviert sind, kann das zu verwendende Backend
zur Laufzeit mit Hilfe von sysctl-Tunables pro Adressfamilie konfiguriert werden.

\subparagraph{Connection mark tracking support}$~$\\
CONFIG\_NF\_CONNTRACK\_MARK [=y] \textbf{[Y]}\\*
Diese Option aktiviert die Unterstützung für Verbindungsmarkierungen, die vom Ziel
\glqq CONNMARK\grqq{} und der Übereinstimmung \glqq connmark\grqq{} verwendet werden.
Ähnlich wie der Markierungswert von Paketen, aber dieser Markierungswert wird in der
conntrack-Sitzung statt in den einzelnen Paketen gespeichert.

\subparagraph{Connection tracking security mark support}$~$\\
CONFIG\_NF\_CONNTRACK\_SECMARK [=y] \textbf{[Y]}\\*
Mit dieser Option können Sicherheitsmarkierungen auf Verbindungen angewendet werden. Normalerweise
werden sie von Paketen, die das CONNSECMARK-Ziel verwenden, auf Verbindungen kopiert und von
Verbindungen auf Pakete mit demselben Ziel zurückkopiert, wobei die Pakete ursprünglich über
SECMARK gekennzeichnet wurden.\\
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Connection tracking zones}$~$\\
CONFIG\_NF\_CONNTRACK\_ZONES [=y] \textbf{[Y]}\\*
Mit dieser Option wird die Unterstützung für Zonen zur Verfolgung von Verbindungen aktiviert.
Normalerweise muss jede Verbindung eine eindeutige systemweite Identität haben. Zonen für die
Verbindungsverfolgung ermöglichen es, dass mehrere Verbindungen dieselbe Identität verwenden,
solange sie in verschiedenen Zonen enthalten sind. Wenn Sie unsicher sind, sagen Sie `N'.

\subparagraph{Supply CT list in procfs (OBSOLETE)}$~$\\
CONFIG\_NF\_CONNTRACK\_PROCFS [=y] \textbf{[Y]}\\*
Mit dieser Option kann die Liste der bekannten Conntrack-Einträge in procfs unter\\
net/netfilter/nf\_conntrack angezeigt werden. Diese Option wird als veraltet betrachtet,
da das Werkzeug conntrack(8), das Netlink benutzt, verwendet wird.

\subparagraph{Connection tracking events}$~$\\
CONFIG\_NF\_CONNTRACK\_EVENTS [=y] \textbf{[Y]}\\*
Wenn diese Option aktiviert ist, stellt der Code für die Verbindungsüberwachung eine
Benachrichtigungskette zur Verfügung, die von anderem Kernel-Code verwendet werden kann,
um über Änderungen im Status der Verbindungsüberwachung informiert zu werden.\\
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Connection tracking timeout}$~$\\
CONFIG\_NF\_CONNTRACK\_TIMEOUT [=y] \textbf{[Y]}\\*
Diese Option aktiviert die Unterstützung für die Timeout-Erweiterung der Verbindungsverfolgung.
Damit können Sie Zeitüberschreitungsrichtlinien an den Datenfluss über das CT-Ziel anhängen.\\
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Connection tracking timestamping}$~$\\
CONFIG\_NF\_CONNTRACK\_TIMESTAMP [=y] \textbf{[Y]}\\*
Diese Option aktiviert die Unterstützung für die Zeitstempelung der Verbindungsverfolgung.
Dadurch können Sie die Startzeit des Datenflusses speichern und die Zeit für die Beendigung des
Datenflusses (nach dessen Zerstörung) über Ereignisse der Verbindungsverfolgung abrufen. Wenn
Sie unsicher sind, sagen Sie N.

\subparagraph{Connection tracking labels}$~$\\
CONFIG\_NF\_CONNTRACK\_LABELS [=y] \textbf{[Y]}\\*
Diese Option ermöglicht die Zuweisung von benutzerdefinierten Flaggenbits zu Einträgen der
Verbindungsverfolgung. Sie kann mit xtables connlabel match und dem nftables ct Ausdruck
verwendet werden.

\subparagraph{DCCP protocol connection tracking support}$~$\\
CONFIG\_NF\_CT\_PROTO\_DCCP [=y] \textbf{[Y]}\\*
Wenn diese Option aktiviert ist, kann der Layer-3"=unabhängige Code für die Verbindungsverfolgung
den Zustand von DCCP"=Verbindungen verfolgen. Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{SCTP protocol connection tracking support}$~$\\
CONFIG\_NF\_CT\_PROTO\_SCTP [=y] \textbf{[Y]}\\*
Wenn diese Option aktiviert ist, kann der Layer-3"=unabhängige Verbindungsverfolgungscode
den Status von SCTP"=Verbindungen verfolgen. Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{UDP-Lite protocol connection tracking support}$~$\\
CONFIG\_NF\_CT\_PROTO\_UPDLITE [=y] \textbf{[Y]}\\*
Wenn diese Option aktiviert ist, kann der Layer-3"=unabhängige Verbindungsverfolgungscode
eine Zustandsverfolgung bei UDP-Lite"=Verbindungen durchführen.
Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{Amanda backup protocol support}$~$\\
CONFIG\_NF\_CONNTRACK\_AMANDA [=m] \textbf{[M]}\\*
Wenn Sie das Amanda-Backup-Paket \url{http://www.amanda.org/} auf diesem Rechner oder auf
Rechnern, die über diesen Rechner MASQUERADED werden, ausführen, sollten Sie diese
Funktion aktivieren. Dies ermöglicht es dem Verbindungsverfolgungs- und Natting"=Code, die
Unterkanäle zuzulassen, die Amanda für die Kommunikation der Sicherungsdaten, Nachrichten
und des Index benötigt.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{FTP protocol support}$~$\\
CONFIG\_NF\_CONNTRACK\_FTP [=m] \textbf{[M]}\\*
Die Verfolgung von FTP-Verbindungen ist problematisch: Für die Verfolgung dieser Verbindungen
und die Durchführung von Masquerading und anderen Formen der Network Address Translation sind
spezielle Hilfsmittel erforderlich. Dies ist FTP-Unterstützung auf Layer 3 mit unabhängiger
Verbindungsverfolgung. Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{H.323 protocol support}$~$\\
CONFIG\_NF\_CONNTRACK\_H323 [=m] \textbf{[M]}\\*
H.323 ist ein VoIP-Signalisierungsprotokoll der ITU-T. Als eines der wichtigsten VoIP-Protokolle
wird es weithin von Sprach-Hardware und -Software verwendet, darunter Sprach"=Gateways, IP"=Telefone,
Netmeeting, OpenPhone, Gnomemeeting usw.
Mit diesem Modul können Sie H.323 auf einer Verbindungs"-ver"-fol"-gung/NAT"=Firewall unterstützen.
Dieses Modul unterstützt RAS, Fast Start, H.245 Tunnelling, Call Forwarding, RTP/RTCP und T.120
basierte Audio-, Video-, Fax-, Chat-, Whiteboard-, Dateiübertragung, etc. Für weitere Informationen
besuchen Sie bitte \url{http://nath323.sourceforge.net/}.\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IRC protocol support}$~$\\
CONFIG\_NF\_CONNTRACK\_IRC [=m] \textbf{[M]}\\*
Es gibt eine weit verbreitete Erweiterung des IRC, das Direct Client-to-Client Protocol (DCC).
Damit können Benutzer Dateien aneinander senden und auch miteinander chatten, ohne dass ein Server
erforderlich ist. DCC Sending wird überall dort verwendet, wo Sie Dateien über IRC senden, und DCC
Chat wird am häufigsten von Eggdrop"=Bots verwendet. Wenn Sie NAT verwenden, ermöglicht Ihnen diese
Erweiterung, Dateien zu senden und Chats zu initiieren. Beachten Sie, dass Sie diese Erweiterung
NICHT benötigen, um Dateien abzurufen oder Chats zu initiieren, oder alles andere im IRC.\\
Um sie als Modul zu kompilieren, wähle hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{NetBIOS name service protocol support}$~$\\
CONFIG\_NF\_CONNTRACK\_NETBIOS\_NS [=m] \textbf{[M]}\\*
NetBIOS-Namensdienstanfragen werden als Broadcast"=Nachrichten von einem unprivilegierten Port
gesendet und mit Unicast"=Nachrichten an denselben Port beantwortet. Das macht es schwierig, sie
mit einer Firewall zu schützen, da die Verbindungsverfolgung nicht mit Broadcasts umgehen kann.
Dieses Hilfsprogramm verfolgt die lokalen NetBIOS"=Namensdienstanfragen und die entsprechenden
Antworten. Er ist auf eine korrekte IP"=Adresskonfiguration angewiesen, insbesondere auf die
Netzmaske und die Broadcast"=Adresse. Wenn sie richtig konfiguriert sind, sollte die Ausgabe von
\texttt{ip address show} etwa so aussehen:\\[.5em]
\texttt{\$ ip -4 address show eth0}\\
\texttt{4: eth0: $<$BROADCAST,MULTICAST,UP$>$ mtu 1500 qdisc pfifo\_fast qlen 1000}\\
\texttt{\hspace*{4em} inet 172.16.2.252/24 brd 172.16.2.255 Bereich global eth0}\\[.5em]
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{SNMP service protocol support}$~$\\
CONFIG\_NF\_CONNTRACK\_SNMP [=m] \textbf{[M]}\\*
SNMP-Dienstanforderungen werden als Broadcast"=Nachrichten von einem unprivilegierten Port gesendet
und mit Unicast"=Nachrichten an denselben Port beantwortet. Das macht es schwierig, sie mit einer
Firewall zu schützen, da die Verbindungsverfolgung nicht mit Broadcasts umgehen kann.
Dieses Hilfsprogramm verfolgt die lokalen SNMP"=Dienstanfragen und die entsprechenden Antworten.
Es verlässt sich auf die korrekte Konfiguration der IP"=Adresse, insbesondere der Netzmaske und
der Broadcast-Adresse.\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{PPtP protocol support}$~$\\
CONFIG\_NF\_CONNTRACK\_PPTP [=m] \textbf{[M]}\\*
Dieses Modul fügt Unterstützung für PPTP (Point to Point Tunnelling Protocol, RFC~2637)
Verbindungsverfolgung und NAT hinzu. Wenn Sie PPTP"=Sitzungen über eine Stateful"=Firewall oder
NAT"=Box laufen lassen, sollten Sie diese Funktion aktivieren.
Bitte beachten Sie, dass noch nicht alle PPTP"=Betriebsmodi unterstützt werden. Insbesondere
bestehen diese Einschränkungen:
\begin{itemize}
	\item[-] Es wird blind davon ausgegangen, dass Kontrollverbindungen immer in Richtung
	PNS$\rightarrow$PAC aufgebaut werden. Dies ist eine Verletzung von RFC~2637.
	\item[-] Unterstützt nur einen einzigen Aufruf innerhalb jeder Sitzung
\end{itemize}
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{SANE protocol support}$~$\\
CONFIG\_NF\_CONNTRACK\_SANE [=m] \textbf{[M]}\\*
SANE ist ein Protokoll für den Fernzugriff auf Scanner, das durch den Daemon \texttt{saned}
implementiert wird. Wie FTP verwendet es getrennte Kontroll- und Datenverbindungen.
Mit diesem Modul können Sie SANE auf einer Firewall mit Verbindungsverfolgung unterstützen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{SIP protocol support}$~$\\
CONFIG\_NF\_CONNTRACK\_SANE [=m] \textbf{[M]}\\*
SIP ist ein Kontroll\-protokoll der Anwendungsschicht, mit dem Multimedia"=Sitzungen
(Konferenzen) wie Internet"=Telefonate aufgebaut, geändert und beendet werden können.\\
Mit den Modulen \texttt{nf\_conntrack\_sip} und \texttt{nf\_nat\_sip} können Sie das
Protokoll auf einer Verbindungsverfolgung/NATing"=Firewall unterstützen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{TFTP protocol support}$~$\\
CONFIG\_NF\_CONNTRACK\_TFTP [=m] \textbf{[M]}\\*
TFTP-Verbindungsnachverfolgungshilfe; dies ist erforderlich, je nachdem, wie restriktiv
Ihr Regelwerk ist. Wenn Sie einen tftp"=Client hinter -j SNAT oder -j MASQUERADING verwenden,
benötigen Sie dies.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Connection tracking netlink interface}$~$\\
CONFIG\_NF\_CT\_NETLINK [=m] \textbf{[M]}\\*
Diese Option aktiviert die Unterstützung für eine netlink"=basierte Benutzerschnittstelle.

\subparagraph{Connection tracking timeout tuning via Netlink}$~$\\
CONFIG\_NF\_CT\_NETLINK\_TIMEOUT [=m] \textbf{[M]}\\*
Mit dieser Option wird die Unterstützung für die Feinabstimmung des Zeitlimits für die
Verbindungsverfolgung aktiviert. Dies ermöglicht es Ihnen, spezifische
Zeitüberschreitungsrichtlinien an Abläufe anzuhängen, anstatt die globale
Zeitüberschreitungsrichtlinie zu verwenden. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Connection tracking helpers in user-space via Netlink}$~$\\
CONFIG\_NF\_CT\_NETLINK\_HELPER [=m] \textbf{[M]}\\*
Mit dieser Option wird die Infrastruktur für die Verbindungsnachverfolgung im
Benutzerbereich aktiviert. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{NFQUEUE and NFLOG integration with Connection Tracking}$~$\\
CONFIG\_NETFILTER\_NETLINK\_GLUE\_CT [=y] \textbf{[Y]}\\*
Wenn diese Option aktiviert ist, können NFQUEUE und NFLOG zusammen mit dem Paket, das über
NFNETLINK in die Warteschlange gestellt wurde, Informationen zur Verbindungsverfolgung enthalten.

\subparagraph{Network Address Translation support}$~$\\
CONFIG\_NF\_NAT [=m] \textbf{[M]}\\*
Die NAT"=Option ermöglicht Masquerading, Portweiterleitung und andere Formen der vollständigen
Network Address Port Translation. Dies kann durch iptables, ip6tables oder nft kontrolliert
werden.

\subparagraph{Netfilter nf\_tables support}$~$\\
CONFIG\_NF\_TABLES [=m] \textbf{[M]}\\*
nftables ist das neue Rahmenwerk zur Paketklassifizierung, das die bestehende
\{ip,ip6,arp,eb\}\_tables-Infrastruktur ersetzen soll. Es bietet eine
Pseudo-Zustandsmaschine mit einem erweiterbaren Befehlssatz (auch als Ausdrücke
bekannt), den das Userspace-Dienstprogramm \texttt{nft}
(\url{https://www.netfilter.org/projects/nftables}) zum Aufbau des Regelsatzes
verwendet. Außerdem enthält es die generische Set-Infrastruktur, die es Ihnen
ermöglicht, Zuordnungen zwischen Übereinstimmungen und Aktionen zu konstruieren,
um die Leistung zu verbessern. Um es als Modul zu kompilieren, wählen Sie hier M.

\subsubparagraph{Netfilter nf\_tables mixed IPv4/IPv6 tables support}$~$\\
CONFIG\_NF\_TABLES\_INET [=y] \textbf{[Y]}\\*
Diese Option aktiviert die Unterstützung für eine gemischte
IPv4/IPv6"=\glqq inet\grqq{}"=Tabelle.

\subsubparagraph{Netfilter nf\_tables netdev tables support}$~$\\
CONFIG\_NF\_TABLES\_NETDEV [=y] \textbf{[Y]}\\*
Diese Option aktiviert die Unterstützung für die Tabelle \glqq netdev\grqq{}.

\subsubparagraph{Netfilter nf\_tables number generator module}$~$\\
CONFIG\_NFT\_NUMGEN [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck für den Zahlengenerator hinzu, der zur
Durchführung der inkrementellen Zählung und der an eine Obergrenze
gebundenen Zufallszahlen verwendet wird.

\subsubparagraph{Netfilter nf\_tables conntrack module}$~$\\
CONFIG\_NFT\_CT [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck "ct" hinzu, den Sie verwenden können, um Informationen
zur Verbindungsverfolgung, wie z.~B. den Status des Datenflusses, abzugleichen.

\subsubparagraph{Netfilter nf\_tables hardware flow offload module}$~$\\
CONFIG\_NFT\_FLOW\_OFFLOAD [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck \glqq flow\_offload\grqq{} hinzu, mit dem Sie
festlegen können, welche Datenströme in die Hardware eingespeist werden.

\subsubparagraph{Netfilter nf\_tables connlimit module}$~$\\
CONFIG\_NFT\_CONNLIMIT [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck \glqq connlimit\grqq{} hinzu, den Sie verwenden können,
um die Übereinstimmung von Regeln pro Verbindung zu begrenzen.

\subsubparagraph{Netfilter nf\_tables log module}$~$\\
CONFIG\_NFT\_LOG [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck \glqq log\grqq{} hinzu, den Sie verwenden können,
um Pakete zu protokollieren, die bestimmten Kriterien entsprechen.

\subsubparagraph{Netfilter nf\_tables limit module}$~$\\
CONFIG\_NFT\_LOG [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck \glqq limit\grqq{} hinzu, den Sie verwenden können,
um die Übereinstimmung von Regeln zu begrenzen.

\subsubparagraph{Netfilter nf\_tables masquerade support}$~$\\
CONFIG\_NFT\_MASQ [=m] \textbf{[M]}\\*
Diese Option fügt den \glqq masquerade\grqq{}"=Ausdruck hinzu, den Sie verwenden
können, um NAT im Masquerade"=Flavour durchzuführen.

\subsubparagraph{Netfilter nf\_tables redirect support}$~$\\
CONFIG\_NFT\_REDIR [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck \glqq redirect\grqq{} hinzu, mit dem Sie NAT
im Redirect"=Flavour durchführen können.

\subsubparagraph{Netfilter nf\_tables nat module}$~$\\
CONFIG\_NFT\_NAT [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck \glqq nat\grqq{} hinzu, mit dem Sie typische
NAT-Paketumwandlungen (Network Address Translation) durchführen können.

\subsubparagraph{Netfilter nf\_tables tunnel module}$~$\\
CONFIG\_NFT\_TUNNEL [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck \glqq tunnel\grqq{} hinzu, den Sie zum Festlegen von
Tunneling-Richtlinien verwenden können.

\subsubparagraph{Netfilter nf\_tables queue module}$~$\\
CONFIG\_NFT\_QUEUE [=m] \textbf{[M]}\\*
Dies ist erforderlich, wenn Sie die Userspace"=Warteschlangen"=Infrastruktur (auch
bekannt als NFQUEUE) von nftables verwenden wollen.

\subsubparagraph{Netfilter nf\_tables quota module}$~$\\
CONFIG\_NFT\_QUEUE [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck \glqq quota\grqq{} hinzu, den Sie verwenden können,
um Byte-Quoten zu erzwingen.

\subsubparagraph{Netfilter nf\_tables reject support}$~$\\
CONFIG\_NFT\_REJECT [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck \glqq reject\grqq{} hinzu, den Sie verwenden
können, um nicht zugelassenen Datenverkehr explizit abzulehnen und über
TCP-Reset/ICMP"=Informationsfehler zu benachrichtigen.

\subsubparagraph{Netfilter x\_tables over nf\_tables module}$~$\\
CONFIG\_NFT\_COMPAT [=m] \textbf{[M]}\\*
Dies ist erforderlich, wenn Sie beabsichtigen, eine der vorhandenen x\_tables
match/target-Erweiterungen über das nf\_tables-Framework zu verwenden.

\subsubparagraph{Netfilter nf\_tables hash module}$~$\\
CONFIG\_NFT\_HASH [=m] \textbf{[M]}\\*
Diese Option fügt den Ausdruck \glqq hash\grqq{} hinzu, mit dem Sie eine Hash"=Operation
für Register durchführen können.

\subsubparagraph{Netfilter nf\_tables fib inet support}$~$\\
CONFIG\_NFT\_FIB\_INET [=m] \textbf{[M]}\\*
Diese Option ermöglicht die Verwendung des FIB-Ausdrucks aus der Inet"=Tabelle.
Die Suche wird an die IPv4- oder IPv6"=FIB delegiert, je nach dem Protokoll
des Pakets.

\subsubparagraph{Netfilter nf\_tables xfrm/IPSec security association matching}$~$\\
CONFIG\_NFT\_XFRM [=m] \textbf{[M]}\\*
Diese Option fügt einen Ausdruck hinzu, den Sie verwenden können, um Eigenschaften einer
Paketsicherheitszuordnung zu extrahieren.

\subsubparagraph{Netfilter nf\_tables socket match support}$~$\\
CONFIG\_NFT\_SOCKET [=m] \textbf{[M]}\\*
Diese Option ermöglicht den Abgleich auf das Vorhandensein oder Nichtvorhandensein eines
entsprechenden Sockets und seiner Attribute.

\subsubparagraph{Netfilter nf\_tables passive OS fingerprint support}$~$\\
CONFIG\_NFT\_OSF [=m] \textbf{[M]}\\*
Mit dieser Option können Pakete von einem bestimmten Betriebssystem abgeglichen
werden.

\subsubparagraph{Netfilter nf\_tables tproxy support}$~$\\
CONFIG\_NFT\_TPROXY [=m] \textbf{[M]}\\*
Dadurch wird die Unterstützung für transparente Proxys in nftables verfügbar.

\subsubparagraph{Netfilter nf\_tables SYNPROXY expression support}$~$\\
CONFIG\_NFT\_SYNPROXY [=m] \textbf{[M]}\\*
Mit dem SYNPROXY-Ausdruck können Sie TCP-Verbindungen abfangen und mit
Syncookies aufbauen, bevor sie an den Server weitergeleitet werden.
Auf diese Weise können Sie die Nutzung von Verbindungen und Serverressourcen
bei SYN"=Flood"=Angriffen vermeiden.

\subsubparagraph{Netfilter packet duplication support}$~$\\
CONFIG\_NF\_DUP\_NETDEV [=m] \textbf{[M]}\\*
Diese Option aktiviert die generische Infrastruktur zur Paketvervielfältigung
für Netfilter.

\subsubparagraph{Netfilter nf\_tables netdev packet duplication support}$~$\\
CONFIG\_NFT\_DUP\_NETDEV [=m] \textbf{[M]}\\*
Mit dieser Option wird die Paketverdopplung für die \glqq netdev\grqq{}"=Familie
aktiviert.

\subsubparagraph{Netfilter nf\_tables netdev packet forwarding support}$~$\\
CONFIG\_NFT\_FWD\_NETDEV [=m] \textbf{[M]}\\*
Diese Option aktiviert die Paketweiterleitung für die Familie
\glqq netdev\grqq{}.

\subsubparagraph{Netfilter nf\_tables netdev fib lookups support}$~$\\
CONFIG\_NFT\_FIB\_NETDEV [=m] \textbf{[M]}\\*
Diese Option ermöglicht die Verwendung des FIB-Ausdrucks aus der
netdev"=Tabelle. Die Suche wird an die IPv4- oder IPv6"=FIB delegiert, je
nach dem Protokoll des Pakets.

\subsubparagraph{Netfilter nf\_tables netdev fib REJECT support}$~$\\
CONFIG\_NFT\_REJECT\_NETDEV [=m] \textbf{[M]}\\*
Diese Option aktiviert die REJECT-Unterstützung in der netdev-Tabelle.
Die Erzeugung von Rück"-sende"-paketen wird an die IPv4- oder IPv6-ICMP- oder
TCP-RST-Implementierung delegiert, je nach dem Protokoll des Pakets.

\subparagraph{Netfilter flow table mixed IPv4/IPv6 module}$~$\\
CONFIG\_NF\_FLOW\_TABLE\_INET [=m] \textbf{[M]}\\*
Diese Option fügt die gemischte IPv4/IPv6-Unterstützung der Flow Table hinzu.
Um sie als Modul zu kompilieren, wählen Sie hier M.

\subparagraph{Netfilter flow table module}$~$\\
CONFIG\_NF\_FLOW\_TABLE [=m] \textbf{[M]}\\*
Diese Option fügt die Kerninfrastruktur der Ablauftabelle hinzu. Um sie als
Modul zu kompilieren, wählen Sie hier M.

\subsubparagraph{Supply flow table statistics in procfs}$~$\\
CONFIG\_NF\_FLOW\_TABLE\_PROCFS [=y] \textbf{[Y]}\\*
Diese Option ermöglicht die Anzeige der Flow-Table-Offload-Statistiken in
procfs unter\\
net/netfilter/nf\_flowtable.

\subparagraph{Netfilter Xtables support (required for ip\_tables)}$~$\\
CONFIG\_NETFILTER\_XTABLES [=m] \textbf{[M]}\\*
Dies ist erforderlich, wenn Sie eine der Tabellen ip\_tables, ip6\_tables oder
arp\_tables verwenden wollen.

\subsubparagraph{Netfilter Xtables 32bit support}$~$\\
CONFIG\_NETFILTER\_XTABLES\_COMPAT [=y] \textbf{[Y]}\\*
Diese Option bietet eine Übersetzungsschicht, um 32bit arp,ip(6),ebtables-Binärdateien
auf 64bit-Kerneln laufen zu lassen. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph*{*** Xtables combined modules ***}$~$\\
\textit{(Xtables kombinierte Module)}

\subsubparagraph{nfmark target and match support}$~$\\
CONFIG\_NETFILTER\_XT\_MARK [=m] \textbf{[M]}\\*
Diese Option fügt das \glqq MARK\grqq{}-Ziel und die
\glqq mark\grqq{}"=Übereinstimmung
hinzu. Mit dem Netfilter"=Mark"=Matching können Sie Pakete auf der Grundlage des
\glqq nfmark\grqq{}-Werts im Paket abgleichen. Mit dem Ziel können Sie in der
\glqq mangle\grqq{}-Tabelle Regeln erstellen, die das mit dem Paket verbundene
Feld \glqq netfilter mark\grqq{} (nfmark) ändern. Vor dem Routing kann die
nfmark die Routing-Methode beeinflussen und kann auch von anderen Subsystemen
verwendet werden, um ihr Verhalten zu ändern.

\subsubparagraph{ctmark target and match support}$~$\\
CONFIG\_NETFILTER\_XT\_CONNMARK [=m] \textbf{[M]}\\*
Diese Option fügt das Ziel \glqq CONNMARK\grqq{} und die Übereinstimmung
\glqq connmark\grqq{} hinzu.
Netfilter ermöglicht es Ihnen, einen Markierungswert
pro Verbindung (auch bekannt als ctmark) zu speichern, ähnlich wie bei der
Paketmarkierung (nfmark). Mit Hilfe dieses Ziels und der Übereinstimmung können
Sie diese Markierung setzen und abgleichen.

\subsubparagraph{set target and match support}$~$\\
CONFIG\_NETFILTER\_XT\_SET [=m] \textbf{[M]}\\*
Diese Option fügt das \glqq SET\grqq{}-Ziel und die \glqq set\grqq{}-Übereinstimmung
hinzu. Mit diesem Ziel und dieser Übereinstimmung können Sie Elemente in den von
ipset(8) erstellten Sets hinzufügen/löschen und abgleichen. Um es als Modul zu
kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph*{*** Xtables combined modules ***}$~$\\
\textit{(Xtables kombinierte Module)}

\subsubparagraph{AUDIT target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_AUDIT [=m] \textbf{[M]}\\*
Diese Option fügt ein 'AUDIT'-Ziel hinzu, das verwendet werden kann, um
Audit"=Aufzeichnungen für verworfene/akzeptierte Pakete zu erstellen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind,
sagen Sie N.

\subsubparagraph{CHECKSUM target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_CHECKSUM [=m] \textbf{[M]}\\*
Diese Option fuegt ein \glq CHECKSUM\grq{}-Ziel hinzu, das in der iptables
Mangle-Tabelle verwendet werden kann, um fehlerhafte DHCP"=Clients in
virtualisierten Umgebungen zu umgehen. Einige alte DHCP"=Clients lassen Pakete
fallen, weil sie nicht wissen, dass die Prüfsumme normalerweise auf die
Hardware ausgelagert wird und daher als gültig angesehen werden sollte. Dieses
Ziel kann verwendet werden, um die Prüfsumme mit iptables auszufüllen, wenn
solche Pakete über ein virtuelles Netzwerkgerät gesendet werden. Um es als
Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``CLASSIFY'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_CLASSIFY [=m] \textbf{[M]}\\*
Diese Option fügt ein \glq CLASSIFY\grq{}-Ziel hinzu, das es dem Benutzer
ermöglicht, die Priorität eines Pakets festzulegen. Einige qdiscs können
diesen Wert zur Klassifizierung verwenden, darunter sind:\\[.5em]
atm, cbq, dsmark, pfifo\_fast, htb, prio\\[0.5em]
Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``CONNMARK'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_CONNMARK [=m] \textbf{[M]}\\*
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers
(z.~B. bei der Ausführung von oldconfig).\\
Mit ihr wird
CONFIG\_NETFILTER\_XT\_CONNMARK (kombiniertes connmark/CONNMARK"=Modul)
ausgewählt.

\subsubparagraph{``CONNSECMARK'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_CONNSECMARK [=m] \textbf{[M]}\\*
Die Zielvorgabe CONNSECMARK kopiert Sicherheitsmarkierungen von Paketen auf
Verbindungen und stellt Sicherheitsmarkierungen von Verbindungen auf Pakete
wieder her (wenn die Pakete nicht bereits markiert sind).
Er wird normalerweise in Verbindung mit dem SECMARK"=Ziel verwendet.\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind,
sagen Sie N.

\subsubparagraph{``CT'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_CT [=m] \textbf{[M]}\\*
Diese Option fügt ein \glq CT\grq{}-Ziel hinzu, das es ermöglicht, anfängliche
Parameter für die Verbindungsverfolgung wie zu übermittelnde Ereignisse
und den zu verwendenden Helfer anzugeben.\\Um es als Modul zu kompilieren,
wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``DSCP'' and ``TOS'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_DSCP [=m] \textbf{[M]}\\*
Diese Option fügt ein \glq DSCP\grq{}-Ziel hinzu, mit dem Sie das DSCP-Feld
(Differentiated Services Codepoint) des IPv4/IPv6-Headers manipulieren können.
Das DSCP-Feld kann einen beliebigen Wert zwischen 0x0 und einschließlich 0x3f
haben. Es fügt auch das \glqq TOS\grqq{}-Ziel hinzu, mit dem Sie Regeln in
der \glqq Mangle\grqq{}-Tabelle erstellen können, die das \glqq Type Of
Service\grqq{}-Feld eines IPv4- oder das Prioritätsfeld eines IPv6-Pakets
vor dem Routing ändern.\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind,
wählen Sie N.

\subsubparagraph{``HL'' hoplimit target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_HL [=m] \textbf{[M]}\\*
Diese Option fügt die Ziele \glqq HL\grqq{} (für IPv6) und \glqq TTL\grqq{}
(für IPv4) hinzu, die es dem Benutzer ermöglichen, den
Hoplimit-/Time-to-live-Wert des IP-Headers zu ändern. Während es sicher ist,
den Hoplimit/TTL-Wert zu dekrementieren, erlauben die Module auch, den
Hoplimit-Wert des Headers zu erhöhen und auf beliebige Werte zu setzen.
Dies ist EXTREM GEFÄHRLICH, da man leicht unsterbliche Pakete erzeugen kann,
die sich ewig im Netz drehen.

\subsubparagraph{``HMARK'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_HMARK [=m] \textbf{[M]}\\*
Diese Option fügt das Ziel \glqq HMARK\grqq{} hinzu. Mit diesem Ziel können Sie
in den Tabellen \glqq raw\grqq{} und \glqq mangle\grqq{} Regeln erstellen,
die die skbuff-Marke mittels Hash-Berechnung innerhalb eines bestimmten
Bereichs setzen. Die nfmark kann die Routing-Methode beeinflussen und kann
auch von anderen Teilsystemen verwendet werden, um deren Verhalten zu ändern.
Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{IDLETIMER target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_IDLETIMER [=m] \textbf{[M]}\\*
Diese Option fügt das Ziel \glqq IDLETIMER\grqq{} hinzu.
Jedes übereinstimmende Paket setzt den Timer zurück, der mit dem Label
verbunden ist, das beim Hinzufügen der Regel angegeben wurde. Wenn der
Timer abläuft, löst er eine sysfs-Benachrichtigung aus. Die verbleibende
Zeit bis zum Ablauf kann über sysfs ausgelesen werden. Um es als Modul zu
kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``LED'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_LED [=m] \textbf{[M]}\\*
Diese Option fügt ein `LED'-Ziel hinzu, mit dem Sie LEDs als Reaktion auf
bestimmte Pakete, die Ihren Rechner passieren, blinken lassen können.
Dies kann dazu verwendet werden, eine freie LED in eine Netzwerkaktivitäts-LED
zu verwandeln, die z.~B. nur bei FTP-Übertragungen blinkt.
Oder Sie könnten eine LED haben, die jedes Mal für ein oder zwei Minuten
aufleuchtet, wenn sich jemand über SSH mit Ihrem Rechner verbindet. Damit dies
funktioniert, benötigen Sie Unterstützung für die Klasse \glqq led\grqq{}. So
erstellen Sie einen LED-Auslöser für eingehenden SSH-Verkehr:\\[.5em]
\texttt{iptables -A INPUT -p tcp --dport 22 -j LED --led-trigger-id ssh --led-delay 1000}\\[.5em]
Verbinden Sie dann den neuen Auslöser mit einer LED auf Ihrem System:\\[.5em]
\texttt{echo netfilter-ssh $>$ /sys/class/leds/$<$ledname$>$/trigger}\\[.5em]
Weitere Informationen zu den auf Ihrem System verfügbaren LEDs finden Sie unter\\
Documentation/leds/leds-class.rst

\subsubparagraph{LOG target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_LOG [=m] \textbf{[M]}\\*
Diese Option fügt ein \glq LOG\grq{}-Ziel hinzu, das es Ihnen erlaubt, Regeln in
jeder iptables-Tabelle zu erstellen, die den Paket-Header im Syslog aufzeichnen.
Um es als Modul zu kompilieren, wähle hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``MARK'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_MARK [=m] \textbf{[M]}\\*
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers
(z.~B. bei der Ausführung von oldconfig). Mit ihr wird
CONFIG\_NETFILTER\_XT\_MARK (kombiniertes Mark/MARK-Modul) ausgewählt.

\subsubparagraph{``SNAT and DNAT'' targets support}$~$\\
CONFIG\_NETFILTER\_XT\_NAT [=m] \textbf{[M]}\\*
Mit dieser Option werden die Ziele SNAT und DNAT aktiviert. Um es als Modul zu
kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``NETMAP'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_NETMAP [=m] \textbf{[M]}\\*
NETMAP ist eine Implementierung der statischen 1:1-NAT-Zuordnung von Netzwerkadressen.
Sie bildet den Teil der Netzwerkadresse ab, während der Teil der Hostadresse intakt bleibt.

\subsubparagraph{``NFLOG'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_NFLOG [=m] \textbf{[M]}\\*
Diese Option aktiviert das NFLOG-Ziel, das es ermöglicht, Nachrichten über nfnetlink\_log
zu protokollieren. Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``NFQUEUE'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_NFQUEUE [=m] \textbf{[M]}\\*
Dieses Ziel hat das alte, veraltete QUEUE-Ziel ersetzt. Im Gegensatz zu QUEUE unterstützt
es 65535 verschiedene Warteschlangen, nicht nur eine. Um es als Modul zu kompilieren,
wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``NOTRACK'' target support (DEPRECATED)}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_NFQUEUE [=m] \textbf{[M]}\\*
\textit{Für diese Option gibt es keine Hilfe.}

\subsubparagraph{``RATEEST'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_RATEEST [=m] \textbf{[M]}\\*
Diese Option fügt ein \glq RATEEST\grq{}-Ziel hinzu, das es ermöglicht, Raten ähnlich wie
bei TC-Schätzern zu messen. Die \glq Rateest\grq{}-Übereinstimmung kann zum Abgleich mit den
gemessenen Raten verwendet werden. Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{REDIRECT target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_REDIRECT [=m] \textbf{[M]}\\*
REDIRECT ist ein Spezialfall von NAT: Alle eingehenden Verbindungen werden auf die Adresse
der eingehenden Schnittstelle abgebildet, so dass die Pakete zum lokalen Rechner gelangen,
anstatt durchzugehen. Dies ist nützlich für transparente Proxies. Um es als Modul zu kompilieren,
wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{MASQUERADE target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_MASQUERADE [=m] \textbf{[M]}\\*
Masquerading ist ein Spezialfall von NAT: Alle ausgehenden Verbindungen werden so verändert,
dass sie von einer bestimmten Schnittstellenadresse zu kommen scheinen, und wenn die Schnittstelle
ausfällt, gehen diese Verbindungen verloren. Dies ist nur für Einwahlkonten mit dynamischer
IP-Adresse nützlich (d.~h. Ihre IP-Adresse wird bei der nächsten Einwahl eine andere sein).
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``TEE'' -- packet cloning to alternate destination}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_TEE [=m] \textbf{[M]}\\*
Diese Option fügt ein \glqq TEE\grqq{}-Ziel hinzu, mit dem ein Paket geklont werden kann und dieser
Klon zu einem anderen Nexthop umgeleitet wird.

\subsubparagraph{``TPROXY'' target transparent proxying support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_TPROXY [=m] \textbf{[M]}\\*
Diese Option fügt ein \glq TPROXY\grq{}-Ziel hinzu, das dem REDIRECT-Ziel ähnlich ist.
Es kann nur in der Mangle-Tabelle verwendet werden und ist nützlich, um den Verkehr an einen
transparenten Proxy umzuleiten. Im Gegensatz zu REDIRECT ist sie \textbf{nicht} von der
Netfilter-Verbindungsverfolgung und NAT abhängig. Damit es funktioniert, müssen Sie bestimmte
iptables-Regeln konfigurieren und Policy-Routing verwenden. Weitere Informationen zur Einrichtung
finden Sie unter\\
Documentation/networking/tproxy.rst.\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``TRACE'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_TRACE [=m] \textbf{[M]}\\*
Mit dem TRACE-Ziel können Sie Pakete markieren, so dass der Kernel jede Regel protokolliert,
die mit den Paketen übereinstimmt, während diese die Tabellen, Ketten und Regeln durchlaufen.
Wenn Sie es als Modul kompilieren wollen, sagen Sie hier M und lesen Sie
$<$file:Documentation/kbuild/modules.rst$>$. Wenn Sie unsicher sind, sagen Sie N. 

\subsubparagraph{``SECMARK'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_SECMARK [=m] \textbf{[M]}\\*
Die SECMARK-Zielvorgabe ermöglicht die Sicherheitsmarkierung von Netzpaketen zur Verwendung mit
Sicherheits"=Subsystemen. Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind,
sagen Sie N.

\subsubparagraph{``TCPMSS'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_TCPMSS [=m] \textbf{[M]}\\*
Diese Option fügt ein \glq TCPMSS\grq{}-Ziel hinzu, das es Ihnen erlaubt, den MSS-Wert von
TCP SYN-Paketen zu ändern, um die maximale Größe für diese Verbindung zu kontrollieren
(normalerweise wird sie auf die MTU Ihrer ausgehenden Schnittstelle minus 40 begrenzt).
Dies wird verwendet, um kriminell hirnlose ISPs oder Server zu überwinden, die ICMP Fragmentation
Needed Pakete blockieren. Dieses Problem äußert sich darin, dass von der Linux-Firewall/vom Router
aus alles gut funktioniert, aber die Rechner dahinter nie große Pakete austauschen können:
\begin{itemize}
	\item Webbrowser stellen eine Verbindung her und bleiben dann hängen, ohne dass Daten empfangen werden.
	\item Kleine E-Mails funktionieren gut, aber große E-Mails bleiben hängen.
	\item ssh funktioniert gut, aber scp hängt sich nach dem ersten Handshaking auf.
\end{itemize}
Abhilfe: Aktivieren Sie diese Option und fügen Sie eine Regel in Ihre Firewall-Konfiguration ein, z.~B:\\[.5em]
\texttt{iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \symbol{`\\}}\\
\texttt{\hspace*{6em} -j TCPMSS --clamp-mss-to-pmtu}\\[.5em]
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``TCPOPTSTRIP'' target support}$~$\\
CONFIG\_NETFILTER\_XT\_TARGET\_TCPOPTSTRIP [=m] \textbf{[M]}\\*
Diese Option fügt ein \glqq TCPOPTSTRIP\grqq{}-Ziel hinzu, mit dem Sie TCP-Optionen aus TCP-Paketen
entfernen können.

\subsubparagraph*{*** Xtables matches ***}$~$\\
\textit{(Xtables Übereinstimmungen)}

\subsubparagraph{``addrtype'' address type match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_ADDRTYPE [=m] \textbf{[M]}\\*
Mit dieser Option können Sie festlegen, was das Routing von einer Adresse hält,
z.~B. UNICAST, \mbox{LOCAL}, BROADCAST, ... \hspace{.5em}
Wenn Sie es als Modul kompilieren wollen, sagen Sie hier M und lesen Sie
$<$file:Documentation/kbuild/modules.rst$>$. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``bpf'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_BPF [=m] \textbf{[M]}\\*
Der BPF-Abgleich wendet einen Linux-Socket-Filter auf jedes Paket an und akzeptiert diejenigen,
für die der Filter einen Wert ungleich Null liefert. Um es als Modul zu kompilieren, wählen Sie
hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``control group'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_CGROUP [=m] \textbf{[M]}\\*
Mit dem Socket/Prozess-Kontrollgruppenabgleich können Sie lokal erzeugte Pakete anhand der
Zugehörigkeit von Prozessen zur net\_cls-Kontrollgruppe abgleichen.

\subsubparagraph{``cluster'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_CLUSTER [=m] \textbf{[M]}\\*
Mit dieser Option können Sie arbeitsteilige Cluster von Netzwerkservern/zustandsfähigen Firewalls
aufbauen, ohne einen dedizierten Router/Server/Switch für den Lastausgleich zu haben.
Grundsätzlich gibt diese Übereinstimmung wahr zurück, wenn das Paket von diesem Clusterknoten
verarbeitet werden muss. Somit sehen alle Knoten alle Pakete und diese Übereinstimmung entscheidet,
welcher Knoten welche Pakete bearbeitet. Der Algorithmus für die Arbeitsteilung basiert auf dem
Hashing der Quelladressen. Wenn Sie hier Y oder M sagen, versuchen Sie
\texttt{iptables -m cluster --help} für weitere Informationen.

\subsubparagraph{``comment'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_COMMENT [=m] \textbf{[M]}\\*
Diese Option fügt einen \glqq Kommentar\grqq{}-Dummy-Match hinzu, der es Ihnen erlaubt,
Kommentare in Ihren iptables-Regelsatz einzufügen. Wenn Du es als Modul kompilieren willst,
sag hier M und lies $<$file:Documentation/kbuild/modules.rst$>$.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``connbytes'' per-connection counter match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_CONNBYTES [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq Connbytes\grqq{}-Übereinstimmung hinzu, mit der Sie die Anzahl
der Bytes und/oder Pakete für jede Richtung innerhalb einer Verbindung abgleichen können.
Wenn Sie es als Modul kompilieren wollen, sagen Sie hier M und lesen Sie
$<$file:Documentation/kbuild/modules.rst$>$. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``connlabel'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_CONNLABEL [=m] \textbf{[M]}\\*
Mit dieser Zuordnung können Sie benutzerdefinierte Bezeichnungen testen und einer Verbindung
zuweisen. Der Kernel speichert nur Bit-Werte -- die Zuordnung von Namen zu Bits wird vom
Userspace vorgenommen. Anders als bei connmark können einer Verbindung mehr als 32~Flaggenbits
gleichzeitig zugewiesen werden.

\subsubparagraph{``connlimit'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_CONNLIMIT [=m] \textbf{[M]}\\*
Mit diesem Abgleich können Sie die Anzahl der parallelen Verbindungen zu einem Server pro
Client-IP-Adresse (oder Adressblock) abgleichen.

\subsubparagraph{``connmark'' connection mark match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_CONNMARK [=m] \textbf{[M]}\\*
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers (z.~B. bei der
Ausführung von oldconfig). Sie wählt CONFIG\_NETFILTER\_XT\_CONNMARK (kombiniertes
connmark/CONNMARK-Modul).

\subsubparagraph{``conntrack'' connection tracking match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_CONNTRACK [=m] \textbf{[M]}\\*
Dies ist ein allgemeines conntrack Abgleichsmodul, eine Obermenge des state match. Es ermöglicht
den Abgleich zusätzlicher Conntrack-Informationen, was in komplexen Konfigurationen wie
NAT-Gateways mit mehreren Internetverbindungen oder Tunneln nützlich ist. Um es als Modul zu
kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``cpu'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_CPU [=m] \textbf{[M]}\\*
Mit dem CPU-Abgleich können Sie Pakete auf der Grundlage der CPU abgleichen, die das Paket gerade
bearbeitet. Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``dccp'' protocol match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_DCCP [=m] \textbf{[M]}\\*
Wenn diese Option aktiviert ist, können Sie die iptables-Übereinstimmung \glqq dccp\grqq{} verwenden,
um auf DCCP-Quell-/Zielports und DCCP-Flags zu reagieren.
Wenn Sie es als Modul kompilieren wollen, sagen Sie hier M und lesen Sie
$<$file:Documentation/kbuild/modules.rst$>$.\\
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``devgroup'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_DEVGROUP [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq Gerätegruppe\grqq{}-Übereinstimmung hinzu, die eine Übereinstimmung
mit der Gerätegruppe ermöglicht, der ein Netzwerkgerät zugeordnet ist.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``dscp'' and ``tos'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_DSCP [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq DSCP\grqq{}-Übereinstimmung hinzu, die eine Übereinstimmung mit
dem DSCP-Feld des IPv4/IPv6-Headers (Differentiated Services Codepoint) ermöglicht. Das
DSCP-Feld kann einen beliebigen Wert zwischen 0x0 und 0x3f einschließlich haben. Außerdem
wird eine \glqq tos\grqq{}-Übereinstimmung hinzugefügt, die es Ihnen ermöglicht, Pakete auf
der Grundlage der \glqq Type Of Service\grqq{}-Felder des IPv4-Pakets abzugleichen
(die dieselben Bits wie DSCP haben). Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``ecn'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_ECN [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq ECN\grqq{}-Übereinstimmung hinzu, mit der Sie die ECN-Felder
des IPv4- und TCP-Headers abgleichen können. Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``esp'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_ESP [=m] \textbf{[M]}\\*
Mit dieser Abgleichserweiterung können Sie einen Bereich von SPIs im ESP-Header von
IPSec-Paketen abgleichen. Um sie als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``hashlimit'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_HASHLIMIT [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq hashlimit\grqq{}-Übereinstimmung hinzu. Im Gegensatz zu
\glqq limit\grqq{} erstellt diese Über"-ein"-stim"-mung dynamisch eine Hash-Tabelle von
Limit-Buckets, die auf Ihrer Auswahl von Quell-/"-Ziel"-adressen und/oder Ports basiert.
Sie ermöglicht es Ihnen, Richtlinien wie
\glqq 10kpps für eine bestimmte Zieladresse\grqq{} oder \glqq 500pps von einer
bestimmten Quelladresse\grqq{} mit einer einzigen Regel auszudrücken.

\subsubparagraph{``helper'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_HASHLIMIT [=m] \textbf{[M]}\\*
Helper Matching ermöglicht es Ihnen, Pakete in dynamischen Verbindungen, die von einem
conntrack-Helper verfolgt werden, anzupassen, z.~B. nf\_conntrack\_ftp\\
Um es als Modul zu kompilieren, wählen Sie hier M.  Wenn Sie unsicher sind, sagen Sie Y.

\subsubparagraph{``hl'' hoplimit/TTL match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_HL [=m] \textbf{[M]}\\*
Mit dem HL-Matching können Sie Pakete basierend auf dem Hoplimit im IPv6-Header oder dem
Time-to-Live-Feld im IPv4-Header des Pakets abgleichen.

\subsubparagraph{``ipcomp'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_IPCOMP [=m] \textbf{[M]}\\*
Mit dieser Match-Erweiterung können Sie einen Bereich von CPIs (16 Bits) im IPComp"=Header
von IPSec"=Paketen abgleichen.
Um es als Modul zu kompilieren, wählen Sie hier M.  Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``iprange'' address range match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_IPRANGE [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq iprange\grqq{}-Übereinstimmung hinzu, die es Ihnen ermöglicht,
eine Übereinstimmung auf der Grundlage eines IP-Adressbereichs zu erzielen.
(Normalerweise passt iptables nur auf einzelne Adressen mit einer optionalen Maske.)
Wenn Sie unsicher sind, sagen Sie M.

\subsubparagraph{``ipvs'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_IPVS [=m] \textbf{[M]}\\*
Mit dieser Option können Sie die IPVS-Eigenschaften eines Pakets abgleichen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``l2tp'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_L2TP [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq L2TP\grqq{}-Übereinstimmung hinzu, die es Ihnen ermöglicht,
die Header"=Felder des L2TP"=Protokolls abzugleichen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``length'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_LENGTH [=m] \textbf{[M]}\\*
Mit dieser Option können Sie die Länge eines Pakets mit einem bestimmten Wert oder einer
Reihe von Werten vergleichen.
Um es als Modul zu kompilieren, wählen Sie hier M.  Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``limit'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_LIMIT [=m] \textbf{[M]}\\*
Mit dem Limit-Matching können Sie die Rate kontrollieren, mit der eine Regel abgeglichen
werden kann: Dies ist vor allem in Kombination mit dem LOG-Target (\glqq LOG-Target-Unterstützung\grqq{},
unten) und zur Vermeidung einiger Denial-of-Service-Angriffe nützlich.
Um es als Modul zu kompilieren, wählen Sie hier M.  Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``mac'' address match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_MAC [=m] \textbf{[M]}\\*
Mit dem MAC-Abgleich können Sie Pakete auf der Grundlage der Ethernet-Quelladresse des Pakets
abgleichen. Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``mark'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_MARK [=m] \textbf{[M]}\\*
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers (z.~B. bei der Ausführung
von oldconfig). Sie wählt CONFIG\_NETFILTER\_XT\_MARK (kombiniertes Mark/MARK-Modul).

\subsubparagraph{``multiport'' Multiple port match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_MULTIPORT [=m] \textbf{[M]}\\*
Mit dem Multiport-Matching können Sie TCP- oder UDP-Pakete auf der Grundlage einer Reihe von Quell-
oder Zielports abgleichen: Normalerweise kann eine Regel nur einen einzigen Bereich von Ports
abgleichen. Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``nfacct'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_NFACCT [=m] \textbf{[M]}\\*
Mit dieser Option können Sie die erweiterte Buchhaltung über nfnetlink\_acct verwenden. Um es als
Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``osf'' Passive OS fingerprint match}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_OSF [=m] \textbf{[M]}\\*
Mit dieser Option wird das Modul Passive OS Fingerprinting ausgewählt, das einen passiven Abgleich
des entfernten Betriebssystems durch die Analyse eingehender TCP SYN-Pakete ermöglicht. Die Regeln
und die Ladesoftware können von der Website \url{http://www.ioremap.net/projects/osf}
heruntergeladen werden.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``owner'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_OWNER [=m] \textbf{[M]}\\*
Mit dem Socket-Eigentümer-Abgleich können Sie lokal erzeugte Pakete danach abgleichen, wer den
Socket erstellt hat: der Benutzer oder die Gruppe. Es ist auch möglich, zu prüfen, ob ein Socket
tatsächlich existiert.

\subsubparagraph{IPSEC ``policy'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_POLICY [=m] \textbf{[M]}\\*
Der Richtlinienabgleich ermöglicht es Ihnen, Pakete auf der Grundlage der IPsec-Richtlinie
abzugleichen, die bei der Entkapselung verwendet wurde bzw. bei der Einkapselung verwendet
werden wird.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``physdev'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_PHYSDEV [=m] \textbf{[M]}\\*
Der Physdev-Paketabgleich gleicht die physischen Bridge-Ports ab, an denen das IP-Paket angekommen
ist oder die es verlassen wird. Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``pkttype'' packet type match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_PKTTYPE [=m] \textbf{[M]}\\*
Der Pakettyp-Abgleich ermöglicht es Ihnen, ein Paket anhand seiner \glqq Klasse\grqq{} abzugleichen,
z.~B. BROADCAST, MULTICAST, ...\\
Typische Verwendung:\\[.5em]
\texttt{iptables -A INPUT -m pkttype --pkt-type broadcast -j LOG}\\[.5em]
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``quota'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_QUOTA [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq quota\grqq{}-Übereinstimmung hinzu, die eine Übereinstimmung mit
einem Byte-Zähler ermöglicht. Wenn Sie es als Modul kompilieren wollen, sagen Sie hier M und
lesen Sie\\
$<$file:Documentation/kbuild/modules.rst$>$. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``rateest'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_RATEEST [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq Rateest\grqq{}-Übereinstimmung hinzu, die eine Übereinstimmung mit
der durch das RATEEST-Ziel geschätzten Rate ermöglicht.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``realm'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_REALM [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq realm\grqq{}-Übereinstimmung hinzu, die es Ihnen erlaubt, den
Realm-Schlüssel aus dem Routing-Subsystem innerhalb von iptables zu verwenden. Diese
Übereinstimmung ähnelt ziemlich genau der Option CONFIG\_NET\_CLS\_ROUTE4 in tc world.
Wenn Du es als Modul kompilieren willst, sage hier M und lies
$<$file:Documentation/kbuild/modules.rst$>$. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``recent'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_RECENT [=m] \textbf{[M]}\\*
Dieser Abgleich wird verwendet, um eine oder mehrere Listen mit kürzlich verwendeten Adressen
zu erstellen und dann einen Abgleich mit dieser Liste bzw. diesen Listen durchzuführen.
Kurze Optionen sind verfügbar, indem man \texttt{iptables -m recent -h} verwendet.
Offizielle Website: \url{http://snowman.net/projects/ipt_recent/}

\subsubparagraph{``sctp'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_SCTP [=m] \textbf{[M]}\\*
Wenn diese Option aktiviert ist, können Sie die \glqq sctp\grqq{}-Übereinstimmung verwenden,
um auf SCTP"=Quell\mbox{-/}Zielports und SCTP"=Chunk"=Typen abzustimmen.
Wenn Sie es als Modul kompilieren wollen, sagen Sie hier M und
lesen Sie $<$file:Documentation/kbuild/modules.rst$>$.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``socket'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_SOCKET [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq Socket\grqq{}-Übereinstimmung hinzu, die verwendet werden kann,
um Pakete zu finden, für die ein TCP- oder UDP-Socket-Lookup einen gültigen Socket findet.
Sie kann in Kombination mit dem MARK-Ziel und dem Policy-Routing verwendet werden, um voll
funktionsfähige, nicht ortsgebundene Sockets zu implementieren.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``state'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_STATE [=m] \textbf{[M]}\\*
Mit dem Verbindungsstatusabgleich können Sie Pakete auf der Grundlage ihrer Beziehung
zu einer verfolgten Verbindung (d.~h. früheren Paketen) abgleichen. Dies ist ein
leistungsfähiges Werkzeug zur Klassifizierung von Paketen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``statistic'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_STATISTIC [=m] \textbf{[M]}\\*
Diese Option fügt einen \glqq statistischen\grqq{} Abgleich hinzu, der es ermöglicht,
Pakete periodisch oder zufällig mit einem bestimmten Prozentsatz abzugleichen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``string'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_STRING [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq String\grqq{}-Übereinstimmung hinzu, die es Ihnen ermöglicht,
nach Muster"-über"-ein"-stim"-mungen in Paketen zu suchen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``tcpmss'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_TCPMSS [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq tcpmss\grqq{}-Übereinstimmung hinzu, die es Ihnen ermöglicht,
den MSS-Wert von TCP SYN-Paketen zu untersuchen, der die maximale Paketgröße für diese
Verbindung kontrolliert.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``time'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_TIME [=m] \textbf{[M]}\\*
Diese Option fügt eine \glqq Zeit\grqq{}-Übereinstimmung hinzu, die es Ihnen ermöglicht,
eine Übereinstimmung auf der Grundlage der Ankunftszeit des Pakets
(auf dem Rechner, auf dem der Netfilter läuft) oder der Abfahrtszeit/des Abfahrtsdatums
(für lokal erzeugte Pakete) zu erzielen. Wenn Sie hier Y für Ja sagen, versuchen Sie
\texttt{iptables -m time --help} um weitere Informationen zu erhalten.
Wenn Sie es als Modul kompilieren wollen, sagen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``u32'' match support}$~$\\
CONFIG\_NETFILTER\_XT\_MATCH\_U32 [=m] \textbf{[M]}\\*
u32 ermöglicht es Ihnen, Mengen von bis zu 4 Bytes aus einem Paket zu extrahieren, sie mit
bestimmten Masken mit UND zu verknüpfen, sie um bestimmte Beträge zu verschieben und zu prüfen,
ob die Ergebnisse in einem der angegebenen Bereiche liegen.
Die Angabe, was extrahiert werden soll, ist allgemein genug, um Header mit im Paket
gespeicherten Längen, wie z.~B. IP- oder TCP-Header-Längen, zu überspringen.
Details und Beispiele sind im Quelltext des Kernelmoduls zu finden.

\paragraph{IP set support} \texorpdfstring{$\rightarrow$}{->}$~$\\
CONFIG\_IP\_SET [=m] \textbf{[M]}\\*
Diese Option erweitert den Kernel um die Unterstützung von IP-Sets. Um die Sets zu definieren
und zu verwenden, benötigen Sie das Userspace-Dienstprogramm ipset(8). Sie können die Sets in
netfilter über die \glqq set\grqq{}-Übereinstimmung und das \glqq SET\grqq{}-Ziel verwenden.
Um es als Modul zu kompilieren, wählen Sie hier M.  Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Maximum number of IP sets}$~$\\
CONFIG\_IP\_SET\_MAX [=256] \textbf{[256]}\\
Sie können hier den Standardwert für die maximale Anzahl von IP-Sets für den Kernel festlegen.
Der Wert kann durch den Modulparameter \glqq max\_sets\grqq{} des Moduls \glqq ip\_set\grqq{}
überschrieben werden.\\[.5em]
Symbol: IP\_SET\_MAX [=256]\\
Type : Ganzzahl (integer)\\
Bereich: [2 65534]

\subparagraph{bitmap:ip set support}$~$\\
CONFIG\_IP\_SET\_BITMAP\_IP [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs bitmap:ip set hinzu, mit dem man IPv4-Adressen
(oder Netzwerkadressen) aus einem Bereich speichern kann.\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{bitmap:ip,mac set support}$~$\\
CONFIG\_IP\_SET\_BITMAP\_IPMAC [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs bitmap:ip,mac set hinzu, mit dem man Paare
von IPv4-Adressen und (Quell-)MAC-Adressen aus einem Bereich speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{bitmap:port set support}$~$\\
CONFIG\_IP\_SET\_BITMAP\_PORT [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs bitmap:port set hinzu, mit dem man
TCP/UDP"=Portnummern aus einem Bereich speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:ip set support}$~$\\
CONFIG\_IP\_SET\_HASH\_IP [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:ip set hinzu, mit dem man beliebige
IPv4- oder IPv6-Adressen (oder Netzwerkadressen) in einem Set speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:ip,mark set support}$~$\\
CONFIG\_IP\_SET\_HASH\_IPMARK [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:ip,mark set hinzu, mit dem man
IPv4/IPv6-Adress- und Markenpaare speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:ip,port set support}$~$\\
CONFIG\_IP\_SET\_HASH\_IPPORT [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:ip,port set hinzu, mit dem man
IPv4/IPv6-Adressen und Protokoll/Port-Paare speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:ip,port,ip set support}$~$\\
CONFIG\_IP\_SET\_HASH\_IPPORTIP [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:ip,port,ip set hinzu, mit dem man
IPv4/IPv6-Adress-, Protokoll/Port- und IPv4/IPv6-Adress-Tripel in einem Set speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:ip,port,net set support}$~$\\
CONFIG\_IP\_SET\_HASH\_IPPORTNET [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:ip,port,net hinzu, mit dem man
IPv4/IPv6"=Adress-, Protokoll/Port- und IPv4/IPv6"=Netzwerkadressen/Präfix"=Tripel in
einem Set speichern kann.\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:ip,mac set support}$~$\\
CONFIG\_IP\_SET\_HASH\_IPMAC [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:ip,mac set hinzu, mit dem man Paare
von IPv4/IPv6-Adressen und MAC (Ethernet-Adresse) in einem Set speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:mac set support}$~$\\
CONFIG\_IP\_SET\_HASH\_MAC [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:mac set hinzu, mit dem man
MAC"=Elemente (Ethernet"=Adressen) in einem Set speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:net,port,net set support}$~$\\
CONFIG\_IP\_SET\_HASH\_NETPORTNET [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:net,port,net set hinzu, mit dem man
zwei IPv4/IPv6-Subnetze und ein Protokoll/Port in einem Set speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.


\subparagraph{hash:net set support}$~$\\
CONFIG\_IP\_SET\_HASH\_NET [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:net set hinzu, mit dem man
IPv4/IPv6"=Netzwerkadressen/Präfixe in einem Set speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:net,net set support}$~$\\
CONFIG\_IP\_SET\_HASH\_NETNET [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:net,net set hinzu, mit dem man
IPv4/IPv6"=Netzwerkadressen/Präfixpaare in einem Set speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:net,port set support}$~$\\
CONFIG\_IP\_SET\_HASH\_NETPORT [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:net,port set hinzu, mit dem
man IPv4/IPv6"=Netzwerkadressen/Präfix und Protokoll/Port"=Paare als Elemente in einem
Set speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{hash:net,iface set support}$~$\\
CONFIG\_IP\_SET\_HASH\_NETIFACE [=m] \textbf{[M]}\\
Diese Option fügt die Unterstützung des Typs hash:net,port set hinzu, mit dem man
IPv4/IPv6"=Netzwerkadressen/Präfix und Schnittstellennamenpaare als Elemente in
einem Set speichern kann.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{list:set set support}$~$\\
CONFIG\_IP\_SET\_LIST\_SET [=m] \textbf{[M]}\\
Mit dieser Option wird die Unterstützung des Typs list:set hinzugefügt. In dieser Art
von Set kann man den Namen anderer Sets speichern und es bildet eine geordnete
Vereinigung der Mitglieds"=Sets.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N. 

\paragraph{IP virtual server support \texorpdfstring{$\rightarrow$}{->}}$~$\\
CONFIG\_IP\_VS [=m] \textbf{[M]}\\
Mit der Unterstützung von IP Virtual Server können Sie einen hochleistungsfähigen virtuellen
Server auf der Grundlage eines Clusters von zwei oder mehr realen Servern erstellen. Diese
Option muss für mindestens einen der Computer im Cluster aktiviert werden, der die eingehenden
Verbindungen zu einer einzelnen IP-Adresse abfängt und sie an reale Server weiterleitet.\\
Es sind drei Techniken zur Verteilung von Anfragen implementiert: virtueller Server über NAT,
virtueller Server über Tunneling und virtueller Server über direktes Routing.
Mit Hilfe der verschiedenen Planungs"-algorithmen kann ausgewählt werden, zu welchem Server die
Verbindung geleitet wird, so dass ein Lastausgleich zwischen den Servern erreicht werden kann.
Weitere Informationen und das Verwaltungsprogramm finden Sie unter der folgenden URL:
\url{http://www.linuxvirtualserver.org/}.\\
Wenn Sie es im Kernel kompilieren wollen, geben Sie Y an. Um es als Modul zu kompilieren,
wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IPv6 support for IPVS}$~$\\
CONFIG\_IP\_VS\_IPV6 [=y] \textbf{[Y]}\\
Hinzufügen von IPv6-Unterstützung zu IPVS.
Sagen Sie Y, wenn Sie unsicher sind.

\subparagraph{IP virtual server debugging}$~$\\
CONFIG\_IP\_VS\_DEBUG [=n] \textbf{[N]}\\
Geben Sie hier Y ein, wenn Sie zusätzliche Meldungen erhalten möchten, die bei der Fehlersuche
im Code des virtuellen IP"=Servers nützlich sind. Sie können die Debug"=Ebene
in /proc/sys/net/ipv4/vs/debug\_level ändern.

\subparagraph{IPVS connection table size (the Nth power of 2)}$~$\\
CONFIG\_IP\_VS\_TAB\_BITS [=15] \textbf{[15]}\\
\textit{Größe der IPVS-Verbindungstabelle (die n-te Potenz von 2)}\\
Die IPVS-Verbindungs-Hashtabelle verwendet das Verkettungsschema, um Hash-Kollisionen zu behandeln.
Durch die Verwendung einer großen IPVS"=Verbindungs"=Hashtabelle werden Konflikte bei
Hunderttausenden von Verbindungen in der Hashtabelle erheblich reduziert.\\
Beachten Sie, dass die Tabellengröße eine Potenz von 2 sein muss. Die Tabellengröße ist der
Wert von 2~hoch der von Ihnen eingegebenen Zahl. Die zu wählende Zahl liegt zwischen 8 und 27
für 64BIT (sonst 20), die Standardzahl ist 12, was eine Tabellengröße von 4096 bedeutet.
Geben Sie die Zahl nicht zu klein ein, sonst verlieren Sie Leistung. Sie können die
Tabellengröße selbst anpassen, je nach Ihrer virtuellen Serveranwendung. Es ist gut, die
Tabellengröße nicht viel kleiner als die Anzahl der Verbindungen pro Sekunde, multipliziert
mit der durchschnittlichen Dauer der Verbindung in der Tabelle, festzulegen.
Zum Beispiel, Ihr virtueller Server bekommt 200~Verbindungen pro Sekunde, die Verbindung dauert
im Durchschnitt 200~Sekunden in der Verbindungstabelle, die Tabellengröße sollte nicht viel
kleiner als 200x200 sein, es ist gut, die Tabellengröße 32768 (2**15) zu setzen.
Ein weiterer Hinweis: Jede Verbindung belegt effektiv 128~Bytes und jeder Hash-Eintrag 8~Bytes,
so dass Sie abschätzen können, wie viel Speicher für Ihre Box benötigt wird.\\
Sie können diese Zahl überschreiben, indem Sie den Modulparameter
conn\_tab\_bits setzen oder indem Sie \texttt{ip\_vs.conn\_tab\_bits=?} an die
Kernel"=Befehlszeile anhängen, wenn IP VS integriert kompiliert wurde.
Symbol: IP\_VS\_TAB\_BITS [=15]\\
Typ: Ganzzahl (integer)\\
Bereich (range): [8 27]

\subparagraph*{*** IPVS transport protocol load balancing support ***}$~$\\
\textit{(*** Unterstützung des IPVS-Transportprotokolls für den Lastausgleich ***)}

\subparagraph{TCP load balancing support}$~$\\
CONFIG\_IP\_VS\_PROTO\_TCP [=y] \textbf{[Y]}\\
Diese Option aktiviert die Unterstützung des TCP-Transportprotokolls für den Lastausgleich.
Sagen Sie Y, wenn Sie unsicher sind.

\subparagraph{UDP load balancing support}$~$\\
CONFIG\_IP\_VS\_PROTO\_UDP [=y] \textbf{[Y]}\\
Diese Option aktiviert die Unterstützung des UDP-Transportprotokolls für den Lastausgleich.
Sagen Sie Y, wenn Sie unsicher sind.

\subparagraph{ESP load balancing support}$~$\\
CONFIG\_IP\_VS\_PROTO\_ESP [=y] \textbf{[Y]}\\
Diese Option aktiviert die Unterstützung des Transportprotokolls ESP (Encapsulation Security
Payload) für den Lastausgleich. Sagen Sie Y, wenn Sie unsicher sind.

\subparagraph{AH load balancing support}$~$\\
CONFIG\_IP\_VS\_PROTO\_AH [=y] \textbf{[Y]}\\
Diese Option aktiviert die Unterstützung für den Lastausgleich des AH
(Authentication Header)"=Transportprotokolls. Sagen Sie Y, wenn Sie unsicher sind.

\subparagraph{SCTP load balancing support}$~$\\
CONFIG\_IP\_VS\_PROTO\_SCTP [=y] \textbf{[Y]}\\
Diese Option aktiviert die Unterstützung des SCTP-Transportprotokolls für den Lastausgleich.
Sagen Sie Y, wenn Sie unsicher sind.

\subparagraph*{*** IPVS scheduler ***}$~$\\
\textit{(*** IPVS-Scheduler/Zeitplaner ***)}

\subparagraph{round-robin scheduling}$~$\\
CONFIG\_IP\_VS\_RR [=m] \textbf{[M]}\\
Der Round-Robin-Scheduling-Algorithmus leitet die Netzverbindungen einfach nach dem
Rotationsprinzip an verschiedene reale Server weiter.
Wenn Sie ihn im Kernel kompilieren wollen, sagen Sie Y.
Um ihn als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{weighted round-robin scheduling}$~$\\
CONFIG\_IP\_VS\_WRR [=m] \textbf{[M]}\\
Der gewichtete Round-Robin-Planungsalgorithmus leitet Netzverbindungen auf der Grundlage von
Server"-gewichten in einem Round-Robin-Verfahren an verschiedene reale Server weiter.
Server mit höherer Gewichtung erhalten neue Verbindungen zuerst als solche mit geringerer
Gewichtung, und Server mit höherer Gewichtung erhalten mehr Verbindungen als solche mit
geringerer Gewichtung und Server mit gleicher Gewichtung erhalten gleiche Verbindungen.
Wenn Sie es im Kernel kompilieren wollen, sagen Sie Y.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{least-connection scheduling}$~$\\
CONFIG\_IP\_VS\_LC [=m] \textbf{[M]}\\
Der Least-Connection-Scheduling-Algorithmus leitet Netzwerkverbindungen an den Server
mit der geringsten Anzahl aktiver Verbindungen weiter.
Wenn Sie ihn im Kernel kompilieren wollen, sagen Sie Y.
Um ihn als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{weighted least-connection scheduling}$~$\\
CONFIG\_IP\_VS\_WLC [=m] \textbf{[M]}\\
Der gewichtete Least-Connection-Scheduling-Algorithmus leitet die Netzwerkverbindungen zu
dem Server mit den wenigsten aktiven Verbindungen, normalisiert durch das Servergewicht.
Wenn Sie ihn im Kernel kompilieren wollen, sagen Sie Y. Um ihn als Modul zu kompilieren,
wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{weighted failover scheduling}$~$\\
CONFIG\_IP\_VS\_FO [=m] \textbf{[M]}\\
Der gewichtete Failover-Planungsalgorithmus leitet die Netzwerkverbindungen an den Server
mit der höchsten Gewichtung, der gerade verfügbar ist. Wenn Sie ihn im Kernel kompilieren
wollen, geben Sie Y an. Um ihn als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{weighted overflow scheduling}$~$\\
CONFIG\_IP\_VS\_OVF [=m] \textbf{[M]}\\
Der gewichtete Überlaufplanungsalgorithmus leitet die Netzwerkverbindungen zu dem Server
mit dem höchsten Gewicht, der gerade verfügbar ist, und geht zum nächsten über, wenn die
aktiven Verbindungen das Gewicht des Knotens überschreiten.
Wenn Sie ihn im Kernel kompilieren wollen, sagen Sie Y. Um ihn als Modul zu kompilieren,
wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{locality-based least-connection scheduling}$~$\\
CONFIG\_IP\_VS\_LBLC [=m] \textbf{[M]}\\
Der ortsbezogene Planungsalgorithmus für die kleinste Verbindung ist für den
IP-Lastausgleich bestimmt. Er wird normalerweise in Cache-Clustern verwendet.
Dieser Algorithmus leitet Pakete, die für eine IP-Adresse bestimmt sind, in der
Regel an ihren Server weiter, wenn der Server aktiv und ausgelastet ist. Wenn
der Server überlastet ist (die Anzahl seiner aktiven Verbindungen ist größer als
sein Gewicht) und es einen Server mit halber Auslastung gibt, wird dieser
IP"=Adresse der gewichtete Server mit der geringsten Verbindung zugewiesen.
Wenn Sie ihn im Kernel kompilieren wollen, sagen Sie Y. Um ihn als Modul zu
kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{locality-based least-connection with replication scheduling}$~$\\
CONFIG\_IP\_VS\_LBLCR [=m] \textbf{[M]}\\
Der ortsbezogene Algorithmus zur Planung der kleinsten Verbindung mit Replikation ist
ebenfalls für den IP"=Lastausgleich bestimmt. Er wird normalerweise in Cache"=Clustern
verwendet. Er unterscheidet sich von der LBLC"=Planung wie folgt: Der Lastverteiler
unterhält Zuordnungen von einem Ziel zu einer Gruppe von Serverknoten, die das Ziel
bedienen können. Anfragen für ein Ziel werden dem Knoten mit der geringsten Verbindung
in der Servergruppe des Ziels zugewiesen. Wenn alle Knoten in der Servergruppe überlastet
sind, wird ein Knoten mit der geringsten Verbindung im Cluster ausgewählt und der
Servergruppe für das Ziel hinzugefügt. Wenn der Serversatz für die angegebene Zeit nicht
geändert wurde, wird der am stärksten belastete Knoten aus dem Serversatz entfernt, um
ein hohes Maß an Replikation zu vermeiden.
Wenn Sie es im Kernel kompilieren wollen, geben Sie Y an. Um es als Modul zu kompilieren,
wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{destination hashing scheduling}$~$\\
CONFIG\_IP\_VS\_DH [=m] \textbf{[M]}\\
Der Ziel-Hash-Scheduling-Algorithmus weist den Servern Netzwerkverbindungen zu, indem er
eine statisch zugewiesene Hash-Tabelle nach ihren Ziel-IP-Adressen durchsucht.
Wenn Sie ihn im Kernel kompilieren wollen, geben Sie Y an. Um ihn als Modul zu kompilieren,
wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{source hashing scheduling}$~$\\
CONFIG\_IP\_VS\_SH [=m] \textbf{[M]}\\
Der Source-Hashing-Scheduling-Algorithmus weist den Servern Netzwerkverbindungen zu, indem
er eine statisch zugewiesene Hash-Tabelle nach ihren Quell-IP-Adressen durchsucht.
Wenn Sie ihn im Kernel kompilieren wollen, geben Sie Y an. Um ihn als Modul zu kompilieren,
wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{maglev hashing scheduling}$~$\\
CONFIG\_IP\_VS\_MH [=m] \textbf{[M]}\\
Der Maglev Consistent Hashing Scheduling Algorithmus stellt den Maglev Hashing Algorithmus
von Google als IPVS Scheduler zur Verfügung. Er weist den Servern Netzwerkverbindungen zu,
indem er eine statisch zugewiesene spezielle Hash"=Tabelle, die so genannte Lookup"=Tabelle,
nachschlägt. Der Maglev"=Hash"=Algorithmus weist jedem Ziel eine Präferenzliste aller Positionen
der Nachschlagetabelle zu.\\
Durch diesen Vorgang gibt das Maglev-Hashing jedem der Ziele einen nahezu gleichen Anteil an
der Nach"-schlage"-tabelle und sorgt für eine minimale Störung durch die Verwendung der
Nachschlagetabelle. Wenn sich die Menge der Ziele ändert, wird eine Verbindung wahrscheinlich
an dasselbe Ziel wie zuvor gesendet.\\
Wenn Sie es im Kernel kompilieren wollen, sagen Sie Y.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{shortest expected delay scheduling}$~$\\
CONFIG\_IP\_VS\_SED [=m] \textbf{[M]}\\
Der Scheduling-Algorithmus mit der kürzesten erwarteten Verzögerung weist die Netzverbindungen
dem Server mit der kürzesten erwarteten Verzögerung zu. Die erwartete Verzögerung, die der
Auftrag erfährt, ist $(C_i + 1) / U_i$, wenn er an den i-ten Server gesendet wird, wobei $C_i$
die Anzahl der Verbindungen auf dem i-ten Server und $U_i$ die feste Dienstrate (Gewicht) des
i-ten Servers ist.\\
Wenn Sie es im Kernel kompilieren wollen, sagen Sie Y. Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{never queue scheduling}$~$\\
CONFIG\_IP\_VS\_NQ [=m] \textbf{[M]}\\
Der Algorithmus für die Planung der Warteschlange \glqq Never Queue\grqq{} basiert auf einem Modell mit
zwei Geschwindigkeiten. Wenn ein ungenutzter Server verfügbar ist, wird der Auftrag an den
ungenutzten Server geschickt, anstatt auf einen schnellen Server zu warten. Wenn kein freier
Server verfügbar ist, wird der Auftrag an den Server geschickt, bei dem die erwartete Verzögerung
am geringsten ist (Scheduling"=Algorithmus mit der kürzesten erwarteten Verzögerung).\\
Wenn Sie ihn im Kernel kompilieren wollen, geben Sie Y an.
Um ihn als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{weighted random twos choice least-connection scheduling}$~$\\
CONFIG\_IP\_VS\_TWOS [=m] \textbf{[M]}\\
Der Algorithmus für die gewichtete zufällige Zweierauswahl der geringsten Verbindungen wählt zwei zufällige
reale Server aus und leitet die Netzverbindungen zu dem Server mit den wenigsten aktiven Verbindungen,
normiert durch das Servergewicht.\\
Wenn Sie ihn im Kernel kompilieren wollen, sagen Sie Y.
Um ihn als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph*{*** IPVS SH scheduler ***}$~$\\
\textit{(*** IPVS-SH-Scheduler/Zeitplaner ***)}

\subparagraph{IPVS source hashing table size (the Nth power of 2)}$~$\\
CONFIG\_IP\_VS\_SH\_TAB\_BITS [=8] \textbf{[8]}\\
Der Quell-Hashing-Scheduler ordnet Quell-IPs den in einer Hash-Tabelle gespeicherten Zielen zu.
Diese Tabelle wird für jedes Ziel so lange abgearbeitet, bis alle Plätze in der Tabelle gefüllt sind.
Wenn Gewichte verwendet werden, damit die Ziele mehr Verbindungen erhalten können, wird die Tabelle
proportional zu den angegebenen Gewichten gekachelt. Die Tabelle muss groß genug sein, um alle Ziele,
multipliziert mit ihren jeweiligen Gewichten, effektiv aufzunehmen.
Symbol: IP\_VS\_SH\_TAB\_BITS [=8]\\
Typ: Ganzzahl (integer)\\
Bereich: [4 20]

\subparagraph*{*** IPVS MH scheduler ***}$~$\\
\textit{(*** IPVS-MH-Scheduler/Zeitplaner ***)}

\subparagraph{IPVS maglev hashing table index of size (the prime numbers)}$~$\\
CONFIG\_IP\_VS\_MH\_TAB\_INDEX [=12] \textbf{[12]}\\
Der Maglev-Hashing-Scheduler ordnet Quell-IPs Zielen zu, die in einer Hash-Tabelle gespeichert sind.
Diese Tabelle wird durch eine Präferenzliste der Positionen jedem Ziel zugewiesen, bis alle Slots in
der Tabelle gefüllt sind. Der Index bestimmt die Primzahl für die Größe der Tabelle: 251, 509, 1021,
2039, 4093, 8191, 16381, 32749, 65521 oder 131071. Bei der Verwendung von Gewichtungen, die es den
Zielen ermöglichen, mehr Verbindungen zu erhalten, wird der Tabelle ein Betrag proportional zu den
angegebenen Gewichtungen zugewiesen. Die Tabelle muss groß genug sein, um alle Ziele, multipliziert
mit ihren jeweiligen Gewichtungen, effektiv aufzunehmen.\\
Symbol: IP\_VS\_MH\_TAB\_INDEX [=12]\\
Typ : Ganzzahl (integer)\\
Bereich : [8 17]

\subparagraph*{*** IPVS application helper ***}$~$\\
\textit{(*** IPVS-Anwendungshilfe ***)}

\subparagraph{FTP protocol helper}$~$\\
CONFIG\_IP\_VS\_FTP [=m] \textbf{[M]}\\
FTP ist ein Protokoll, das IP-Adressen und/oder Portnummern in der Nutzlast überträgt.
Im virtuellen Server über Network Address Translation können die IP-Adresse und die Portnummer
des realen Servers nicht direkt an die Clients in FTP-Verbindungen gesendet werden, so dass
ein FTP-Protokollhelfer erforderlich ist, um die Verbindung zu verfolgen und sie in die des
virtuellen Dienstes zurückzuverwandeln.\\
Wenn Sie es im Kernel kompilieren wollen, sagen Sie Y.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Netfilter connection tracking}$~$\\
CONFIG\_IP\_VS\_NFCT [=y] \textbf{[Y]}\\
Durch die Unterstützung der Netfilter-Verbindungsverfolgung kann der IPVS-Verbindungsstatus
zu Filterzwecken in das Netfilter-Framework exportiert werden.

\subparagraph{SIP persistence engine}$~$\\
CONFIG\_IP\_VS\_PE\_SIP [=m] \textbf{[M]}\\
Persistenz auf Basis der SIP Call-ID zulassen

\paragraph{IP: Netfilter Configuration \texorpdfstring{$\rightarrow$}{->}}$~$\\
\textit{IP: Netzfilter-Konfiguration}

\subparagraph{IPv4 socket lookup support}$~$\\
CONFIG\_NF\_SOCKET\_IPV4 [=m] \textbf{[M]}\\
Diese Option aktiviert die IPv4-Socket-Lookup-Infrastruktur. Dies ist für die
Socket-Übereinstimmung \{ip,nf\}tables erforderlich.

\subparagraph{IPv4 tproxy support}$~$\\
CONFIG\_NF\_TPROXY\_IPV4 [=m] \textbf{[M]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\subparagraph{IPv4 nf\_tables support}$~$\\
CONFIG\_NF\_TABLES\_IPV4 [=y] \textbf{[Y]}\\
Diese Option aktiviert die IPv4-Unterstützung für nf\_tables.

\subsubparagraph{IPv4 nf\_tables packet duplication support}$~$\\
CONFIG\_NFT\_DUP\_IPV4 [=y] \textbf{[Y]}\\
Dieses Modul ermöglicht die Unterstützung der IPv4-Paketduplikation für nf\_tables.

\subsubparagraph{nf\_tables fib / ip route lookup support}$~$\\
CONFIG\_NFT\_FIB\_IPV4 [=m] \textbf{[M]}\\
Dieses Modul ermöglicht IPv4-FIB-Lookups, z.~B. für Reverse Path Filtering.
Es ermöglicht auch die Abfrage der FIB nach dem Routentyp, z.~B. lokal, Unicast,
Multicast oder Blackhole.

\subparagraph{ARP nf\_tables support}$~$\\
CONFIG\_NF\_TABLES\_ARP [=y] \textbf{[Y]}\\
Diese Option aktiviert die ARP-Unterstützung für nf\_tables.

\subparagraph{Netfilter IPv4 packet duplication to alternate destination}$~$\\
CONFIG\_NF\_DUP\_IPV4 [=m] \textbf{[M]}\\
Diese Option aktiviert den nf\_dup\_ipv4"=Kern, der ein IPv4"=Paket dupliziert,
um es an ein anderes Ziel umzuleiten.

\subparagraph{ARP packet logging}$~$\\
CONFIG\_NF\_LOG\_ARP [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers
(z.~B. bei der Ausführung von oldconfig). Sie wählt CONFIG\_NF\_LOG\_SYSLOG aus.

\subparagraph{IPv4 packet logging}$~$\\
CONFIG\_NF\_LOG\_IPV4 [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers
(z.~B. bei der Ausführung von oldconfig). Sie wählt CONFIG\_NF\_LOG\_SYSLOG aus.

\subparagraph{IPv4 packet rejection}$~$\\
CONFIG\_NF\_REJECT\_IPV4 [=m] \textbf{[M]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\subparagraph{Basic SNMP-ALG support}$~$\\
CONFIG\_NF\_NAT\_SNMP\_BASIC [=m] \textbf{[M]}\\
Dieses Modul implementiert ein Application Layer Gateway (ALG) für SNMP"=Payloads.
In Verbindung mit NAT ermöglicht es einem Netzwerkmanagementsystem den Zugang zu
mehreren privaten Netzwerken mit widersprüchlichen Adressen. Dabei werden die IP-Adressen
in den SNMP-Payloads so geändert, dass sie mit der IP-Layer-NAT-Zuordnung übereinstimmen.
Dies ist die \glqq Grundform\grqq{} von SNMP"=ALG, wie in RFC~2962 beschrieben.\\
Um es als Modul zu kompilieren, wählen Sie hier M.  Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{IP tables support (required for filtering/masq/NAT)}$~$\\
CONFIG\_IP\_NF\_IPTABLES [=m] \textbf{[M]}\\
iptables ist ein allgemeines, erweiterbares Framework zur Paketidentifizierung.
Die Subsysteme fuer Paketfilterung und vollstaendiges NAT (Masquerading, Portweiterleitung, etc.)
benutzen dies nun: sage hier Y oder M, wenn Du eines davon benutzen willst.
Um es als Modul zu kompilieren, wähle hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``ah'' match support}$~$\\
CONFIG\_IP\_NF\_MATCH\_AH [=m] \textbf{[M]}\\
Mit dieser Match-Erweiterung können Sie einen Bereich von SPIs im AH-Header von IPSec-Paketen abgleichen.
Um sie als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``ecn'' match support}$~$\\
CONFIG\_IP\_NF\_MATCH\_ECN [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers
(z.~B. bei der Ausführung von oldconfig). Sie wählt CONFIG\_NETFILTER\_XT\_MATCH\_ECN aus.

\subsubparagraph{``rpfilter'' reverse path filter match support}$~$\\
CONFIG\_IP\_NF\_MATCH\_RPFILTER [=m] \textbf{[M]}\\
Mit dieser Option können Sie Pakete abgleichen, deren Antworten über die Schnittstelle hinausgehen würden,
über die das Paket eingegangen ist.
Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N. Das Modul wird \texttt{ipt\_rpfilter} heißen.

\subsubparagraph{``ttl'' match support}$~$\\
CONFIG\_IP\_NF\_MATCH\_TTL [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers
(z.~B. bei der Ausführung von oldconfig). Sie wählt CONFIG\_NETFILTER\_XT\_MATCH\_HL aus.

\subsubparagraph{Packet filtering}$~$\\
CONFIG\_IP\_NF\_FILTER [=m] \textbf{[M]}\\
Paketfilterung definiert eine Tabelle \texttt{filter}, die eine Reihe von Regeln für einfache
Paketfilterung bei der lokalen Eingabe, Weiterleitung und lokalen Ausgabe enthält. Siehe die Manpage
für iptables(8).\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubsubparagraph{REJECT target support}$~$\\
CONFIG\_IP\_NF\_TARGET\_REJECT [=m] \textbf{[M]}\\
Mit dem REJECT-Ziel kann eine Filterregel angeben, dass als Antwort auf ein eingehendes Paket
ein ICMP-Fehler ausgegeben werden soll, anstatt es stillschweigend zu verwerfen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{SYNPROXY target support}$~$\\
CONFIG\_IP\_NF\_TARGET\_SYNPROXY [=m] \textbf{[M]}\\
Das SYNPROXY-Ziel ermöglicht es Ihnen, TCP-Verbindungen abzufangen und sie unter Verwendung von
Syncookies aufzubauen, bevor sie an den Server weitergeleitet werden. Auf diese Weise können Sie
die Verfolgung von Verbindungen und die Nutzung von Serverressourcen bei SYN-Flood-Angriffen vermeiden.\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

%14.1.15.5.10.7
\subsubparagraph{iptables NAT support}$~$\\
CONFIG\_IP\_NF\_NAT [=m] \textbf{[M]}\\
Dies aktiviert die \texttt{nat}-Tabelle in iptables. Dies erlaubt Masquerading, Portweiterleitung und
andere Formen der vollständigen Network Address Port Translation.
Um es als Modul zu kompilieren, wähle hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubsubparagraph{MASQUERADE target support}$~$\\
CONFIG\_IP\_NF\_TARGET\_MASQUERADE [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers
(z.~B. bei der Ausführung von oldconfig). Sie wählt NETFILTER\_XT\_TARGET\_MASQUERADE aus.

\subsubsubparagraph{NETMAP target support}$~$\\
CONFIG\_IP\_NF\_TARGET\_NETMAP [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers (z.~B. bei der Ausführung
von oldconfig). Sie wählt CONFIG\_NETFILTER\_XT\_TARGET\_NETMAP aus.

\subsubsubparagraph{REDIRECT target support}$~$\\
CONFIG\_IP\_NF\_TARGET\_REDIRECT [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers (z.~B. bei der Ausführung
von oldconfig). Sie wählt CONFIG\_NETFILTER\_XT\_TARGET\_REDIRECT aus.

\subsubparagraph{Packet mangling}$~$\\
CONFIG\_IP\_NF\_MANGLE [=m] \textbf{[M]}\\
Diese Option fügt eine \glqq mangle\grqq{}-Tabelle zu iptables hinzu: siehe die Manpage für
iptables(8).
Diese Tabelle wird fuer verschiedene Paketveraenderungen benutzt, die beeinflussen koennen,
wie das Paket weitergeleitet wird.
Um sie als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubsubparagraph{ECN target support}$~$\\
CONFIG\_IP\_NF\_TARGET\_ECN [=m] \textbf{[M]}\\
Diese Option fügt ein \glqq ECN\grqq{}-Ziel hinzu, das in der iptables"=Mangeltabelle verwendet
werden kann.
Sie können dieses Ziel verwenden, um die ECN-Bits aus dem IPv4-Header eines IP-Pakets zu entfernen.
Dies ist besonders nützlich, wenn Sie bestehende ECN-Blackholes im Internet umgehen müssen,
aber die ECN-Unterstützung nicht generell abschalten wollen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubsubparagraph{``TTL'' target support}$~$\\
CONFIG\_IP\_NF\_TARGET\_TTL [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option, die dem Benutzer die Arbeit erleichtert (z.~B. wenn
er oldconfig verwendet). Sie wählt CONFIG\_NETFILTER\_XT\_TARGET\_HL aus.

\subsubparagraph{raw table support (required for NOTRACK/TRACE)}$~$\\
CONFIG\_IP\_NF\_RAW [=m] \textbf{[M]}\\
Diese Option fügt eine "rohe" Tabelle zu iptables hinzu. Diese Tabelle ist die allererste im
Netfilter-Framework und hakt sich bei den PREROUTING- und OUTPUT"=Ketten ein.
Wenn Sie sie als Modul kompilieren wollen, sagen Sie hier M und lesen Sie
$<$file:Documentation/kbuild/modules.rst$>$.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{Security table}$~$\\
CONFIG\_IP\_NF\_SECURITY [=m] \textbf{[M]}\\
Diese Option fügt eine \glqq Security\grqq{}-Tabelle zu iptables hinzu, für die Verwendung
mit der Mandatory Access Control (MAC) Richtlinie.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ARP tables support}$~$\\
CONFIG\_IP\_NF\_ARPTABLES [=m] \textbf{[M]}\\
arptables ist ein allgemeiner, erweiterbarer Rahmen für die Paketidentifizierung. Die
ARP-Paketfilter- und -Manipulations-Subsysteme verwenden es: Sagen Sie hier Y oder M,
wenn Sie eines von beiden verwenden wollen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{ARP packet filtering}$~$\\
CONFIG\_IP\_NF\_ARPFILTER [=m] \textbf{[M]}\\
Die ARP-Paketfilterung definiert eine Tabelle \glqq filter\grqq{}, die eine Reihe von
Regeln für die einfache ARP"=Paketfilterung am lokalen Eingang und am lokalen Ausgang enthält.
Auf einer Bridge können Sie auch Filterregeln für weitergeleitete ARP-Pakete angeben.
Siehe die Manpage für arptables(8).
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N. 

\subsubparagraph{ARP payload mangling}$~$\\
CONFIG\_IP\_NF\_ARP\_MANGLE [=m] \textbf{[M]}\\
Ermöglicht die Änderung der ARP-Paket-Nutzlast: Quell- und Ziel-Hardware- und Netzwerkadressen.

\paragraph{IPv6: Netfilter Configuration \texorpdfstring{$\rightarrow$}{->}}$~$\\
\textit{IPv6: Netzfilter-Konfiguration}

\subparagraph{IPv6 socket lookup support}$~$\\
CONFIG\_NF\_SOCKET\_IPV6 [=m] \textbf{[M]}\\
Diese Option aktiviert die IPv6-Socket-Lookup-Infrastruktur. Dies ist für die
Socket-Übereinstimmung \{ip6,nf\}tables erforderlich.

\subparagraph{IPv6 tproxy support}$~$\\
CONFIG\_NF\_TPROXY\_IPV6 [=m] \textbf{[M]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\subparagraph{IPv6 nf\_tables support}$~$\\
CONFIG\_NF\_TABLES\_IPV6 [=y] \textbf{[Y]}\\
Diese Option aktiviert die IPv6-Unterstützung für nf\_tables.

\subsubparagraph{IPv6 nf\_tables packet duplication support}$~$\\
CONFIG\_NFT\_DUP\_IPV6 [=y] \textbf{[Y]}\\
Dieses Modul ermöglicht die Unterstützung der IPv6-Paketduplikation für nf\_tables.

\subsubparagraph{nf\_tables fib / ipv6 route lookup support}$~$\\
CONFIG\_NFT\_FIB\_IPV6 [=m] \textbf{[M]}\\
Dieses Modul ermöglicht IPv6-FIB-Lookups, z.~B. für Reverse Path Filtering.
Es ermöglicht auch die Abfrage der FIB nach dem Routentyp, z.~B. lokal, Unicast,
Multicast oder Blackhole.

\subparagraph{Netfilter IPv6 packet duplication to alternate destination}$~$\\
CONFIG\_NF\_DUP\_IPV6 [=m] \textbf{[M]}\\
Diese Option aktiviert den nf\_dup\_ipv6"=Kern, der ein IPv6"=Paket dupliziert,
um es an ein anderes Ziel umzuleiten.

\subparagraph{IPv6 packet rejection}$~$\\
CONFIG\_NF\_REJECT\_IPV6 [=m] \textbf{[M]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\subparagraph{IPv6 packet logging}$~$\\
CONFIG\_NF\_LOG\_IPV6 [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers
(z.~B. bei der Ausführung von oldconfig). Sie wählt CONFIG\_NF\_LOG\_SYSLOG aus.

\subparagraph{IP6 tables support (required for filtering)}$~$\\
CONFIG\_IP6\_NF\_IPTABLES [=m] \textbf{[M]}\\
ip6tables ist ein allgemeines, erweiterbares Framework zur Paketidentifizierung.
Derzeit nutzen nur das Paketfilter- und Paketmangling-Subsystem für IPv6 dieses System,
aber die Verbindungsverfolgung wird folgen.
Sagen Sie hier Y oder M, wenn Sie eines dieser Systeme verwenden wollen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``ah'' match support}$~$\\
CONFIG\_IP6\_NF\_MATCH\_AH [=m] \textbf{[M]}\\
Mit diesem Modul kann man AH-Pakete abgleichen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``eui64'' address check}$~$\\
CONFIG\_IP6\_NF\_MATCH\_EUI64 [=m] \textbf{[M]}\\
Dieses Modul führt eine Überprüfung der IPv6-Quelladresse durch und vergleicht die letzten
64~Bits mit der EUI64"=Adresse (die von der MAC"=Adresse geliefert wird)\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``frag'' Fragmentation header match support}$~$\\
CONFIG\_IP6\_NF\_MATCH\_FRAG [=m] \textbf{[M]}\\
Mit dem Fragmentierungsabgleich können Sie Pakete auf der Grundlage des Fragmentierungsheaders
des Pakets abgleichen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``hbh'' hop-by-hop and ``dst'' opts header match support}$~$\\
CONFIG\_IP6\_NF\_MATCH\_OPTS [=m] \textbf{[M]}\\
Dies ermöglicht es, Pakete auf der Grundlage der Hop-by-Hop- und Zieloptions-Header eines
Pakets abzugleichen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``hl'' hoplimit match support}$~$\\
CONFIG\_IP6\_NF\_MATCH\_HL [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers
(z.~B. bei der Ausführung von oldconfig). Sie wählt CONFIG\_NETFILTER\_XT\_MATCH\_HL aus.

\subsubparagraph{``ipv6header'' IPv6 Extension Headers Match}$~$\\
CONFIG\_IP6\_NF\_MATCH\_IPV6HEADER [=m] \textbf{[M]}\\
Dieses Modul ermöglicht es, Pakete auf der Grundlage der ipv6-Erweiterungsheader abzugleichen.

\subsubparagraph{``mh'' match support}$~$\\
CONFIG\_IP6\_NF\_MATCH\_MH [=m] \textbf{[M]}\\
Mit diesem Modul kann man MH-Pakete abgleichen. 

\subsubparagraph{``rpfilter'' reverse path filter match support}$~$\\
CONFIG\_IP6\_NF\_MATCH\_RPFILTER [=m] \textbf{[M]}\\
Mit dieser Option können Sie Pakete abgleichen, deren Antworten über die Schnittstelle
hinausgehen würden, über die das Paket eingegangen ist.
Um es als Modul zu kompilieren, wählen Sie hier M.
Wenn Sie unsicher sind, sagen Sie N. Das Modul wird \texttt{ip6t\_rpfilter} heißen.

\subsubparagraph{``rt'' Routing header match support}$~$\\
CONFIG\_IP6\_NF\_MATCH\_RT [=m] \textbf{[M]}\\
Mit dem rt-Matching können Sie Pakete auf der Grundlage des Routing-Headers des Pakets abgleichen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``srh'' Segment Routing header match support}$~$\\
CONFIG\_IP6\_NF\_MATCH\_SRH [=m] \textbf{[M]}\\
Mit dem srh-Abgleich können Sie Pakete auf der Grundlage des Segment"=Routing"=Headers des
Pakets abgleichen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{``HL'' hoplimit target support}$~$\\
CONFIG\_IP6\_NF\_TARGET\_HL [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option, die dem Benutzer die Arbeit erleichtert
(z.~B. wenn er oldconfig verwendet). Sie wählt CONFIG\_NETFILTER\_XT\_TARGET\_HL.

\subsubparagraph{Packet filtering}$~$\\
CONFIG\_IP6\_NF\_FILTER [=m] \textbf{[M]}\\
Paketfilterung definiert eine Tabelle \texttt{filter}, die eine Reihe von Regeln für einfache
Paketfilterung bei der lokalen Eingabe, Weiterleitung und lokalen Ausgabe enthält. Siehe die Manpage
für iptables(8).\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubsubparagraph{REJECT target support}$~$\\
CONFIG\_IP6\_NF\_TARGET\_REJECT [=m] \textbf{[M]}\\
Mit dem REJECT-Ziel kann eine Filterregel angeben, dass als Antwort auf ein eingehendes Paket
ein ICMPv6"=Fehler ausgegeben werden soll, anstatt es stillschweigend zu verwerfen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{SYNPROXY target support}$~$\\
CONFIG\_IP6\_NF\_TARGET\_SYNPROXY [=m] \textbf{[M]}\\
Das SYNPROXY-Ziel ermöglicht es Ihnen, TCP-Verbindungen abzufangen und sie unter Verwendung von
Syncookies aufzubauen, bevor sie an den Server weitergeleitet werden. Auf diese Weise können Sie
die Verfolgung von Verbindungen und die Nutzung von Serverressourcen bei SYN-Flood-Angriffen vermeiden.\\
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{Packet mangling}$~$\\
CONFIG\_IP6\_NF\_MANGLE [=m] \textbf{[M]}\\
Diese Option fügt eine \glqq mangle\grqq{}-Tabelle zu iptables hinzu: siehe die Manpage für
iptables(8).
Diese Tabelle wird fuer verschiedene Paketveraenderungen benutzt, die beeinflussen koennen,
wie das Paket weitergeleitet wird.
Um sie als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{raw table support (required for TRACE)}$~$\\
CONFIG\_IP6\_NF\_RAW [=m] \textbf{[M]}\\
Diese Option fügt eine "rohe" Tabelle zu ip6tables hinzu. Diese Tabelle ist die allererste im
Netfilter-Framework und hakt sich bei den PREROUTING- und OUTPUT"=Ketten ein.
Wenn Sie sie als Modul kompilieren wollen, sagen Sie hier M und lesen Sie
$<$file:Documentation/kbuild/modules.rst$>$.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{Security table}$~$\\
CONFIG\_IP6\_NF\_SECURITY [=m] \textbf{[M]}\\
Diese Option fügt eine \glqq Security\grqq{}-Tabelle zu iptables hinzu, für die Verwendung
mit der Mandatory Access Control (MAC) Richtlinie.
Wenn Sie unsicher sind, sagen Sie N.

\subsubparagraph{ip6tables NAT support}$~$\\
CONFIG\_IP6\_NF\_NAT [=m] \textbf{[M]}\\
Dies aktiviert die \texttt{nat}-Tabelle in ip6tables. Dies ermöglicht Masquerading,
Portweiterleitung und andere Formen der vollständigen Network Address Port Translation.
Um es als Modul zu kompilieren, wähle hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubsubparagraph{MASQUERADE target support}$~$\\
CONFIG\_IP6\_NF\_TARGET\_MASQUERADE [=m] \textbf{[M]}\\
Dies ist eine rückwärtskompatible Option zur Bequemlichkeit des Benutzers
(z.~B. bei der Ausführung von oldconfig). Sie wählt NETFILTER\_XT\_TARGET\_MASQUERADE aus.

\subsubsubparagraph{NPT (Network Prefix translation) target support}$~$\\
CONFIG\_IP6\_NF\_TARGET\_NPT [=m] \textbf{[M]}\\
Diese Option fügt die Ziele \texttt{SNPT} und \texttt{DNPT} hinzu,
die eine zustandslose IPv6-zu-IPv6"=Netzwerk"-präfix"-übersetzung gemäß RFC~6296 durchführen.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Ethernet Bridge nf\_tables support \texorpdfstring{$\rightarrow$}{->}}$~$\\
CONFIG\_NF\_TABLES\_BRIDGE [=m] \textbf{[M]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\paragraph{Netfilter nf\_table bridge meta support}$~$\\
CONFIG\_NFT\_BRIDGE\_META [=m] \textbf{[M]}\\
Hinzufügen der Unterstützung für den Meta-Schlüssel der Bridge.

\paragraph{Netfilter nf\_table bridge reject support}$~$\\
CONFIG\_NFT\_BRIDGE\_REJECT [=m] \textbf{[M]}\\
Hinzufügen der Unterstützung für das Zurückweisen von Paketen.

\paragraph{IPv4/IPV6 bridge connection tracking support}$~$\\
CONFIG\_NF\_CONNTRACK\_BRIDGE [=m] \textbf{[M]}\\
Die Verbindungsverfolgung zeichnet auf, welche Pakete Ihren Rechner durchlaufen haben, um
herauszufinden, wie sie zu Verbindungen zusammenhängen. Dies wird verwendet, um die Paketfilterung
über zustandsabhängige Richtlinien zu verbessern. Aktivieren Sie dies, wenn Sie ein natives
Tracking durch die Bridge wünschen. Dies ist ein Ersatz für die
\glqq br\_netfilter\grqq{}"=Infrastruktur.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Ethernet Bridge tables (ebtables) support \texorpdfstring{$\rightarrow$}{->}}$~$\\
CONFIG\_BRIDGE\_NF\_EBTABLES [=m] \textbf{[M]}\\
ebtables ist ein allgemeines, erweiterbares Rahmenwerk zur Identifizierung von Frames/Paketen.
Sagen Sie hier Y oder M, wenn Sie Ethernet-Filterung/NAT/Brouting auf der Ethernet-Bridge
durchführen wollen.

\subparagraph{ebt: broute table support}$~$\\
CONFIG\_BRIDGE\_EBT\_BROUTE [=m] \textbf{[M]}\\
Die ebtables-Broutetabelle wird verwendet, um Regeln zu definieren, die zwischen Bridging- und
Routing-Frames entscheiden und Linux die Funktionalität eines Brouters verleihen.
Siehe die Manpage für ebtables(8) und Beispiele auf der ebtables-Website.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: filter table support}$~$\\
CONFIG\_BRIDGE\_EBT\_T\_FILTER [=m] \textbf{[M]}\\
Die ebtables-Filtertabelle wird verwendet, um Regeln für die Filterung von Frames am lokalen
Eingang, an der Weiterleitung und am lokalen Ausgang festzulegen. Siehe die Manpage für ebtables(8).
Um sie als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: nat table support}$~$\\
CONFIG\_BRIDGE\_EBT\_T\_NAT [=m] \textbf{[M]}\\
Die Tabelle ebtables nat wird verwendet, um Regeln zu definieren, die die MAC-Quelladresse
(MAC SNAT) oder die MAC-Zieladresse (MAC DNAT) ändern. Siehe die Manpage für ebtables(8).
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: 802.3 filter support}$~$\\
CONFIG\_BRIDGE\_EBT\_T\_NAT [=m] \textbf{[M]}\\
Mit dieser Option wird die Unterstützung für 802.3-Ethernet-Frames hinzugefügt.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: among filter support}$~$\\
CONFIG\_BRIDGE\_EBT\_AMONG [=m] \textbf{[M]}\\
Diese Option fügt die Option \glqq among match\grqq{} hinzu, die den Abgleich der
MAC-Quell- und/oder Zieladresse mit einer Liste von Adressen ermöglicht. Optional können
auch MAC/IP"=Adresspaare abgeglichen werden, z.~B. für Anti-Spoofing-Regeln.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: ARP filter support}$~$\\
CONFIG\_BRIDGE\_EBT\_ARP [=m] \textbf{[M]}\\
Diese Option fügt die ARP-Übereinstimmung hinzu, die das Filtern von ARP- und
RARP-Headerfeldern ermöglicht.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: IP filter support}$~$\\
CONFIG\_BRIDGE\_EBT\_IP [=m] \textbf{[M]}\\
Diese Option fügt den IP"=Abgleich hinzu, der eine grundlegende Filterung der
IP"=Header"=Felder er"-mög"-licht.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: IP6 filter support}$~$\\
CONFIG\_BRIDGE\_EBT\_IP6 [=m] \textbf{[M]}\\
Diese Option fügt die IP6-Übereinstimmung hinzu, die eine grundlegende Filterung
von IPV6"=Header"=feldern ermöglicht.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: limit match support}$~$\\
CONFIG\_BRIDGE\_EBT\_LIMIT [=m] \textbf{[M]}\\
Diese Option fügt die Grenzübereinstimmung hinzu, mit der Sie die Rate kontrollieren können,
mit der eine Regel übereinstimmen kann. Diese Übereinstimmung ist das Äquivalent der
iptables"=Limit"=Übereinstimmung.
Wenn Sie es als Modul kompilieren wollen, sagen Sie hier M und lesen Sie\\
$<$file:Documentation/kbuild/modules.rst$>$.
Wenn Sie unsicher sind, sagen Sie "N".

\subparagraph{ebt: mark filter support}$~$\\
CONFIG\_BRIDGE\_EBT\_MARK [=m] \textbf{[M]}\\
Diese Option fügt die Markierungsübereinstimmung hinzu, die den Abgleich von Frames auf
der Grundlage des \glqq nfmark\grqq{}-Wertes im Frame ermöglicht. Dieser kann durch das
Markierungsziel gesetzt werden. Dieser Wert ist derselbe wie der, der in
iptables mark match und target verwendet wird.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: packet type filter support}$~$\\
CONFIG\_BRIDGE\_EBT\_PKTTYPE [=m] \textbf{[M]}\\
Diese Option fügt den Pakettyp-Match hinzu, der einen Abgleich des Pakettyps auf der
Grundlage seiner Ethernet-\glqq Klasse\grqq{}
(wie vom generischen Netzwerkcode bestimmt) ermöglicht:
Broadcast, Multicast, für diesen Host allein oder für einen anderen Host.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: STP filter support}$~$\\
CONFIG\_BRIDGE\_EBT\_STP [=m] \textbf{[M]}\\
Diese Option fügt die Spanning Tree Protocol-Übereinstimmung hinzu, die das Filtern
von STP-Header-Feldern ermöglicht.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: 802.1Q VLAN filter support}$~$\\
CONFIG\_BRIDGE\_EBT\_VLAN [=m] \textbf{[M]}\\
Diese Option fügt die 802.1Q-Vlan-Übereinstimmung hinzu, die die Filterung von
802.1Q-Vlan-Feldern ermöglicht.
Um es als Modul zu kompilieren, wählen Sie hier M.  Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: arp reply target support}$~$\\
CONFIG\_BRIDGE\_EBT\_ARPREPLY [=m] \textbf{[M]}\\
Diese Option fügt das arp-Antwort-Ziel hinzu, das das automatische Senden von arp-Antworten
auf arp-Anfragen ermöglicht.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: dnet target support}$~$\\
CONFIG\_BRIDGE\_EBT\_DNET [=m] \textbf{[M]}\\
Diese Option fügt das Ziel MAC DNAT hinzu, das die Änderung der MAC-Zieladresse
von Frames ermöglicht.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: mark target support}$~$\\
CONFIG\_BRIDGE\_EBT\_MARK\_T [=m] \textbf{[M]}\\
Diese Option fügt das Markierungsziel hinzu, das die Markierung von Rahmen durch Setzen
des Wertes \glqq nfmark\grqq{} im Rahmen ermöglicht. Dieser Wert ist derselbe wie der,
der in iptables mark match and target verwendet wird.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: redirect target support}$~$\\
CONFIG\_BRIDGE\_EBT\_REDIRECT [=m] \textbf{[M]}\\
Diese Option fügt das MAC-Redirect-Ziel hinzu, das es ermöglicht, die MAC-Zieladresse
eines Frames in die des Geräts zu ändern, auf dem er angekommen ist.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, wählen Sie N.

\subparagraph{ebt: snat target support}$~$\\
CONFIG\_BRIDGE\_EBT\_SNAT [=m] \textbf{[M]}\\
Diese Option fügt das Ziel MAC SNAT hinzu, das die Änderung der MAC-Quelladresse von
Frames ermöglicht.
Um es als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: log support}$~$\\
CONFIG\_BRIDGE\_EBT\_LOG [=m] \textbf{[M]}\\
Diese Option fügt den Log Watcher hinzu, den Sie in jeder Regel in jeder
ebtables-Tabelle verwenden können. Er zeichnet Informationen über den Frame-Header im Syslog auf.
Um ihn als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{ebt: nflog support}$~$\\
CONFIG\_BRIDGE\_EBT\_NFLOG [=m] \textbf{[M]}\\
Diese Option aktiviert den nflog watcher, der es ermöglicht, Nachrichten über die netfilter
logging API zu protokollieren, die entweder das alte LOG-Ziel, das alte ULOG-Ziel oder
nfnetlink\_log als Backend verwenden kann.
Diese Option fügt den nflog watcher hinzu, den Sie in jeder Regel in jeder ebtables-Tabelle
verwenden können.
Um ihn als Modul zu kompilieren, wählen Sie hier M. Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{BPF based packet filtering framework (BPFILTER) \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_BPFILTER [=n] \textbf{[N]}\\*
Dies baut ein experimentelles bpfilter-Framework auf, das darauf abzielt,
netfilter-kompatible Funktionalität über BPF bereitzustellen.

\subsubsection{The DCCP Protocol \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_IP\_DCCP [=n] \textbf{[N]}\\*
Protokoll zur Staukontrolle bei Datagrammen (RFC~4340)\\
Von \url{https://www.ietf.org/rfc/rfc4340.txt}: Das Datagram Congestion Control Protocol (DCCP)
ist ein Transportprotokoll, das bidirektionale Unicast-Verbindungen von überlastungsgesteuerten,
unzuverlässigen Datagrammen implementiert. Es sollte für Anwendungen wie Streaming Media,
Internet-Telefonie und Online-Spiele geeignet sein.\\
Um diese Protokollunterstützung als Modul zu kompilieren, wählen Sie hier M: Das Modul wird dccp heißen.
Im Zweifelsfall sagen Sie N.

\subsubsection{The SCTP Protocol \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_IP\_SCTP [=m] \textbf{[M]}\\*
Stream Control Übertragungsprotokoll
Aus RFC~2960 \url{http://www.ietf.org/rfc/rfc2960.txt}.\\[.5em]
\glqq SCTP ist ein zuverlässiges Transportprotokoll, das auf einem verbindungslosen Paketnetz
wie IP aufbaut. Es bietet seinen Benutzern die folgenden Dienste:
\begin{itemize}
	\item[--] Bestätigte fehlerfreie, nicht duplizierte Übertragung von Nutzdaten,
	\item[--] Datenfragmentierung zur Anpassung an die ermittelte Pfad-MTU-Größe,
	\item[--] sequentielle Zustellung von Benutzernachrichten innerhalb mehrerer Ströme mit
	einer Option für die Zustellung einzelner Benutzernachrichten in der Reihenfolge ihres Eintreffens,
	\item[--] optionale Bündelung mehrerer Benutzernachrichten in einem einzigen SCTP-Paket, und
	\item[--] Fehlertoleranz auf Netzebene durch Unterstützung von Multi-Homing an einem oder beiden
	Enden einer Assoziation.\grqq{}
\end{itemize}
Um diese Protokollunterstützung als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sctp} genannt. Debug-Meldungen werden vom dynamischen
Debugging-Framework des Kernels behandelt.
Im Zweifelsfall sagen Sie N.

\paragraph{SCTP: Debug object counts}$~$\\
CONFIG\_SCTP\_DBG\_OBJCNT [=n] \textbf{[N]}\\
Wenn Sie Y sagen, wird die Debugging-Unterstützung für die Zählung der Art von Objekten, die derzeit
zugewiesen sind, aktiviert. Dies ist nützlich für die Identifizierung von Speicherlecks.
Diese Debug-Informationen können Sie sich ansehen mit
\texttt{cat /proc/net/sctp/sctp\_dbg\_objcnt}\\
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Default SCTP cookie HMAC encoding () \texorpdfstring{$\rightarrow$}{->}}$~$\\
CONFIG\_SCTP\_DBG\_OBJCNT [=n] \textbf{[N]}\\
Mit dieser Option wird der Standard-Hmac-Algorithmus für den sctp-Cookie festgelegt.
Im Zweifelsfall wählen Sie \texttt{md5}.

\subparagraph{Enable optional MD5 hmac cookie generation}$~$\\
CONFIG\_SCTP\_DEFAULT\_COOKIE\_HMAC\_MD5 [=n] \textbf{[N]}\\
Optionale MD5 hmac-basierte SCTP-Cookie-Generierung aktivieren.

\subparagraph{Enable optional SHA1 hmac cookie generation}$~$\\
CONFIG\_SCTP\_DEFAULT\_COOKIE\_HMAC\_SHA1 [=y] \textbf{[Y]}\\
Optionale SHA1 hmac-basierte SCTP-Cookie-Generierung aktivieren.

\subparagraph{Use no hmac alg in SCTP cookie generation}$~$\\
CONFIG\_SCTP\_DEFAULT\_COOKIE\_HMAC\_NONE [=n] \textbf{[N]}\\
Keinen hmac-Algorithmus bei der Erzeugung von SCTP-Cookies verwenden.

\paragraph{Enable optional MD5 hmac cookie generation}$~$\\
CONFIG\_SCTP\_COOKIE\_HMAC\_MD5 [=y] \textbf{[Y]}\\
Optionale MD5 hmac-basierte SCTP-Cookie-Generierung aktivieren.

\paragraph{Enable optional SHA1 hmac cookie generation}$~$\\
CONFIG\_SCTP\_COOKIE\_HMAC\_SHA1 [=y] \textbf{[Y]}\\
Optionale SHA1 hmac-basierte SCTP-Cookie-Generierung aktivieren.

\subsubsection{The Reliable Datagram Sockets Protocol}
CONFIG\_RDS [=m] \textbf{[M]}\\
\textit{(Das Zuverlässige Datagramm-Socket-Protokoll)}\\
Das RDS-Protokoll (Reliable Datagram Sockets) bietet eine zuverlässige, sequenzierte
Zustellung von Datagrammen über Infiniband oder TCP.

\paragraph{RDS over Infiniband}$~$\\
CONFIG\_RDS\_RDMA [=m] \textbf{[M]}\\
Erlaubt RDS, Infiniband als Transportmittel zu verwenden.
Dieser Transport unterstützt RDMA"=Vor"-gän"-ge.

\paragraph{RDS over TCP}$~$\\
CONFIG\_RDS\_TCP [=m] \textbf{[M]}\\
Erlaubt RDS, TCP als Transportmittel zu verwenden.
Dieser Transport unterstützt keine RDMA"=Vor"-gän"-ge.

\paragraph{RDS debugging messages}$~$\\
CONFIG\_RDS\_DEBUG [=n] \textbf{[N]}\\
\textit{Für diese Option gibt es keine Hilfe.}

\subsubsection{The TIPC Protocol \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_TIPC [=m] \textbf{[M]}\\*
Das TIPC-Protokoll (Transparent Inter Process Communication) ist speziell für die Kommunikation
innerhalb eines Clusters konzipiert. Dieses Protokoll stammt von Ericsson, wo es seit vielen Jahren
in Carrier-Grade-Cluster-Anwendungen eingesetzt wird. Weitere Informationen über TIPC finden Sie
unter \url{http://tipc.sourceforge.net}. Diese Protokollunterstützung ist auch als Modul verfügbar
(= Code, der in den laufenden Kernel eingefügt und wieder entfernt werden kann, wann immer Sie wollen).
Das Modul wird \texttt{tipc} genannt. Wenn Sie es als Modul kompilieren wollen, sagen Sie hier M
und lesen Sie $<$file:Documentation/kbuild/modules.rst$>$.
Im Zweifelsfall sagen Sie N.

\paragraph{InfiniBand media type support}$~$\\
CONFIG\_TIPC\_MEDIA\_IB [=y] \textbf{[Y]}\\
Wenn Sie hier Y angeben, wird die Unterstützung für die Ausführung von TIPC auf IP-over-InfiniBand-Geräten aktiviert.

\paragraph{IP/UDP media type support}$~$\\
CONFIG\_TIPC\_MEDIA\_UDP [=y] \textbf{[Y]}\\
Wenn Sie hier Y angeben, wird die Unterstützung für die Ausführung von TIPC über IP/UDP aktiviert.

\paragraph{TIPC encryption support}$~$\\
CONFIG\_TIPC\_CRYPTO [=y] \textbf{[Y]}\\
Wenn Sie hier Y eingeben, wird die TIPC-Verschlüsselung unterstützt. Alle TIPC-Nachrichten werden mit dem derzeit
modernsten Algorithmus ver-/entschlüsselt: AEAD AES-GCM (wie IPSec oder TLS), bevor sie den TIPC-Stack verlassen/eingehen.
Das Setzen der Schlüssel aus dem Benutzerbereich erfolgt über Netlink durch ein Benutzerprogramm
(z.~B. das iproute2-Tool \glqq tipc\grqq{}).

\paragraph{TIPC: socket monitoring interface}$~$\\
CONFIG\_TIPC\_DIAG [=m] \textbf{[M]}\\
Unterstützung für die von \texttt{ss} tool verwendete TIPC-Socket-Überwachungsschnittstelle.
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Asynchronous Transfer Mode (ATM)}
CONFIG\_ATM [=m] \textbf{[M]}\\*
ATM ist eine Hochgeschwindigkeitsnetztechnologie für lokale Netze und Weitverkehrsnetze. Sie verwendet eine feste Paketgröße
und ist verbindungsorientiert, was die Aushandlung von Mindestbandbreitenanforderungen ermöglicht.
Um an einem ATM-Netz teilnehmen zu können, benötigt Ihr Linux-System eine ATM-Netzwerkkarte. Wenn Sie eine solche haben,
sagen Sie hier und beim Treiber Ihrer ATM-Karte unten Y.
Beachten Sie, dass Sie eine Reihe von User-Space-Programmen benötigen, um ATM tatsächlich nutzen zu können.
Siehe die Datei $<$file:Documentation/networking/atm.rst$>$ für weitere Details.

\paragraph{Classical IP over ATM}$~$\\
CONFIG\_ATM\_CLIP [=m] \textbf{[M]}\\
Klassisches IP über ATM für PVCs und SVCs, mit Unterstützung von InARP und ATMARP. Wenn Sie mit anderen IP-Hosts in Ihrem
ATM-Netz kommunizieren wollen, werden Sie in der Regel entweder hier oder bei \glqq LAN-Emulation (LANE)\grqq{} unten Y sagen.

\subparagraph{Do NOT send ICMP if no neighbour}$~$\\
CONFIG\_ATM\_CLIP\_NO\_ICMP [=n] \textbf{[N]}\\
Normalerweise wird eine \glqq ICMP host unreachable\grqq{}-Meldung gesendet, wenn ein Nachbar nicht erreicht werden kann,
weil es in der ATMARP-Tabelle des Kernels keinen VC zu ihm gibt. Dies kann zu Problemen führen, wenn ATMARP-Tabelleneinträge
während der Revalidierung kurzzeitig entfernt werden. Wenn Sie hier Y sagen, werden Pakete an solche Nachbarn stattdessen
stillschweigend verworfen.

\paragraph{LAN Emulation (LANE) support}$~$\\
CONFIG\_ATM\_LANE [=m] \textbf{[M]}\\
Die LAN-Emulation emuliert die Dienste bestehender LANs über ein ATM-Netz. Neben dem Betrieb als normaler
ATM-Endstations-Client kann der Linux-LANE-Client auch als Proxy-Client fungieren und Pakete zwischen ELAN- und
Ethernet-Segmenten überbrücken. Sie benötigen LANE, wenn Sie MPOA ausprobieren wollen.

\subparagraph{Multi-Protocol Over ATM (MPOA) support}$~$\\
CONFIG\_ATM\_MPOA [=m] \textbf{[M]}\\
Multi-Protocol Over ATM ermöglicht ATM-Edge-Geräten wie Routern, Bridges und an ATM angeschlossenen Hosts die Einrichtung
direkter ATM-VCs über Teilnetzgrenzen hinweg. Diese Shortcut"=Verbindungen umgehen Router und verbessern die
Gesamtleistung des Netzes.

\paragraph{RFC1483/2684 Bridged protocols}$~$\\
CONFIG\_ATM\_BR2684 [=m] \textbf{[M]}\\
ATM-PVCs können Ethernet-PDUs gemäß RFC~2684 (früher 1483) übertragen.  
Dieses Gerät verhält sich aus Sicht des Kernels wie ein Ethernet, wobei der Verkehr über ATM-PVCs (derzeit 1 PVC/Gerät)
übertragen wird.
Dies wird manchmal über DSL"=Leitungen verwendet. Im Zweifelsfall sagen Sie N.

\subparagraph{Per-VC IP filter kludge}$~$\\
CONFIG\_ATM\_BR2684\_IPFILTER [=n] \textbf{[N]}\\
Dies ist ein experimenteller Mechanismus für Benutzer, die eine große Anzahl von IP-only vcc's terminieren müssen.
Aktivieren Sie dies nur, wenn Sie sicher sind, dass Sie wissen, was Sie tun.

\subsubsection{Layer Two Tunneling Protocol (L2TP) \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_L2TP [=m] \textbf{[M]}\\*
Layer 2 Tunneling Protokoll\\
Aus RFC~2661 \url{http://www.ietf.org/rfc/rfc2661.txt}.
L2TP erleichtert das Tunneln von Paketen über ein zwischengeschaltetes Netz auf eine Weise, die sowohl für Endnutzer
als auch für Anwendungen so transparent wie möglich ist.\\
L2TP wird häufig zum Tunneln von PPP-Verkehr über IP-Tunnel verwendet. Ein IP-Tunnel kann Tausende von einzelnen
PPP"=Verbindungen übertragen. L2TP wird auch als VPN"=Protokoll verwendet, das bei Heimarbeitern für die Verbindung
zu ihren Büros beliebt ist.\\
Mit L2TPv3 können neben PPP auch andere Protokolle über L2TP"=Tunnel übertragen werden. L2TPv3 ist im RFC~3931
\url{http://www.ietf.org/rfc/rfc3931.txt} definiert.\\
Die Kernel-Komponente verarbeitet nur L2TP-Datenpakete: ein Userland-Daemon verarbeitet L2TP als Kontrollprotokoll
(Tunnel- und Sitzungsaufbau). Ein solcher Daemon ist OpenL2TP (\url{http://openl2tp.org/}).\\
Wenn Sie L2TP nicht benötigen, wählen Sie N. Um den gesamten L2TP-Code als Modul zu kompilieren, wählen Sie hier M.

\paragraph{L2TP debugfs support}$~$\\
CONFIG\_L2TP\_DEBUGFS [=m] \textbf{[M]}\\
Unterstützung für ein l2tp-Verzeichnis im debugfs-Dateisystem. Dies kann verwendet werden, um den internen Zustand
der l2tp-Treiber für die Problemanalyse zu speichern.
Wenn Sie unsicher sind, sagen Sie 'Y'.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M. Das Modul wird \texttt{l2tp\_debugfs} heißen.

\paragraph{L2TPv3 support}$~$\\
CONFIG\_L2TP\_V3 [=y] \textbf{[Y]}\\
Layer 2 Tunneling Protokoll Version 3\\
Aus RFC 3931 \url{http://www.ietf.org/rfc/rfc3931.txt}.
Das Layer 2 Tunneling Protocol (L2TP) bietet einen dynamischen Mechanismus zum Tunneln von
Layer-2-(L2)-\glqq Schaltungen\grqq{} über ein paketorientiertes Datennetz (z.~B. über IP). 
L2TP, das ursprünglich in RFC~2661 definiert wurde, ist eine Standardmethode zum Tunneln von
Point-to-Point Protocol (PPP)-Sitzungen [RFC~1661]. L2TP wurde inzwischen für das Tunneln einer
Reihe von anderen L2-Protokollen übernommen, darunter ATM, Frame Relay, HDLC und sogar rohe Ethernet-Frames.
Wenn Sie eine Verbindung zu L2TPv3-Geräten herstellen oder rohe Ethernet-Frames mit L2TP tunneln wollen,
geben Sie hier Y an. Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{L2TP IP encapsulation for L2TPv3}$~$\\
CONFIG\_L2TP\_IP [=m] \textbf{[M]}\\
Unterstützung für L2TP-over-IP-Socket-Familie.\\
Das L2TPv3-Protokoll definiert zwei mögliche Verkapselungen für L2TP-Rahmen, nämlich UDP und einfaches IP
(ohne UDP). Dieser Treiber stellt eine neue L2TPIP-Socket-Familie zur Verfügung, mit der
L2TPv3"=Benutzerspace"=Daemons L2TP/IP-Tunnel-Sockets erstellen können, wenn keine UDP"=Kapselung
erforderlich ist. Wenn L2TP in IP-Paketen übertragen wird, verwendet es die IP-Protokollnummer 115,
so dass dieser Port in Firewalls aktiviert werden muss.\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M. Das Modul wird \texttt{l2tp\_ip} heißen.

\subparagraph{L2TP ethernet pseudowire support for L2TPv3}$~$\\
CONFIG\_L2TP\_ETH [=m] \textbf{[M]}\\
Unterstützung für die Übertragung von rohen Ethernet-Frames über L2TPv3.\\
Aus RFC~4719 \url{http://www.ietf.org/rfc/rfc4719.txt}.\\
Das Layer 2 Tunneling Protocol, Version 3 (L2TPv3) kann als Kontrollprotokoll und zur Datenkapselung
verwendet werden, um Pseudodrähte für den Transport von Layer-2-Paketdateneinheiten über ein IP-Netzwerk
einzurichten [RFC~3931]. Dieser Treiber stellt für jede L2TP-Ethernet-Pseudowire-Instanz eine virtuelle
Ethernet-Schnittstelle zur Verfügung. Standard-Linux-Tools können verwendet werden, um der lokalen
virtuellen Schnittstelle eine IP-Adresse zuzuweisen oder die Schnittstelle zu einer Bridge hinzuzufügen.
Wenn Sie L2TPv3 verwenden, werden Sie diese Option mit Sicherheit aktivieren wollen.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M. Das Modul wird \texttt{l2tp\_eth} heißen.

\subsubsection{802.1d Ethernet Bridging}
CONFIG\_L2TP [=m] \textbf{[M]}\\*
Wenn Sie hier Y angeben, kann Ihr Linux-Rechner als Ethernet-Bridge fungieren, d.~h. die verschiedenen
Ethernet-Segmente, an die er angeschlossen ist, erscheinen den Teilnehmern als ein einziges Ethernet.
Mehrere solcher Bridges können zusammenarbeiten, um mit Hilfe des IEEE 802.1 Spanning-Tree-Algorithmus
noch größere Netze von Ethernets zu bilden. Da es sich hierbei um einen Standard handelt, arbeiten Linux-Bridges
ordnungsgemäß mit anderen Bridge-Produkten von Drittanbietern zusammen.\\
Um die Ethernet-Bridge zu benutzen, benötigen Sie die Bridge-Konfigurationswerkzeuge; siehe\\
$<$file:Documentation/networking/bridge.rst$>$
für den Standort. Bitte lesen Sie das Bridge-Mini-HOWTO für weitere Informationen.\\
Wenn Sie die iptables-Unterstützung zusammen mit der Bridge-Unterstützung aktivieren, verwandeln Sie Ihre Bridge
in eine Bridging-IP-Firewall. iptables sieht dann die IP-Pakete, die überbrückt werden, so dass Sie dies beim Einrichten Ihrer
Firewall-Regeln berücksichtigen müssen. Wenn Sie die Unterstützung von arptables beim Bridging aktivieren, kann arptables den
überbrückten ARP-Verkehr in der arptables FORWARD-Kette sehen.\\
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{bridge} genannt.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{IGMP/MLD snooping}$~$\\
CONFIG\_BRIDGE\_IGMP\_SNOOPING [=y] \textbf{[Y]}\\
Wenn Sie hier Y angeben, kann die Ethernet-Brücke Multicast-Verkehr auf der Grundlage des von jedem Anschluss
empfangenen IGMP/MLD-Verkehrs selektiv weiterleiten.\\
Sagen Sie N, um diese Unterstützung auszuschließen und die Binärgröße zu reduzieren.
Wenn Sie unsicher sind, sagen Sie Y.

\paragraph{VLAN filtering}$~$\\
CONFIG\_BRIDGE\_VLAN\_FILTERING [=y] \textbf{[Y]}\\
Wenn Sie hier Y angeben, kann die Ethernet-Bridge selektiv Datenverkehr auf der Grundlage der VLAN"=Informationen
in den Paketen empfangen und weiterleiten, die auf dem Bridge"=Port oder Bridge"=Gerät konfiguriert sind.
Sagen Sie N, um diese Unterstützung auszuschließen und die Binärgröße zu reduzieren.
Wenn Sie unsicher sind, sagen Sie Y.

\paragraph{MRP protocol}$~$\\
CONFIG\_BRIDGE\_MRP [=y] \textbf{[Y]}\\
Wenn Sie hier Y angeben, kann die Ethernet-Bridge das MRP"=Protokoll zur Erkennung von Schleifen ausführen.
Sagen Sie N, um diese Unterstützung auszuschließen und die Binärgröße zu reduzieren.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{CFM protocol}$~$\\
CONFIG\_BRIDGE\_CFM [=y] \textbf{[Y]}\\
Wenn Sie hier Y angeben, kann die Ethernet-Bridge das CFM-Protokoll gemäß 802.1Q Abschnitt~12.14 ausführen.
Sagen Sie N, um diese Unterstützung auszuschließen und die Binärgröße zu verringern.
Wenn Sie unsicher sind, sagen Sie N. 

\subsubsection{Distributed Switch Architecture \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_NET\_DSA [=m] \textbf{[M]}\\*
Sagen Sie Y, wenn Sie die Unterstützung für die von der verteilten Switch"=Architektur
unterstützten Hardware"=Switches aktivieren möchten.

\paragraph{No-op tag driver}$~$\\
CONFIG\_NET\_DSA\_TAG\_NONE [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für Switches aktivieren wollen, die keine Frames über den CPU-Port taggen.

\paragraph{Tag driver for Atheros AR9331 SoC with built-in switch}$~$\\
CONFIG\_NET\_DSA\_TAG\_AR9331 [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für das Tagging von Frames für den
Atheros AR9331 SoC mit integriertem Switch aktivieren möchten.

\paragraph{Tag driver for Broadcom switches using in-frame headers}$~$\\
CONFIG\_NET\_DSA\_TAG\_BRCM [=m] \textbf{[M]}\\
Sagen Sie Y, wenn Sie die Unterstützung für das Tagging von Frames für die Broadcom-Switches aktivieren möchten,
die das Tag nach der MAC-Quelladresse platzieren.

\paragraph{Tag driver for Broadcom legacy switches using in-frame headers}$~$\\
CONFIG\_NET\_DSA\_TAG\_BRCM\_LEGACY [=m] \textbf{[M]}\\
Sagen Sie Y, wenn Sie die Unterstützung für das Tagging von Frames für die Broadcom-Legacy-Switches aktivieren möchten,
die das Tag nach der MAC-Quelladresse platzieren.

\paragraph{Tag driver for Broadcom switches using prepended headers}$~$\\
CONFIG\_NET\_DSA\_TAG\_BRCM\_PREPEND [=m] \textbf{[M]}\\
Sagen Sie Y, wenn Sie die Unterstützung für das Tagging von Frames für die Broadcom-Switches aktivieren möchten,
bei denen das Tag vor dem Ethernet-Header (vorangestellt) platziert wird.

\paragraph{Tag driver for Hirschmann Hellcreek TSN switches}$~$\\
CONFIG\_NET\_DSA\_TAG\_HELLCREEK [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung von Tagging"=Frames für die
Hirschmann Hellcreek TSN"=Switches aktivieren wollen.

\paragraph{Tag driver for Latiq / Intel GSWIP switches}$~$\\
CONFIG\_NET\_DSA\_TAG\_GSWIP [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung von Tagging-Frames für die Lantiq / Intel GSWIP-Switches aktivieren möchten.

\paragraph{Tag driver for Marvell switches using DSA headers}$~$\\
CONFIG\_NET\_DSA\_TAG\_DSA [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für das Taggen von Frames für die Marvell-Switches,
die DSA-Header verwenden, aktivieren möchten.

\paragraph{Tag driver for Marvell switches using EtherType DSA headers}$~$\\
CONFIG\_NET\_DSA\_TAG\_EDSA [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für das Taggen von Frames für die Marvell-Switches,
die EtherType DSA-Header verwenden, aktivieren möchten.

\paragraph{Tag driver for Mediatek switches}$~$\\
CONFIG\_NET\_DSA\_TAG\_MTK [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für Tagging-Frames für Mediatek-Switches aktivieren möchten.

\paragraph{Tag driver for Microchip 8795/937x/9477/9893 families of switches}$~$\\
CONFIG\_NET\_DSA\_TAG\_KSZ [=m] \textbf{[M]}\\
Sagen Sie Y, wenn Sie die Unterstützung für Tagging-Frames für die Microchip\\
Switch"=Familien~8795/937x/9477/9893 aktivieren möchten.

\paragraph{Tag driver for Ocelot family of switches, using NPI port}$~$\\
CONFIG\_NET\_DSA\_TAG\_OCELOT [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie das NPI-Tagging für die Ocelot-Switches (VSC7511, VSC7512, VSC7513, VSC7514, VSC9953, VSC9959)
aktivieren möchten. In diesem Modus wird den Frames über den Ethernet-CPU-Port ein hardwaredefinierter
Injection/Extraction-Frame-Header vorangestellt. Die Flusssteuerung (PAUSE-Frames) über den CPU-Port
wird in diesem Modus nicht unterstützt.

\paragraph{Tag driver for Ocelot family of switches, using VLAN}$~$\\
CONFIG\_NET\_DSA\_TAG\_OCELOT\_8021Q [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für die Kennzeichnung von Frames mit einem benutzerdefinierten VLAN-basierten
Header aktivieren möchten. Frames, die einen Zeitstempel benötigen, wie z.~B. PTP, werden nicht über Ethernet,
sondern über registerbasiertes MMIO übertragen. Die Flusssteuerung über den CPU-Port ist in diesem Modus funktionsfähig.
Bei Verwendung dieses Modus stehen weniger TCAM-Ressourcen (VCAP IS1, IS2, ES0) für die Verwendung mit tc-flower zur Verfügung.

\paragraph{Tag driver for Qualcomm Atheros QCA8k switches}$~$\\
CONFIG\_NET\_DSA\_TAG\_QCA [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für Tagging-Frames für die Qualcomm Atheros QCA8K-Switches aktivieren möchten.

\paragraph{Tag driver for Realtek 4 byte protocol A tags}$~$\\
CONFIG\_NET\_DSA\_TAG\_RTL4\_A [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für das Taggen von Frames für die Realtek-Switches mit 4-Byte-Protokoll-A-Tags,
wie sie im Realtek RTL8366RB zu finden sind, aktivieren möchten. 

\paragraph{Tag driver for Realtek 8 byte protocol 4 tags}$~$\\
CONFIG\_NET\_DSA\_TAG\_RTL8\_4 [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für das Taggen von Frames für Realtek-Switches mit 8-Byte-Protokoll-4-Tags,
wie dem Realtek RTL8365MB-VC, aktivieren möchten.

\paragraph{Tag driver for Renesas RZ/N1 A5PSW switch}$~$\\
CONFIG\_NET\_DSA\_TAG\_RZN1\_A5PSW [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für das Tagging von Frames für den eingebetteten Renesas RZ/N1-Switch
aktivieren möchten, der ein 8-Byte-Tag nach der Ziel-MAC-Adresse verwendet.

\paragraph{Tag driver for SMSC/Microchip LAN9303 family of switches}$~$\\
CONFIG\_NET\_DSA\_TAG\_LAN9303 [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für Tagging-Frames für die SMSC/Microchip LAN9303-Switch-Familie
aktivieren möchten.

\paragraph{Tag driver for NXP SJA1105 switches}$~$\\
CONFIG\_NET\_DSA\_TAG\_SJA1105 [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für Tagging-Frames mit der NXP SJA1105-Switch-Familie aktivieren möchten.
Sowohl das native Tagging-Protokoll (das nur für link-lokalen Verkehr gilt) als auch das nicht-native Tagging
(basierend auf einem benutzerdefinierten 802.1Q-VLAN-Header) sind verfügbar.

\paragraph{Tag driver for switches using a trailer tag}$~$\\
CONFIG\_NET\_DSA\_TAG\_TRAILER [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für das Markieren von Frames mit einem angehängten (Trailed) Tag
aktivieren wollen. z.~B. Marvell 88E6060.

\paragraph{Tag driver for XRS700x switches}$~$\\
CONFIG\_NET\_DSA\_TAG\_XRS700X [=m] \textbf{[M]}\\
Sagen Sie Y oder M, wenn Sie die Unterstützung für das Taggen von Frames für Arrow SpeedChips XRS700x-Switches,
die einen Ein-Byte-Tag-Anhänger verwenden, aktivieren möchten.

\subsubsection{802.1Q/802.1ad VLAN Support}
CONFIG\_VLAN\_8021Q [=m] \textbf{[M]}\\
Wenn Sie diese Option wählen, können Sie 802.1Q-VLAN-Schnittstellen auf Ihren Ethernet-Schnittstellen erstellen.
802.1Q VLAN unterstützt fast alles, was eine normale Ethernet-Schnittstelle kann, einschließlich Firewalling,
Bridging und natürlich IP-Verkehr. Um VLANs effektiv nutzen zu können, benötigen Sie das Dienstprogramm \texttt{ip}.
Weitere Informationen finden Sie auf der VLAN-Webseite:
\url{http://www.candelatech.com/~greear/vlan.html}\\
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{8021q} heißen.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{GVRP (GARP VLAN Registration Protocol) support}$~$\\
CONFIG\_VLAN\_8021Q\_GVRP [=y] \textbf{[Y]}\\
Wählen Sie diese Option, um die GVRP"=Endsystemunterstützung zu aktivieren. GVRP wird für die automatische
Weitergabe von registrierten VLANs an Switches verwendet.
Wenn Sie unsicher sind, wählen Sie N.

\paragraph{MVRP (Multiple VLAN Registration Protocol) support}$~$\\
CONFIG\_VLAN\_8021Q\_MVRP [=y] \textbf{[Y]}\\
Wählen Sie diese Option, um die MVRP"=Endsystemunterstützung zu aktivieren. MVRP wird für die automatische
Weitergabe von registrierten VLANs an Switches verwendet; es ersetzt GVRP und ist nicht abwärtskompatibel.
Wenn Sie unsicher sind, wählen Sie N.

\subsubsection{ANSI/IEEE~802.2 LLC type 2 Support}
CONFIG\_LLC2 [=m] \textbf{[M]}\\*
Dies ist eine Logical Link Layer Typ 2, verbindungsorientierte Unterstützung.
Wählen Sie diese Option, wenn Sie Unterstützung für PF\_LLC-Sockets haben möchten.

\subsubsection{Appletalk protocol support}
CONFIG\_ATALK [=m] \textbf{[M]}\\*
AppleTalk ist das Protokoll, das Apple-Computer zur Kommunikation in einem Netzwerk verwenden können.
Wenn Ihr Linux-Rechner an ein solches Netzwerk angeschlossen ist und Sie sich mit ihm verbinden möchten,
sagen Sie Y. Sie müssen das Paket netatalk verwenden, damit Ihr Linux-Rechner als Druck- und Dateiserver
für Macs fungieren und auf AppleTalk-Drucker zugreifen kann.\\
Besuchen Sie \url{http://www.zettabyte.net/netatalk/} im WWW für weitere Einzelheiten. EtherTalk ist der
Name für AppleTalk über Ethernet und das billigere und langsamere LocalTalk ist AppleTalk über ein
proprietäres Apple-Netzwerk unter Verwendung serieller Verbindungen. EtherTalk und LocalTalk werden von
Linux vollständig unterstützt.
Allgemeine Informationen darüber, wie man Linux, Windows-Rechner und Macs miteinander verbindet, finden
Sie im WWW unter \url{http://www.eats.com/linux\_mac\_win.html}. Das NET3-4-HOWTO, erhältlich unter
\url{http://www.tldp.org/docs.html#howto}, enthält ebenfalls wertvolle Informationen.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{appletalk} heißen.
Sie wollen ihn mit Sicherheit als Modul kompilieren, damit Sie Ihren AppleTalk-Stack neu starten können,
ohne Ihren Rechner neu zu starten. Ich habe gehört, dass der GNU-Boykott von Apple vorbei ist, so dass
sogar politisch korrekte Leute hier Y sagen dürfen.

\paragraph{Appletalk interfaces support}$~$\\
CONFIG\_DEV\_APPLETALK [=m] \textbf{[M]}\\
AppleTalk ist das Protokoll, das Apple-Computer zur Kommunikation in einem Netzwerk verwenden können.
Wenn Ihr Linux-Rechner an ein solches Netzwerk angeschlossen ist und Sie IP über das Netzwerk nutzen
möchten oder wenn Sie eine LocalTalk-Karte haben und diese für die Verbindung mit dem AppleTalk-Netzwerk
nutzen möchten, sagen Sie Y.

\subparagraph{Appletalk-IP driver support}$~$\\
CONFIG\_IPDDP [=m] \textbf{[M]}\\
Dies ermöglicht IP-Netzwerke für Benutzer, die nur AppleTalk-Netzwerke zur Verfügung haben. Diese Funktion
ist experimentell. Mit diesem Treiber können Sie IP innerhalb von AppleTalk einkapseln (z.~B. wenn Ihr
Linux-Rechner in einem reinen AppleTalk-Netzwerk steckt) oder entkapseln (z.~B. wenn Sie Ihren
Linux-Rechner als Internet-Gateway für einen Zoo von mit AppleTalk verbundenen Macs einsetzen wollen).\\
Bitte lesen Sie die Datei $<$file:Documentation/networking/ipddp.rst$>$ für weitere Informationen.
Wenn Sie hier Y angeben, wird die AppleTalk-IP"=Unterstützung in den Kernel kompiliert. In diesem Fall
können Sie entweder Verkapselung oder Entkapselung verwenden, aber nicht beides. Mit den folgenden zwei
Fragen entscheiden Sie, was Sie wollen.
Um die AppleTalk-IP"=Unterstützung als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{ipddp} heißen.
In diesem Fall können Sie sowohl Encapsulation als auch Decapsulation gleichzeitig
verwenden, indem Sie zwei Kopien des Moduls laden und unterschiedliche Werte für die Moduloption
ipddp\_mode angeben.

\subsubparagraph{IP to Appletalk-IP Encapsulation support}$~$\\
CONFIG\_IPDDP\_ENCAP [=y] \textbf{[Y]}\\
Wenn Sie hier Y angeben, kann der AppleTalk-IP-Code IP-Pakete in AppleTalk-Rahmen einkapseln; das ist
nützlich, wenn Ihr Linux-Rechner in einem AppleTalk-Netzwerk steckt (das hoffentlich irgendwo einen
Entkapsler enthält). Bitte lesen Sie $<$file:Documentation/networking/ipddp.rst$>$ für weitere Informationen.

\subsubsection{CCITT X.25 Packet Layer}
CONFIG\_X25 [=n] \textbf{[N]}\\*
X.25 ist eine Reihe von standardisierten Netzwerkprotokollen, ähnlich wie Frame Relay; die eine physische
Leitung von Ihrem Rechner zum X.25-Netzeingangspunkt kann mehrere logische Punkt-zu-Punkt-Verbindungen
(so genannte \glqq virtuelle Schaltungen\grqq{}) zu anderen Computern, die an das X.25-Netz angeschlossen
sind, übertragen. Regierungen, Banken und andere Organisationen verwenden es in der Regel, um sich
untereinander zu verbinden oder um Wide Area Networks (WANs) zu bilden. Viele Länder haben öffentliche
X.25-Netze. X.25 besteht aus zwei Protokollen: dem übergeordneten Packet Layer Protocol (PLP)
(geben Sie hier ein Y ein, wenn Sie das wollen) und dem untergeordneten Data Link Layer Protocol LAPB
(geben Sie unten ein Y für \glqq LAPB Data Link Driver\grqq{} ein, wenn Sie das wollen).\\
Weitere Informationen über X.25 finden Sie unter \url{https://www.sangoma.com/tutorials/x25/} und
\url{http://docwiki.cisco.com/wiki/X.25}. Informationen über X.25 für Linux sind in den Dateien\\
$<$file:Documentation/networking/x25.rst$>$ und $<$file:Documentation/networking/x25-iface.rst$>$ enthalten.
Man verbindet sich mit einem X.25-Netzwerk entweder mit einer dedizierten Netzwerkkarte, die das
X.21-Protokoll verwendet (noch nicht von Linux unterstützt), oder man kann X.25 über eine
Standard-Telefonleitung mit einem gewöhnlichen Modem (sagen Sie Y zu \glqq X.25 async driver\grqq{} unten)
oder über Ethernet mit einer gewöhnlichen Ethernet-Karte und dem LAPB over Ethernet (sagen Sie Y zu
\glqq LAPB Data Link Driver\grqq{} und \glqq LAPB over Ethernet driver\grqq{} unten).
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{x25} heißen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{LAPB Data Link Driver}
CONFIG\_LAPB [=n] \textbf{[N]}\\*
Link Access Procedure, Balanced (LAPB) ist die Datenverbindungsschicht (d.~h. der untere Teil) des
X.25-Protokolls. Es bietet einen zuverlässigen Verbindungsdienst, um Datenrahmen mit einem anderen
Host auszutauschen, und wird für den Transport von Protokollen höherer Ebenen verwendet
(hauptsächlich X.25 Packet Layer, der höhere Teil von X.25, aber auch andere sind möglich).
Normalerweise wird LAPB mit speziellen X.21-Netzwerkkarten verwendet, aber Linux unterstützt LAPB
derzeit nur über Ethernet"=Verbindungen. Wenn Sie LAPB"=Verbindungen über Ethernet nutzen wollen,
sagen Sie hier und im \glqq LAPB over Ethernet driver\grqq{} unten Y.\\
Lesen Sie $<$file:Documentation/networking/lapb-module.rst$>$ für technische Details.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{lapb} heißen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Phonet protocols family}
CONFIG\_PHONET [=m] \textbf{[M]}\\*
Das Phone Network-Protokoll (PhoNet) ist ein paketorientiertes Kommunikationsprotokoll, das
von Nokia für die Verwendung mit seinen Modems entwickelt wurde.
Es ist erforderlich, damit Maemo die zellulare Datenkonnektivität nutzen kann (sofern unterstützt).
Es kann auch verwendet werden, um Nokia-Telefone von einem Linux-Computer aus zu steuern, obwohl
AT-Befehle möglicherweise einfacher zu verwenden sind.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{phonet} genannt. Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{6LoWPAN Support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_6LOWPAN [=m] \textbf{[M]}\\*
Dies ermöglicht IPv6 über Low Power Wireless Personal Area Network -- \glqq 6LoWPAN\grqq{},
das von \mbox{IEEE} 802.15.4 oder Bluetooth-Stacks unterstützt wird.

\paragraph{6LoWPAN debugfs support}$~$\\
CONFIG\_6LOWPAN\_DEBUGFS [=y] \textbf{[Y]}\\
Dies ermöglicht die Unterstützung von 6LoWPAN-Debugfs. Zum Beispiel um IPHC"=Kontextinformationen
zur Laufzeit zu manipulieren.

\paragraph{Next Header and Generic Header Compression Support \texorpdfstring{$\rightarrow$}{->}}$~$\\
CONFIG\_6LOWPAN\_NHC [=m] \textbf{[M]}\\*
Unterstützung für die in RFC~6282 und RFC~7400 definierte Komprimierung des nächsten Headers
und des generischen Headers.

\subparagraph{Destination Options Header Support}$~$\\
CONFIG\_6LOWPAN\_NHC\_DEST [=m] \textbf{[M]}\\
6LoWPAN IPv6 Destination Options Header Kompression nach RFC~6282.

\subparagraph{Fragment Header Support}$~$\\
CONFIG\_6LOWPAN\_NHC\_FRAGMENT [=m] \textbf{[M]}\\
6LoWPAN IPv6 Fragment Header Kompression nach RFC~6282.

\subparagraph{Hop-by-Hop Option Header Support}$~$\\
CONFIG\_6LOWPAN\_NHC\_HOP [=m] \textbf{[M]}\\
6LoWPAN IPv6 Hop-by-Hop Options Header Kompression nach RFC~6282.

\subparagraph{IPv6 Header Support}$~$\\
CONFIG\_6LOWPAN\_NHC\_IPV6 [=m] \textbf{[M]}\\
6LoWPAN IPv6 Header Kompression nach RFC~6282.

\subparagraph{Mobility Header Support}$~$\\
CONFIG\_6LOWPAN\_NHC\_MOBILITY [=m] \textbf{[M]}\\
6LoWPAN IPv6 Mobility Header Kompression nach RFC~6282.

\subparagraph{Routing Header Support}$~$\\
CONFIG\_6LOWPAN\_NHC\_ROUTING [=m] \textbf{[M]}\\
6LoWPAN IPv6 Routing Header Kompression nach RFC~6282.

\subparagraph{UDP Header Support}$~$\\
CONFIG\_6LOWPAN\_NHC\_UDP [=m] \textbf{[M]}\\
6LoWPAN IPv6 UDP Header Kompression nach RFC~6282.

\subparagraph{GHC Hop-by-Hop Options Header Support}$~$\\
CONFIG\_6LOWPAN\_GHC\_EXT\_HDR\_HOP [=m] \textbf{[M]}\\
6LoWPAN IPv6 Hop-by-Hop-Option generische Header-Kompression gemäß RFC~7400.

\subparagraph{GHC UDP Support}$~$\\
CONFIG\_6LOWPAN\_GHC\_UDP [=m] \textbf{[M]}\\
6LoWPAN IPv6 UDP generische Header-Kompression gemäß RFC~7400.

\subparagraph{GHC ICMPv6 Support}$~$\\
CONFIG\_6LOWPAN\_GHC\_ICMPV6 [=m] \textbf{[M]}\\
6LoWPAN IPv6 ICMPv6 generische Header-Kompression gemäß RFC~7400.

\subparagraph{GHC Destination Options Header Support}$~$\\
CONFIG\_6LOWPAN\_GHC\_EXT\_HDR\_DEST [=m] \textbf{[M]}\\
6LoWPAN IPv6 Zieloption generische Header-Kompression gemäß RFC~7400.

\subparagraph{GHC Fragmentation Options Header Support}$~$\\
CONFIG\_6LOWPAN\_GHC\_EXT\_HDR\_FRAG [=m] \textbf{[M]}\\
6LoWPAN IPv6 Fragmentierungsoption generische Header-Kompression gemäß RFC~7400.

\subparagraph{GHC Routing Options Header Support}$~$\\
CONFIG\_6LOWPAN\_GHC\_EXT\_HDR\_ROUTE [=m] \textbf{[M]}\\
6LoWPAN IPv6 Routing Option generische Header-Kompression nach RFC~7400.

\subsubsection{IEEE Std 802.15.4 Low-Rate Wireless Personal Area Networks Support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_IEEE802154 [=m] \textbf{[M]}\\*
Die IEEE-Norm 802.15.4 definiert ein drahtloses persönliches Nahbereichsnetz mit niedriger Datenrate, geringer
Leistung und geringer Komplexität. Es wurde entwickelt, um Netze von Sensoren, Schaltern und anderen
Automatisierungsgeräten zu organisieren. Die maximal zulässige Datenrate beträgt 250~kb/s und der typische
persönliche Aktionsradius liegt bei 10~m.
Sagen Sie hier Y, um LR-WPAN-Unterstützung in den Kernel zu kompilieren, oder sagen Sie M,
um sie als Module zu kompilieren.

\paragraph{IEEE 802.15.4 experimental netlink support}$~$\\
CONFIG\_IEEE802154\_EXPERIMENTAL [=y] \textbf{[Y]}\\
Fügt experimentelle Netlink-Unterstützung für nl802154 hinzu.

\paragraph{IEEE 802.15.4 socket interface}$~$\\
CONFIG\_IEEE802154\_SOCKET [=m] \textbf{[M]}\\
Socket-Schnittstelle für IEEE 802.15.4. Enthält eine DGRAM-Socket"=Schnittstelle für 802.15.4"=Datenrahmen.
Außerdem RAW"=Socket"=Schnittstelle zum Aufbau von MAC"=Headern aus dem Userspace.

\paragraph{6lowpan support over IEEE 802.15.4}$~$\\
CONFIG\_IEEE802154\_6LOWPAN [=m] \textbf{[M]}\\
IPv6-Komprimierung über IEEE 802.15.4.

\paragraph{Generic IEEE 802.15.4 Soft Networking Stack (mac802154)}$~$\\
CONFIG\_MAC802154 [=m] \textbf{[M]}\\
Diese Option aktiviert den hardwareunabhängigen IEEE 802.15.4-Netzwerkstack für SoftMAC-Geräte (die nur die PHY-Ebene des
IEEE 802.15.4-Standards implementieren).\\
Hinweis: Diese Implementierung ist weder zertifiziert, noch mit allen Funktionen ausgestattet! Die Kompatibilität
mit anderen Implementierungen ist noch nicht getestet worden!
Wenn Sie planen, HardMAC IEEE 802.15.4 Geräte zu verwenden, können Sie hier N angeben. Alternativ können Sie auch M
angeben, um es als Modul zu kompilieren.

\subsubsection{QoS and/or fair queueing \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_NET\_SCHED [=y] \textbf{[Y]}\\*
Wenn der Kernel mehrere Pakete über ein Netzwerkgerät senden muss, muss er entscheiden, welche er zuerst
sendet, welche er verzögert und welche er verwirft. Dies ist die Aufgabe der Warteschlangendisziplinen.
Es wurden mehrere verschiedene Algorithmen vorgeschlagen, wie dies \glqq gerecht\grqq{} geschehen kann.
Wenn Sie hier N sagen, erhalten Sie den Standard-Paketplanungsalgorithmus, der ein FIFO"=Verfahren
ist (wer zuerst kommt, wird zuerst bedient). Wenn Sie hier Y angeben, können Sie aus mehreren
alternativen Algorithmen wählen, die dann an verschiedene Netzwerkgeräte angeschlossen werden können.
Dies ist z.~B. nützlich, wenn einige Ihrer Netzwerkgeräte Echtzeitgeräte sind, die eine bestimmte
Mindestdatenflussrate benötigen, oder wenn Sie die maximale Datenflussrate für Datenverkehr
begrenzen müssen, der bestimmten Kriterien entspricht.
Dieser Code wird als experimentell betrachtet.\\
Um diese Scheduler zu verwalten, benötigen Sie die Dienstprogramme auf Benutzerebene aus dem
Paket iproute2+tc unter
\url{https://www.kernel.org/pub/linux/utils/net/iproute2/}.\\
Dieses Paket enthält auch einige Dokumentation; mehr dazu finden Sie unter\\
\url{http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2}.\\
Diese Quality of Service (QoS)-Unterstützung ermöglicht es Ihnen, Differentiated Services
(diffserv) und Resource Reservation Protocol (RSVP) auf Ihrem Linux-Router zu verwenden,
wenn Sie auch die entsprechenden Klassifizierer unten mit Y bestätigen.
Dokumentation und Software finden Sie unter
\url{http://diffserv.sourceforge.net/}.
Wenn Sie hier und bei \glqq /proc file system\grqq{} Y sagen, können Sie Statusinformationen
über Paketplaner aus der Datei /proc/net/psched lesen.
Die verfügbaren Scheduler werden in den folgenden Fragen aufgelistet;
Sie können so viele mit Y für Ja beantworten, wie Sie möchten. Wenn Sie unsicher sind,
sagen Sie jetzt N.

\paragraph*{*** Queueing/Scheduling ***}$~$\\
\textit{(Warteschlangen/Planung)}

\paragraph{Hierachical Token Bucket (HTB)}$~$\\
CONFIG\_NET\_SCH\_HTB [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den HTB-Algorithmus (Hierarchical Token Buckets) für die Paketplanung
verwenden möchten. Siehe \url{http://luxik.cdi.cz/~devik/qos/htb/} für das vollständige Handbuch
und ausführliche Artikel. HTB ist in seinen Zielen dem CBQ sehr ähnlich, hat jedoch andere
Eigenschaften und einen anderen Algorithmus.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{sch\_htb} heißen.

\paragraph{Hierachical Fair Service Curve (HFSC)}$~$\\
CONFIG\_NET\_SCH\_HFSC [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Paketplanungsalgorithmus Hierarchical Fair Service Curve (HFSC)
verwenden möchten. Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_hfsc} heißen.

\paragraph{Multi Band Priority Queueing (PRIO)}$~$\\
CONFIG\_NET\_SCH\_PRIO [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie einen n-Band-Prioritätswarteschlangen-Paketplaner verwenden möchten.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{sch\_prio} heißen.

\paragraph{Hardware Multiqueue-aware Multi Band Queueing (MULTIQ)}$~$\\
CONFIG\_NET\_SCH\_MULTIQ [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie einen n-Band-Warteschlangen-Paketplaner verwenden möchten, um Geräte
mit mehreren Hardware-Sendewarteschlangen zu unterstützen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{sch\_multiq} heißen.

\paragraph{Random Early Detection (RED)}$~$\\
CONFIG\_NET\_SCH\_RED [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Random Early Detection (RED)-Paketplanungsalgorithmus verwenden
möchten.
Siehe oben in $<$file:net/sched/sch\_red.c$>$ für weitere Details.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{sch\_red} heißen.

\paragraph{Stochastic Fair Blue (SFB)}$~$\\
CONFIG\_NET\_SCH\_SFB [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Stochastic Fair Blue (SFB) Paketplanungsalgorithmus verwenden
möchten.
Siehe den Anfang von $<$file:net/sched/sch\_sfb.c$>$ für weitere Details.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{sch\_sfb} heißen.

\paragraph{Stochastic Fairness Queueing (SFQ)}$~$\\
CONFIG\_NET\_SCH\_SFQ [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Stochastic Fairness Queueing (SFB) Paketplanungsalgorithmus
verwenden möchten.
Siehe den Anfang von $<$file:net/sched/sch\_sfq.c$>$ für weitere Details.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{sch\_sfq} heißen.

\paragraph{True Link Equalizer (TEQL)}$~$\\
CONFIG\_NET\_SCH\_TEQL [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Paketplanungsalgorithmus True Link Equalizer (TLE) verwenden
möchten. Diese Warteschlangendisziplin ermöglicht die Kombination mehrerer physischer Geräte
zu einem virtuellen Gerät.
Siehe den Anfang von $<$file:net/sched/sch\_teql.c$>$ für weitere Details.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{sch\_teql} heißen.

\paragraph{Token Bucket Filter (TBF)}$~$\\
CONFIG\_NET\_SCH\_TBF [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie den Token Bucket Filter (TBF) Paketplanungsalgorithmus verwenden wollen.
Siehe den Anfang von $<$file:net/sched/sch\_tbf.c$>$ für weitere Details.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{sch\_tbf} heißen.

\paragraph{Credit Based Shaper (CBS)}$~$\\
CONFIG\_NET\_SCH\_CBS [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Credit Based Shaper (CBS)-Paketplanungsalgorithmus
verwenden möchten.
Siehe den Anfang von $<$file:net/sched/sch\_cbs.c$>$ für weitere Details.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_cbs} heißen.

\paragraph{Earliest TxTime First (ETF)}$~$\\
CONFIG\_NET\_SCH\_ETF [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Paketplanungsalgorithmus Earliest TxTime First (ETF)
verwenden möchten.
Siehe den Anfang von $<$file:net/sched/sch\_etf.c$>$ für weitere Details.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_etf} heißen.

\paragraph{Time Aware Priority (taprio) Scheduler}$~$\\
CONFIG\_NET\_SCH\_TAPRIO [=m] \textbf{[M]}\\*
Geben Sie hier Y ein, wenn Sie den Algorithmus für die zeitabhängige
Prioritätsplanung (taprio) verwenden möchten.
Siehe den Anfang von $<$file:net/sched/sch\_taprio.c$>$ für weitere Details.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_taprio} genannt.

\paragraph{Generic Random Early Detection (GRED)}$~$\\
CONFIG\_NET\_SCH\_GRED [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie den GRED-Algorithmus (Generic Random Early
Detection) zur Paketplanung für einige Ihrer Netzwerkgeräte verwenden
wollen (siehe oben in $<$file:net/sched/sch\_red.c$>$ für Details
und Referenzen über den Algorithmus).
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_gred} heißen.

\paragraph{Network emulator (NETEM)}$~$\\
CONFIG\_NET\_SCH\_NETEM [=m] \textbf{[M]}\\*
Sagen Sie Y, wenn Sie Netzwerkverzögerungen, -verluste und die
Umordnung von Paketen emulieren wollen. Dies ist oft nützlich,
um Netzwerke beim Testen von Anwendungen oder Protokollen zu simulieren.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul heißt dann \texttt{sch\_netem}.\\
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Deficit Round Robin scheduler (DRR)}$~$\\
CONFIG\_NET\_SCH\_DRR [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Paketplanungsalgorithmus Deficit
Round Robin (DRR) verwenden wollen.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_drr} genannt.\\
Wenn Sie unsicher sind, geben Sie N an.

\paragraph{Multi-queue priority scheduler (MQPRIO)}$~$\\
CONFIG\_NET\_SCH\_MQPRIO [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie den Multi-queue Priority Scheduler verwenden wollen. Dieser Scheduler ermöglicht
die Auslagerung von QOS auf NICs, die die Auslagerung von QOS-Schedulern unterstützen.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_mqprio} genannt.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{SKB priority queue scheduler (SKBPRIO)}$~$\\
CONFIG\_NET\_SCH\_SKBPRIO [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den SKB-Prioritätswarteschlangenplaner verwenden
wollen. Dadurch werden Pakete gemäß skb\texorpdfstring{$\rightarrow$}{->}priority eingeplant, was für
Anforderungspakete in DoS-Abwehrsystemen wie Gatekeeper nützlich ist.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_skbprio} heißen.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{CHOose and Keep responsive flow scheduler (CHOKE)}$~$\\
CONFIG\_NET\_SCH\_CHOKE [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den CHOKe-Paketplaner verwenden wollen
(CHOose und Keep für responsive Flows, CHOose und Kill für unresponsive Flows).
Dies ist eine Variante von RED, die versucht, Datenflüsse zu bestrafen, die
die Warteschlange monopolisieren.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_choke} heißen.

\paragraph{Quick Fair Queueing scheduler (QFQ)}$~$\\
CONFIG\_NET\_SCH\_QFQ [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie den Paketplanungsalgorithmus Quick Fair Queueing
Scheduler (QFQ) verwenden möchten.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_qfq} genannt.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Controlled Delay AQM (CODEL)}$~$\\
CONFIG\_NET\_SCH\_CODEL [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Paketplanungsalgorithmus mit kontrollierter
Verzögerung (CODEL) verwenden möchten.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_codel} genannt.
Wenn Sie unsicher sind, geben Sie N an.

\paragraph{Fair Queue Controlled Delay AQM (FQ\_CODEL)}$~$\\
CONFIG\_NET\_SCH\_FQ\_CODEL [=y] \textbf{[Y]}\\*
Geben Sie hier Y an, wenn Sie den Paketplanungsalgorithmus FQ Controlled
Delay (FQ\_CODEL) verwenden möchten.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_fq\_codel} genannt.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Common Application Kept Enhanced (CAKE)}$~$\\
CONFIG\_NET\_SCH\_CAKE [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie den CAKE-Algorithmus (Common Applications
Kept Enhanced) für die Warteschlangenverwaltung verwenden wollen.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_cake} heißen.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Fair Queue}$~$\\
CONFIG\_NET\_SCH\_FQ [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den FQ-Paketplanungsalgorithmus verwenden
möchten.
FQ führt eine Flussseparation durch und ist in der Lage, die vom
TCP-Stack in sk\texorpdfstring{$\rightarrow$}{->}sk\_pacing\_rate
(für lokal erzeugten Verkehr) festgelegten Geschwindigkeitsanforderungen
zu erfüllen.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_fq} heißen.
Wenn Sie unsicher sind, geben Sie N an.

\paragraph{Heavy-Hitter Filter (HHF)}$~$\\
CONFIG\_NET\_SCH\_HHF [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Paketplanungsalgorithmus Heavy-Hitter Filter
(HHF) verwenden möchten.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_hhf} heißen.

\paragraph{Proportional Integral controller Enhanced (PIE) scheduler}$~$\\
CONFIG\_NET\_SCH\_PIE [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Paketplanungsalgorithmus
Proportional-Integral-Controller Enhanced Scheduler verwenden möchten.
Für weitere Informationen siehe \url{https://tools.ietf.org/html/rfc8033}\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_pie} genannt.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Flow Queue Proportional Integral controller Enhanced (FQ-PIE) scheduler}$~$\\
CONFIG\_NET\_SCH\_FQ\_PIE [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Paketplanungsalgorithmus Flow Queue Proportional
Integral Controller Enhanced (FQ-PIE) verwenden möchten.\\
Weitere Informationen finden Sie unter \url{https://tools.ietf.org/html/rfc8033}\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{sch\_fq\_pie} genannt.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Ingress/classifier-action Qdisc}$~$\\
CONFIG\_NET\_SCH\_INGRESS [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie Klassifikatoren für eingehende und/oder ausgehende Pakete
verwenden wollen. Diese qdisc tut nichts anderes, als Klassifikatoren auszuführen,
die auch mit Aktionen verbunden sein können. Im Falle von ausgehenden Paketen werden
die Klassifikatoren, die diese qdisc enthält, im Sendepfad ausgeführt, bevor das
eigentliche Enqueuing zu einer egress qdisc erfolgt.
Wenn Sie unsicher sind, sagen Sie Y.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird sch\_ingress mit dem Alias \texttt{sch\_clsact} heißen.

\paragraph{Plug network traffic until release (PLUG)}$~$\\
CONFIG\_NET\_SCH\_PLUG [=m] \textbf{[M]}\\*
Diese Warteschlangen-Disziplin ermöglicht es dem Userspace, über die Netlink-Schnittstelle
eine Netzwerk"=Ausgabewarteschlange anzuschließen bzw. abzuschließen. Wenn er einen
Enqueue"=Befehl erhält, fügt er einen Plug in die Ausgangswarteschlange ein, der bewirkt,
dass die nachfolgenden Pakete in die Warteschlange gestellt werden, bis ein Dequeue-Befehl
über Netlink eintrifft, wodurch der Plug entfernt und der normale Paketfluss wieder
aufgenommen wird.\\
Dieses Modul bietet auch eine allgemeine \glqq Netzwerk-Ausgangspufferung\grqq{} (auch
bekannt als \glqq Output Commit\grqq{}), bei der beim Eintreffen eines Dequeue-Befehls
nur Pakete bis zum ersten Plug zur Auslieferung freigegeben werden.
Das Remus-HA-Projekt verwendet dieses Modul, um die spekulative Ausführung virtueller
Maschinen zu ermöglichen, indem die erzeugte Netzwerkausgabe bei Bedarf zurückgesetzt werden kann.
Weitere Informationen finden Sie unter \url{http://wiki.xenproject.org/wiki/Remus}\\
Sagen Sie hier Y, wenn Sie diesen Kernel für Xen dom0 verwenden und Xen-Gäste mit Remus schützen wollen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{sch\_plug} genannt.

\paragraph{Enhanced transmission selection scheduler (ETS)}$~$\\
CONFIG\_NET\_SCH\_ETS [=m] \textbf{[M]}\\*
Der Enhanced Transmission Selection-Scheduler ist eine klassenbasierte Warteschlangen-Disziplin,
die die Funktionalität von PRIO- und DRR-QS-Disks in einem Scheduler vereint. ETS erleichtert
die Konfiguration einer Reihe strikter und bandbreitenteilender Bänder zur Umsetzung der in
802.1Qaz beschriebenen Übertragungsauswahl.\\
Sagen Sie hier Y, wenn Sie den ETS-Paketplanungsalgorithmus verwenden möchten.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul heißt dann \texttt{sch\_ets}.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Allow override default queue discipline \texorpdfstring{$\rightarrow$}{->}}$~$\\
CONFIG\_NET\_SCH\_DEFAULT [=y] \textbf{[Y]}\\*
Unterstützung für die Auswahl der Standard"=Warteschlangen"=Disziplin.
Fast alle Benutzer können hier sicher nein sagen, und es wird der Standardwert pfifo\_fast verwendet.
Viele Distributionen setzen den Standardwert bereits über /proc/sys/net/core/default\_qdisc.
Wenn Sie unsicher sind, sagen Sie N.

\subparagraph{Default queuing discipline () \texorpdfstring{$\rightarrow$}{->}}$~$\\
Wählen Sie die Warteschlangendisziplin, die standardmäßig für alle Netzwerkgeräte verwendet wird.

\subsubparagraph{Fair Queue}$~$\\
CONFIG\_DEFAULT\_FQ [=n] \textbf{[N]}\\*
Für diese Option ist keine Hilfe verfügbar.

\subsubparagraph{Controlled Delay}$~$\\
CONFIG\_DEFAULT\_CODEL [=n] \textbf{[N]}\\*
Für diese Option ist keine Hilfe verfügbar.

\subsubparagraph{Fair Queue Controlled Delay}$~$\\
CONFIG\_DEFAULT\_FQ\_CODEL [=y] \textbf{[Y]}\\*
Für diese Option ist keine Hilfe verfügbar.

\subsubparagraph{Flow Queue Proportional Integral controller Enhanced}$~$\\
CONFIG\_DEFAULT\_FQ\_PIE [=n] \textbf{[N]}\\*
Für diese Option ist keine Hilfe verfügbar.

\subsubparagraph{Stochastic Fair Queue}$~$\\
CONFIG\_DEFAULT\_SFQ [=n] \textbf{[N]}\\*
Für diese Option ist keine Hilfe verfügbar.

\subsubparagraph{Priority FIFO Fast}$~$\\
CONFIG\_DEFAULT\_PFIFO\_FAST [=n] \textbf{[N]}\\*
Für diese Option ist keine Hilfe verfügbar.

\paragraph*{*** Classification ***}$~$\\
\textit{(Klassifizierung)}

\paragraph{Elementary classification (BASIC)}$~$\\
CONFIG\_NET\_CLS\_BASIC [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie Pakete nur mit erweiterten Übereinstimmungen und Aktionen klassifizieren wollen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{cls\_basic} heißen.

\paragraph{Routing decision (ROUTE)}$~$\\
CONFIG\_NET\_CLS\_ROUTE4 [=m] \textbf{[M]}\\*
Wenn Sie hier Y angeben, können Sie die Pakete nach dem entsprechenden Eintrag in der
Routentabelle klassifizieren.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{cls\_route} heißen.

\paragraph{Netfilter mark (FW)}$~$\\
CONFIG\_NET\_CLS\_FW [=m] \textbf{[M]}\\*
Wenn Sie hier Y eingeben, können Sie Pakete nach Netzfilter-/Firewall-Marken klassifizieren.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{cls\_fw} heißen.

\paragraph{Universal 32bit comparisons w/ hashing (U32)}$~$\\
CONFIG\_NET\_CLS\_U32 [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um Pakete mit einem universellen, auf 32-Bit-Stücken basierenden Vergleichsschema
klassifizieren zu können.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{cls\_u32} heißen.

\subparagraph{Performance counters support}$~$\\
CONFIG\_CLS\_U32\_PERF [=y] \textbf{[Y]}\\*
Sagen Sie hier Y, damit u32 zusätzliche Statistiken sammelt, die für die Feinabstimmung
der u32-Klassifikatoren nützlich sind.

\subparagraph{Netfilter marks support}$~$\\
CONFIG\_CLS\_U32\_MARK [=y] \textbf{[Y]}\\*
Sagen Sie hier Y, um Netfilter-Marken als u32-Schlüssel verwenden zu können.

\paragraph{Flow classifier}$~$\\
CONFIG\_NET\_CLS\_FLOW [=m] \textbf{[M]}\\*
Wenn Sie hier Y angeben, können Sie Pakete auf der Grundlage einer konfigurierbaren
Kombination von Paketschlüsseln klassifizieren. Dies ist vor allem in Kombination
mit SFQ nützlich.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{cls\_flow} heißen.

\paragraph{Control Group Classifier}$~$\\
CONFIG\_NET\_CLS\_CGROUP [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie Pakete auf der Grundlage der Kontrollgruppe ihres Prozesses
klassifizieren wollen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{cls\_cgroup} genannt.

\paragraph{BPF-based classifier}$~$\\
CONFIG\_NET\_CLS\_BPF [=m] \textbf{[M]}\\*
Wenn Sie hier Y angeben, können Sie Pakete auf der Grundlage von programmierbaren
BPF-Filtern (JIT'ed) als Alternative zu Ematches klassifizieren.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{cls\_bpf} genannt.

\paragraph{Flower classifier}$~$\\
CONFIG\_NET\_CLS\_FLOWER [=m] \textbf{[M]}\\*
Wenn Sie hier Y angeben, können Sie Pakete auf der Grundlage einer konfigurierbaren
Kombination von Paketschlüsseln und Masken klassifizieren.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{cls\_flower} heißen.

\paragraph{Match-all classifier}$~$\\
CONFIG\_NET\_CLS\_MATCHALL [=m] \textbf{[M]}\\*
Wenn Sie hier Y angeben, können Sie Pakete auf der Grundlage von nichts klassifizieren.
Jedes Paket wird übereinstimmen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{cls\_matchall} heißen.

\paragraph{Extended Matches}$~$\\
CONFIG\_NET\_EMATCH [=y] \textbf{[Y]}\\*
Sagen Sie hier Y, wenn Sie erweiterte Übereinstimmungen zusätzlich zu den
Klassifikatoren verwenden möchten, und wählen Sie die erweiterten Übereinstimmungen
unten aus.
Erweiterte Übereinstimmungen sind kleine Klassifikationshilfen, für die es sich
nicht lohnt, einen eigenen Klassifikator zu schreiben. Eine aktuelle Version des
Pakets iproute2 ist erforderlich, um erweiterte Übereinstimmungen zu verwenden.

\subparagraph{Stack size}$~$\\
CONFIG\_NET\_EMATCH\_STACK [=32] \textbf{[32]}\\*
Größe der lokalen Stack-Variablen, die bei der Auswertung des Ematch"=Baums
verwendet wird. Begrenzt die Tiefe des Baums, d.~h. die Anzahl der eingekapselten
Präzedenzfälle. Jede Ebene erfordert 4~Byte zusätzlichen Stack-Speicherplatz.

\subparagraph{Simple packet data comparison}$~$\\
CONFIG\_NET\_EMATCH\_CMP [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie Pakete auf der Grundlage einfacher Paketdatenvergleiche
für 8-, 16- und 32-Bit-Werte klassifizieren möchten.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{em\_cmp} genannt.

\subparagraph{Multi byte comparison}$~$\\
CONFIG\_NET\_EMATCH\_NBYTE [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie Pakete auf der Grundlage von Vergleichen mehrerer
Bytes klassifizieren möchten, was vor allem für IPv6"=Adressvergleiche nützlich
ist.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{em\_nbyte} heißen.

\subparagraph{U32 key}$~$\\
CONFIG\_NET\_EMATCH\_U32 [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie Pakete mit dem berühmten u32-Schlüssel in Kombination
mit logischen Beziehungen klassifizieren wollen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{em\_u32} heißen.

\subparagraph{Metadata}$~$\\
CONFIG\_NET\_EMATCH\_META [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie Pakete auf der Grundlage von Metadaten wie
Lastdurchschnitt, Netzfilterattributen, Socket-Attributen und Routing-Entscheidungen
klassifizieren wollen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{em\_meta} heißen.

\subparagraph{Textsearch}$~$\\
CONFIG\_NET\_EMATCH\_TEXT [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie Pakete auf der Grundlage von Textsuchvergleichen
klassifizieren wollen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{em\_text} heißen.

\subparagraph{CAN Identifier}$~$\\
CONFIG\_NET\_EMATCH\_CANID [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie CAN-Frames anhand des CAN-Identifiers
klassifizieren möchten.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{em\_canid} genannt.

\subparagraph{IPset}$~$\\
CONFIG\_NET\_EMATCH\_IPSET [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie Pakete auf der Grundlage der ipset-Zugehörigkeit
klassifizieren wollen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{em\_ipset} heißen.

\subparagraph{IPtables Matches}$~$\\
CONFIG\_NET\_EMATCH\_IPT [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um Pakete anhand von iptables-Übereinstimmungen
klassifizieren zu können.
Die aktuell unterstützte Übereinstimmung ist \glqq policy\grqq{},
die die Klassifizierung von Paketen auf der Grundlage der IPsec"=Richtlinie
erlaubt, die während der Entkapselung verwendet wurde.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{em\_ipt} heißen.

\paragraph{Actions}$~$\\
CONFIG\_NET\_CLS\_ACT [=y] \textbf{[Y]}\\*
Sagen Sie hier Y, wenn Sie Aktionen zur Verkehrssteuerung verwenden möchten.
Aktionen werden an Klassifikatoren angehängt und nach einer erfolgreichen
Klassifizierung aufgerufen. Sie werden verwendet, um das
Klassifizierungsergebnis zu überschreiben, Pakete sofort zu verwerfen oder
umzuleiten, usw.
Eine aktuelle Version des iproute2-Pakets ist erforderlich, um erweiterte
Übereinstimmungen zu verwenden.

\subparagraph{Traffic Policing}$~$\\
CONFIG\_NET\_ACT\_POLICE [=m] \textbf{[M]}\\*
Geben Sie hier Y an, wenn Sie den Datenverkehr überwachen wollen, d.~h. eine strikte Bandbreitenbegrenzung.
Diese Aktion ersetzt das bestehende Policing-Modul.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_police} heißen.

\subparagraph{Generic actions}$~$\\
CONFIG\_NET\_ACT\_GACT [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um allgemeine Aktionen wie das Verwerfen und Annehmen von Paketen durchzuführen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{act\_gact} genannt.

\subsubparagraph{Probability support}$~$\\
CONFIG\_GACT\_PROB [=y] \textbf{[Y]}\\*
Sagen Sie hier Y, um die generische Aktion zufällig oder deterministisch zu verwenden.

\subparagraph{Redirecting and Mirroring}$~$\\
CONFIG\_NET\_ACT\_MIRRED [=m] \textbf{[M]}\\*
Geben Sie hier Y ein, um zuzulassen, dass Pakete gespiegelt oder an andere Geräte umgeleitet werden.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{act\_mirred} genannt.

\subparagraph{Traffic Sampling}$~$\\
CONFIG\_NET\_ACT\_SAMPLE [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um die Paketprobenahme tc Aktion zu erlauben. Bei der Aktion
\glqq Paketprobenahme\grqq{} werden Pakete statistisch ausgewählt und mit dem Modul
\texttt{psample} gesampelt.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_sample} genannt.

\subparagraph{IPtables targets}$~$\\
CONFIG\_NET\_ACT\_IPT [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um nach erfolgreicher Klassifizierung iptables"=Ziele aufrufen zu können.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_ipt} genannt.

\subparagraph{Stateless NAT}$~$\\
CONFIG\_NET\_ACT\_NAT [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um zustandsloses NAT für IPv4-Pakete durchzuführen.
Sie sollten netfilter für NAT verwenden, wenn Sie nicht wissen, was Sie tun.
Um diesen Code als Modul zu kompilieren, wähle hier M:
Das Modul wird \texttt{act\_nat} heißen.

\subparagraph{Packet Editing}$~$\\
CONFIG\_NET\_ACT\_PEDIT [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie den Inhalt von Paketen verfälschen wollen.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_pedit} genannt.

\subparagraph{Simple Example (Debug)}$~$\\
CONFIG\_NET\_ACT\_SIMP [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um eine einfache Aktion zu Demonstrationszwecken hinzuzufügen.
Sie ist als Beispiel und zu Debugging"=Zwecken gedacht. Sie gibt eine konfigurierte
Richtlinienzeichenkette gefolgt von der Anzahl der Pakete auf der Konsole für jedes
Paket aus, das vorbeigeht.
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_simple} genannt.

\subparagraph{SKB Editing}$~$\\
CONFIG\_NET\_ACT\_SKEDIT [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um die skb-Priorität oder die queue\_mapping"=Einstellungen zu ändern.
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_skbedit} genannt.

\subparagraph{Checksum Updating}$~$\\
CONFIG\_NET\_ACT\_CSUM [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um eine allgemeine Prüfsumme nach einigen direkten Paketänderungen zu aktualisieren.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{act\_csum} genannt.

\subparagraph{MPLS manipulation}$~$\\
CONFIG\_NET\_ACT\_MPLS [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um MPLS-Header zu schieben oder zu entfernen (push or pop).
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_mpls} genannt.

\subparagraph{Vlan manipulation}$~$\\
CONFIG\_NET\_ACT\_VLAN [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um vlan-Header zu verschieben oder zu löschen (push or pop).
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_vlan} genannt.

\subparagraph{BPF based action}$~$\\
CONFIG\_NET\_ACT\_BPF [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um den BPF-Code für die Pakete auszuführen. Der BPF-Code entscheidet,
ob das Paket verworfen werden soll oder nicht.
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_bpf} genannt.

\subparagraph{Netfilter Connection Mark Retriever}$~$\\
CONFIG\_NET\_ACT\_CONNMARK [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um das Abrufen der Verbindungsmarkierung zu erlauben.
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_connmark} genannt.

\subparagraph{Netfilter Connection Mark Actions}$~$\\
CONFIG\_NET\_ACT\_CTINFO [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um die Übertragung einer gespeicherten Information zu erlauben. Aktuelle Aktionen
übertragen in connmark gespeicherte DSCP in ipv4/v6 diffserv und/oder übertragen connmark in
packet mark. Beides ist nützlich, um egress-basierte Markierungen wieder auf ingress-Verbindungen für
qdisc"=Prioritätszuordnungszwecke zu übertragen.\\
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_ctinfo} genannt.

\subparagraph{skb data modification action}$~$\\
CONFIG\_NET\_ACT\_SKBMOD [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um die Änderung von skb-Daten zu erlauben.
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_skbmod} genannt.

\subparagraph{Inter-FE action based on IETF ForCES interFE LFB}$~$\\
CONFIG\_NET\_ACT\_IFE [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um die Beschaffung und Beendigung von Metadaten zu ermöglichen.
Einzelheiten finden Sie im netdev01-Dokument:
\glqq Verteilendes Linux-Verkehrskontroll-Klassifikator-Aktions-Subsystem\grqq{}\\
Autoren: Jamal Hadi Salim und Damascene M. Joachimpillai\\
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{act\_ife} heißen.

\subparagraph{IP tunnel metadata manipulation}$~$\\
CONFIG\_NET\_ACT\_TUNNEL\_KEY [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um ip-Tunnel-Metadaten zu setzen/freizugeben.
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird
\texttt{act\_tunnel\_key} heißen.

\subparagraph{connection tracking tc action}$~$\\
CONFIG\_NET\_ACT\_CT [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um das Senden der Pakete an das Modul conntrack zu erlauben.
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_ct} genannt.

\subparagraph{Frame gate entry list control tc action}$~$\\
CONFIG\_NET\_ACT\_GATE [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um zu ermöglichen, dass der Eingangsstrom zu einem bestimmten Zeitschlitz
durchgelassen und zu einem anderen bestimmten Zeitschlitz durch die Gate-Eingangsliste fallen
gelassen wird.
Wenn Sie unsicher sind, sagen Sie N.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{act\_gate} genannt.

\paragraph{Support to encoding decoding skb mark on IFE action}$~$\\
CONFIG\_NET\_IFE\_SKBMARK [=m] \textbf{[M]}\\*
\textit{Unterstützung für die Kodierung und Dekodierung der skb-Markierung bei IFE-Aktionen}\\
Für diese Option ist keine Hilfe verfügbar.

\paragraph{Support to encoding decoding skb prio on IFE action}$~$\\
CONFIG\_NET\_IFE\_SKBPRIO [=m] \textbf{[M]}\\*
\textit{Unterstützung für die Kodierung und Dekodierung von skb prio bei IFE-Aktionen}
Für diese Option ist keine Hilfe verfügbar.

\paragraph{Support to encoding decoding skb tcindex on IFE action}$~$\\
CONFIG\_NET\_IFE\_SKBTCINDEX [=m] \textbf{[M]}\\*
\textit{Unterstützung für die Kodierung und Dekodierung von skb tcindex bei IFE-Aktionen}\\
Für diese Option ist keine Hilfe verfügbar.

\paragraph{TC recirculation support}$~$\\
CONFIG\_NET\_TC\_SBK\_EXT [=y] \textbf{[Y]}\\*
Sagen Sie hier Y, damit tc-Kettenfehler im OvS-Datenpfad in der richtigen recirc\_id und
Hardware"=Kettenfehler in der richtigen Kette im tc"=Software"=Datenpfad fortgesetzt
werden können.
Sagen Sie hier N, wenn Sie
tc\texorpdfstring{$\leftrightarrow$}{<->}ovs
offload oder tc chains offload nicht verwenden wollen.

\subsubsection{Data Center Bridging support}
CONFIG\_DCB [=y] \textbf{[Y]}\\*
Dies ermöglicht die Unterstützung für die Konfiguration von Data Center Bridging (DCB)"=Funktionen
auf DCB"=fähigen Ethernet"=Adaptern über rtnetlink. Sagen Sie Y, wenn Sie einen DCB"=fähigen
Ethernet"=Adapter haben, der diese Schnittstelle unterstützt, und Sie an einen DCB"=fähigen
Switch angeschlossen sind. DCB ist eine Sammlung von Ethernet"=Erweiterungen, die es DCB"=fähigen
NICs und Switches ermöglichen, Netzwerkverkehr mit unterschiedlichen Anforderungen (hochzuverlässig,
keine Ausfälle vs. Best Effort vs. niedrige Latenz) auf dem Ethernet nebeneinander zu unterstützen.
Zu den DCB-Funktionen gehören:
Enhanced Transmission Selection (auch bekannt als Priority Grouping) -- bietet einen Rahmen für die
Zuweisung von Bandbreitengarantien an Verkehrsklassen.
Prioritätsbasierte Flusssteuerung (PFC) -- ein MAC"=Kontrollpausenrahmen, der auf der Granularität
der 802.1p"=Priorität und nicht auf der der Verbindung (802.3x) arbeitet.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{DNS Resolver support}
CONFIG\_DNS\_RESOLVER [=m] \textbf{[M]}\\*
Wenn Sie hier Y angeben, wird auch der Schlüsseltyp DNS Resolver unterstützt, der für Upcalls
verwendet werden kann, um DNS-Lookups im Userspace durchzuführen.
DNS Resolver wird verwendet, um DNS-Server nach Informationen zu fragen. Beispiele hierfür sind die
Auflösung eines UNC"=Hostnamen"=Elements in eine IP"=Adresse für CIFS oder die Durchführung einer
DNS"=Abfrage nach AFSDB"=Einträgen, damit AFS die Datenbankserver für den Speicherort einer Zelle
finden kann.
DNS Resolver wird von den Modulen CIFS und AFS verwendet und würde später auch SMB2 unterstützen.
DNS Resolver wird von der Userspace-Aufrufhilfe \texttt{/sbin/dns.resolver} über
/etc/request-key.conf unterstützt.
Siehe $<$file:Documentation/networking/dns\_resolver.rst$>$ für weitere Informationen.
Um dies als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{dnsresolver} heißen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{B.A.T.M.A.N. Advanced Meshing Protocol}
CONFIG\_BATMAN\_ADV [=m] \textbf{[M]}\\*
B.A.T.M.A.N. (better approach to mobile ad-hoc networking) ist ein Routing"=Protokoll für
Multi"=Hop"=Ad"=hoc"=Mesh"=Netze. Die Netze können drahtgebunden oder drahtlos sein.\\
Siehe \url{https://www.open-mesh.org/} für weitere Informationen und User Space Tools.

\paragraph{B.A.T.M.A.N. V protocol}$~$\\
CONFIG\_BATMAN\_ADV\_BATMAN\_V [=y] \textbf{[Y]}\\*
Diese Option aktiviert das B.A.T.M.A.N.-V"=Protokoll, den Nachfolger des derzeit verwendeten\\
B.A.T.M.A.N."=IV"=Protokolls. Zu den wichtigsten Änderungen gehören die Aufteilung des
OGM"=Protokolls in ein Nachbarschaftserkennungsprotokoll (Echo Location Protocol, ELP) und ein
neues OGM"=Protokoll OGMv2 zum Fluten von Protokollinformationen durch das Netz sowie eine
durchsatzbasierte Metrik.
B.A.T.M.A.N. V gilt derzeit als experimentell und ist nicht mit B.A.T.M.A.N. IV"=Netzen kompatibel.

\paragraph{Bridge Loop Avoidance}$~$\\
CONFIG\_BATMAN\_ADV\_BLA [=y] \textbf{[Y]}\\*
Diese Option aktiviert BLA (Bridge Loop Avoidance), einen Mechanismus zur Vermeidung von
Ethernet"=Rahmenschleifen, wenn Mesh"=Knoten sowohl mit demselben LAN als auch mit demselben Mesh
verbunden sind. Wenn Sie nie mehr als einen Mesh"=Knoten im selben LAN verwenden werden, können Sie
diese Funktion getrost entfernen und etwas Platz sparen.

\paragraph{Distributed ARP Table}$~$\\
CONFIG\_BATMAN\_ADV\_DAT [=y] \textbf{[Y]}\\*
Diese Option aktiviert DAT (Distributed ARP Table), einen DHT"=basierten Mechanismus, der die
ARP"=Zuverlässigkeit in spärlichen drahtlosen Mesh"=Netzwerken erhöht.
Wenn Sie der Meinung sind, dass Ihr Netzwerk diese Option nicht benötigt, können Sie sie getrost
entfernen und etwas Platz sparen.

\paragraph{Network Coding}$~$\\
CONFIG\_BATMAN\_ADV\_NC [=y] \textbf{[Y]}\\*
Mit dieser Option wird die Netzwerkcodierung aktiviert, ein Mechanismus, der darauf abzielt, den
Gesamtdurchsatz des Netzwerks zu erhöhen, indem mehrere Pakete in einer Übertragung zusammengefasst
werden.
Beachten Sie, dass Schnittstellen, die von batman-adv kontrolliert werden, manuell so konfiguriert
werden müssen, dass der promiscuous mode aktiviert ist, damit die Netzwerkcodierung funktioniert.
Wenn Sie der Meinung sind, dass Ihr Netzwerk diese Funktion nicht benötigt, können Sie sie getrost
deaktivieren und etwas Platz sparen.

\paragraph{Multicast optimisation}$~$\\
CONFIG\_BATMAN\_ADV\_MCAST [=y] \textbf{[Y]}\\*
Mit dieser Option wird die Multicast-Optimierung aktiviert, die darauf abzielt, den Air"=Overhead
zu reduzieren und gleichzeitig die Zuverlässigkeit von Multicast"=Nachrichten zu verbessern.

\paragraph{B.A.T.M.A.N. debugging}$~$\\
CONFIG\_BATMAN\_ADV\_DEBUG [=n] \textbf{[N]}\\*
Dies ist eine Option für Entwickler; die meisten Leute sollten hier N angeben. Dies aktiviert die
Kompilierung der Unterstützung für die Ausgabe von Debugging"=Informationen in den
Tracing"=Puffer. Die Ausgabe wird über die batadv netdev"=spezifische log\_level"=Einstellung
gesteuert.

\paragraph{B.A.T.M.A.N. tracing support}$~$\\
CONFIG\_BATMAN\_ADV\_TRACING [=n] \textbf{[N]}\\*
Dies ist eine Option für Entwickler; die meisten Leute sollten hier N angeben. Wählen Sie diese
Option, um Traces wie die Debug"=Meldungen unter Verwendung der generischen Tracing"=Infrastruktur
des Kernels zu sammeln.
BATMAN\_ADV\_DEBUG muss ebenfalls ausgewählt werden, um Trace-Ereignisse für batadv\_dbg zu erhalten.

\subsubsection{Open vSwitch}
CONFIG\_OPENVSWITCH [=m] \textbf{[M]}\\*
Open vSwitch ist ein Multilayer"=Ethernet"=Switch für virtualisierte Umgebungen.
Er unterstützt nicht nur eine Vielzahl von Funktionen, die von einem herkömmlichen Hardware"=Switch
erwartet werden, sondern ermöglicht auch eine feinkörnige programmatische Erweiterung und eine
flussbasierte Steuerung des Netzwerks. Diese Kontrolle ist in einer Vielzahl von Anwendungen nützlich,
aber besonders wichtig in Multi"=Server"=Virtualisierungsumgebungen, die oft durch hochdynamische
Endpunkte und die Notwendigkeit gekennzeichnet sind, logische Abstraktionen für mehrere Mandanten
aufrechtzuerhalten. Der \glqq Open vSwitch\grqq{}"=Datenpfad bietet einen schnellen Pfad für die
Paketweiterleitung im Kernel. Er wird durch einen Userspace"=Daemon, ovs-vswitchd, ergänzt, der in
der Lage ist, Konfigurationen aus einer Vielzahl von Quellen zu akzeptieren und sie in Regeln für
die Paketverarbeitung zu übersetzen.
Siehe \url{http://openvswitch.org} für weitere Informationen und Userspace"=Utilities. Um diesen
Code als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{openvswitch} heißen.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Open vSwitch GRE tunneling support}$~$\\
CONFIG\_OPENVSWITCH\_GRE [=m] \textbf{[M]}\\*
Wenn Sie hier Y angeben, kann der Open vSwitch GRE vport erstellen.
Sagen Sie N, um diese Unterstützung auszuschließen und die Binärgröße zu reduzieren.
Wenn Sie unsicher sind, sagen Sie Y.

\paragraph{Open vSwitch VXLAN tunneling support}$~$\\
CONFIG\_OPENVSWITCH\_VXLAN [=m] \textbf{[M]}\\*
Wenn Sie hier Y angeben, kann der Open vSwitch vxlan vport erstellen. Sagen Sie N, um diese
Unterstützung auszuschließen und die Binärgröße zu reduzieren.
Wenn Sie unsicher sind, sagen Sie Y.

\paragraph{Open vSwitch Geneve tunneling support}$~$\\
CONFIG\_OPENVSWITCH\_GENEVE [=m] \textbf{[M]}\\*
Wenn Sie hier Y angeben, kann der Open vSwitch geneve vport erstellen.
Sagen Sie N, um diese Unterstützung auszuschließen und die Binärgröße zu reduzieren.

\subsubsection{Virtual Socket protocol}
CONFIG\_VSOCKETS [=m] \textbf{[M]}\\*
Das Virtual Socket Protocol ist ein TCP/IP-ähnliches Socket"=Protokoll, das die Kommunikation zwischen
virtuellen Maschinen und Hypervisor oder Host ermöglicht.
Sie sollten auch einen oder mehrere der folgenden hypervisorspezifischen Transporte auswählen.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{vsock} heißen. Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Virtual Sockets monitoring interface}$~$\\
CONFIG\_VSOCKETS\_DIAG [=m] \textbf{[M]}\\*
Unterstützung für die PF\_VSOCK-Socket"=Überwachungsschnittstelle, die vom ss"=Tool verwendet wird.
Wenn Sie unsicher sind, sagen Sie Y.
Aktivieren Sie dieses Modul, damit Userspace"=Anwendungen offene Sockets abfragen können.

\paragraph{Virtual Sockets loopback transport}$~$\\
CONFIG\_VSOCKETS\_LOOPBACK [=m] \textbf{[M]}\\*
Dieses Modul implementiert einen Loopback-Transport für Virtual Sockets unter Verwendung von\\
vmw\_vsock\_virtio\_transport\_common.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{vsock\_loopback} genannt. Wenn Sie unsicher sind, sagen Sie N.

\paragraph{VMware VMCI transport for Virtual Sockets}$~$\\
CONFIG\_VMWARE\_VMCI\_VSOCKETS [=m] \textbf{[M]}\\*
Dieses Modul implementiert einen VMCI-Transport für virtuelle Sockets. Aktivieren Sie diesen Transport,
wenn Ihre virtuelle Maschine auf einem VMware"=Hypervisor läuft.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird vmw\_vsock\_vmci\_transport heißen. Wenn Sie unsicher sind, wählen Sie N.

\paragraph{virtio transport for Virtual Sockets}$~$\\
CONFIG\_VIRTIO\_VSOCKETS [=m] \textbf{[M]}\\*
Dieses Modul implementiert einen Virtio-Transport für virtuelle Sockets. Aktivieren Sie diesen Transport,
wenn Ihr Virtual Machine-Host Virtual Sockets über virtio unterstützt.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird vmw\_vsock\_virtio\_transport heißen. Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Hyper-V transport for Virtual Sockets}
CONFIG\_HYPERV\_VSOCKETS [=m] \textbf{[M]}\\*
Dieses Modul implementiert einen Hyper-V-Transport für virtuelle Sockets. Aktivieren Sie diesen Transport,
wenn Ihr Virtual Machine Host Virtual Sockets über Hyper-V VMBus unterstützt.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{hv\_sock} genannt. Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{NETLINK: socket monitoring interface}
CONFIG\_NETLINK\_DIAG [=m] \textbf{[M]}\\*
Unterstützung für die NETLINK"=Socket"=Überwachungsschnittstelle, die vom ss"=Tool verwendet wird.
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{MultiProtocol Label Switching \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_MPLS [=y] \textbf{[Y]}\\*
MultiProtocol Label Switching leitet Pakete durch logische Schaltkreise.
Ursprünglich als Möglichkeit zur Weiterleitung von Paketen mit
Hardware-Geschwindigkeit konzipiert (bevor die Hardware in der Lage war,
ipv4-Pakete weiterzuleiten), ist MPLS nach wie vor ein einfaches Verfahren zur
Herstellung von Tunneln.
Wenn Sie noch nie etwas von MPLS gehört haben, sollten Sie hier N sagen.

\paragraph{MPLS: GSO support}$~$\\
CONFIG\_NET\_MPLS\_GSO [=m] \textbf{[M]}\\*
Dies ist ein Hilfsmodul, das die Segmentierung von Nicht-MPLS-GSO"=Paketen
ermöglicht, denen MPLS"=Stack"=Einträge hinzugefügt wurden, so dass sie zu
MPLS-GSO"=Paketen werden.

\paragraph{MPLS: routing support}$~$\\
CONFIG\_MPLS\_ROUTING [=m] \textbf{[M]}\\*
Hinzufügen von Unterstützung für die Weiterleitung von mpls"=Paketen.

\subparagraph{MPLS: IP over MPLS tunnel support}$~$\\
CONFIG\_MPLS\_IPTUNNEL [=m] \textbf{[M]}\\*
Unterstützung von mpls ip tunnel.

\subsubsection{Network Service Header (NSH) protocol ---}
CONFIG\_NET\_NSH [=m] \textbf{[M]}\\*
Network Service Header ist eine Implementierung von Service Function Chaining
(RFC~7665). Die aktuelle Implementierung in Linux unterstützt nur MD~Typ~1 und
nur mit dem openvswitch"=Modul.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{High-availability Seamless Redundancy (HSR \& PRP)}
CONFIG\_HSR [=m] \textbf{[M]}\\*
Dies ermöglicht die in IEC~62439 definierte hochverfügbare nahtlose Redundanz
(HSR) und das Parallel Redundancy Protocol (PRP).
Wenn Sie hier Y angeben, kann Ihr Linux"=Rechner als DANH
(\glqq Doubly attached node implementing HSR\grqq{}) oder DANP (\glqq Doubly
attached node implementing PRP\grqq{}) fungieren. Damit dies funktioniert,
benötigt Ihr Linux"=Rechner (mindestens) zwei physische Ethernet"=Schnittstellen.\\
Für DANH muss er als Knoten in einem Ringnetz zusammen mit anderen HSR-fähigen
Knoten angeschlossen sein. Alle über das HSR-Gerät gesendeten Ethernet"=Frames
werden in beide Richtungen auf dem Ring (über beide Slave-Ports) gesendet,
wodurch ein redundantes, sofort ausfallsicheres Netzwerk entsteht.
Jeder HSR"=Knoten im Ring verhält sich für HSR"=Rahmen wie eine Brücke, filtert
aber Rahmen, die bereits weitergeleitet wurden.\\
Für DANP muss er als Knoten angeschlossen werden, der über die beiden
Slave"=Schnittstellen mit zwei getrennten Netzen verbunden ist.
Wie bei HSR werden Ethernet"=Rahmen, die über das PRP"=Gerät gesendet werden,
an beide Netze weitergeleitet, so dass ein redundantes, sofort ausfallsicheres
Netz entsteht. Im Gegensatz zu HSR können PRP-Netze über Singly
Attached Nodes (SAN) wie PC, Drucker, Brücken usw. verfügen und mit
DANP-Knoten kommunizieren.\\
Dieser Code ist ein Versuch, die HSR-Norm, wie sie in IEC~62439-3:2010 (HSRv0)
und IEC~62439-3:2012 (HSRv1) beschrieben ist, und die PRP-Norm, wie sie
in IEC~62439-4:2012 (PRP) beschrieben ist, zu erfüllen, aber es wurden keine
Konformitätstests durchgeführt. Verwenden Sie iproute2, um das gewünschte
Protokoll auszuwählen.\\
Sie müssen alle notwendigen Tests selbst durchführen, bevor Sie sich auf
diesen Code in einem sicherheitskritischen System verlassen!\\
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Switch (and switch-ish) device support}
CONFIG\_NET\_SWITCHDEV [=y] \textbf{[Y]}\\*
\textit{Unterstützung von Switches (und Switch-ähnlichen Geräten)}\\
Dieses Modul stellt eine Verbindung zwischen dem Kern-Netzwerkcode und
den Gerätetreibern her, um Hardware-Switch-Chips im sehr allgemeinen
Sinne des Wortes \glqq Switch\grqq{} zu unterstützen. Dazu gehören Geräte,
die L2/L3 unterstützen, aber auch verschiedene Flow-Offloading-Chips,
einschließlich in SR-IOV-NICs eingebettete Switches.

\subsubsection{L3 Master device support}
CONFIG\_NET\_L3\_MASTER\_DEV [=y] \textbf{[Y]}\\*
Dieses Modul stellt eine Verbindung zwischen dem Kernnetzcode und den
Gerätetreibern her, um L3"=Master"=Geräte wie VRF zu unterstützen.

\subsubsection{Qualcomm IPC Router support}
CONFIG\_QRTR [=m] \textbf{[M]}\\*
Sagen Sie Y, wenn Sie das IPC-Routerprotokoll von Qualcomm verwenden möchten.
Das Protokoll wird für die Kommunikation mit Diensten verwendet, die
von anderen Hardware-Blöcken im System bereitgestellt werden.
Für die Suche nach Diensten ist ein Userspace"=Daemon erforderlich,
der eine Diensteliste führt.

\paragraph{SMD IPC Router channels}$~$\\
CONFIG\_QRTR\_SMD [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um SMD-basierte ipcrouter"=Kanäle zu unterstützen.
SMD ist der gebräuchlichste Transport für IPC"=Router.

\paragraph{TUN device for Qualcomm IPC Router}$~$\\
CONFIG\_QRTR\_TUN [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um ein Zeichengerät freizugeben, das es dem Userspace erlaubt,
Endpunkte von QRTR zu implementieren, um Daten zu anderen Hosts zu tunneln oder
zu testen.

\paragraph{MHI IPC Router channels}$~$\\
CONFIG\_QRTR\_MHI [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um MHI-basierte ipcrouter-Kanäle zu unterstützen.
MHI ist der Transport, der für die Kommunikation mit externen Modems verwendet wird.

\subsubsection{NCSI interface support}
CONFIG\_NET\_NCSI [=y] \textbf{[Y]}\\*
Dieses Modul bietet NCSI-Unterstützung (Network Controller Sideband Interface).
Aktivieren Sie dies nur, wenn Ihr System eine Verbindung zu einem Netzwerkgerät
über NCSI herstellt und der verwendete Ethernet-Treiber das Protokoll
ausdrücklich unterstützt.

\paragraph{Get NCSI OEM MAC Address}$~$\\
CONFIG\_NCSI\_OEM\_CMD\_GET\_MAC [=y] \textbf{[Y]}\\*
Dies ermöglicht es, die MAC-Adresse von der NCSI-Firmware zu erhalten
und sie auf den Controller zurückzusetzen.

\paragraph{Keep PHY Link up}$~$\\
CONFIG\_NCSI\_OEM\_CMD\_KEEP\_PHY [=y] \textbf{[Y]}\\*
Dies ermöglicht es, die PHY-Verbindung aufrechtzuerhalten und verhindert ein
Zurücksetzen des Kanals während der Belastung durch den Host.

\subsubsection{Use percpu variables to maintain network device refcount}
CONFIG\_PCPU\_DEV\_REFCNT [=y] \textbf{[Y]}\\*
Netzwerkgerät refcount verwenden pro CPU-Variablen, wenn diese Option gesetzt ist.
Dies kann auf N erzwungen werden, um Unterläufe zu erkennen (mit Leistungseinbußen).

\subsubsection{Maximum number of fragments per skb\_shared\_info}
CONFIG\_MAX\_SKB\_FRAGS [=17] \textbf{[17]}\\*
Eine größere Anzahl von Fragmenten pro\ skb\_shared\_info kann die Effizienz von
GRO erhöhen. Dies hilft bei großen TCP"=Arbeitslasten, kann aber Fehler in
einigen älteren Treibern aufdecken.\\
Dies erhöht auch den Speicher"=Overhead von kleinen Paketen und in Treibern,
die build\_skb() verwenden.\\
Wenn Sie unsicher sind, sagen Sie 17.

\subsubsection{Network priority cgroup}
CONFIG\_CGROUP\_NET\_PRIO [=y] \textbf{[Y]}\\*
Cgroup-Subsystem zur Verwendung bei der Zuweisung von Prozessen zu
Netzwerkprioritäten auf Schnittstellenbasis.

\subsubsection{Network classid cgroup}
CONFIG\_CGROUP\_NET\_CLASSID [=y] \textbf{[Y]}\\*
Cgroup-Subsystem zur Verwendung als Allzweck-Socket-Classid-Marker, der in
cls\_cgroup und für den Netzfilterabgleich verwendet wird.

\subsubsection{enable BPF STREAM\_PARSER}
CONFIG\_BPF\_STREAM\_PARSER [=y] \textbf{[Y]}\\*
Wenn Sie dies aktivieren, kann ein TCP"=Stream"=Parser mit
BPF\_MAP\_TYPE\_SOCKMAP verwendet werden.

\subsubsection{Network testing \texorpdfstring{$\rightarrow$}{->}}
\textit{(Netzwerktests)}

\paragraph{Packet Generator (USE WITH CAUTION)}$~$\\
CONFIG\_NET\_PKTGEN [=m] \textbf{[M]}\\*
\textit{(Paketgenerator (mit Vorsicht zu verwenden))}\\
Dieses Modul sendet vorkonfigurierte Pakete mit einer konfigurierbaren Rate über eine
bestimmte Schnitt"-stel"-le. Es wird für Belastungstests und Leistungsanalysen von
Netzwerk"-schnittstellen verwendet. Wenn Sie nicht verstehen, was gerade gesagt wurde,
dann benötigen Sie es nicht: Sagen Sie N.
Eine Dokumentation über die Verwendung des Paketgenerators finden Sie unter
$<$file:Documentation/networking/pktgen.rst$>$.
Um diesen Code als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{pktgen} genannt.

\paragraph{Network packet drop alerting service}$~$\\
CONFIG\_NET\_DROP\_MONITOR [=y] \textbf{[Y]}\\*
Diese Funktion bietet einen Alarmierungsdienst für den Userspace, wenn Pakete im
Netzwerkstapel verworfen werden. Warnungen werden über den Netlink"=Socket an jeden
zuhörenden Userspace"=Prozess gesendet.\\
Wenn Sie keine Netzwerkwarnungen benötigen, oder wenn es Ihnen genügt, die
verschiedenen proc-Dateien und andere Dienstprogramme auf Verwerfungsstatistiken
zu überprüfen, sagen Sie hier N.

\subsection{Amateur Radio support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_HAMRADIO [=y] \textbf{[Y]}\\*
Wenn Sie Ihre Linux-Box mit einem Amateurfunkgerät verbinden wollen, antworten Sie
hier mit Y. Lesen Sie \url{https://www.tapr.org/} und speziell über AX.25
\url{https://linux-ax25.in-berlin.de} um weitere Informationen zu erhalten.
Beachten Sie, dass die Antwort auf diese Frage keine direkte Auswirkung
auf den Kernel hat: Wenn Sie N sagen, überspringt der Konfigurator einfach
alle Fragen zum Amateurfunk.

\subsubsection*{*** Packet Radio protocols ***}
\textit{(Amateurfunkprotokolle)}

\subsubsection{Amateur Radio AX.25 Level 2 protocol}
CONFIG\_AX25 [=m] \textbf{[M]}\\*
Dies ist das Protokoll, das für die Computerkommunikation über Amateurfunk verwendet
wird. Es wird entweder allein für Punkt"=zu"=Punkt"=Verbindungen verwendet oder um
andere Protokolle wie tcp/ip zu übertragen. Um es zu benutzen, brauchen Sie ein
Gerät, das Ihre Linux-Box mit Ihrem Amateurfunkgerät verbindet. Sie können entweder
einen langsamen TNC (ein Terminal Node Controller fungiert als eine Art Modem,
das den seriellen Anschluss Ihres Computers mit dem Mikrofoneingang und dem
Lautsprecherausgang Ihres Funkgeräts verbindet) verwenden, der das KISS"=Protokoll
unterstützt, oder eine der verschiedenen SCC-Karten, die vom generischen Z8530
oder dem DMA SCC-Treiber unterstützt werden. Eine weitere Option sind die seriellen
und parallelen Baycom"=Modem"=Hacks oder das Soundkarten"=Modem (die von ihren
eigenen Treibern unterstützt werden). Wenn Sie hier Y für Ja sagen, müssen Sie
auch Y zu einem dieser Treiber sagen.\\
Informationen darüber, wo man unterstützende Software für Linux"=Amateurfunk erhält,
sowie Informationen darüber, wie man einen AX.25"=Port konfiguriert, sind im
AX25-HOWTO enthalten, das unter \url{https://www.tldp.org/docs.html#howto}
erhältlich ist. Sie können auch einen Blick in die Datei
$<$file:Documentation/networking/ax25.rst$>$ im Kernel-Quellcode werfen.
Weitere Informationen über digitalen Amateurfunk im Allgemeinen finden Sie im
WWW unter \url{https://www.tapr.org/}.\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul heißt dann \texttt{ax25}.

\paragraph{AX.25 DAMA Slave support}$~$\\
CONFIG\_AX25\_DAMA\_SLAVE [=y] \textbf{[Y]}\\*
DAMA ist ein Mechanismus zur Vermeidung von Kollisionen bei AX.25"=Netzwerken.
Ein DAMA"=Server (genannt \glqq Master\grqq{}) nimmt eingehenden Verkehr von Clients
(genannt \glqq Slaves\grqq{}) entgegen und verteilt ihn an andere Slaves weiter.
Wenn Sie hier Y sagen, wird Ihr Linux-Rechner als DAMA-Slave fungieren; dies ist insofern
transparent, als Sie keine spezielle DAMA"=Konfiguration vornehmen müssen. Linux kann noch
nicht als DAMA"=Server fungieren. Diese Option kompiliert nur die DAMA"=Slave"=Unterstützung
in den Kernel. Sie muss immer noch zur Laufzeit aktiviert werden. Mehr über DAMA finden
Sie unter \url{https://linux-ax25.in-berlin.de}.\\
Wenn Sie unsicher sind, sagen Sie Y.

\paragraph{Amateur Radio NET/ROM protocol}$~$\\
CONFIG\_NETROM [=m] \textbf{[M]}\\*
NET/ROM ist ein Netzschichtprotokoll, das auf AX.25 aufsetzt und für die Leitweglenkung
nützlich ist. Eine umfassende Auflistung aller Software für Linux-Amateurfunknutzer
sowie Informationen über die Konfiguration eines AX.25-Ports finden Sie im Linux Ham Wiki,
das unter \url{https://linux-ax25.in-berlin.de} verfügbar ist. Sie sollten auch einen
Blick in die Datei\\
$<$file:Documentation/networking/ax25.rst$>$ werfen.
Weitere Informationen über digitalen Amateurfunk im Allgemeinen finden Sie im WWW unter
\url{https://www.tapr.org/}.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul heißt dann \texttt{netrom}.

\paragraph{Amateur Radio X.25 PLP (Rose)}$~$\\
CONFIG\_ROSE [=m] \textbf{[M]}\\*
Das Packet Layer Protocol (PLP) ist eine Möglichkeit, Pakete über X.25"=Verbindungen
im Allgemeinen und Amateurfunk AX.25"=Verbindungen im Besonderen zu leiten,
im Wesentlichen eine Alternative zu NET/ROM. Eine umfassende Auflistung der gesamten
Software für Linux"=Amateurfunknutzer sowie Informationen über die Konfiguration
eines AX.25"=Ports finden Sie im Linux Ham Wiki, das unter
\url{https://linux-ax25.in-berlin.de} verfügbar ist.
Sie sollten auch einen Blick in die Datei $<$file:Documentation/networking/ax25.rst$>$
werfen. Weitere Informationen über digitalen Amateurfunk im Allgemeinen finden Sie im
WWW unter \url{https://www.tapr.org/}.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{rose} heißen.

\paragraph{AX.25 network device drivers \texorpdfstring{$\rightarrow$}{->}}$~$\\
\textit{(AX.25-Netzwerktreiber)}

\subparagraph{Serial port KISS driver}$~$\\
CONFIG\_MKISS [=m] \textbf{M}\\*
KISS ist ein Protokoll für den Datenaustausch zwischen einem Computer und einem Terminal
Node Controller (ein kleines eingebettetes System, das häufig für die Vernetzung über
AX.25"=Amateurfunkverbindungen verwendet wird; es verbindet den seriellen Anschluss des
Computers mit dem Mikrofoneingang und dem Lautsprecherausgang des Funkgeräts).\\
Obwohl KISS weniger fortschrittlich ist als das 6pack-Protokoll, hat es den Vorteil,
dass es bereits von den meisten modernen TNCs unterstützt wird, ohne dass ein
Firmware"=Upgrade erforderlich ist.\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul heißt dann \texttt{mkiss}.

\subparagraph{Serial port 6PACK driver}$~$\\
CONFIG\_6PACK [=m] \textbf{M}\\*
6pack ist ein Übertragungsprotokoll für den Datenaustausch zwischen Ihrem PC und Ihrem
TNC (der Terminal Node Controller fungiert als eine Art Modem, das die serielle
Schnittstelle Ihres Computers mit dem Mikrofoneingang und dem Lautsprecherausgang
Ihres Radios verbindet). Dieses Protokoll kann als Alternative zu KISS für die
Vernetzung über AX.25"=Amateurfunkverbindungen verwendet werden, verfügt aber über
einige erweiterte Funktionen.
Beachten Sie, dass dieser Treiber noch experimentell ist und Probleme verursachen kann.
Für Details über die Funktionen und die Verwendung des Treibers lesen Sie
$<$file:Documentation/networking/6pack.rst$>$. Um diesen Treiber als Modul zu
kompilieren, wählen Sie hier M:
Das Modul wird \texttt{6pack} heißen.

\subparagraph{BPQ Ethernet driver}$~$\\
CONFIG\_BPQETHER [=m] \textbf{M}\\*
AX.25 ist das Protokoll, das für die Computerkommunikation über Amateurfunk verwendet wird.
Wenn Sie hier Y sagen, können Sie den AX.25"=Datenverkehr über Ethernet
(auch \glqq BPQ AX.25\grqq{} genannt) senden und empfangen, was nützlich sein kann,
wenn ein anderer Computer in Ihrem lokalen Netzwerk eine direkte Amateurfunkverbindung hat.

\subparagraph{BAYCOM ser12 fullduplex driver for AX.25}$~$\\
CONFIG\_BAYCOM\_SER\_FDX [=m] \textbf{M}\\*
Dies ist einer von zwei Treibern für einfache Amateurfunkmodems im Baycom"=Stil, die an eine
serielle Schnittstelle angeschlossen werden. Der Treiber unterstützt das ser12"=Design im
Vollduplex"=Modus. Darüber hinaus kann die Baudrate zwischen 300 und 4800~Baud eingestellt
werden (allerdings unterstützen nicht alle Modems alle Baudraten). Dies ist der bevorzugte
Treiber. Der nächste Treiber, \glqq BAYCOM ser12 half-duplex driver for AX.25\grqq{} ist
der alte Treiber und wird immer noch angeboten, falls dieser Treiber nicht mit Ihrem
seriellen Schnittstellenchip funktioniert. Um den Treiber zu konfigurieren, verwenden Sie
das Dienstprogramm sethdlc, das im Standardpaket der ax25"=Dienstprogramme enthalten ist.\\
Weitere Informationen zu den Modems finden Sie in\\
$<$file:Documentation/networking/device\_drivers/hamradio/baycom.rst$>$.\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{baycom\_ser\_fdx} genannt. Dies wird empfohlen.

\subparagraph{BAYCOM ser12 fullduplex driver for AX.25}$~$\\
CONFIG\_BAYCOM\_SER\_HDX [=m] \textbf{M}\\*
Dies ist einer von zwei Treibern für einfache Amateurfunkmodems im Baycom"=Stil, die an eine
serielle Schnittstelle angeschlossen werden. Der Treiber unterstützt das ser12"=Design im
Halbduplex"=Modus. Dies ist der alte Treiber. Er ist noch vorhanden, falls Ihr serieller
Schnittstellenchip nicht mit dem Vollduplex"=Treiber funktioniert. Dieser Treiber ist
veraltet. Um den Treiber zu konfigurieren, verwenden Sie das Dienstprogramm
\texttt{sethdlc}, das im Standardpaket der ax25"=Dienstprogramme enthalten ist.\\
Weitere Informationen zu den Modems finden Sie in\\
 $<$file:Documentation/networking/device\_drivers/hamradio/baycom.rst$>$.\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: das Modul wird
\texttt{baycom\_ser\_hdx} heißen. Dies wird empfohlen.

\subparagraph{BAYCOM picpar and par96 driver for AX.25}$~$\\
CONFIG\_BAYCOM\_PAR [=m] \textbf{M}\\*
Dies ist ein Treiber für einfache Amateurfunkmodems im Baycom"=Stil, die an eine parallele
Schnittstelle angeschlossen werden. Der Treiber unterstützt die Designs picpar und par96.
Um den Treiber zu konfigurieren, verwenden Sie das Dienstprogramm sethdlc, das im
Standardpaket der ax25"=Dienstprogramme enthalten ist.\\
Weitere Informationen zu den Modems finden Sie in\\
$<$file:Documentation/networking/device\_drivers/hamradio/baycom.rst$>$.\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{baycom\_par} genannt. Dies wird empfohlen.

\subparagraph{YAM driver for AX.25}$~$\\
CONFIG\_YAM [=m] \textbf{M}\\*
Das YAM ist ein Modem für Packet Radio, das an die serielle Schnittstelle angeschlossen
wird und einige der Funktionen eines Terminal Node Controllers enthält. Wenn Sie einen
solchen haben, geben Sie hier Y an.\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul heißt dann \texttt{yam}.

\subsection{CAN bus subsystem support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_CAN [=m] \textbf{[M]}\\*
Das Controller Area Network (CAN) ist ein langsames (bis zu 1 Mbit/s) serielles
Kommunikationsprotokoll. Die Entwicklung des CAN-Busses begann 1983 bei der Robert
Bosch GmbH, und das Protokoll wurde 1986 offiziell freigegeben. Ursprünglich war der
CAN"=Bus hauptsächlich für Kraftfahrzeuge gedacht, wird aber inzwischen auch in der
Schifffahrt (NMEA2000), in der Industrie und in der Medizintechnik eingesetzt.
Weitere Informationen über die CAN-Netzwerkprotokollfamilie PF\_CAN sind in\\
$<$Documentation/networking/can.rst$>$ enthalten.
Wenn Sie CAN"=Unterstützung wünschen, sollten Sie hier und auch bei dem
spezifischen Treiber für Ihr(e) Steuergerät(e) unter dem Abschnitt
Netzwerkgeräteunterstützung Y angeben.

\subsubsection{Raw CAN Protocol (raw access with CAN-ID filtering)}
CONFIG\_CAN\_RAW [=m] \textbf{[M]}\\*
Die Option raw CAN-Protokoll bietet Zugriff auf den CAN-Bus über die BSD-Socket-API.
In den meisten Fällen, in denen kein höheres Protokoll verwendet wird, sollten Sie
das Raw-Socket verwenden. Der Raw-Socket verfügt über mehrere Filteroptionen,
z.~B. ID"=Maskierung/Fehlerrahmen.
Um rohe CAN-Nachrichten zu empfangen/senden, verwenden Sie AF\_CAN mit dem
Protokoll CAN\_RAW.

\subsubsection{Broadcast Manager CAN Protocol (with content filtering)}
CONFIG\_CAN\_BCM [=m] \textbf{[M]}\\*
Der Broadcast Manager bietet Inhaltsfilterung, Timeout-Überwachung, Senden von
RTR"=Frames und zyklischen CAN"=Nachrichten ohne ständige Benutzerinteraktion.
Der BCM kann über die BSD"=Socket"=API \glqq programmiert\grqq{} werden und
informiert Sie bei Bedarf z.~B. nur bei Content"=Updates/Timeouts.
In den meisten Fällen, in denen zyklische CAN"=Nachrichten auf dem Bus verwendet
werden (z.~B. in der Automobilbranche), wird man wahrscheinlich den bcm"=Socket
verwenden wollen. Um den Broadcast Manager zu nutzen, verwenden Sie AF\_CAN mit
dem Protokoll CAN\_BCM.

\subsubsection{CAN Gateway/Router (with netlink configuration)}
CONFIG\_CAN\_GW [=m] \textbf{[M]}\\*
Der CAN"=Gateway/Router wird zum Weiterleiten (und Modifizieren) von CAN"=Frames
verwendet. Er basiert auf der PF\_CAN"=Kerninfrastruktur für die Nachrichtenfilterung
und das Senden von Nachrichten und kann optional geroutete CAN"=Frames im laufenden
Betrieb ändern. CAN"=Frames können zwischen CAN"=Netzwerkschnittstellen geroutet
werden (ein Hop). Sie können mit AND/OR/XOR/SET"=Verknüpfungen modifiziert werden,
wie sie von der Netlink"=Konfigurationsschnittstelle konfiguriert werden, die
z.~B. von iptables bekannt ist.

\subsubsection{SAE J1939}
CONFIG\_CAN\_J1939 [=m] \textbf{[M]}\\*
SAE J1939\\*
Sagen Sie Y, um eine In-Kernel"=Unterstützung für den Sockeltyp J1939 zu haben.
Dies ermöglicht die Kommunikation gemäß SAE j1939.\\
Die relevanten Teile im Kernel sind
SAE j1939-21 (Datenverbindung \& Transportprotokoll)
\&\\ SAE j1939-81 (Netzwerkverwaltung).

\subsubsection{ISO 15765-2:2016 CAN transport protocol}
CONFIG\_CAN\_ISOTP [=m] \textbf{[M]}\\*
CAN"=Transportprotokolle bieten Unterstützung für segmentierte
Punkt"=zu"=Punkt"=Kommunikation zwischen CAN"=Knoten über zwei definierte
CAN"=Identifier. Da CAN"=Frames nur eine geringe Anzahl von Datenbytes
transportieren können (max. 8~Bytes für \glqq klassisches\grqq{} CAN und
max. 64~Bytes für CAN FD), wird diese Segmentierung benötigt, um längere
Protocol Data Units (PDU) zu transportieren, wie sie z.~B. für die
Fahrzeugdiagnose (UDS, ISO~14229) oder IP"=over"=CAN"=Verkehr benötigt werden.
Dieser Protokolltreiber implementiert Datenübertragungen gemäß
ISO~15765-2:2016 für \glqq klassische\grqq{} CAN"= und CAN FD"=Frame"=Typen.
Wenn Sie Fahrzeugdiagnosedienste (UDS) durchführen möchten, sagen Sie Y.

\subsection{Bluetooth subsystem support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_BT [=m] \textbf{[M]}\\*
Bluetooth ist eine kostengünstige drahtlose Technologie mit geringem Stromverbrauch
und kurzer Reichweite. Sie wurde als Ersatz für Kabel und andere
Kurzstreckentechnologien wie IrDA entwickelt. Bluetooth arbeitet in einem
persönlichen Bereich (personal area range), der in der Regel bis zu 10~Meter reicht.
Weitere Informationen über Bluetooth finden Sie unter \url{https://www.bluetooth.com/}.
Das Bluetooth-Subsystem von Linux besteht aus mehreren Schichten:
\begin{itemize}
\item Bluetooth-Kern
\begin{itemize}
\item HCI Geräte- und Verbindungsmanager, Scheduler
\item SCO audio links
\item L2CAP (Logical Link Control and Adaptation Protocol)
\item SMP (Security Manager Protocol) auf LE (Low Energy) Verbindungen
\item ISO isochrone Verbindungen
\end{itemize}
\item HCI Gerätetreiber (Schnittstelle zur Hardware)
\item RFCOMM Modul (RFCOMM Protokoll)
\item BNEP Modul (Bluetooth Netzwerkkapselungsprotokoll)
\item CMTP-Modul (CAPI Message Transport Protocol)
\item HIDP-Modul (Protokoll für menschliche Schnittstellengeräte)
\end{itemize}
Sagen Sie hier Y, um die Bluetooth-Unterstützung in den Kernel zu kompilieren oder
sagen Sie M, um dies als Modul (bluetooth) zu kompilieren.
Um das Linux-Bluetooth-Subsystem zu nutzen, benötigen Sie mehrere
Userspace-Dienstprogramme wie hciconfig und bluetoothd.
Diese Dienstprogramme und Aktualisierungen für Bluetooth"=Kernelmodule werden in
den BlueZ-Paketen bereitgestellt. Weitere Informationen finden Sie unter
\url{http://www.bluez.org/}.

\subsubsection{Bluetooth Classic (BR/EDR) features}
CONFIG\_BT\_BREDR [=y] \textbf{[Y]}\\*
Bluetooth Classic bietet Unterstützung für Basic Rate (BR), die mit Bluetooth
Version~1.0b oder höher verfügbar ist, und Unterstützung für Enhanced Data Rate (EDR),
die mit Bluetooth Version~2.0 oder höher verfügbar ist.

\paragraph{RFCOMM protocol support}$~$\\
CONFIG\_BT\_RFCOMM [=m] \textbf{[M]}\\*
RFCOMM bietet einen verbindungsorientierten Stream-Transport.
Die RFCOMM"=Unterstützung ist für Dialup Networking, OBEX und andere
Bluetooth"=Anwendungen erforderlich. Sagen Sie hier Y, um die
RFCOMM"=Unterstützung in den Kernel zu kompilieren oder sagen Sie M,
um sie als Modul (rfcomm) zu kompilieren.

\subparagraph{RFCOMM TTY support}$~$\\
CONFIG\_BT\_RFCOMM\_TTY [=y] \textbf{[Y]}\\*
This option enables TTY emulation support for RFCOMM channels.

\paragraph{BNEP protocol support}$~$\\
CONFIG\_BT\_BNEP [=m] \textbf{[M]}\\*
BNEP (Bluetooth Network Encapsulation Protocol) ist eine Ethernet"=Emulationsschicht
über Bluetooth. BNEP ist für Bluetooth PAN (Personal Area Network) erforderlich.
Sagen Sie hier Y, um BNEP"=Unterstützung in den Kernel zu kompilieren, oder
sagen Sie M, um es als Modul (bnep) zu kompilieren.

\subparagraph{Multicast filter support}$~$\\
CONFIG\_BT\_BNEP\_MC\_FILTER [=y] \textbf{[Y]}\\*
Diese Option aktiviert die Multicast"=Filterunterstützung für BNEP.

\subparagraph{Protocol filter support}$~$\\
CONFIG\_BT\_BNEP\_PROTO\_FILTER [=y] \textbf{[Y]}\\*
Mit dieser Option wird die Protokollfilterunterstützung für BNEP aktiviert.

\paragraph{CMTP protocol support}$~$\\
CONFIG\_BT\_CMTP [=m] \textbf{[M]}\\*
CMTP (CAPI Message Transport Protocol) ist eine Transportschicht für CAPI-Nachrichten.
CMTP ist für das Bluetooth Common ISDN Access Profile erforderlich.
Sagen Sie hier Y, um CMTP"=Unterstützung in den Kernel zu kompilieren oder
sagen Sie M, um es als Modul (cmtp) zu kompilieren.

\paragraph{HIDP protocol support}$~$\\
CONFIG\_BT\_HIDP [=m] \textbf{[M]}\\*
HIDP (Human Interface Device Protocol) ist eine Transportschicht für HID-Meldungen.
HIDP ist für das Bluetooth Human Interface Device Profile erforderlich.
Sagen Sie hier Y, um HIDP-Unterstützung in den Kernel zu kompilieren,
oder sagen Sie M, um es als Modul (hidp) zu kompilieren.

\paragraph{Bluetooth High Speed (HS) features}$~$\\
CONFIG\_BT\_HS [=n] \textbf{[N]}\\*
Bluetooth High Speed unterstützt das Off-Loading von Bluetooth"=Verbindungen über
die physikalische Schicht 802.11 (wifi), die mit Bluetooth Version 3.0 oder höher
verfügbar ist.

\subsubsection{Bluetooth Low Energy (LE) features}
CONFIG\_BT\_LE [=y] \textbf{[Y]}\\*
Bluetooth Low Energy unterstützt eine energiesparende physikalische Schicht,
die mit Bluetooth Version 4.0 oder höher verfügbar ist.

\paragraph{Bluetooth L2CAP Enhanced Credit Flow Control}$~$\\
CONFIG\_BT\_LE\_L2CAP\_ECRED [=y] \textbf{[Y]}\\*
Bluetooth Low Energy L2CAP Enhanced Credit Flow Control verfügbar mit
Bluetooth Version~5.2 oder höher.
Dies kann durch die Übergabe von \texttt{bluetooth.enable\_ecred=$[1|0]$} in der
Kernel"=Befehlszeile außer Kraft gesetzt werden.

\paragraph{Bluetooth 6LoWPAN support}$~$\\
CONFIG\_BT\_6LOWPAN [=m] \textbf{[M]}\\*
IPv6-Kompression über Bluetooth Low Energy.

\subsubsection{Enable LED triggers}
CONFIG\_BT\_LEDS [=y] \textbf{[Y]}\\*
Mit dieser Option können Sie einige LED-Trigger für verschiedene
Bluetooth"=Ereignisse auswählen.

\subsubsection{Enable Microsoft extensions}
CONFIG\_BT\_MSFTEXT [=y] \textbf{[Y]}\\*
Diese Option ermöglicht die Unterstützung der von Microsoft definierten
HCI"=Anbietererweiterungen.

\subsubsection{Enable Android Open Source Project extensions}
CONFIG\_BT\_AOSPEXT [=y] \textbf{[Y]}\\*
Diese Option ermöglicht die Unterstützung für die vom Android Open Source
Project definierten HCI"=Herstellererweiterungen.

\subsubsection{Enable Bluetooth internals in debugfs}
CONFIG\_BT\_DEBUGFS [=y] \textbf{[Y]}\\*
Umfassende Informationen über interne Bluetooth-Zustände in \texttt{debugfs}
bereitstellen.

\subsubsection{Bluetooth self testing support}
CONFIG\_BT\_SELFTEST [=n] \textbf{[N]}\\*
Führen Sie bei der Initialisierung des Bluetooth"=Subsystems Selbsttests durch.
Dies ist eine Entwickleroption und kann zu erheblichen Verzögerungen beim Booten
des Systems führen.
Wenn das Bluetooth"=Subsystem als Modul gebaut wird, werden die Testfälle als
erstes beim Laden des Moduls ausgeführt.
Wenn das Bluetooth"=Subsystem in das Kernel"=Image kompiliert wird, werden die
Testfälle erst spät in der Aufrufhierarchie ausgeführt.

\subsubsection{Bluetooth device drivers \texorpdfstring{$\rightarrow$}{->}}
\textit{(Bluetooth-Gerätetreiber)}

\paragraph{HCI USB driver}$~$\\
CONFIG\_BT\_HCIBTUSB [=m] \textbf{[M]}\\*
Bluetooth HCI USB-Treiber. 
Dieser Treiber ist erforderlich, wenn Sie Bluetooth"=Geräte mit USB"=Schnittstelle
verwenden möchten.
Sagen Sie hier Y, um die Unterstützung für Bluetooth"=USB"=Geräte in den Kernel zu
kompilieren, oder sagen Sie M, um sie als Modul (btusb) zu kompilieren.

\subparagraph{Enable USB autosuspend for Bluetooth USB devices by default}$~$\\
CONFIG\_BT\_HCIBTUSB\_AUTOSUSPEND [=y] \textbf{[Y]}\\*
Sagen Sie hier Y, um USB-Autosuspend für Bluetooth-USB-Geräte standardmäßig zu aktivieren.
Dies kann durch die Übergabe von \texttt{btusb.enable\_autosuspend=$[y|n]$} in der
Kernel"=Kommandozeile über"=schrieben werden.

\subparagraph{Enable USB poll\_sync for Bluetooth USB devices by default}$~$\\
CONFIG\_BT\_HCIBTUSB\_POLL\_SYNC [=y] \textbf{[Y]}\\*
poll\_sync synchronisiert die USB"=Daten"= und -Ereignis"=Endpunkte, indem es letzteren
Vorrang einräumt.
Sagen Sie hier Y, um USB poll\_sync für Bluetooth"=USB"=Geräte standardmäßig zu
aktivieren.

\subparagraph{Broadcom protocol support}$~$\\
CONFIG\_BT\_HCIBTUSB\_BCM [=y] \textbf{[Y]}\\*
Die Unterstützung des Broadcom-Protokolls ermöglicht den Download von Firmware
und Patchram für Broadcom"=Bluetooth"=Controller.
Sagen Sie hier Y, um Unterstützung für das Broadcom"=Protokoll zu kompilieren.

\subparagraph{MediaTek protocol support}$~$\\
CONFIG\_BT\_HCIBTUSB\_MTK [=y] \textbf{[Y]}\\*
Die Unterstützung des MediaTek-Protokolls ermöglicht den Firmware"=Download
und die Chip"=Initialisierung für MediaTek Bluetooth"=USB"=Controller.
Sagen Sie hier Y, um die Unterstützung für das MediaTek"=Protokoll zu kompilieren.

\subparagraph{Realtek protocol support}$~$\\
CONFIG\_BT\_HCIBTUSB\_RTL [=y] \textbf{[Y]}\\*
Die Unterstützung des Realtek"=Protokolls ermöglicht den Download von Firmware
und Konfiguration für Realtek"=Bluetooth"=Controller.
Sagen Sie hier Y, um Unterstützung für das Realtek"=Protokoll zu kompilieren.

\paragraph{HCI SDIO driver}$~$\\
CONFIG\_BT\_HCIBTSDIO [=m] \textbf{[M]}\\*
Bluetooth-HCI-SDIO-Treiber.
Dieser Treiber ist erforderlich, wenn Sie ein Bluetooth"=Gerät mit
SDIO"=Schnittstelle verwenden möchten.
Sagen Sie hier Y, um die Unterstützung für Bluetooth"=SDIO"=Geräte
in den Kernel zu kompilieren, oder sagen Sie M, um sie als Modul (btsdio)
zu kompilieren.

\paragraph{HCI UART driver}$~$\\
CONFIG\_BT\_HCIUART [=m] \textbf{[M]}\\*
Bluetooth HCI UART-Treiber.
Dieser Treiber ist erforderlich, wenn Sie Bluetooth"=Geräte mit serieller
Schnittstelle verwenden möchten. Sie benötigen diesen Treiber auch, wenn
Sie UART"=basierte Bluetooth PCMCIA- und CF"=Geräte wie Xircom Credit Card
Adapter und BrainBoxes Bluetooth PC Card verwenden.
Sagen Sie hier Y, um die Unterstützung für Bluetooth"=UART"=Geräte in den
Kernel zu kompilieren, oder sagen Sie M, um sie als Modul (hci\_uart) zu
kompilieren.

\subparagraph{UART (H4) protocol support}$~$\\
CONFIG\_BT\_HCIUART\_H4 [=y] \textbf{[Y]}\\*
UART (H4) ist ein serielles Protokoll für die Kommunikation zwischen
Bluetooth"=Gerät und Host. Dieses Protokoll ist für die meisten
Bluetooth"=Geräte mit UART"=Schnittstelle erforderlich, einschließlich
PCMCIA- und CF"=Karten.
Sagen Sie hier Y, um Unterstützung für das HCI UART (H4) Protokoll zu kompilieren.

\subparagraph{UART Nokia H4+ protocol support}$~$\\
CONFIG\_BT\_HCIUART\_NOKIA [=m] \textbf{[M]}\\*
Nokia H4+ ist ein serielles Protokoll für die Kommunikation zwischen
Bluetooth"=Gerät und Host. Dieses Protokoll ist für Bluetooth"=Geräte mit
UART"=Schnittstelle in Nokia"=Geräten erforderlich.
Sagen Sie hier Y, um Unterstützung für das H4+"=Protokoll von Nokia zu kompilieren.

\subparagraph{BCSP protocol support}$~$\\
CONFIG\_BT\_HCIUART\_BCSP [=y] \textbf{[Y]}\\*
BCSP (BlueCore Serial Protocol) ist ein serielles Protokoll für die Kommunikation
zwischen Bluetooth"=Gerät und Host. Dieses Protokoll ist für Bluetooth"=Geräte
erforderlich, die nicht auf dem CSR BlueCore"=Chip basieren, einschließlich
PCMCIA- und CF"=Karten.
Sagen Sie hier Y, um Unterstützung für das HCI BCSP"=Protokoll zu kompilieren.

\subparagraph{Atheros AR300x serial support}$~$\\
CONFIG\_BT\_HCIUART\_ATH3K [=y] \textbf{[Y]}\\*
HCIATH3K (HCI Atheros AR300x) ist ein serielles Protokoll für die Kommunikation
zwischen Host und Atheros AR300x Bluetooth"=Geräten. Mit diesem Protokoll können
AR300x"=Chips mit Unterstützung für die Energieverwaltung aktiviert werden.
Aktivieren Sie dies, wenn Sie ein serielles Bluetooth"=Gerät vom
Typ Atheros AR300x besitzen.
Sagen Sie hier Y, um Unterstützung für das HCI UART ATH3K Protokoll zu kompilieren.

\subparagraph{HCILL protocol support}$~$\\
CONFIG\_BT\_HCIUART\_LL [=y] \textbf{[Y]}\\*
HCILL (HCI Low Level) ist ein serielles Protokoll für die Kommunikation zwischen
Bluetooth"=Gerät und Host. Dieses Protokoll ist für serielle Bluetooth"=Geräte
erforderlich, die auf BRF"=Chips von Texas Instruments basieren.
Sagen Sie hier Y, um Unterstützung für das HCILL"=Protokoll zu kompilieren.

\subparagraph{Three-wire UART (H5) protocol support}$~$\\
CONFIG\_BT\_HCIUART\_3WIRE [=y] \textbf{[Y]}\\*
Der HCI Three-wire UART Transport Layer ermöglicht es, die Bluetooth HCI über
eine serielle Schnittstelle zu nutzen. Der HCI Three"=wire UART Transport Layer
geht davon aus, dass die UART"=Kommunikation Bitfehler, Overrun"=Fehler oder
Burst"=Fehler aufweisen kann, wodurch CTS/RTS"=Leitungen überflüssig werden.
Sagen Sie hier Y, um Unterstützung für das Three"=wire UART"=Protokoll
zu kompilieren.

\subparagraph{Intel protocol support}$~$\\
CONFIG\_BT\_HCIUART\_INTEL [=y] \textbf{[Y]}\\*
Die Unterstützung des Intel"=Protokolls ermöglicht Bluetooth HCI über die
serielle Schnittstelle für Intel"=Bluetooth"=Controller.
Sagen Sie hier Y, um die Unterstützung für das Intel"=Protokoll zu kompilieren.

\subparagraph{Broadcom protocol support}$~$\\
CONFIG\_BT\_HCIUART\_BCM [=y] \textbf{[Y]}\\*
Die Unterstützung des Broadcom"=Protokolls ermöglicht Bluetooth HCI über die
serielle Schnittstelle für Broadcom Bluetooth"=Controller.
Sagen Sie hier Y, um Unterstützung für das Broadcom"=Protokoll zu kompilieren.

\subparagraph{Realtek protocol support}$~$\\
CONFIG\_BT\_HCIUART\_RTL [=y] \textbf{[Y]}\\*
Die Unterstützung des Realtek-Protokolls ermöglicht Bluetooth HCI über eine
serielle 3-Draht"=Schnittstelle für Realtek Bluetooth"=Controller.
Sagen Sie hier Y, um Unterstützung für das Realtek"=Protokoll zu kompilieren.

\subparagraph{Qualcomm Atheros protocol support}$~$\\
CONFIG\_BT\_HCIUART\_QCA [=y] \textbf{[Y]}\\*
Das Qualcomm Atheros-Protokoll unterstützt die HCI-In-Band"=Sleep"=Funktion
über die serielle Schnittstelle (H4) zwischen Controller und Host.
Dieses Protokoll ist für die UART-Taktsteuerung für QCA"=Bluetooth"=Geräte
erforderlich.
Sagen Sie hier Y, um Unterstützung für das QCA-Protokoll zu kompilieren.

\subparagraph{Intel AG6XX protocol support}$~$\\
CONFIG\_BT\_HCIUART\_AG6XX [=y] \textbf{[Y]}\\*
Die Unterstützung des Intel/AG6XX"=Protokolls ermöglicht Bluetooth HCI über
die serielle Schnittstelle für Intel ibt 2.1 Bluetooth"=Controller.
Sagen Sie hier Y, um Unterstützung für das Intel AG6XX"=Protokoll
zu kompilieren.

\subparagraph{Marvell protocol support}$~$\\
CONFIG\_BT\_HCIUART\_MRVL [=y] \textbf{[Y]}\\*
Marvell ist ein serielles Protokoll für die Kommunikation zwischen
Bluetooth"=Gerät und Host. Dieses Protokoll ist für die meisten
Marvell"=Bluetooth"=Geräte mit UART"=Schnittstelle erforderlich.
Sagen Sie hier Y, um Unterstützung für das HCI MRVL"=Protokoll zu kompilieren.

\subparagraph{HCI BCM203x USB driver}$~$\\
CONFIG\_BT\_HCIBCM203X [=m] \textbf{[M]}\\*
Bluetooth HCI BCM203x USB-Treiber.
Dieser Treiber bietet den Mechanismus zum Laden der Firmware für die Broadcom
Blutonium"=basierten Geräte.
Sagen Sie hier Y, um die Unterstützung für HCI BCM203x"=Geräte in den Kernel zu
kompilieren oder sagen Sie M, um dies als Modul (bcm203x) zu kompilieren.

\subparagraph{HCI BCM4377/4378/4387 PCIe driver}$~$\\
CONFIG\_BT\_HCIBCM4377 [=m] \textbf{[M]}\\*
Unterstützung für Broadcom BCM4377/4378/4387 Bluetooth"=Chipsätze, die über
PCIe angeschlossen sind. Diese sind in der Regel in Apple"=Geräten zu finden.
Sagen Sie hier Y, um Unterstützung für Geräte der HCI BCM4377"=Familie in den
Kernel zu kompilieren, oder sagen Sie M, um dies als Modul (hci\_bcm4377)
zu kompilieren.

\subparagraph{HCI BPA10x USB driver}$~$\\
CONFIG\_BT\_HCIBPA10X [=m] \textbf{[M]}\\*
Bluetooth HCI BPA10x USB-Treiber.\\
Dieser Treiber bietet die Unterstützung für die Digianswer
BPA~100/105 Blue"-tooth"=Schnüffelgeräte.
Sagen Sie hier Y, um die Unterstützung für HCI BPA10x-Geräte in den Kernel
zu kompilieren oder sagen Sie M, um dies als Modul (bpa10x) zu kompilieren.

\subparagraph{HCI BlueFRITZ! USB driver}$~$\\
CONFIG\_BT\_HCIBFUSB [=m] \textbf{[M]}\\*
Bluetooth HCI BlueFRITZ! USB-Treiber.\\
Dieser Treiber bietet Unterstützung für Bluetooth"=USB"=Geräte mit
AVM"=Schnittstelle:
\begin{itemize}
	\item AVM BlueFRITZ! USB
\end{itemize}
Sagen Sie hier Y, um die Unterstützung für HCI BFUSB Geräte in den Kernel
zu kompilieren oder sagen Sie M, um dies als Modul (bfusb) zu kompilieren.

\subparagraph{HCI DTL1 (PC Card) driver}$~$\\
CONFIG\_BT\_HCIDTL1 [=m] \textbf{[M]}\\*
Bluetooth HCI DTL1 (PC Card) Treiber.\\
Dieser Treiber bietet Unterstützung für Bluetooth PCMCIA Geräte mit
Nokia DTL1 Schnittstelle:
\begin{itemize}
	\item Nokia Bluetooth-Karte
	\item Sockel Bluetooth CF-Karte
\end{itemize}
Sagen Sie hier Y, um die Unterstützung für HCI DTL1 Geräte in den Kernel
zu kompilieren oder sagen Sie M, um dies als Modul (dtl1\_cs) zu kompilieren.

\subparagraph{HCI BT3C (PC Card) driver}$~$\\
CONFIG\_BT\_HCIBT3C [=m] \textbf{[M]}\\*
Bluetooth HCI BT3C (PC Card) Treiber.\\
Dieser Treiber bietet Unterstützung für Bluetooth PCMCIA Geräte mit
3Com BT3C Schnittstelle:
\begin{itemize}
	\item 3Com Bluetooth-Karte (3CRWB6096)
	\item HP Bluetooth-Karte
\end{itemize}
Sagen Sie hier Y, um die Unterstützung für HCI BT3C Geräte in den Kernel
zu kompilieren oder sagen Sie M, um dies als Modul (bt3c\_cs) zu kompilieren.

\subparagraph{HCI BlueCard (PC Card) driver}$~$\\
CONFIG\_BT\_HCIBLUECARD [=m] \textbf{[M]}\\*
Bluetooth HCI BlueCard (PC Card) Treiber.\\
Dieser Treiber bietet Unterstützung für Bluetooth PCMCIA Geräte mit
Anycom BlueCard Schnittstelle:
\begin{itemize}
	\item Anycom Bluetooth PC-Karte
	\item Anycom Bluetooth CF-Karte
\end{itemize}
Sagen Sie hier Y, um die Unterstützung für HCI BlueCard"=Geräte in den Kernel
zu kompilieren oder sagen Sie M, um dies als Modul (bluecard\_cs) zu kompilieren.


\subparagraph{HCI VHCI (Virtual HCI device) driver}$~$\\
CONFIG\_BT\_HCIVHCI [=m] \textbf{[M]}\\*
Bluetooth Virtual HCI Gerätetreiber.\\
Dieser Treiber ist erforderlich, wenn Sie die HCI"=Emulationssoftware
verwenden möchten.
Sagen Sie hier Y, um die Unterstützung für virtuelle HCI"=Geräte in den Kernel
zu kompilieren, oder sagen Sie M, um dies als Modul (hci\_vhci) zu kompilieren.

\subparagraph{Marvell Bluetooth driver support}$~$\\
CONFIG\_BT\_MRVL [=m] \textbf{[M]}\\*
Der Kerntreiber zur Unterstützung von Marvell"=Bluetooth"=Geräten.
Dieser Treiber ist erforderlich, wenn Sie Marvell-Bluetooth-Geräte wie
8688/8787/8797/8887/8897/8977/8987/8997 unterstützen möchten.
Sagen Sie hier Y, um den Marvell"=Bluetooth"=Treiber in den Kernel zu
kompilieren, oder sagen Sie M, um diesen als Modul zu kompilieren. 

\subsubparagraph{Marvell BT-over-SDIO driver}$~$\\
CONFIG\_BT\_MRVL\_SDIO [=m] \textbf{[M]}\\*
Der Treiber für Marvell Bluetooth-Chipsätze mit SDIO-Schnittstelle.\\
Dieser Treiber ist erforderlich, wenn Sie Marvell-Bluetooth-Geräte mit SDIO-Schnittstelle verwenden möchten.
Derzeit werden SD8688/SD8787/SD8797/SD8887/SD8897/SD8977/SD8987/SD8997 Chipsätze unterstützt.
Sagen Sie hier Y, um die Unterstützung für den Marvell BT-over-SDIO"=Treiber in den Kernel zu
kompilieren oder sagen Sie M, um dies als Modul zu kompilieren.

\subparagraph{Atheros firmware download driver}$~$\\
CONFIG\_BT\_ATH3K [=m] \textbf{[M]}\\*
Bluetooth-Firmware-Treiber zum Herunterladen.\\
Dieser Treiber lädt die Firmware in den Atheros-Bluetooth-Chipsatz.
Sagen Sie hier Y, um die Unterstützung für den Atheros Firmware"=Download"=Treiber in den
Kernel zu kompilieren oder sagen Sie M, um dies als Modul (ath3k) zu kompilieren.

\subparagraph{MediaTek HCI SDIO driver}$~$\\
CONFIG\_BT\_MTKSDIO [=m] \textbf{[M]}\\*
MediaTek Bluetooth HCI SDIO-Treiber.
Dieser Treiber ist erforderlich, wenn Sie MediaTek Bluetooth mit SDIO-Schnittstelle
verwenden möchten.
Sagen Sie hier Y, um die Unterstützung für MediaTek Bluetooth SDIO"=Geräte in den Kernel
zu kompilieren oder sagen Sie M, um dies als Modul (btmtksdio) zu kompilieren.

\subparagraph{MediaTek HCI UART driver}$~$\\
CONFIG\_BT\_MTKUART [=m] \textbf{[M]}\\*
MediaTek Bluetooth HCI UART-Treiber.
Dieser Treiber wird benötigt, wenn Sie MediaTek Bluetooth mit serieller Schnittstelle verwenden möchten.
Sagen Sie hier Y, um die Unterstützung für MediaTek Bluetooth UART"=Geräte in den Kernel
zu kompilieren, oder sagen Sie M, um dies als Modul (btmtkuart) zu kompilieren.

\subparagraph{Virtio Bluetooth driver}$~$\\
CONFIG\_BT\_VIRTIO [=m] \textbf{[M]}\\*
Virtio Bluetooth-Unterstützungstreiber.
Dieser Treiber unterstützt Virtio Bluetooth"=Geräte.
Sagen Sie hier Y, um Unterstützung für HCI über Virtio in den Kernel zu kompilieren,
oder sagen Sie M, um dies als Modul zu kompilieren.

\subparagraph{NXP protocol support}$~$\\
CONFIG\_BT\_NXPUART [=m] \textbf{[M]}\\*
NXP ist ein serieller Treiber, der für NXP Bluetooth"=Geräte mit UART"=Schnittstelle benötigt wird.
Sagen Sie hier Y, um Unterstützung für NXP Bluetooth UART"=Geräte in den Kernel zu kompilieren,
oder sagen Sie hier M, um als Modul (btnxpuart) zu kompilieren.

%14.5
\subsection{RxRPC session sockets}
CONFIG\_AF\_RXRPC [=m] \textbf{[M]}\\*
Sagen Sie hier Y oder M, um die Unterstützung für RxRPC"=Session"=Sockets einzuschließen
(nur den Transportteil, nicht den Präsentationsteil: (un)marshalling wird der Anwendung überlassen).
Diese werden für das AFS"=Kernel"=Dateisystem und Userspace"=Dienstprogramme verwendet.
Dieses Modul unterstützt im Moment nur Client"=Operationen und ist derzeit unvollständig.\\
Siehe Dokumentation/networking/rxrpc.rst.

\subsubsection{IPv6 support for RxRPC}
CONFIG\_AF\_RXRPC\_IPV6 [=y] \textbf{[Y]}\\*
Geben Sie hier Y an, damit AF\_RXRPC sowohl IPV6 UDP als auch IPV4 UDP als
Netzwerktransport verwenden kann.

\subsubsection{Inject packet loss into RxRPC packet stream}
CONFIG\_AF\_RXRPC\_INJECT\_LOSS [=n] \textbf{[~]}\\*
Sagen wir hier Y, um Paketverluste zu verursachen, indem einige empfangene und einige
gesendete Pakete verworfen werden.

\subsubsection{Inject delay into packet reception}
CONFIG\_AF\_RXRPC\_INJECT\_RX\_DELAY [=n] \textbf{[~]}\\*
Sagen Sie hier Y, um eine Verzögerung in den Paketempfang einzubauen, so dass eine längere
RTT"=Zeit modelliert werden kann. Die Verzögerung kann mit
/proc/sys/net/rxrpc/rxrpc\_inject\_rx\_delay konfiguriert werden, wobei eine Anzahl von
Millisekunden bis zu 0,5~s eingestellt werden kann (beachten Sie, dass die Granularität
tatsächlich in Jiffies angegeben wird).

\subsubsection{RxRPC dynamic debugging}
CONFIG\_AF\_RXRPC\_DEBUG [=y] \textbf{[Y]}\\*
Sagen Sie hier Y, damit zur Laufzeit steuerbare Debugging"=Meldungen erscheinen.
Siehe Dokumentation/networking/rxrpc.rst.

\subsubsection{RxRPC Kerberos security}
CONFIG\_RXKAD [=y] \textbf{[Y]}\\*
Bereitstellung von Kerberos-4- und AFS-Kaserver"=Sicherheitshandhabung für AF\_RXRPC durch
die Verwendung des Schlüsselaufbewahrungsdienstes.
Siehe Dokumentation/networking/rxrpc.rst.

\subsubsection{RxRPC test service}
CONFIG\_RXPERF [=n] \textbf{[~]}\\*
Stellen Sie einen rxperf-Dienst-Tester bereit.  Dieser lauscht am UDP"=Port 7009 auf
eingehende Anrufe des rxperf"=Programms (ein Beispiel dafür finden Sie in OpenAFS).

\subsection{KCM sockets}
CONFIG\_AF\_KCM [=m] \textbf{[M]}\\*
KCM-Sockets (Kernel Connection Multiplexor) bieten eine Methode zum Multiplexen von
Nachrichten eines nachrichtenbasierten Anwendungsprotokolls über Kernel"=Verbindungen
(z.~B. TCP"=Verbindungen).

\subsection{MCTP core protocol support}
CONFIG\_MCTP [=y] \textbf{[Y]}\\*
Das Management Component Transport Protocol (MCTP) ist ein systeminternes Protokoll
für die Kommunikation zwischen Verwaltungscontrollern und den von ihnen verwalteten
Geräten (Peripheriegeräte, Host"=Prozessoren usw.). Das Protokoll ist in der
DMTF"=Spezifikation DSP0236 definiert.
Mit dieser Option wird die MCTP"=Unterstützung im Kern aktiviert. Für die Kommunikation
mit anderen Geräten müssen Sie einen Treiber für einen bestimmten Hardwarekanal aktivieren.

\subsection{Wireless \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_WIRELESS [=y] \textbf{[Y]}\\*
\textit{Für diese Option gibt es keine Hilfe.}

\subsubsection{cfg80211 -- wireless configuration API}
CONFIG\_CFG80211 [=m] \textbf{[Y]}\\*
cfg80211 ist die Linux-API für die Konfiguration des drahtlosen LAN (802.11).
Aktivieren Sie dies, wenn Sie ein drahtloses Gerät haben.
Weitere Informationen finden Sie in der Dokumentation des Wireless-Wikis:
\url{https://wireless.wiki.kernel.org/en/developers/Documentation/cfg80211}
Wenn es als Modul gebaut wird, wird dies \texttt{cfg80211} genannt.

\paragraph{nl80211 testmode command}$~$\\
CONFIG\_NL80211\_TESTMODE [=n] \textbf{[~]}\\*
Der Befehl nl80211 testmode hilft bei der Implementierung von Dingen wie
Werkskalibrierung oder Validierungstools für Funkchips.
Wählen Sie diese Option NUR für Kernel, die speziell für solche Zwecke
entwickelt wurden.
Debugging"=Tools, die in den Händen der Benutzer landen sollen, sollten besser
mit debugfs implementiert werden.\\
Sagen Sie N.

\paragraph{enable developer warnings}$~$\\
CONFIG\_CFG0211\_DEVELOPER\_WARNINGS [=n] \textbf{[~]}\\*
Diese Option aktiviert einige zusätzliche Warnungen, die cfg80211"=Entwicklern und
Treiberentwicklern helfen, aber Vorsicht, sie können auch durch Wettrennen mit dem
Userspace ausgelöst werden.
Wenn zum Beispiel ein Treiber meldet, dass er vom AP getrennt wurde, der Benutzer
aber gleichzeitig die Verbindung manuell trennt, kann die Warnung aufgrund von
Wettläufen fälschlicherweise ausgelöst werden.
Sagen Sie Y nur, wenn Sie cfg80211 oder einen darauf basierenden Treiber
(oder mac80211) entwickeln.

\paragraph{enable powersave by default}$~$\\
CONFIG\_CFG0211\_DEFAULT\_PS [=y] \textbf{[Y]}\\*
Mit dieser Option wird der Energiesparmodus standardmäßig aktiviert.
Wenn dies bei Ihren Anwendungen zu Fehlverhalten führt, sollten Sie stattdessen Ihre
Anwendungen korrigieren -- sie müssen ihre Anforderungen an die Netzwerklatenz registrieren,
siehe Documentation/power/pm\_qos\_interface.rst.

\paragraph{cfg80211 DebugFS entries}$~$\\
CONFIG\_CFG0211\_DEBUGFS [=y] \textbf{[Y]}\\*
Sie können dies aktivieren, wenn Sie debugfs-Einträge für cfg80211 wünschen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{lib80211 debugging messages}
CONFIG\_LIB80211\_DEBUG [=n] \textbf{[~]}\\*
Sie können dies aktivieren, wenn Sie ausführliche Debugging-Meldungen von lib80211 wünschen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Generic IEEEE~802.11 Networking Stack (mac80211)}
CONFIG\_MAC80211 [=m] \textbf{[M]}\\*
Diese Option aktiviert den hardwareunabhängigen IEEE 802.11"=Netzwerkstack.

\subsubsection{Default rate control algorithm () \texorpdfstring{$\rightarrow$}{->}}
Diese Option wählt den Standard-Algorithmus für die Ratenkontrolle aus, den mac80211 verwenden soll.
Beachten Sie, dass dieser Standardwert immer noch durch den Modulparameter
ieee80211\_default\_rc\_algo überschrieben werden kann, wenn andere Algorithmen verfügbar sind.

\paragraph{Minstrel}$~$\\
CONFIG\_MAC80211\_RC\_DEFAULT\_MINSTREL [=y] \textbf{[Y]}\\*
Wählen Sie Minstrel als Standard"=Algorithmus für die Ratenkontrolle.

\subsubsection{Enable mac80211 mesh networking support}
CONFIG\_MAC80211\_MESH [=y] \textbf{[Y]}\\*
Wählen Sie diese Option, um den 802.11-Mesh"=Betrieb in mac80211"=Treibern, die ihn unterstützen,
zu aktivieren. 802.11 Mesh verbindet mehrere Stationen über (möglicherweise Multi-Hop-)
Funkverbindungen zu einem einzigen logischen LAN.

\subsubsection{Enable LED triggers}
CONFIG\_MAC80211\_LEDS [=y] \textbf{[Y]}\\*
Diese Option aktiviert einige LED"=Trigger für verschiedene Paket"=Empfangs-/Sende"-ereignisse.

\subsubsection{Export mac80211 internals in DebugFS}
CONFIG\_MAC80211\_DEBUGFS [=y] \textbf{[Y]}\\*
Wählen Sie dies, um umfangreiche Informationen über den internen Zustand
von mac80211 in debugfs zu sehen.
Sagen Sie N, es sei denn, Sie wissen, dass Sie dies brauchen.

\subsubsection{Trace all mac80211 debug messages}
CONFIG\_MAC80211\_MESSAGE\_TRACING [=n] \textbf{[N]}\\*
Wählen Sie diese Option, damit mac80211 das mac80211\_msg"=Trace"=Subsystem mit Tracepoints
registriert, um alle Debugging"=Meldungen zu sammeln, unabhängig davon, ob sie in das
Kernel"=Log gedruckt werden.
Der Mehraufwand bei dieser Option besteht darin, dass alle Meldungen in der Binärdatei
vorhanden sein müssen und zur Laufzeit für die Verfolgung formatiert werden müssen.

\subsubsection{Select mac80211 debugging features}
CONFIG\_MAC80211\_DEBUG\_MENU [=n] \textbf{[N]}\\*
Diese Option sammelt verschiedene mac80211-Debug"=Einstellungen.

\subsection{RF switch subsystem support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_RFKILL [=m] \textbf{[Y]}\\*
Sagen Sie hier Y, wenn Sie die Kontrolle über die RF-Schalter haben wollen, die auf vielen WiFi-
und Bluetooth"=Karten zu finden sind.\\
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{rfkill} heißen.

\subsubsection{GPIO RFKILL driver}
CONFIG\_RFKILL\_GPIO [=m] \textbf{[M]}\\*
Wenn Sie dies bejahen, erhalten Sie Unterstützung für einen generischen gpio RFKILL"=Treiber.

\subsection{Plan 9 Resource Sharing Support (9P2000) \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_NET\_9P [=m] \textbf{[Y]}\\*
Wenn Sie hier Y eingeben, erhalten Sie experimentelle Unterstützung für die gemeinsame Nutzung
von Plan 9"=Ressourcen über das 9P2000"=Protokoll.
Siehe \url{http://v9fs.sf.net} für weitere Informationen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{9P FD Transport}
CONFIG\_NET\_9P\_FD [=m] \textbf{[M]}\\*
Damit wird Unterstützung für Transporte über TCP, Unix"=Sockets und Dateiskriptoren geschaffen.

\subsubsection{9P Virtio Transport}
CONFIG\_NET\_9P\_VIRTIO [=m] \textbf{[M]}\\*
Damit wird die Unterstützung für einen Transport zwischen Gastpartitionen
und einer Hostpartition geschaffen.

\subsubsection{9P Xen Transport}
CONFIG\_NET\_9P\_XEN [=m] \textbf{[M]}\\*
Damit wird die Unterstützung für einen Transport für 9pfs zwischen zwei Xen"=Domänen geschaffen.

\subsubsection{9P RDMA Transport (Experimental)}
CONFIG\_NET\_9P\_RDMA [=m] \textbf{[M]}\\*
Damit wird Unterstützung für einen RDMA-Transport geschaffen.

\subsubsection{Debug information}
CONFIG\_NET\_9P\_DEBUG [=m] \textbf{[M]}\\*
Sagen Sie Y, wenn Sie möchten, dass das 9P-Subsystem Debug"=Informationen protokolliert.

\subsection{CAIF support}
CONFIG\_CAIF [=n] \textbf{[~]}\\*
Das \glqq Communication CPU to Application CPU Interface\grqq{} (CAIF) ist ein paketbasiertes,
verbindungsorientiertes MUX"=Protokoll, das von ST-Ericsson zur Verwendung mit seinen Modems
entwickelt wurde. Der Zugriff erfolgt aus dem Userspace als Socket (PF\_CAIF).\\
Geben Sie hier Y (oder M) an, wenn Sie für ein Telefonprodukt (z.~B. Android oder MeeGo) bauen,
das CAIF als Transport verwendet. Wenn Sie unsicher sind, sagen Sie N.\\
Wenn Sie es als Modul bauen wollen, muss CAIF\_NETDEV auch als Modul gebaut werden.
Sie müssen auch Y (oder M) für alle physischen CAIF"=Geräte angeben, die Ihre Plattform benötigt.
Weitere Informationen zur Verwendung und Konfiguration von CAIF finden Sie unter
Documentation/networking/caif.

\subsection{Ceph core library}
CONFIG\_CEPH\_LIB [=m] \textbf{[M]}\\*
Wählen Sie hier Y oder M, um cephlib einzubinden, die die gemeinsame Funktionalität sowohl für
das Ceph"=Dateisystem als auch für das rados block device (rbd) bereitstellt.
Weitere Informationen finden Sie unter \url{https://ceph.io/}.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Include file:line in ceph debug output}
CONFIG\_CEPH\_LIB\_PRETTYDEBUG [=y] \textbf{[Y]}\\*
Wenn Sie hier Y eingeben, wird die Debug"=Ausgabe einen Dateinamen und eine Zeile enthalten,
um die Fehlersuche zu erleichtern. Dies erhöht die Kernelgröße und verlangsamt die Ausführung
leicht, wenn Debug-Aufrufseiten aktiviert sind (z.~B. über CONFIG\_DYNAMIC\_DEBUG).
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Use in-kernel support for DNS lookup}
CONFIG\_CEPH\_LIB\_USE\_DNS\_RESOLVER [=y] \textbf{[Y]}\\*
Wenn Sie hier Y angeben, werden Hostnamen (z. B. Monitoradressen) mit der Funktion\\
CONFIG\_DNS\_RESOLVER aufgelöst.\\
Informationen über die Verwendung von CONFIG\_DNS\_RESOLVER finden Sie unter
Documentation/networking/dns\_resolver.rst\\
Wenn Sie unsicher sind, sagen Sie N.

\subsection{NFC subsystem support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_NFC [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie Unterstützung für NFC-Geräte (Near Field Communication) bauen wollen.
Um diese Unterstützung als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{nfc} genannt.

\subsection{Packet-sampling netlink channel ---}
CONFIG\_PSAMPLE [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um Unterstützung für den Netlink"=Kanal mit Paketsampling hinzuzufügen.
Dieser Netlink"=Kanal ermöglicht die Übertragung von Paketen zusammen mit einigen Metadaten in den Userspace.
Um diese Unterstützung als Modul zu kompilieren, wählen Sie hier M: das Modul wird \texttt{psample} genannt.

\subsection{Inter-FE based on IETF ForCES InterFE LFB ---}
CONFIG\_PSAMPLE [=m] \textbf{[M]}\\*
Sagen Sie hier Y, um die Unterstützung des IFE-Kapselungsprotokolls hinzuzufügen.
Einzelheiten finden Sie im netdev01-Dokument:\\
\glqq Verteilendes Linux-Verkehrskontroll-Klassifizierungs-Aktions-Subsystem\grqq{}\\
Autoren: Jamal Hadi Salim und Damascene M. Joachimpillai\\
Um diese Unterstützung als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{ife} genannt.

\subsection{Network light weight tunnels}
CONFIG\_LWTUNNEL [=y] \textbf{[Y]}\\*
Diese Funktion bietet eine Infrastruktur zur Unterstützung von leichtgewichtigen Tunneln wie mpls.
Einem Light-Weight"=Tunnel"=Endpunkt ist kein Netzgerät zugeordnet. Die Tunnelkapselungsparameter
werden zusammen mit dem Status von Light-Weight"=Tunneln gespeichert, die mit Fib"=Routen verbunden sind.

\subsubsection{Execute BPF program as route nexthop action}
CONFIG\_LWTUNNEL\_BPF [=y] \textbf{[Y]}\\*
Ermöglicht die Ausführung von BPF"=Programmen als Nexthop"=Aktion nach einem Routensuchlauf für
eingehende und ausgehende Pakete.

\subsection{Page pool stats}
CONFIG\_PAGE\_POOL\_STATS [=y] \textbf{[Y]}\\*
Aktivieren Sie die Seitenpoolstatistik, um die Seitenzuweisung und das
Recycling in Seitenpools zu verfolgen. Diese Option verursacht
zusätzliche CPU"=Kosten für die Zuweisungs- und Wiederverwendungspfade
und zusätzliche Speicherkosten für die Speicherung der Statistiken.
Diese Statistiken sind nur verfügbar, wenn diese Option aktiviert ist
und wenn der Treiber, der den Seitenpool verwendet, den Export dieser
Daten unterstützt.
Wenn Sie unsicher sind, sagen Sie N.

\subsection{Generic failover module}
CONFIG\_FAILOVER [=m] \textbf{[M]}\\*
Das Failover-Modul bietet eine generische Schnittstelle für paravirtuelle Treiber, um ein Netdev und
einen Satz von Ops bei einer Failover"=Instanz zu registrieren. Die Ops werden als Event-Handler
verwendet, die aufgerufen werden, um Netdev"=Registrierungs-/Entregistrierungs-/Link-/Namensänderungs"=Ereignisse
auf Slave"=PCI"=Ethernet"=Geräten mit der gleichen MAC"=Adresse wie das Failover"=Netdev zu behandeln.
Dies ermöglicht es paravirtuellen Treibern, ein VF als beschleunigten Datenpfad mit niedriger Latenz
zu verwenden. Es ermöglicht auch die Live"=Migration von VMs mit direkt angeschlossenen VFs durch
Failover auf den paravirtuellen Datenpfad, wenn das VF ausgesteckt wird.

\subsection{Netlink interface for ethtool}
CONFIG\_ETHTOOL\_NETLINK [=y] \textbf{[Y]}\\*
Eine alternative Benutzerschnittstelle für ethtool, die auf generischem Netlink basiert.
Sie bietet eine bessere Erweiterbarkeit und einige neue Funktionen, z.~B. Benachrichtigungsmeldungen.

\section{Device Drivers \texorpdfstring{$\rightarrow$}{->}}
\textit{(Gerätetreiber)}

\subsection{EISA support ---}
CONFIG\_EISA [=n] \textbf{[~]}\\*
Der Extended Industry Standard Architecture (EISA)-Bus wurde als offene Alternative
zum IBM MicroChannel"=Bus entwickelt.
Der EISA-Bus bot einige der Funktionen des IBM"=MicroChannel"=Busses und war gleichzeitig
abwärtskompatibel mit Karten, die für den älteren ISA"=Bus hergestellt wurden.
Der EISA-Bus wurde zwischen 1988 und 1995 in begrenztem Umfang eingesetzt,
als er durch den PCI-Bus überflüssig wurde.
Geben Sie hier Y an, wenn Sie einen Kernel für einen EISA"=basierten Rechner erstellen.
Ansonsten sagen Sie N.

\subsection{PCI support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_PCI [=y] \textbf{[Y]}\\*
Diese Option aktiviert die Unterstützung für den lokalen PCI-Bus, einschließlich der
Unterstützung für PCI-X und die Grundlagen für die Unterstützung von PCI Express.\\
Sagen Sie hier Y, wenn Sie nicht wissen, was Sie tun.

\subsubsection{PCI Express Port Bus support}
CONFIG\_PCIEPORTBUS [=y] \textbf{[Y]}\\*
Dadurch wird die Unterstützung für den PCI Express Port Bus aktiviert. Benutzer können
dann die Unterstützung für Native Hot-Plug, Advanced Error Reporting, Power Management
Events und Downstream Port Containment aktivieren.

\paragraph{PCI Express Hotplug driver}$~$\\
CONFIG\_HOTPLUG\_PCI\_PCIE [=y] \textbf{[Y]}\\*
Sagen Sie hier Y, wenn Sie ein Motherboard haben, das natives PCIe"=Hotplug unterstützt.
Thunderbolt/USB4 PCIe-Tunneling hängt von nativem PCIe"=Hotplug ab.
Im Zweifelsfall sagen Sie N.

\paragraph{PCI Express Advanced Error Reporting support}$~$\\
CONFIG\_PCIEAER [=y] \textbf{[Y]}\\*
Dies ermöglicht die Unterstützung des PCI Express Root Port Advanced Error Reporting
(AER) Treibers. Die an den Root Port gesendeten Fehlermeldungen werden vom PCI Express
AER"=Treiber verarbeitet.

\subparagraph{PCI Express error injection support}$~$\\
CONFIG\_PCIEAER\_INJECT [=m] \textbf{[M]}\\*
Dies aktiviert den PCI Express Root Port Advanced Error Reporting (AER) Software-Fehlerinjektor.
Das Debuggen von AER-Code ist ziemlich schwierig, da es schwierig ist, verschiedene echte
Hardwarefehler auszulösen. Software"=basierte Fehlerinjektion kann fast alle Arten von Fehlern
mit Hilfe eines Userspace"=Hilfswerkzeugs \texttt{aer-inject} vortäuschen,
das unter folgender Adresse erhältlich ist
\url{https://git.kernel.org/cgit/linux/kernel/git/gong.chen/aer-inject.git/}

\subparagraph{PCI Express CXL RAS support}$~$\\
CONFIG\_PCIEAER\_CXL [=y] \textbf{[Y]}\\*
Aktiviert die CXL"=Fehlerbehandlung.
Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{PCI Express ECRC settings control}$~$\\
CONFIG\_PCIE\_ECRC [=y] \textbf{[Y]}\\*
Wird verwendet, um Firmware-/Bios-Einstellungen für PCI Express ECRC
(Transaction Layer End-to-End CRC Checking) außer Kraft zu setzen.
Im Zweifelsfall sagen Sie N.

\subsubsection{PCI Express ASPM control}
CONFIG\_PCIEASPM [=y] \textbf{[Y]}\\*
Dies ermöglicht dem Betriebssystem die Kontrolle über PCI Express ASPM
(Active State Power Management) und Clock Power Management.
ASPM unterstützt den Zustand L0/L0s/L1.\\
ASPM wird zunächst von der Firmware eingerichtet. Wenn diese Option aktiviert ist, kann Linux
diesen Status ändern, um ASPM bei bekanntermaßen schlechter Hardware oder Konfigurationen zu
deaktivieren und bei bekanntermaßen sicherer Hardware zu aktivieren.
ASPM kann zur Laufzeit über \texttt{/sys/module/pcie\_aspm/parameters/policy}
deaktiviert oder aktiviert werden.
Im Zweifelsfall sagen Sie Y.


\paragraph{Default ASPM policy (BIOS default) \texorpdfstring{$\rightarrow$}{->}}$~$\\
\textit{Für diese Option gibt es keine Hilfe.}

\subparagraph{BIOS default}$~$\\
CONFIG\_PCIEASPM\_DEFAULT [=y] \textbf{[Y]}\\*
Verwenden Sie die BIOS"=Standardeinstellungen für PCI Express ASPM.

\subparagraph{Powersave}$~$\\
CONFIG\_PCIEASPM\_POWERSAVE [=n] \textbf{[~]}\\*
Aktiviert PCI Express ASPM L0s und L1 wo möglich, auch wenn das BIOS dies nicht getan hat.

\subparagraph{Power Supersave}$~$\\
CONFIG\_PCIEASPM\_POWER\_SUPERSAVE [=n] \textbf{[~]}\\*
Wie PCIEASPM\_POWERSAVE, nur dass auch L1-Substates aktiviert werden, wo dies möglich ist.
Dies würde zu höheren Energieeinsparungen führen, während man in L1 bleibt,
wo die Komponenten dies unterstützen.

\subparagraph{Performance}$~$\\
CONFIG\_PCIEASPM\_POWER\_PERFORMANCE [=n] \textbf{[~]}\\*
Deaktivieren Sie PCI Express ASPM L0s und L1, auch wenn das BIOS sie aktiviert hat.

%15.2.3
\subsubsection{PCI Express Downstream Port Containment support}
CONFIG\_PCIE\_DPC [=y] \textbf{[Y]}\\*
Dies ermöglicht die Unterstützung von PCI Express Downstream Port Containment (DPC) Treibern.
DPC"=Ereignisse von Root- und Downstream"=Ports werden durch den DPC"=Treiber verarbeitet.
Wenn Ihr System nicht über diese Fähigkeit verfügt oder Sie diese Funktion nicht nutzen möchten,
können Sie mit N antworten.

%15.2.4
\subsubsection{PCI Express Precision Time Measurement support}
CONFIG\_PCIE\_PTM [=y] \textbf{[Y]}\\*
Dies ermöglicht die Unterstützung von PCI Express Precision Time Measurement (PTM).
Dies ist nur sinnvoll, wenn Sie Geräte haben, die PTM unterstützen, aber es ist sicher,
sie zu aktivieren, auch wenn Sie sie nicht haben.

%15.2.5
\subsubsection{PCI Express Error Disconnect Recover support}
CONFIG\_PCIE\_EDR [=y] \textbf{[Y]}\\*
Diese Option fügt die Unterstützung für Error Disconnect Recover hinzu, wie in der
Downstream Port Containment Related Enhancements ECN der PCI Firmware Specification r3.2 beschrieben.
Aktivieren Sie diese Option, wenn Sie ein hybrides DPC-Modell unterstützen möchten, das sowohl
Firmware als auch Betriebssystem zur Implementierung von DPC verwendet.

\subsubsection{Message Signaled Interrupts (MSI and MSI-X)}
CONFIG\_PCI\_MSI [=y] \textbf{[Y]}\\*
Damit können Gerätetreiber MSI (Message Signaled Interrupts) aktivieren.
Message Signaled Interrupts ermöglichen es einem Gerät, einen Interrupt zu erzeugen, indem es ein
eingehendes Memory Write auf seinem PCI-Bus verwendet, anstatt einen Geräte"=IRQ-Pin zu aktivieren.
Die Verwendung von PCI MSI"=Interrupts kann beim Booten des Kernels mit der Option
\texttt{pci=nomsi} deaktiviert werden. Dadurch wird MSI für das gesamte System deaktiviert.
Wenn Sie nicht wissen, was Sie hier tun sollen, sagen Sie Y.

\subsubsection{PCI Debugging}
CONFIG\_PCI\_DEBUG [=n] \textbf{[~]}\\*
Geben Sie hier Y an, wenn Sie möchten, dass der PCI-Kern eine Reihe von Debug"=Meldungen in
das Systemprotokoll schreibt. Wählen Sie dies, wenn Sie ein Problem mit der
PCI"=Unterstützung haben und mehr über die Vorgänge erfahren möchten.
Im Zweifelsfall sagen Sie N.

\subsubsection{Enable PCI resource re-allocation detection}
CONFIG\_PCI\_REALLOC\_ENABLE\_AUTO [=n] \textbf{[~]}\\*
Geben Sie hier Y an, wenn Sie möchten, dass der PCI-Kern erkennt, ob die Neuzuweisung von
PCI"=Ressourcen aktiviert werden muss. Sie können jederzeit
\texttt{pci=realloc=on} oder \texttt{pci=realloc=off} verwenden, um dies zu überschreiben.
Es werden automatisch PCI"=Ressourcen neu zugewiesen, wenn SR-IOV BARs nicht vom BIOS
zugewiesen wurden.
Im Zweifelsfall sagen Sie N.

\subsubsection{PCI Stub driver}
CONFIG\_PCI\_STUB [=y] \textbf{[Y]}\\*
Sagen Sie hier Y oder M, wenn Sie ein PCI-Gerät reservieren wollen, wenn es einem
Gastbetriebssystem zugewiesen werden soll.
Im Zweifelsfall sagen Sie N.

%15.2.10
\subsubsection{PCI PF Stub driver}
CONFIG\_PCI\_\_PF\_STUB [=m] \textbf{[M]}\\*
Geben Sie hier Y oder M an, wenn Sie die Unterstützung für Geräte, die SR-IOV"=Unterstützung
benötigen, aktivieren möchten, während die PF (Physical Function) selbst keine eigentlichen
Dienste auf dem Host selbst, wie z.~B. Speicher oder Netzwerke, bereitstellt.
Im Zweifelsfall sagen Sie N.

\subsubsection{Xen PCI Frontend}
CONFIG\_XEN\_PCIDEV\_FRONTEND [=m] \textbf{[M]}\\*
Der PCI-Geräte"=Frontend"=Treiber ermöglicht es dem Kernel, beliebige PCI"=Geräte aus
einem PCI"=Back"-end zu importieren, um PCI"=Treiber"=Domänen zu unterstützen.

\subsubsection{PCI IOV support}
CONFIG\_PCI\_IOV [=y] \textbf{[Y]}\\*
E/A-Virtualisierung ist eine PCI"=Funktion, die von einigen Geräten unterstützt wird und
es ihnen ermöglicht, virtuelle Geräte zu erstellen, die ihre physischen Ressourcen gemeinsam nutzen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{PCI PRI support}
CONFIG\_PCI\_PRI [=y] \textbf{[Y]}\\*
PRI ist das PCI Page Request Interface. Es ermöglicht PCI"=Geräten, die sich hinter einer
IOMMU befinden, sich von Seitenfehlern zu erholen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{PCI PASID support}
CONFIG\_PCI\_PASID [=y] \textbf{[Y]}\\*
Process Address Space Identifiers (PASIDs) können von PCI"=Geräten für den gleichzeitigen Zugriff
auf mehr als einen IO"=Adressraum verwendet werden. Um diese Funktion nutzen zu können, ist eine
IOMMU erforderlich, die auch PASIDs unterstützt.
Wählen Sie diese Option, wenn Sie eine solche IOMMU haben und den Treiber dafür in Ihren Kernel
kompilieren wollen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{PCI peer-to-peer transfer support}
CONFIG\_PCI\_P2PDMA [=y] \textbf{[Y]}\\*
Ermöglicht Treibern die Durchführung von PCI-Peer-to-Peer"=Transaktionen zu und von BARs, die in
anderen Geräten exponiert sind, die den Teil der Hierarchie darstellen, in dem Peer-to-Peer-DMA
von der PCI"=Spezifikation garantiert wird (d.~h. alles unterhalb einer einzelnen PCI"=Bridge).
Viele PCIe"=Root"=Komplexe unterstützen keine P2P"=Transaktionen, und es ist schwer zu sagen,
welche sie überhaupt unterstützen. Daher müssen P2P-DMA"=Transaktionen derzeit zwischen Geräten
hinter demselben Root-Port erfolgen.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Hyper-V PCI Frontend}
CONFIG\_PCI\_HYPERV [=m] \textbf{[M]}\\*
Der PCI-Geräte-Frontend-Treiber ermöglicht es dem Kernel, beliebige PCI"=Geräte aus einem
PCI"=Back"-end zu importieren, um PCI"=Treiber"=Domänen zu unterstützen.

\subsubsection{VGA Arbitration}
CONFIG\_VGA\_ARB [=y] \textbf{[Y]}\\*
Einige \glqq alte\grqq{} VGA"=Geräte, die auf PCI implementiert sind, haben in der Regel die
gleichen hart dekodierten Adressen wie auf ISA. Wenn auf mehrere PCI"=Geräte gleichzeitig
zugegriffen wird, müssen diese irgendwie koordiniert werden. Weitere Einzelheiten finden Sie
unter Documentation/gpu/vgaarbiter.rst. Wählen Sie dies, um VGA"=Arbiter zu aktivieren.

\paragraph{Maximum number of GPUs}$~$\\
CONFIG\_VGA\_ARB\_MAX\_GPUS [=10] \textbf{[10]}\\*
Reserviert Platz im Kernel, um die Ressourcensperre für mehrere GPUS aufrechtzuerhalten.
Der Overhead für jede GPU ist sehr gering.\\
Typ: Ganzzahl (integer)

\subsubsection{Support for PCI Hotplug \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_HOTPLUG\_PCI [=y] \textbf{[Y]}\\*
Geben Sie hier Y ein, wenn Sie ein Motherboard mit einem PCI-Hotplug-Controller haben.
Damit können Sie PCI-Karten hinzufügen und entfernen, während der Rechner eingeschaltet ist und läuft.
Thunderbolt/USB4 PCIe-Tunneling hängt vom nativen PCIe-Hotplug ab.
Im Zweifelsfall sagen Sie N.

%15.2.18.1
\paragraph{ACPI PCI Hotplug driver}$~$\\
CONFIG\_HOTPLUG\_PCI\_ACPI [=y] \textbf{[Y]}\\*
Geben Sie hier Y ein, wenn Sie ein System haben, das PCI Hotplug mit ACPI unterstützt.
Im Zweifelsfall sagen Sie N.
%15.2.18.1.1
\subparagraph{ACPI PCI Hotplug driver IBM extensions}$~$\\
CONFIG\_HOTPLUG\_PCI\_ACPI\_IBM \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Geben Sie hier Y ein, wenn Sie ein IBM-System haben, das PCI-Hotplug über ACPI unterstützt.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul wird
\texttt{acpiphp\_ibm} heißen.
Im Zweifelsfall sagen Sie N.
\\\begin{scriptsize}
Der Laptop ist kein IBM-System.
\end{scriptsize}

\paragraph{CompactPCI Hotplug driver}$~$\\
CONFIG\_HOTPLUG\_PCI\_CPCI \colorbox{yellow!80}{[=y] \textbf{[~]}}\\*
Geben Sie hier Y ein, wenn Sie eine CompactPCI"=Systemkarte mit CompactPCI"=Hotswap"=Unterstützung
gemäß der PICMG~2.1"=Spezifikation besitzen.
Im Zweifelsfall sagen Sie N.
\\\begin{scriptsize}
Im Laptop ist diese CompactPCI-Karte nicht verbaut.
\end{scriptsize}

\subparagraph{Ziatech ZT5550 CompactPCI Hotplug driver}$~$\\
CONFIG\_HOTPLUG\_PCI\_CPCI\_ZT5550 \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Sagen Sie hier Y, wenn Sie eine Ziatech ZT5550 CompactPCI-Systemkarte von Performance Technologies
(früher Intel, früher nur Ziatech) besitzen.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul heißt dann \texttt{cpcihp\_zt5550}.
Im Zweifelsfall sagen Sie N.
\\\begin{scriptsize}
Im Laptop ist diese CompactPCI-Karte nicht verbaut.
\end{scriptsize}

\subparagraph{Generic port I/O CompactPCI Hotplug driver}$~$\\
CONFIG\_HOTPLUG\_PCI\_CPCI\_GENERIC \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Sagen Sie hier Y, wenn Sie eine CompactPCI"=Systemkarte haben, die das \#ENUM-Hotswap-Signal als
ein Bit in einem Systemregister ausgibt, das über Standard"=Port-I/O gelesen werden kann.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{cpcihp\_generic} genannt.
Im Zweifelsfall sagen Sie N.
\\\begin{scriptsize}
Im Laptop ist diese CompactPCI-Karte nicht verbaut.
\end{scriptsize}

\paragraph{SHPC PCI Hotplug driver}$~$\\
CONFIG\_HOTPLUG\_PCI\_SHPC \colorbox{yellow!80}{[=y] \textbf{[~]}}\\*
Geben Sie hier Y ein, wenn Sie ein Motherboard mit einem SHPC PCI Hotplug Controller haben.
Im Zweifelsfall sagen Sie N.

\subsubsection{PCI controller drivers \texorpdfstring{$\rightarrow$}{->}}
\textit{(PCI-Controller-Treiber)}

\paragraph{Intel Volume Management Device Driver}$~$\\
CONFIG\_VMD \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Fügt Unterstützung für das Intel Volume Management Device (VMD) hinzu. VMD ist eine sekundäre
PCI-Host"=Brücke, die es ermöglicht, PCI-Express-Root-Ports und daran angeschlossene Geräte aus
der Standard-PCI-Domäne zu entfernen und in die VMD-Domäne zu verschieben. Dadurch stehen mehr
Bus"=Ressourcen zur Verfügung, als dies bei einer einzelnen Domäne möglich wäre.
Wenn Sie wissen, dass Ihr System über einen dieser Ports verfügt und Geräte daran angeschlossen
sind, sagen Sie Y; wenn Sie sich nicht sicher sind, sagen Sie N.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{vmd} genannt.

\paragraph{Microsoft Hyper-V PCI Interface}$~$\\
CONFIG\_PCI\_HYPERV\_INTERFACE \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Das Hyper-V PCI Interface ist ein Hilfstreiber, der es anderen
Treibern ermöglicht, eine gemeinsame Schnittstelle mit dem Hyper-V
PCI Frontend-Treiber zu haben.

\paragraph{Cadence-based PCIe controllers ---}$~$\\
\textit{Cadence-basierte PCIe-Steuerungen, keine Auswahl}

\paragraph{DesignWare-based PCIe controllers \texorpdfstring{$\rightarrow$}{->}}$~$\\
\textit{DesignWare-basierte PCIe-Steuerungen}

%15.2.19.4.1
\subparagraph{Amlogic Meson PCIe controller}$~$\\
CONFIG\_PCI\_MESON \colorbox{yellow!80}{[=y] \textbf{[~]}}\\*
Sagen Sie hier Y, wenn Sie die Unterstützung des PCI-Controllers
auf Amlogic-SoCs aktivieren wollen. Der PCI-Controller auf Amlogic
basiert auf DesignWare"=Hardware und daher verwendet der Treiber die
DesignWare"=Kernfunktionen zur Implementierung des Treibers.

\subparagraph{Platform bus based DesignWare PCIe controller (host mode)}$~$\\
CONFIG\_PCIe\_DW\_PLAT\_HOST \colorbox{yellow!80}{[=y] \textbf{[~]}}\\*
Ermöglicht die Unterstützung des PCIe-Controllers in der Designware-IP
für den Betrieb im Host-Modus. Es gibt zwei Instanzen des PCIe-Controllers
in Designware IP. Dieser Controller kann entweder als EP oder RC arbeiten.
Um hostspezifische Funktionen zu aktivieren, muss PCIE\_DW\_PLAT\_HOST
ausgewählt werden und um gerätespezifische Funktionen zu aktivieren,
muss PCI\_DW\_PLAT\_EP ausgewählt werden.

\paragraph{Mobiveil-based PCIe controllers ---}$~$\\
\textit{Mobiveil-basierte PCIe-Steuerungen, keine Auswahl}

\subsubsection{PCI Endpoint \texorpdfstring{$\rightarrow$}{->}}
\textit{(PCI-Endgerät}

\paragraph{PCI Endpoint Support}$~$\\
CONFIG\_PCI\_ENDPOINT [=n] \textbf{[~]}\\*
Aktivieren Sie diese Konfigurationsoption, um einen konfigurierbaren PCI"=Endpunkt
zu unterstützen. Dies sollte aktiviert werden, wenn die Plattform über einen
PCI"=Controller verfügt, der im Endpunktmodus arbeiten kann.\\
Durch die Aktivierung dieser Option wird die Endpunkt"=Bibliothek erstellt, die
eine Endpunkt"=Controller"=Bibliothek und eine Endpunkt"=Funktionsbibliothek
enthält.
Im Zweifelsfall sollten Sie N angeben, um die Endpunktunterstützung zu
deaktivieren.

\subsubsection{PCI switch controller drivers \texorpdfstring{$\rightarrow$}{->}}
\textit{(PCI-Switch-Controller-Treiber}

\paragraph{MicroSemi Switchtec PCIe Switch Management Driver}$~$\\
CONFIG\_PCI\_SW\_SWITCHTEC \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Ermöglicht die Unterstützung der Management"=Schnittstelle für die MicroSemi
Switchtec"=Serie von PCIe"=Switches. Unterstützt den Userspace"=Zugriff, um
MRPC"=Befehle über /dev/switchtecX-Geräte an den Switch zu senden.
Siehe $<$file:Documentation/driver-api/switchtec.rst$>$ für weitere Informationen.

\subsubsection{CXL (Compute Express Link) Devices Support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_CXL\_BUS \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
CXL ist ein Bus, der elektrisch mit PCI Express kompatibel ist, aber drei Protokolle
auf diese Signalisierung aufbaut (CXL.io, CXL.cache und CXL.mem).
Das CXL.cache"=Protokoll ermöglicht es Geräten, Cachelines lokal zu halten, das
CXL.mem"=Protokoll ermöglicht es Geräten, vollständig kohärente Speicherziele zu
sein, das CXL.io"=Protokoll entspricht PCI Express. Sagen Sie Y, um die Unterstützung
für die Konfiguration und Verwaltung von Geräten zu aktivieren, die diese Protokolle
unterstützen.

\paragraph{PCI manageability}$~$\\
CONFIG\_CXL\_PCI \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Die CXL-Spezifikation definiert eine Unterklasse \glqq CXL"=Speichergerät\grqq{}
in der PCI"=Basisklasse der \glqq Speicher"=Controller\grqq{}.
Geräte, die mit diesem Klassencode gekennzeichnet sind, bieten Unterstützung
für flüchtigen und/oder dauerhaften Speicher, der in die Systemadresszuordnung
(Host-managed Device Memory (HDM)) eingeordnet werden kann.
Sagen Sie \glqq y/m\grqq{}, um einen Treiber zu aktivieren, der sich
an CXL"=Speichererweiterungsgeräte anschließt, die durch den Klassencode
des Speichergeräts für die Konfiguration und Verwaltung hauptsächlich über
die Mailbox"=Schnittstelle aufgezählt werden.
Siehe Kapitel~2.3 Typ~3 CXL Gerät in der CXL~2.0 Spezifikation für weitere Details.
Wenn Sie unsicher sind, sagen Sie M.

\subparagraph{RAW Command Interface for Memory Devices}$~$\\
CONFIG\_CXL\_MEM\_RAW\_COMMANDS [=n] \textbf{[~]}\\*
Aktivieren Sie die CXL RAW-Befehlsschnittstelle.\\
Die ioctl"=Schnittstelle des CXL"=Treibers kann für jeden spezifizierten Opcode
eine Kernel"=ioctl"=Befehlsnummer zuweisen. Zu jedem beliebigen Zeitpunkt kann
die Anzahl der in der Spezifikation definierten Opcodes, die ein Gerät
implementieren kann, die Anzahl der zugehörigen ioctl"=Funktionsnummern des
Kernels übersteigen. Die Diskrepanz entsteht entweder durch Auslassung, weil die
Spezifikation zu neu ist, oder durch das Design. Beim Prototyping neuer Hardware
oder bei der Entwicklung/Debugging des Treibers ist es nützlich, alle möglichen
Befehle an die Hardware übermitteln zu können, sogar Befehle, die den Kernel zum
Absturz bringen könnten, da sie sich auf den vom Kernel verwendeten Speicher
auswirken könnten.\\
Wenn Sie CXL"=Hardware oder den Treiber entwickeln, sagen Sie Y, andernfalls
sagen Sie N.

\paragraph{CXL ACPI: Platform Support}$~$\\
CONFIG\_CXL\_ACPI \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Aktiviert die Unterstützung von HDM"=Ressourcen (Host Managed Device Memory), die
von der ACPI"=CXL"=Speicherlayoutbeschreibung einer Plattform veröffentlicht werden.
Siehe Kapitel~9.14.1 CXL Early Discovery Table (CEDT) in der CXL~2.0 Spezifikation
und CXL Fixed Memory Window Structures (CEDT.CFMWS)
(\url{https://www.computeexpresslink.org/spec-landing}).
Der CXL-Kern nutzt diese Ressourcen, um die Wurzel einer cxl\_port"=Decodierungshierarchie
zu veröffentlichen, um Regionen abzubilden, die System"=RAM oder von LIBNVDIMM zu
verwaltende Festspeicherregionen darstellen.
Wenn Sie unsicher sind, sagen Sie M.

\paragraph{CXL PMEM: Persistent Memory Support}$~$\\
CONFIG\_CXL\_PMEM \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Zusätzlich zu den typischen Speicherressourcen kann eine Plattform auch die Unterstützung
von über CXL angeschlossenem persistenten Speicher ankündigen. Diese Unterstützung wird
über einen Brückentreiber zwischen CXL und dem LIBNVDIMM"=System"=Subsystem verwaltet.
Sagen Sie \glqq Y/M\grqq{}, um die Unterstützung für die Aufzählung und Bereitstellung der
Kapazität des persistenten Speichers von CXL"=Speichererweiterungen zu aktivieren.
Wenn Sie unsicher sind, sagen Sie M.

\paragraph{CXL: Memory Expansion}$~$\\
CONFIG\_CXL\_MEM \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Das CXL.mem-Protokoll ermöglicht es einem Gerät, als Anbieter von \glqq System-RAM\grqq{}
und/oder \glqq persistentem Speicher\grqq{} zu fungieren, der vollständig kohärent ist,
als wäre der Speicher an den typischen CPU"=Speicher"=Controllern angeschlossen.
Dies wird als HDM \glqq Host-managed Device Memory\grqq{} bezeichnet.
Sagen Sie Y/M, um einen Treiber zu aktivieren, der sich an CXL.mem"=Geräte zur
Speichererweiterung und Steuerung von HDM anschließt.
Eine detaillierte Beschreibung von HDM finden Sie in Kapitel~9.13 der CXL~2.0"=Spezifikation.
Wenn Sie unsicher sind, sagen Sie M.

\paragraph{CXL: Region Support}$~$\\
CONFIG\_CXL\_REGION \colorbox{yellow!80}{[=y] \textbf{[~]}}\\*
Ermöglicht dem CXL-Kern die Aufzählung und Bereitstellung von CXL"=Regionen. Eine CXL"=Region
wird durch einen oder mehrere CXL"=Expander definiert, die einen bestimmten
systemphysikalischen Adressbereich dekodieren. Für CXL"=Regionen, die von der
Plattform"=Firmware eingerichtet wurden, ermöglicht diese Option die Behandlung von
Speicherfehlern, um die Geräte zu identifizieren, die an einem bestimmten verschachtelten
Speicherbereich teilnehmen. Andernfalls wird das von der Plattform-Firmware verwaltete CXL
durch Aufnahme in die Systemadresskarte aktiviert und benötigt keinen Treiber.
Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{CXL: Region Cache Management Bypass (TEST)}$~$\\
CONFIG\_CXL\_REGION\_INVALIDATION\_TEST [=n] \textbf{[~]}\\*
Die Verwaltungs- und Sicherheitsoperationen von CXL Region machen möglicherweise den Inhalt
von CPU"=Caches ungültig, ohne diese Caches zu benachrichtigen, damit sie die betroffenen
Cachelines ungültig machen. Der CXL"=Region"=Treiber versucht, Caches zu invalidieren, wenn
diese Ereignisse eintreten. Wenn diese Invalidierung fehlschlägt, kann die Region nicht
aktiviert werden. Die Gründe für das Scheitern der Cache"=Invalidierung liegen darin, dass
die CPU keinen Cache"=Invalidierungsmechanismus bereitstellt. Zum Beispiel ist die Verwendung
von wbinvd auf Bare Metal x86 beschränkt. Zu Testzwecken kann das Umschalten dieser Option
jedoch die Datenintegritätssicherheit deaktivieren und mit der Aktivierung von Regionen
fortfahren, wenn im CPU"=Cache widersprüchliche Inhalte vorhanden sind.//
Wenn Sie unsicher sind oder wenn dieser Kernel für Produktionsumgebungen gedacht ist,
wählen Sie N.

\paragraph{CXL Performance Monitoring Unit}$~$\\
CONFIG\_CXL\_PMU \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Support performance monitoring as defined in CXL rev~3.0 section~13.2: Performance Monitoring.
CXL components may have one or more CXL Performance Monitoring Units (CPMUs).\\
Say Y/M to enable a driver that will attach to performance monitoring units and provide
standard perf based interfaces.
If unsure say M.

\subsection{PCCard (PCMCIA/Cardbus) support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_PCCARD [=m] \textbf{[M]}\\*
Sagen Sie hier Y, wenn Sie PCMCIA- oder PC"=Karten an Ihren Linux"=Computer anschließen wollen.
Das sind kreditkartengroße Geräte wie Netzwerkkarten, Modems oder Festplatten, die oft in
Laptops verwendet werden. Es gibt eigentlich zwei Arten dieser Karten: 16-Bit-PCMCIA- und
32-Bit"=CardBus"=Karten.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird pcmcia\_core heißen.

\subsubsection{16-bit PCMCIA support}
CONFIG\_PCMCIA \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Diese Option ermöglicht die Unterstützung von 16-Bit-PCMCIA"=Karten. Die meisten älteren
PC"=Karten sind solche 16-Bit PCMCIA"=Karten. Wenn Sie also nicht wissen, dass Sie nur
32"=Bit CardBus"=Karten verwenden, geben Sie hier Y oder M an.
Um 16-Bit PCMCIA"=Karten zu verwenden, benötigen Sie in den meisten Fällen unterstützende
Software. (siehe die Datei $<$file:Documentation/Changes$>$ für Ort und Details).
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{pcmcia} heißen.
Wenn Sie unsicher sind, sagen Sie Y.

\paragraph{Load CIS updates from userspace}$~$\\
CONFIG\_PCMCIA\_LOAD\_CIS \colorbox{yellow!80}{[=y] \textbf{[~]}}\\*
Einige PCMCIA"=Karten benötigen eine aktualisierte Karteninformationsstruktur (CIS), die aus
dem Userspace geladen werden muss, um korrekt zu funktionieren. Wenn Sie hier Y angeben und
Ihr Userspace korrekt eingerichtet ist, wird diese automatisch mit dem 
In-Kernel"=Firmware"=Loader und dem Hotplug"=Subsystem geladen, anstatt sich auf cardmgr von
pcmcia-cs zu verlassen.
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{32-bit CardBus support}
CONFIG\_CARDBUS \colorbox{yellow!80}{[=y] \textbf{[M]}}\\*
CardBus ist eine Bus-Mastering-Architektur für PC-Karten, die 32-Bit-PC-Karten ermöglicht
(der ursprüngliche PCMCIA"=Standard sieht nur einen 16-Bit breiten Bus vor).
Viele neuere PC-Karten sind eigentlich CardBus-Karten.
Um 32-Bit-PC-Karten zu verwenden, benötigen Sie auch eine CardBus"=kompatible Host"=Bridge.
Praktisch alle modernen PCMCIA"=Bridges sind dazu in der Lage, und die meisten von ihnen
sind \glqq Yenta-kompatibel\grqq{}, d.~h. sie sagen auch Y oder M.
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection*{*** PC-card bridges ***}

\subsubsection{CardBus yenta-compatible bridge support}
CONFIG\_YENTA \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Diese Option ermöglicht die Unterstützung von CardBus-Host-Bridges. Praktisch alle modernen
PCMCIA"=Bridges sind CardBus-kompatibel. Eine \glqq Brücke\grqq{} ist die Hardware in Ihrem
Computer, in die PCMCIA-Karten eingesteckt werden.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{yenta\_socket} heißen.
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Cirrus PD6729 compatible bridge support}
CONFIG\_PD6729 \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Dies bietet Unterstützung für das Cirrus PD6729 PCI-zu-PCMCIA"=Bridge"=Gerät, das in einigen
älteren Laptops und PCMCIA-Kartenlesern zu finden ist.

\subsubsection{i82092 compatible bridge support}
CONFIG\_I82092 \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Dies bietet Unterstützung für das Intel I82092AA PCI-zu-PCMCIA"=Brückengerät, das in einigen
älteren Laptops und häufiger in Evaluierungsboards für den Chip zu finden ist.

\subsection{RapidIO support ---}% \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_PCCARD [=n] \textbf{[~]}\\*
Wenn Sie hier Y angeben, wird der Kernel Treiber und Infrastrukturcode zur Unterstützung von
RapidIO"=Verbindungsgeräten enthalten.

\subsection{Generic Driver Options \texorpdfstring{$\rightarrow$}{->}}
\textit{Allgemeine Treiberoptionen}

\subsubsection{Support for uevent helper}
CONFIG\_UEVENT\_HELPER [=n] \textbf{[~]}\\*
Das uevent"=Hilfsprogramm wird vom Kernel für jedes uevent gegabelt.
Vor der Umstellung auf die netlink"=basierte uevent"=Quelle wurde es verwendet, um
Hotplug"=Skripte mit Kernel"=Geräteereignissen zu verbinden. Es zeigte normalerweise auf ein
Shell"=Skript unter /sbin/hotplug.
Dies sollte heute nicht mehr verwendet werden, da übliche Systeme beim Booten oder bei der
Geräteerkennung viele Ereignisse in einem sehr kurzen Zeitrahmen erzeugen. Ein geforkter
Prozess pro Ereignis kann so viele Prozesse erzeugen, dass es zu einer hohen Systembelastung
kommt, oder auf kleineren Systemen ist bekannt, dass es zu Out"=of"=Memory"=Situationen
während des Bootvorgangs kommt.

\subsubsection{Maintain a devtmpfs filesystem to mount at /dev}
CONFIG\_DEVTMPFS [=y] \textbf{[Y]}\\*
Dadurch wird eine tmpfs/ramfs"=Dateisysteminstanz bereits beim Booten erzeugt. In diesem
Dateisystem verwaltet der Kernel"=Treiberkern Geräteknoten mit ihren Standardnamen und
Berechtigungen für alle registrierten Geräte mit einer zugewiesenen Major/Minor"=Nummer.
Der Userspace kann den Inhalt des Dateisystems nach Bedarf ändern, Symlinks hinzufügen und
die erforderlichen Berechtigungen vergeben.
Er stellt ein voll funktionsfähiges /dev"=Verzeichnis zur Verfügung, auf dem normalerweise
udev läuft, das die Berechtigungen verwaltet und sinnvolle Symlinks hinzufügt.
In sehr begrenzten Umgebungen kann es ein ausreichend funktionierendes /dev ohne weitere
Hilfe bereitstellen. Es erlaubt auch einfache Rettungssysteme und geht zuverlässig mit
dynamischen Major/Minor"=Nummern um.
Hinweis: Wenn CONFIG\_TMPFS nicht aktiviert ist, wird stattdessen das einfachere
ramfs"=Dateisystem verwendet.

\paragraph{Automount devtmpfs at /dev, after the kernel mounted the rootfs}$~$\\
CONFIG\_DEVTMPFS\_MOUNT %\colorbox{yellow!80}%
{[=y] \textbf{[Y]}}\\*
Dies weist den Kernel an, das Dateisystem devtmpfs automatisch unter /dev einzuhängen,
direkt nachdem der Kernel das Root"=Dateisystem eingehängt hat. Das Verhalten kann mit
dem Kommandozeilenparameter: \texttt{devtmpfs.mount=$0|1$} überschrieben werden.
Diese Option hat keinen Einfluss auf initramfs"=basiertes Booten, hier muss das
devtmpfs"=Dateisystem immer manuell eingehängt werden, nachdem das rootfs eingehängt
wurde.\\
Wenn diese Option aktiviert ist, kann ein System im Rettungsmodus mit
\texttt{init=/bin/sh} gebootet werden, auch wenn das /dev"=Verzeichnis auf dem rootfs
komplett leer ist.

\paragraph{Use nosuid,noexec mount options on devtmpfs}$~$\\
CONFIG\_DEVTMPFS\_SAFE [=y] \textbf{[Y]}\\*
Dies weist den Kernel an, die Einhängeflags MS\_NOEXEC und MS\_NOSUID beim Einhängen
von devtmpfs zu berücksichtigen.\\
Beachten Sie: Wenn dies aktiviert ist, können Dinge wie /dev/mem nicht mit dem
PROT\_EXEC"=Flag gemappt werden. Dies kann z.~B. Nicht"=KMS"=Grafiktreiber beschädigen.

\subsubsection{Select only drivers that don't need compile-time external firmware}
CONFIG\_STANDALONE [=y] \textbf{[Y]}\\*
Wählen Sie diese Option, wenn Sie keine magische Firmware für Treiber haben,
die diese benötigen.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Disable drivers features which enable custom firmware building}
CONFIG\_PREVENT\_FIRMWARE\_BUILD [=y] \textbf{[Y]}\\*
Sagen Sie ja, um Treiberfunktionen zu deaktivieren, die es ermöglichen, eine
benutzerdefinierte Treiber"=Firmware zur Kernel"=Erstellungszeit zu erstellen.
Diese Treiber verwenden nicht die Kernel"=Firmware"=API zum Laden der Firmware
(CONFIG\_FW\_LOADER), sondern ihren eigenen benutzerdefinierten Lademechanismus.
Die benötigte Firmware wird in der Regel mit dem Treiber ausgeliefert, das
Erstellen der Treiber"=Firmware sollte nur notwendig sein, wenn Sie eine
aktualisierte Firmware"=Quelle haben.\\
Firmware sollte nicht als Teil des Kernels gebaut werden.
Heutzutage sollte man dies immer verhindern und hier Y sagen.
Es gibt nur zwei alte Treiber, die die Erstellung ihrer Firmware zur
Kernel"=Erstellungszeit ermöglichen:
\begin{itemize}
	\item CONFIG\_WANXL durch CONFIG\_WANXL\_BUILD\_FIRMWARE
	\item CONFIG\_SCSI\_AIC79XX durch CONFIG\_AIC79XX\_BUILD\_FIRMWARE
\end{itemize}

\subsubsection{Firmware loader \texorpdfstring{$\rightarrow$}{->}}
\textit{(Firmware-Ladeprogramm)}

\paragraph{Firmware loading facility}$~$\\
CONFIG\_FW\_LOADER [=y] \textbf{[Y]}\\*
Damit wird die Möglichkeit zum Laden der Firmware im Kernel aktiviert.
Der Kernel sucht zunächst nach eingebauter Firmware, wenn er welche hat.
Anschließend sucht er in einer Reihe von Dateisystempfaden nach der gewünschten
Firmware:
\begin{itemize}
	\item firmware\_class Pfad-Modulparameter oder Kernel-Boot-Parameter
	\item /lib/firmware/updates/UTS\_RELEASE
	\item /lib/firmware/updates
	\item /lib/firmware/UTS\_RELEASE
	\item /lib/firmware
\end{itemize}
Die Aktivierung dieser Funktion vergrößert Ihr Kernel"=Image nur um etwa 828~Bytes.
Aktivieren Sie diese Option nur, wenn Sie sicher sind, dass Sie keine Firmware
benötigen.
Normalerweise wollen Sie diese Funktion eingebaut haben (=y), aber Sie können sie
auch als Modul aktivieren, in diesem Fall wird das Modul \texttt{firmware\_class}
gebaut.
Sie sollten auch sicherstellen, dass Sie diese integrierte Funktion aktivieren,
wenn Sie die integrierte Firmware (CONFIG\_EXTRA\_FIRMWARE) aktivieren wollen.

\subparagraph{Log filenames and checksums for loaded firmware}$~$\\
CONFIG\_FW\_LOADER\_DEBUG [=y] \textbf{[Y]}\\*
Wählen Sie diese Option, um mit dynamischem Debugging die Dateinamen der Firmware
und SHA256"=Prüfsummen für jede geladene Firmware"=Datei im Kernel-Protokoll zu
protokollieren.

\subparagraph{Build named firmware blobs into the kernel binary}$~$\\
CONFIG\_EXTRA\_FIRMWARE [=] \textbf{[~]}\\*
Gerätetreiber, die Firmware benötigen, können normalerweise damit umgehen, dass
der Kernel Firmware aus den verschiedenen unterstützten
\texttt{/lib/firmware/}"=Pfaden
lädt. Diese Option ermöglicht es Ihnen, Firmware"=Dateien in den Kernel
einzubauen. Eingebaute Firmware"=Suchen haben Vorrang vor Firmware"=Suchvorgängen
unter Verwendung Ihres Dateisystems über die unterstützten
\texttt{/lib/firmware}"=Pfade,
die unter CONFIG\_FW\_LOADER dokumentiert sind.
Dies kann zu Testzwecken nützlich sein oder wenn die Firmware zu einem frühen
Zeitpunkt beim Booten benötigt wird und man sich nicht darauf verlassen kann,
dass die Firmware in einer initrd oder initramfs abgelegt ist.
Diese Option ist eine Zeichenkette und nimmt die (durch Leerzeichen getrennten)
Namen der Firmware"=Dateien auf -- die gleichen Namen, die in MODULE\_FIRMWARE()
und request\_firmware() im Quelltext erscheinen. Diese Dateien sollten in dem
Verzeichnis vorhanden sein, das mit der Option EXTRA\_FIRMWARE\_DIR angegeben
wurde, was standardmäßig /lib/firmware ist.
Sie könnten zum Beispiel \texttt{CONFIG\_EXTRA\_FIRMWARE=\dq usb8388.bin\dq} setzen,
die Datei usb8388.bin nach /lib/firmware kopieren und den Kernel bauen.
Dann wird jede request\_firmware(\glqq usb8388.bin\grqq{}) intern im Kernel
befriedigt, ohne dass das Dateisystem zur Laufzeit eingesehen werden muss.
WARNUNG: Wenn Sie zusätzliche Firmware"=Dateien in Ihr binäres Kernel"=Image
einbinden, die nicht unter den Bedingungen der GPL verfügbar sind, dann kann es
eine Verletzung der GPL sein, das resultierende Image zu verteilen, da es
sowohl GPL- als auch Nicht"=GPL"=Arbeiten kombiniert. Sie sollten einen eigenen
Anwalt konsultieren, bevor Sie ein solches Image weitergeben.\\
HINWEIS: Komprimierte Dateien werden in EXTRA\_FIRMWARE nicht unterstützt.

\subparagraph{Enable the firmware sysfs fallback mechanism}$~$\\
CONFIG\_FW\_LOADER\_USER\_HELPER [=n] \textbf{[~]}\\*
Mit dieser Option wird eine sysfs"=Lademöglichkeit aktiviert, um das Laden von
Firmware in den Kernel über den Userspace als Fallback"=Mechanismus zu
ermöglichen, und zwar nur dann, wenn die direkte Dateisystem"=Suche des Kernels
nach der Firmware unter Verwendung der verschiedenen
\texttt{/lib/firmware/}"=Pfade oder des im Modulparameter \texttt{firmware\_class}
path angegebenen Pfades oder des Kernel"=Boot"=Parameters \texttt{firmware\_class}
path fehlgeschlagen ist, wenn die firmware\_class eingebaut ist.
Einzelheiten zur Arbeit mit dem sysfs"=Fallback"=Mechanismus finden Sie in
Documentation/driver-api/firmware/fallback-mechanisms.rst.\\
Die direkte Dateisystem"=Suche nach Firmware wird nun immer zuerst verwendet.
Wenn die direkte Dateisystem"=Suche des Kernels nach Firmware die angeforderte
Firmware nicht findet, wird eine sysfs"=Fallback"=Lademöglichkeit zur Verfügung
gestellt, und der Userspace wird durch uevents darüber informiert. Das uevent
kann unterdrückt werden, wenn der Treiber es explizit anfordert. Wenn der
benutzerdefinierte Fallback"=Mechanismus verwendet wird, muss der Userspace
immer bestätigen, dass die Firmware nicht gefunden wurde, da die
Zeitüberschreitung für den Fallback"=Mechanismus deaktiviert ist und
fehlgeschlagene Anfragen für immer verweilen.
Dies war früher die Standard"=Firmware"=Lademöglichkeit, und udev lauschte
auf uvents, um Firmware für den Kernel zu laden. Die Funktionalität der
Firmware"=Lademöglichkeit in udev wurde entfernt, so dass sie nicht mehr als
Ausweichmechanismus verwendet werden kann. Linux verlässt sich nicht mehr auf
einen Fallback"=Mechanismus im Userspace und verwendet diesen auch nicht mehr.
Wenn Sie sich auf einen solchen Mechanismus verlassen müssen, wenden Sie sich
an die freizügig lizenzierte Firmwared:
\url{https://github.com/teg/firmwared}\\
Da dies früher die Standardfunktion zum Laden von Firmware war, kann es sein,
dass ein alter Userspace existiert, der sich darauf verlässt, und daher kann
dieser Mechanismus niemals aus dem Kernel entfernt werden.
Sie sollten diese Funktionalität nur aktivieren, wenn Sie sicher sind, dass
Sie einen Ausweichmechanismus benötigen und einen Userspace"=Mechanismus
bereithalten, um Firmware zu laden, falls diese nicht gefunden wird. Ein
Hauptgrund dafür kann sein, dass Sie Treiber haben, die eine eingebaute
Firmware benötigen und aus irgendeinem Grund die benötigte Firmware nicht in
initramfs unterbringen können.
Ein weiterer Grund, warum Kernel diese Funktion aktiviert haben können, ist
die Unterstützung eines Treibers, der explizit auf diesen Fallback"=Mechanismus
angewiesen ist. Derzeit benötigen nur zwei Treiber diese Funktion:
\begin{itemize}
	\item CONFIG\_LEDS\_LP55XX\_COMMON
	\item CONFIG\_DELL\_RBU
\end{itemize}
Abgesehen von der Unterstützung der oben genannten Treiber kann ein weiterer
Grund dafür sein, dass Ihre Firmware außerhalb der Pfade liegt, nach denen der
Kernel sucht, und nicht mit dem Modulparameter firmware\_class path oder dem
Boot"=Parameter firmware\_class path des Kernels angegeben werden kann, wenn
firmware\_class eingebaut ist.
Ein moderner Anwendungsfall könnte darin bestehen, während der Bereitstellung
vorübergehend eine benutzerdefinierte Partition einzuhängen, auf die nur der
Userspace Zugriff hat, und diese dann zu verwenden, um nach der benötigten
Firmware zu suchen und sie zu holen. Eine solche Art von Treiberfunktionalität
wird von den Herstellern möglicherweise nicht einmal gewünscht, so dass sie
nur als Schnittstelle für die Bereitstellung unterstützt werden muss.
Da die Firmware"=Lademöglichkeit von udev entfernt wurde, können Sie
firmwared oder einen Fork davon verwenden, um die Art und Weise, wie Sie
Firmware auf der Grundlage von ausgegebenen uevents laden wollen, anzupassen.
Wenn Sie diese Option aktivieren, erhöht sich die Größe Ihres Kernel"=Images
um etwa 13436~Bytes.\\
Wenn Sie sich unsicher sind, sagen Sie hier N, es sei denn, Sie sind eine
Linux"=Distribution und müssen die beiden oben genannten Treiber unterstützen
oder Sie sind sich sicher, dass Sie eine wirklich benutzerdefinierte
Firmware"=Lademöglichkeit im Userspace unterstützen müssen.

\subparagraph{Enable compressed firmware support}$~$\\
CONFIG\_FW\_LOADER\_COMPRESS [=y] \textbf{[Y]}\\*
Diese Option aktiviert die Unterstützung für das Laden komprimierter
Firmware"=Dateien. Der Aufrufer der Firmware"=API erhält den dekomprimierten
Dateiinhalt. Die komprimierte Datei wird nur dann als Fallback geladen, wenn
das Laden der Rohdatei zunächst fehlgeschlagen ist.\\
Die Unterstützung für komprimierte Firmware gilt nicht für Firmware-Images,
die in das Kernel-Image eingebaut sind (CONFIG\_EXTRA\_FIRMWARE).

\subsubparagraph{Enable XZ-compressed firmware support}$~$\\
CONFIG\_FW\_LOADER\_COMPRESS\_XZ [=y] \textbf{[Y]}\\*
Mit dieser Option wird die Unterstützung für XZ"=komprimierte Dateien
hinzugefügt. Die Dateien müssen entweder mit dem Integritätsprüfungstyp
\texttt{none} oder \texttt{crc32} komprimiert sein (übergeben Sie die Option
\texttt{\dq -C crc32\dq} an den Befehl \texttt{xz}).

\subsubparagraph{Enable ZSTD-compressed firmware support}$~$\\
CONFIG\_FW\_LOADER\_COMPRESS\_ZSTD [=y] \textbf{[Y]}\\*
Mit dieser Option wird die Unterstützung für ZSTD"=komprimierte Dateien
hinzugefügt.

\subparagraph{Enable firmware caching during suspend}$~$\\
CONFIG\_FW\_CACHE [=y] \textbf{[Y]}\\*
Da die Firmware"=Zwischenspeicherung uevent"=Meldungen erzeugt, die über
einen Netlink"=Socket gesendet werden, kann sie auf vielen Plattformen ein
Suspendieren verhindern. Es ist auch nicht immer nützlich, daher haben wir
auf solchen Plattformen die Option.\\
Wenn Sie unsicher sind, sagen Sie Y.

\subparagraph{Enable users to initiate firmware updates using sysfs}$~$\\
CONFIG\_FW\_UPLOAD [=y] \textbf{[Y]}\\*
Durch die Aktivierung dieser Option können Gerätetreiber eine persistente
\texttt{sysfs}"=Schnittstelle bereitstellen, über die Firmware"=Updates aus
dem Userspace initiiert werden können. Beispielsweise laden FPGA"=basierte
PCIe"=Karten beim Booten der Karte Firmware und FPGA"=Images aus dem lokalen
FLASH. Die Images im FLASH können durch neue, vom Benutzer bereitgestellte
Images aktualisiert werden. Aktivieren Sie dieses Gerät, um Karten zu
unterstützen, die auf vom Benutzer initiierte Updates für Firmware"=Dateien
angewiesen sind.
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Driver Core verbose debug message}
CONFIG\_DEBUG\_DRIVER [=n] \textbf{[~]}\\*
Geben Sie hier Y an, wenn Sie möchten, dass der Treiberkern eine Reihe von
Debugmeldungen in das Systemprotokoll schreibt. Wählen Sie dies, wenn Sie ein
Problem mit dem Treiberkern haben und mehr über die Vorgänge erfahren möchten.
Wenn Sie sich nicht sicher sind, wählen Sie hier N.

\subsubsection{Managed device resources verbose debug messages}
CONFIG\_DEBUG\_DEVRES [=n] \textbf{[~]}\\*
Diese Option aktiviert den Kernelparameter devres.log. Wenn sie auf einen Wert
ungleich Null gesetzt ist, werden Devres"=Debug"=Meldungen gedruckt. Wählen
Sie diese Option, wenn Sie ein Problem mit devres haben oder die
Ressourcenverwaltung für ein verwaltetes Gerät debuggen wollen. 
\texttt{devres.log}
kann vom sysfs"=Knoten aus ein- und ausgeschaltet werden.\\
Wenn Sie sich diesbezüglich unsicher sind, sagen Sie hier N.

\subsubsection{Test driver remove calls during probe (UNSTABLE)}
CONFIG\_DEBUG\_TEST\_DRIVER\_REMOVE [=n] \textbf{[~]}\\*
Geben Sie hier Y an, wenn Sie möchten,
dass der Treiberkern die Funktionen zum Entfernen von Treibern durch den
Aufruf von probe, remove, probe testet. Dadurch wird der Entfernungspfad
getestet, ohne dass der Treiber entbunden oder das Treibermodul entladen
werden muss.
Es wird erwartet, dass diese Option Fehler findet und Ihr System unbrauchbar
machen kann. Sie sollten hier N angeben, es sei denn, Sie wollen diese
Funktion ausdrücklich testen.

\subsubsection{Build kernel module to test asynchronous driver probing}
CONFIG\_TEST\_ASYNC\_DRIVER\_PROBE [=n] \textbf{[~]}\\*
Die Aktivierung dieser Option erzeugt ein Kernelmodul, mit dem die asynchrone
Treiberprüfung durch den Gerätekern getestet werden kann.
Der Modulname lautet \texttt{test\_async\_driver\_probe.ko}\\
Wenn Sie unsicher sind, sagen Sie N.

\subsubsection{Enable verbose DMA\_FENCE\_TRACE messages}
CONFIG\_DMA\_FENCE\_TRACE [=n] \textbf{[~]}\\*
Aktivieren Sie die Druckfunktion DMA\_FENCE\_TRACE. Dies fügt dem
Konsolenprotokoll zusätzlichen Spam hinzu, erleichtert aber die Diagnose
von Problemen im Zusammenhang mit Blockierungen bei DMA"=Puffern, die von
mehreren Geräten gemeinsam genutzt werden.

\subsubsection{sync\_state() behavior defaults to timeout instead of strict}
CONFIG\_FW\_DEVLINK\_SYNC\_STATE\_TIMEOUT [=n] \textbf{[~]}\\*
Dies entspricht dem Hinzufügen des Kernel"=Kommandozeilenparameters\\
\texttt{\dq fw\_devlink.sync\_state=timeout\dq}.\\
Geben Sie das Warten auf Verbraucher auf und rufen Sie sync\_state() auf
allen Geräten auf, die ihre sync\_state()"=Aufrufe noch nicht erhalten haben,
nachdem deferred\_probe\_timeout abgelaufen ist oder durch late\_initcall(),
wenn !CONFIG\_MODULES. Sie sollten hier fast immer N auswählen, es sei denn,
Sie haben bereits erfolgreich mit der Kommandozeilenoption auf jedem
System/Board getestet, auf dem Ihr Kernel voraussichtlich funktionieren wird.

\subsection{Bus devices \texorpdfstring{$\rightarrow$}{->}}
\textit{(Bus-Geräte)}

\subsubsection{Modem Host Interface (MHI) bus}
CONFIG\_MHI\_BUS [=m] \textbf{[M]}\\*
Bustreiber für das MHI"=Protokoll. Modem Host Interface (MHI) ist ein
Kommunikationsprotokoll, das von den Host"=Prozessoren zur Steuerung und
Kommunikation mit Modemgeräten über einen Hochgeschwindigkeits"=Peripheriebus
oder gemeinsamen Speicher verwendet wird.

\paragraph{Debugfs support for the MHI bus}$~$\\
CONFIG\_MHI\_BUS\_DEBUG [=n] \textbf{[~]}\\*
Aktiviert die Unterstützung von debugfs für die Verwendung mit dem MHI-Transport.
Ermöglicht das Lesen und/oder Ändern einiger Werte innerhalb des MHI"=Controllers
zu Debug- und Testzwecken.

\paragraph{MHI PCI controller driver}$~$\\
CONFIG\_MHI\_BUS\_PCI\_GENERIC [=m] \textbf{[M]}\\*
Dieser Treiber bietet einen MHI PCI"=Controller"=Treiber für Geräte wie Qualcomm
SDX55"=basierte PCIe"=Modems.

\subsubsection{Modem Host Interface (MHI) bus Endpoint implementation}
CONFIG\_MHI\_BUS\_EP [=m] \textbf{[M]}\\*
Bustreiber für das MHI-Protokoll. Modem Host Interface (MHI) ist ein
Kommunikationsprotokoll, das von einem Host"=Prozessor zur Steuerung und
Kommunikation eines Modemgeräts über einen Hochgeschwindigkeits"=Peripheriebus
oder einen gemeinsamen Speicher verwendet wird.
MHI\_BUS\_EP implementiert das MHI"=Protokoll für die Endpunktgeräte, wie z.~B.
das SDX55"=Modem, das über PCIe mit dem Host"=Rechner verbunden ist.

%15.7
\subsection{Cache Drivers ---}
\textit{(Pufferspeicher-Treiber)}

\subsection{Connector -- unified userspace 
\texorpdfstring{$\leftrightarrow$}{<->} kernelspace linker 
\texorpdfstring{$\rightarrow$}{->}}
CONFIG\_CONNECTOR [=y] \textbf{[Y]}\\*
Dies ist ein vereinheitlichter Userspace $\leftrightarrow$
Kernelspace"=Anschluss,
der auf dem Netlink"=Socket"=Protokoll aufbaut.
Connector"=Unterstützung kann auch als Modul gebaut werden.
Wenn dies der Fall ist, wird das Modul \texttt{cn} genannt.

\subsubsection{Report process events to userspace}
CONFIG\_PROC\_EVENTS [=y] \textbf{[Y]}\\*
Einen Konnektor bereitstellen, der Prozessereignisse an den Userspace meldet.
Senden Sie Ereignisse wie fork, exec, id-Änderung (uid, gid, suid, etc.)
und exit.

%15.9
\subsection{Firmware Drivers \texorpdfstring{$\rightarrow$}{->}}
\textit{(Firmware-Treiber)}

\subsubsection{ARM System Control and Management Interface Protocol ---}
\textit{(ARM-Systemsteuerungs- und Verwaltungsschnittstellenprotokoll)}

\subsubsection{BIOS Enhanced Disk Drive calls determine boot disk}
CONFIG\_EDD [=m] \textbf{[M]}\\*
Geben Sie hier Y oder M an, wenn Sie die BIOS Enhanced Disk Drive Services
aktivieren wollen, die das BIOS im realen Modus aufruft, um festzustellen,
von welcher Festplatte das BIOS zu booten versucht. Diese Information wird
dann über sysfs exportiert.
Diese Option ist experimentell und es ist bekannt, dass sie bei einigen
obskuren Konfigurationen nicht bootet. Die meisten BIOS"=Hersteller von
Festplattencontrollern implementieren diese Funktion noch nicht.

\paragraph{Sets default behavior for EDD detection to off}$~$\\
CONFIG\_EDD\_OFF [=n] \textbf{[~]}\\*
Sagen Sie Y, wenn Sie EDD standardmäßig deaktivieren wollen, obwohl es in
den Kernel einkompiliert ist. Sagen Sie N, wenn Sie EDD standardmäßig
aktivieren wollen. EDD kann mit dem Kernelparameter
\texttt{edd=$\{$on|skipmbr|off$\}$} dynamisch eingestellt werden.

%15.9.3
\subsubsection{Export DMI identification via sysfs to userspace}
CONFIG\_DMIID [=y] \textbf{[Y]}\\*
Geben Sie hier Y an, wenn Sie SMBIOS/DMI"=Systemidentifikationsinformationen
aus dem Userspace über \texttt{/sys/class/dmi/id/} abfragen wollen oder
wenn Sie
DMI"=basiertes automatisches Laden von Modulen wünschen.

%15.9.4
\subsubsection{DMI table support in sysfs}
CONFIG\_DMI\_SYSFS [=y] \textbf{[Y]}\\*
Geben Sie hier Y oder M ein, um den Export der Rohdaten der DMI"=Tabelle
über sysfs zu aktivieren. Dies ist nützlich, um die Daten zu konsumieren,
ohne überhaupt Zugriff auf \texttt{/dev/mem} zu benötigen.
Die Tabellen befinden sich unter \texttt{/sys/firmware/dmi}, wenn diese
Option aktiviert und geladen ist.

\subsubsection{iSCSI Boot Firmware Table Attributes}
CONFIG\_ISCSI\_IBFT\_FIND [=y] \textbf{[Y]}\\*
Mit dieser Option kann der Kernel den Speicherbereich finden, in dem sich
die ISCSI Boot Firmware Table (iBFT) befindet. Dies ist notwendig, damit das
Modul iSCSI Boot Firmware Table Attributes richtig funktioniert.

\subsubsection{iSCSI Boot Firmware Table Attributes module}
CONFIG\_ISCSI\_IBFT [=m] \textbf{[M]}\\*
Diese Option aktiviert die Unterstützung für die Erkennung und Offenlegung
der iSCSI Boot Firmware Table (iBFT) über sysfs im Userspace. Wenn Sie die
iSCSI"=Boot"=Parameter während des Systemstarts dynamisch erkennen möchten,
geben Sie Y an.
Andernfalls sagen Sie N.

\subsubsection{QEMU fw\_cfg device support in sysfs}
CONFIG\_FW\_CFG\_SYSFS [=m] \textbf{[M]}\\*
Geben Sie hier Y oder M ein, um den Export der QEMU"=Firmware"=Konfigurationsdatei
(fw\_cfg) über sysfs zu aktivieren. Die Einträge befinden sich unter
\texttt{/sys/firmware/fw\_cfg}, wenn diese Option aktiviert und geladen ist.

\paragraph{QEMU fw\_cfg device parameter parsing}$~$\\
CONFIG\_FW\_CFG\_SYSFS\_CMDLINE [=n] \textbf{[~]}\\*
Ermöglicht die Initialisierung des Geräts \texttt{qemu\_fw\_cfg} über die
Kernel"=Befehlszeile oder über einen Modulparameter.\\
WARNUNG: Die Verwendung falscher Parameter (insbesondere der Basisadresse)
kann Ihr System zum Absturz bringen.

\subsubsection{Mark VGA/VBE/EFI FB as generic system framebuffer}
CONFIG\_SYSFB\_SIMPLEFB [=y] \textbf{[Y]}\\*
Firmwares stellen oft anfängliche Grafik"=Framebuffer zur Verfügung, so dass
das BIOS, der Bootloader oder der Kernel die grundlegende Videoausgabe während
des Bootens zur Benutzerführung und Fehlersuche anzeigen kann. In der
Vergangenheit wurden hierfür die VESA-BIOS"=Erweiterungen und EFI"=Framebuffer
verwendet, die meist auf x86"=BIOS oder EFI"=Systeme beschränkt sind.\\
Wenn diese Option aktiviert ist, werden VGA/VBE/EFI"=Framebuffer als
generische Framebuffer markiert, so dass stattdessen die neuen generischen
System"=Framebuffer"=Treiber verwendet werden können. Wenn der Framebuffer
nicht mit den generischen Modi kompatibel ist, wird er als
Fallback"=Plattform"=Framebuffer angezeigt, so dass Legacy"=Treiber wie
efifb, vesafb und uvesafb ihn verwenden können.
Wenn diese Option nicht ausgewählt ist, werden alle System"=Framebuffer wie
üblich als Fallbac"=-Plattform"=Framebuffer gekennzeichnet.
Hinweis: Ältere fbdev"=Treiber, einschließlich vesafb, efifb und uvesafb,
sind nicht in der Lage, generische System"=Framebuffer zu erkennen, wenn
diese Option aktiviert ist. Es wird dringend empfohlen, simplefb als Ersatz
zu aktivieren, wenn Sie diese Option wählen. simplefb kann korrekt mit
generischen System"=Framebuffern umgehen. Sie sollten jedoch vesafb und
andere als Ersatz aktivieren, wenn ein System"=Framebuffer nicht mit
simplefb kompatibel ist.
Wenn Sie unsicher sind, sagen Sie Y.

\subsubsection{Google Firmware Drivers \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_GOOGLE\_FIRMWARE [=y] \textbf{[Y]}\\*
Diese Firmware-Treiber werden von Google"=Servern, Chromebooks und anderen
Geräten mit Coreboot"=Firmware verwendet.
Im Zweifelsfall sagen Sie N.

\paragraph{SMI interface for Google platforms}$~$\\
CONFIG\_GOOGLE\_SMI [=n] \textbf{[~]}\\*
Sagen Sie hier Y, wenn Sie SMI-Callbacks für Google"=Plattformen aktivieren
wollen. Dies bietet eine Schnittstelle zum Schreiben und Löschen des
Ereignisprotokolls. Wenn CONFIG\_EFI ebenfalls aktiviert ist, bietet dieser
Treiber eine Schnittstelle zum Lesen und Schreiben von NVRAM"=Variablen.

\paragraph{CBMEM entries in sysfs}$~$\\
CONFIG\_GOOGLE\_CBMEM [=m] \textbf{[M]}\\*
CBMEM ist ein nach unten wachsender Speicherbereich, der vom Coreboot-BIOS
erstellt wird und mit Tags versehene Datenstrukturen des BIOS enthält.
Diese Datenstrukturen stellen Dinge wie die verifizierten Boot"=Firmware"=Variablen,
das Flash"=Layout, das Firmware"=Ereignisprotokoll und mehr dar.
Diese Option aktiviert das cbmem"=Modul, das den Kernel veranlasst, nach
Coreboot"=CBMEM"=Einträgen zu suchen und den Speicher für jeden Eintrag in
sysfs unter \texttt{/sys/bus/coreboot/devices/cbmem-$<$id$>$} freizugeben.

\paragraph{Coreboot Table Access}$~$\\
CONFIG\_GOOGLE\_COREBOOT\_TABLE [=m] \textbf{[M]}\\*
Diese Option aktiviert das Modul coreboot\_table, das anderen Firmware"=Modulen
den Zugriff auf die coreboot"=Tabelle ermöglicht. Der Zugriff auf den Zeiger
der coreboot"=Tabelle erfolgt über das ACPI"=Objekt "GOOGCB00" oder den
Gerätebaumknoten /firmware/coreboot.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Firmware Memory Console -- X86 Legacy support}$~$\\
CONFIG\_GOOGLE\_MEMCONSOLE\_X86\_LEGACY [=n] \textbf{[~]}\\*
Diese Option ermöglicht es dem Kernel, in der EBDA auf Google-Servern nach
einem Firmware"=Protokoll zu suchen. Wenn es gefunden wird, wird dieses
Protokoll in der Datei \texttt{/sys/firmware/log} in das
Benutzerland (userland) exportiert.

\paragraph{Coreboot Framebuffer}$~$\\
CONFIG\_GOOGLE\_FRAMEBUFFER\_COREBOOT [=m] \textbf{[M]}\\*
Diese Option ermöglicht es dem Kernel, in der Coreboot-Tabelle nach einem Framebuffer
zu suchen. Wird er gefunden, wird er mit \texttt{simplefb} registriert.

\paragraph{Firmware Memory Console}$~$\\
CONFIG\_GOOGLE\_MEMCONSOLE\_COREBOOT [=m] \textbf{[M]}\\*
Diese Option ermöglicht es dem Kernel, in der coreboot"=Tabelle nach einem
Firmware"=Protokoll zu suchen. Wenn es gefunden wird, wird dieses Protokoll
in der Datei \texttt{/sys/firmware/log} in das Benutzerland (userland)
exportiert.

\paragraph{Vital Product Data}$~$\\
CONFIG\_GOOGLE\_VPD [=m] \textbf{[M]}\\*
Diese Option ermöglicht es dem Kernel, den Inhalt von Google VPD unter
\texttt{/sys/firmware/vpd} zu veröffentlichen.

\subsubsection{EFI (Extensible Firmware Interface) Support \texorpdfstring{$\rightarrow$}{->}}
\textit{(EFI-Unterstützung (Erweiterbare Firmware-Schnittstelle))}

\paragraph{Register efivars backend for pstore}$~$\\
CONFIG\_EFI\_VARS\_PSTORE [=y] \textbf{[Y]}\\*
Sagen Sie hier Y, um die Verwendung von \texttt{efivars} als Backend für
\texttt{pstore} zu aktivieren. Dies ermöglicht das Schreiben von
Konsolenmeldungen, Crash"=Dumps oder anderen von pstore unterstützten Daten
in EFI"=Variablen.

\subparagraph{Disable using efivars as a pstore backend by default}$~$\\
CONFIG\_EFI\_VARS\_PSTORE\_DEFAULT\_DISABLE [=y] \textbf{[Y]}\\*
Wenn Sie hier Y angeben, wird die Verwendung von efivars als Speicher-Backend für
pstore standardmäßig deaktiviert. Diese Einstellung kann mit dem Parameter
\texttt{pstore\_disable} des \texttt{efivars}-Moduls außer Kraft gesetzt werden.

\paragraph{Reserve EFI Specific Purpose Memory}$~$\\
CONFIG\_EFI\_SOFT\_RESERVE [=y] \textbf{[Y]}\\*
Auf Systemen mit gemischten Leistungsklassen des Speichers kann EFI mit einem Attribut
einen bestimmten Zweck des Speichers angeben (siehe EFI\_MEMORY\_SP in UEFI~2.8).
Ein mit diesem Attribut gekennzeichneter Speicherbereich kann im Vergleich zum allgemeinen
\glqq System"=RAM\grqq{}"=Pool des Systems einzigartige Leistungsmerkmale aufweisen. In der Erwartung,
dass ein solcher Speicher anwendungsspezifisch genutzt wird und sein EFI"=Basistyp
\glqq konventionell\grqq{} ist, antwortet Y, damit der Kernel ihn als
\glqq Soft Reserved\grqq{}-Ressource reserviert und standardmäßig für den Direktzugriff
(device-dax) reserviert. Der Speicherbereich kann später optional dem Page Allocator durch
die Systemadministrator"=Policy über die device"=dax kmem"=Funktion zugewiesen werden.
Sagen Sie N, damit der Kernel diesen Speicher standardmäßig als \glqq System-RAM\grqq{}
behandelt.\\
Wenn Sie unsicher sind, sagen Sie Y.

\paragraph{Adjust memory attributes in EFISTUB}$~$\\
CONFIG\_EFI\_DXE\_MEM\_ATTRIBUTES [=y] \textbf{[Y]}\\*
Die UEFI-Spezifikation garantiert nicht, dass der gesamte Speicher sowohl zum Schreiben
als auch zum Ausführen zugänglich ist, wie es der Kernel erwartet.\\
Verwenden Sie DXE-Dienste, um Speicherschutzattribute während des Bootens über EFISTUB
zu prüfen und zu ändern, um sicherzustellen, dass die vom Kernel verwendeten
Speicherbereiche beschreibbar und ausführbar sind.

\paragraph{EFI Bootloader Control}$~$\\
CONFIG\_EFI\_BOOTLOADER\_CONTROL [=m] \textbf{[M]}\\*
Dieses Modul installiert einen Reboot-Hook, so dass, wenn reboot() mit einem
String-Argument NNN aufgerufen wird, \glqq NNN\grqq{} in die EFI"=Variable
\glqq LoaderEntryOneShot\grqq{} kopiert wird, um vom Bootloader gelesen zu werden.\\
Wenn die Zeichenkette mit einem der in seiner Konfiguration definierten Boot-Labels
übereinstimmt, bootet der Bootloader einmal mit diesem Label.
Die EFI"=Variable
\glqq LoaderEntryRebootReason\grqq{} wird mit dem Reboot"=Grund gesetzt:
\glqq reboot\grqq{} oder \glqq shutdown\grqq{}. Der Bootloader liest diesen
Reboot"=Grund ein und ergreift bestimmte Maßnahmen entsprechend seiner Richtlinie.

\paragraph{EFI capsule loader}$~$\\
CONFIG\_EFI\_CAPSULE\_LOADER [=m] \textbf{[M]}\\*
Diese Option stellt eine Laderschnittstelle \texttt{/dev/efi\_capsule\_loader} zur Verfügung,
über die Benutzer EFI"=Kapseln laden können. Dieser Treiber erfordert eine funktionierende
Runtime"=Kapselunterstützung in der Firmware, die viele OEMs nicht bieten.\\
Die meisten Benutzer sollten N sagen.

\paragraph{EFI Runtime Service Tests Support}$~$\\
CONFIG\_EFI\_TEST [=n] \textbf{[~]}\\*
Dieser Treiber verwendet die \texttt{efi.$<$service$>$}"=Funktionszeiger direkt, anstatt über die
efivar"=API zu gehen, da er nicht versucht, das Kernel"=Subsystem zu testen, sondern nur
die UEFI"=Laufzeitdienstschnittstellen, die von der Firmware bereitgestellt werden.
Dieser Treiber wird von der Firmware Test Suite (FWTS) zum Testen der
UEFI"=Laufzeitschnittstellen der Firmware verwendet.
Details zur FWTS sind verfügbar unter:
\url{https://wiki.ubuntu.com/FirmwareTestSuite}
Sagen Sie hier Y, um die Unterstützung der Laufzeitdienste über \texttt{/dev/efi\_test}
zu aktivieren.
Wenn Sie unsicher sind, sagen Sie N.

\paragraph{Apple Device Properties}$~$\\
CONFIG\_APPLE\_PROPERTIES [=y] \textbf{[Y]}\\*
Rufen Sie Eigenschaften von EFI auf Apple Macs ab und weisen Sie sie Geräten zu, was eine
verbesserte Unterstützung von Apple"=Hardware ermöglicht. Zu den Eigenschaften, die sonst
fehlen würden, gehören das Thunderbolt"=Geräte"=ROM und die GPU"=Konfigurationsdaten.
Wenn Sie unsicher sind, sagen Sie Y, wenn Sie einen Mac haben. Andernfalls N.

\paragraph{Reset memory attack mitigation}$~$\\
CONFIG\_RESET\_ATTACK\_MITIGATION [=n] \textbf{[~]}\\*
Verlangen Sie, dass die Firmware den Inhalt des RAM nach einem Neustart unter Verwendung
der TCG Platform Reset Attack Mitigation Spezifikation löscht. Dies schützt davor, dass ein
Angreifer das System gewaltsam neu startet, während es noch Geheimnisse im RAM enthält, ein
anderes Betriebssystem startet und die Geheimnisse extrahiert. Diese Funktion sollte nur
aktiviert werden, wenn Userland so konfiguriert ist, dass das MemoryOverwriteRequest"=Flag
beim sauberen Herunterfahren gelöscht wird, nachdem die Geheimnisse entfernt wurden, da sie
sonst auch bei sauberen Neustarts ausgelöst wird.

\paragraph{EFI Runtime Configuration Interface Table Version 2 Support}$~$\\
CONFIG\_EFI\_RCI2\_TABLE [=y] \textbf{[Y]}\\*
Zeigt den Inhalt der Runtime Configuration Interface Table Version~2 auf
Dell EMC PowerEdge"=Systemen als binäres Attribut \glqq rci2\grqq{} im
Verzeichnis \texttt{/sys/firmware/efi/tables} an.
Die RCI2"=Tabelle enthält BIOS HII im XML"=Format und wird zum Auffüllen der
BIOS"=Setup"=Seite im Dell EMC OpenManage Server Administrator"=Tool verwendet.
Die BIOS"=Setup"=Seite enthält BIOS"=Tokens, die konfiguriert werden können.
Geben Sie hier Y für Dell EMC PowerEdge"=Systeme an.

\paragraph{Clear Busmaster bit on PCI bridges during ExitBootServices()}$~$\\
CONFIG\_EFI\_DISABLE\_PCI\_DMA [=n] \textbf{[~]}\\*
Deaktivieren Sie das Busmaster"=Bit im Kontrollregister auf allen PCI"=Brücken, während Sie
ExitBootServices() aufrufen und die Kontrolle an den Laufzeitkernel übergeben. Die
System"=Firmware kann die IOMMU so konfigurieren, dass böswillige PCI"=Geräte nicht in der
Lage sind, das Betriebssystem über DMA anzugreifen. Da die Firmware jedoch nicht garantieren
kann, dass das Betriebssystem IOMMU"=fähig ist, wird sie die IOMMU"=Konfiguration abbauen,
wenn ExitBootServices() aufgerufen wird. Dadurch bleibt ein Zeitfenster, in dem ein
feindliches Gerät noch Schaden anrichten kann, bevor Linux die IOMMU erneut konfiguriert.
Wenn Sie hier Y angeben, wird der EFI"=Stub das Busmaster"=Bit auf allen PCI"=Brücken
löschen, bevor ExitBootServices() aufgerufen wird. Dadurch wird verhindert, dass böswillige
PCI"=Geräte DMA durchführen können, bis der Kernel das Busmastering nach der Konfiguration
der IOMMU wieder aktiviert.
Diese Option kann bei einigen Geräten mit schlechtem Verhalten zu Fehlern führen und sollte
nicht ohne Test aktiviert werden. Die Kernel"=Befehlszeilenoptionen
\texttt{efi=disable\_early\_pci\_dma} oder \texttt{efi=no\_disable\_early\_pci\_dma} können
verwendet werden, um diese Option außer Kraft zu setzen.

\paragraph{Load custom ACPI SSDT overlay from an EFI variable}$~$\\
CONFIG\_EFI\_CUSTOM\_SSDT\_OVERLAYS [=y] \textbf{[Y]}\\*
Ermöglicht das Laden eines ACPI-SSDT-Overlays aus einer EFI"=Variablen, die durch eine
Kernel"=Befehlszeilenoption angegeben wird.
Siehe Documentation/admin-guide/acpi/ssdt-overlays.rst für weitere Informationen.

\paragraph{Disable EFI runtime services support by default}$~$\\
CONFIG\_EFI\_DISABLE\_RUNTIME [=n] \textbf{[N]}\\*
Erlaubt es, die Unterstützung der EFI-Laufzeitdienste standardmäßig zu deaktivieren.
Dies kann bereits durch die Verwendung der Option \texttt{efi=noruntime} erreicht werden,
aber es könnte nützlich sein, diese Voreinstellung ohne einen Kernel"=Befehlszeilenparameter zu haben.
Die EFI"=Laufzeitdienste sind standardmäßig deaktiviert, wenn PREEMPT\_RT aktiviert ist, da Messungen
gezeigt haben, dass einige EFI"=Funktionsaufrufe zu viel Zeit benötigen, um abgeschlossen zu werden,
was zu großen Latenzen führen kann, was ein Problem für Echtzeit"=Kernel darstellt.
Diese Voreinstellung kann mit der Option \texttt{efi=runtime} außer Kraft gesetzt werden.

\paragraph{EFI Confidential Computing Secret Area Support}$~$\\
CONFIG\_EFI\_COCO\_SECRET [=y] \textbf{[Y]}\\*
Confidential Computing"=Plattformen (z.~B. AMD SEV) ermöglichen es dem Gastbesitzer, während
des Starts der Gast"=VM auf sichere Weise Geheimnisse einzubringen. Die Geheimnisse werden in
einem bestimmten reservierten EFI"=Speicherbereich abgelegt.
Um die Geheimnisse im Kernel verwenden zu können, muss der Ort des geheimen Bereichs (wie in
der EFI"=Konfigurationstabelle veröffentlicht) beibehalten werden.
Wenn Sie hier Y angeben, wird die Adresse des EFI"=Geheimbereichs für die Verwendung im Kernel
beibehalten. Dadurch kann das Modul \texttt{virt/coco/efi\_secret} auf die Secrets zugreifen,
was wiederum Userspace"=Programmen den Zugriff auf die injizierten Secrets ermöglicht.

\subsubsection{Qualcomm firmware drivers ---}
\textit{(Qualcomm-Firmware-Treiber)}

\subsubsection{Tegra firmware drivers ---}
\textit{(Tegra-Firmware-Treiber)}

\subsection{GNSS receiver support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_GNSS \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Sagen Sie hier Y, wenn Sie einen GNSS"=Empfänger (z.~B. einen GPS"=Empfänger) haben.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{gnss} genannt.

\subsubsection{Mediatek GNSS receiver support}
CONFIG\_GNSS\_MTK\_SERIAL \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Sagen Sie hier Y, wenn Sie einen Mediatek"=basierten GNSS"=Empfänger haben, der eine
serielle Schnittstelle verwendet.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul wird
\texttt{gnss-mtk} genannt.
Wenn Sie unsicher sind, wählen Sie N.

\subsubsection{SiRFstar GNSS receiver support}
CONFIG\_GNSS\_SIRF\_SERIAL \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Sagen Sie hier Y, wenn Sie einen SiRFstar"=basierten GNSS"=Empfänger haben, der eine
serielle Schnittstelle verwendet.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul
wird \texttt{gnss-sirf} genannt.
Wenn Sie unsicher sind, wählen Sie N.

\subsubsection{u-blox GNSS receiver support}
CONFIG\_GNSS\_UBX\_SERIAL \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Sagen Sie hier Y, wenn Sie einen GNSS-Empfänger von u-blox haben, der eine serielle
Schnittstelle verwendet.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{gnss-ubx} genannt.
Wenn Sie unsicher sind, wählen Sie N.

\subsubsection{USB GNSS receiver support}
CONFIG\_GNSS\_USB \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Geben Sie hier Y ein, wenn Sie einen GNSS-Empfänger haben, der eine
USB-Schnittstelle verwendet.
Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M:
Das Modul wird \texttt{gnss-usb} genannt.
Wenn Sie unsicher sind, sagen Sie N.

\subsection{Memory Technology Devices (MTD) support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_MTD \colorbox{yellow!80}{[=m] \textbf{[~]}}\\*
Memory Technology Devices sind Flash-, RAM- und ähnliche Chips, die häufig für
Solid"=State"=Dateisysteme auf eingebetteten Geräten verwendet werden. Diese Option
bietet die allgemeine Unterstützung für MTD"=Treiber, um sich beim Kernel zu registrieren,
und für potenzielle Benutzer von MTD"=Geräten, um die vorhandenen Geräte aufzulisten und
einen Zugriff auf sie zu erhalten. Sie ermöglicht es Ihnen auch, individuelle Treiber für
bestimmte Hardware und Benutzer von MTD"=Geräten auszuwählen.
Wenn Sie unsicher sind, sagen Sie N.

\subsection{MTD test support (DANGEROUS)}
CONFIG\_MTD\_TESTS [=n] \textbf{[~]}\\*
Mit dieser Option werden verschiedene MTD-Tests in die Kompilierung einbezogen. Die Tests
sollten normalerweise als Kernelmodule kompiliert werden. Die Module führen verschiedene
Prüfungen und Verifizierungen durch, wenn sie geladen werden.\\
WARNUNG: Einige der Tests werden das gesamte MTD"=Gerät, das sie testen, LÖSCHEN.
Verwenden Sie diese Tests nicht, wenn Sie nicht wirklich wissen, was Sie tun.

\end{document}

\texorpdfstring{$\rightarrow$}{->}
\textit{Für diese Option gibt es keine Hilfe.}