UPD Mitigation

This commit is contained in:
2025-02-16 01:05:36 +01:00
parent ebe147bfeb
commit 88b5ca768e
6 changed files with 771 additions and 248 deletions

View File

@@ -198,8 +198,6 @@ CONFIG_CC_NO_ARRAY_BOUNDS=y
CONFIG_GCC_NO_STRINGOP_OVERFLOW=y
CONFIG_CC_NO_STRINGOP_OVERFLOW=y
CONFIG_ARCH_SUPPORTS_INT128=y
CONFIG_NUMA_BALANCING=y
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
CONFIG_SLAB_OBJ_EXT=y
CONFIG_CGROUPS=y
CONFIG_PAGE_COUNTER=y
@@ -351,7 +349,7 @@ CONFIG_HAVE_INTEL_TXT=y
CONFIG_X86_64_SMP=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_PGTABLE_LEVELS=5
CONFIG_PGTABLE_LEVELS=4
CONFIG_CC_HAS_SANE_STACKPROTECTOR=y
#
@@ -372,12 +370,14 @@ CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_HYPERVISOR_GUEST is not set
# CONFIG_MK8 is not set
CONFIG_MPSC=y
# CONFIG_MCORE2 is not set
# CONFIG_MPSC is not set
CONFIG_MCORE2=y
# CONFIG_MATOM is not set
# CONFIG_GENERIC_CPU is not set
CONFIG_X86_INTERNODE_CACHE_SHIFT=7
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_P6_NOP=y
CONFIG_X86_TSC=y
CONFIG_X86_HAVE_PAE=y
@@ -414,39 +414,33 @@ CONFIG_X86_MCE=y
# CONFIG_X86_MCELOG_LEGACY is not set
CONFIG_X86_MCE_INTEL=y
CONFIG_X86_MCE_THRESHOLD=y
CONFIG_X86_MCE_INJECT=m
# CONFIG_X86_MCE_INJECT is not set
#
# Performance monitoring
#
CONFIG_PERF_EVENTS_INTEL_UNCORE=m
CONFIG_PERF_EVENTS_INTEL_RAPL=m
CONFIG_PERF_EVENTS_INTEL_CSTATE=m
# CONFIG_PERF_EVENTS_INTEL_UNCORE is not set
# CONFIG_PERF_EVENTS_INTEL_RAPL is not set
# CONFIG_PERF_EVENTS_INTEL_CSTATE is not set
# end of Performance monitoring
# CONFIG_X86_16BIT is not set
# CONFIG_X86_VSYSCALL_EMULATION is not set
CONFIG_X86_IOPL_IOPERM=y
CONFIG_MICROCODE=y
# CONFIG_MICROCODE_LATE_LOADING is not set
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
CONFIG_X86_5LEVEL=y
# CONFIG_X86_5LEVEL is not set
CONFIG_X86_DIRECT_GBPAGES=y
CONFIG_X86_CPA_STATISTICS=y
CONFIG_NUMA=y
CONFIG_AMD_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_NODES_SHIFT=10
# CONFIG_X86_CPA_STATISTICS is not set
# CONFIG_NUMA is not set
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
# CONFIG_ARCH_MEMORY_PROBE is not set
CONFIG_ARCH_PROC_KCORE_TEXT=y
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
CONFIG_X86_PMEM_LEGACY_DEVICE=y
CONFIG_X86_PMEM_LEGACY=m
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
# CONFIG_X86_PMEM_LEGACY is not set
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
CONFIG_MTRR=y
CONFIG_MTRR_SANITIZER=y
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
@@ -455,18 +449,18 @@ CONFIG_X86_PAT=y
CONFIG_X86_UMIP=y
CONFIG_CC_HAS_IBT=y
CONFIG_X86_CET=y
CONFIG_X86_KERNEL_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
CONFIG_ARCH_PKEY_BITS=4
# CONFIG_X86_INTEL_TSX_MODE_OFF is not set
# CONFIG_X86_INTEL_TSX_MODE_ON is not set
CONFIG_X86_INTEL_TSX_MODE_AUTO=y
CONFIG_X86_SGX=y
# CONFIG_X86_SGX is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_EFI_HANDOVER_PROTOCOL=y
CONFIG_EFI_MIXED=y
# CONFIG_EFI_HANDOVER_PROTOCOL is not set
# CONFIG_EFI_MIXED is not set
CONFIG_EFI_RUNTIME_MAP=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
@@ -499,10 +493,10 @@ CONFIG_HOTPLUG_CPU=y
CONFIG_LEGACY_VSYSCALL_XONLY=y
# CONFIG_LEGACY_VSYSCALL_NONE is not set
# CONFIG_CMDLINE_BOOL is not set
CONFIG_MODIFY_LDT_SYSCALL=y
# CONFIG_MODIFY_LDT_SYSCALL is not set
# CONFIG_STRICT_SIGALTSTACK_SIZE is not set
CONFIG_HAVE_LIVEPATCH=y
CONFIG_X86_BUS_LOCK_DETECT=y
# CONFIG_X86_BUS_LOCK_DETECT is not set
# end of Processor type and features
CONFIG_CC_HAS_NAMED_AS=y
@@ -576,7 +570,6 @@ CONFIG_ACPI=y
CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
CONFIG_ACPI_TABLE_LIB=y
CONFIG_ACPI_THERMAL_LIB=y
# CONFIG_ACPI_DEBUGGER is not set
CONFIG_ACPI_SPCR_TABLE=y
@@ -617,8 +610,6 @@ CONFIG_ACPI_BGRT=y
CONFIG_ACPI_NHLT=y
CONFIG_ACPI_NFIT=m
# CONFIG_NFIT_SECURITY_DEBUG is not set
CONFIG_ACPI_NUMA=y
CONFIG_ACPI_HMAT=y
CONFIG_HAVE_ACPI_APEI=y
CONFIG_HAVE_ACPI_APEI_NMI=y
CONFIG_ACPI_APEI=y
@@ -751,7 +742,6 @@ CONFIG_KVM_WERROR=y
# CONFIG_KVM_SW_PROTECTED_VM is not set
CONFIG_KVM_INTEL=m
# CONFIG_KVM_INTEL_PROVE_VE is not set
CONFIG_X86_SGX_KVM=y
CONFIG_KVM_SMM=y
CONFIG_KVM_HYPERV=y
CONFIG_KVM_XEN=y
@@ -916,7 +906,6 @@ CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y
CONFIG_ARCH_HAS_ELFCORE_COMPAT=y
CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y
CONFIG_DYNAMIC_SIGFRAME=y
CONFIG_HAVE_ARCH_NODE_DEV_GROUP=y
CONFIG_ARCH_HAS_HW_PTE_YOUNG=y
CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG=y
CONFIG_ARCH_HAS_KERNEL_FPU_SUPPORT=y
@@ -1115,7 +1104,6 @@ CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=y
CONFIG_ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP=y
CONFIG_HAVE_GUP_FAST=y
CONFIG_NUMA_KEEP_MEMINFO=y
CONFIG_MEMORY_ISOLATION=y
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
CONFIG_HAVE_BOOTMEM_INFO_NODE=y
@@ -1161,7 +1149,6 @@ CONFIG_ARCH_SUPPORTS_PMD_PFNMAP=y
CONFIG_ARCH_SUPPORTS_PUD_PFNMAP=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_CMA=y
CONFIG_CMA_DEBUGFS=y
@@ -1207,8 +1194,6 @@ CONFIG_PER_VMA_LOCK=y
CONFIG_LOCK_MM_AND_FIND_VMA=y
CONFIG_IOMMU_MM_DATA=y
CONFIG_EXECMEM=y
CONFIG_NUMA_MEMBLKS=y
# CONFIG_NUMA_EMU is not set
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
#
@@ -2279,7 +2264,6 @@ CONFIG_PCI_SW_SWITCHTEC=m
CONFIG_CXL_BUS=m
CONFIG_CXL_PCI=m
# CONFIG_CXL_MEM_RAW_COMMANDS is not set
CONFIG_CXL_ACPI=m
CONFIG_CXL_PMEM=m
CONFIG_CXL_MEM=m
CONFIG_CXL_PORT=m
@@ -2338,7 +2322,6 @@ CONFIG_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
CONFIG_HMEM_REPORTING=y
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
CONFIG_GENERIC_CPU_DEVICES=y
CONFIG_GENERIC_CPU_AUTOPROBE=y
@@ -2415,7 +2398,6 @@ CONFIG_GOOGLE_VPD=m
CONFIG_EFI_ESRT=y
CONFIG_EFI_VARS_PSTORE=y
CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
CONFIG_EFI_SOFT_RESERVE=y
CONFIG_EFI_DXE_MEM_ATTRIBUTES=y
CONFIG_EFI_RUNTIME_WRAPPERS=y
CONFIG_EFI_BOOTLOADER_CONTROL=m
@@ -10533,9 +10515,7 @@ CONFIG_NVDIMM_KEYS=y
CONFIG_DAX=y
CONFIG_DEV_DAX=m
CONFIG_DEV_DAX_PMEM=m
CONFIG_DEV_DAX_HMEM=m
CONFIG_DEV_DAX_CXL=m
CONFIG_DEV_DAX_HMEM_DEVICES=y
CONFIG_DEV_DAX_KMEM=m
CONFIG_NVMEM=y
CONFIG_NVMEM_SYSFS=y
@@ -11557,7 +11537,6 @@ CONFIG_SWIOTLB=y
# CONFIG_SWIOTLB_DYNAMIC is not set
CONFIG_DMA_NEED_SYNC=y
CONFIG_DMA_CMA=y
# CONFIG_DMA_NUMA_CMA is not set
#
# Default contiguous memory area size:

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0c327d1db5290544154305ee00709871480b2131cf2f652c41d974ed9515cc9c
size 1793535
oid sha256:ec178b034654812c1c5d163a59d64f627feeef34a46c749051ef94d89253bd75
size 1843649

View File

@@ -72,7 +72,7 @@ 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)\\
Arch Linux (seit Linux/x86 5.9.0) Standard: ZSTD (former: XZ seit 4.14.4, predecessor GZIP,XZ)\\
Debian 11.6: XZ\\
@TODO Weitere Linux Distributionen
\subsubsection{Gzip}
@@ -407,8 +407,8 @@ SCHED\_CORE ist standardmäßig deaktiviert. Wenn es aktiviert und unbenutzt ist
bei Linux-Distributionen wahrscheinlich der Fall ist,
sollte es keine messbaren Auswirkungen auf die Leistung
haben.
% 1.21 Extensible Scheduling Class (since 6.11)
\subsection{Extensible Scheduling Class {\tiny since 6.12}}
% 1.21 Extensible Scheduling Class (seit 6.11)
\subsection{Extensible Scheduling Class {\tiny seit 6.12}}
CONFIG\_SCHED\_CLASS\_EXT [=y] \textbf{[Y]}\\
Diese Option aktiviert eine neue Scheduler-Klasse sched\_ext (SCX), die es ermöglicht,
dass Scheduling-Richtlinien
@@ -747,7 +747,7 @@ 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.
\paragraph{Turn RCU lazy invocation off by default}{\tiny since 6.9}$~$\\
\paragraph{Turn RCU lazy invocation off by default}{\tiny seit 6.9}$~$\\
CONFIG\_RCU\_LAZY\_DEFAULT\_OFF [=n] \textbf{[N]}\\
Erlaubt die Erstellung des Kernels mit CONFIG\_RCU\_LAZY=y, ist aber standardmäßig deaktiviert.
Der Bootzeit-Parameter rcutree.enable\_rcu\_lazy=1 kann verwendet werden, um es wieder einzuschalten.
@@ -938,7 +938,7 @@ Sagen Sie N, wenn Sie unsicher sind.
CONFIG\_MEMCG [=y] \textbf{[Y]}\\
Ermöglicht die Kontrolle über den Speicherbedarf von Tasks in einer cgroup.
\english{Provides control over the memory footprint of tasks in a cgroup.}
\paragraph{Legacy cgroup v1 memory controller}{\tiny since 6.11}$~$\\
\paragraph{Legacy cgroup v1 memory controller}{\tiny seit 6.11}$~$\\
CONFIG\_MEMCG\_V1 [=n] \textbf{[N]}\\
Legacy cgroup v1 memory controller, der durch die cgroup v2 Implementierung veraltet ist.
Der v1 ist für ältere Anwendungen gedacht, die noch nicht auf die neue cgroup v2-Schnittstelle umgestellt wurden.
@@ -1062,7 +1062,7 @@ 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{Legacy cgroup v1 cpusets controller}{\tiny since 6.12}$~$\\
\paragraph{Legacy cgroup v1 cpusets controller}{\tiny seit 6.12}$~$\\
CONFIG\_CPUSETS\_V1 [=n] \textbf{[N]}\\
Die Option v1 ist für ältere Anwendungen gedacht, die noch nicht auf die neue cgroup v2-Schnittstelle migriert wurden.
Wenn Sie keine solche Anwendung haben, ist es völlig in Ordnung, wenn Sie diese Option deaktiviert lassen.\\

View File

@@ -21,12 +21,30 @@ 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.
zu \glqq En\-hanced Real Time Clock Support\grqq{} (siehe unten) sagen.
Der \glqq Advanced Power Management\grqq{}-Code wird deaktiviert, wenn Sie hier
\glqq Y\grqq{} angeben. Siehe auch $<$file:Documentation/arch/x86/i386/IO-APIC.rst$>$,
$<$file:Documentation/admin-guide/lockup-watchdogs.rst$>$ und das SMP-HOWTO, verfügbar unter:\\
\url{http://www.tldp.org/docs.html\#howto}.\\
Wenn Sie nicht wissen, was Sie hier tun sollen, sagen Sie N.
\english{This enables support for systems with more than one CPU.
If you have a system with only one CPU, say N.
If you have a system with more than one CPU, say Y.\\
If you say N here, the kernel will run on uni- and multiprocessor machines,
but will use only one CPU of a multiprocessor machine.
If you say Y here, the kernel will run on many, but not all, uniprocessor machines.
On a uniprocessor machine, the kernel will run faster if you say N here.\\
Note that if you say Y here and choose architecture ``586'' or ``Pentium''
under ``Processor family'', the kernel will not work on 486 architectures.
Similarly, multiprocessor kernels for the ``PPro'' architecture may not work on all Pentium based boards.\\
People using multiprocessor machines who say Y here should also say Y to
``Enhanced Real Time Clock Support'', below. The ``Advanced Power Management'' code will be disabled
if you say Y here.\\
See also $<$file:Documentation/arch/x86/i386/IO-APIC.rst$>$,\\
$<$file:Documentation/admin-guide/lockup-watchdogs.rst$>$ and\\
the SMP-HOWTO
\url{http://www.tldp.org/docs.html\#howto}.\\
If you don't know what to do here, say N.}
\note{Dies wäre nur auf kleinen Systemen mit einem Prozessorkern sinnvoll auf N zu stellen.
Üblicherweise sollte das auf Y bleiben.}
@@ -49,7 +67,7 @@ sind. Ohne Aktivierung dieser Option booten sie mit stark eingeschränkter Funkt
\note{Sollte unterstützt werden, kann innerhalb von menuconfig gar nicht deaktiviert werden.}
%3.3 Enable MSI and MSI-X delivery by posted interrupts
\subsection{Enable MSI and MSI-x delivery by posted interrupts {\tiny since 6.10}}
\subsection{Enable MSI and MSI-x delivery by posted interrupts {\tiny seit 6.10}}
CONFIG\_X86\_POSTED\_MSI \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Dadurch können MSIs, die unter Interrupt-Remapping stehen, als gebuchte Interrupts an den Host-Kernel übermittelt werden.
Der Unterbrechungsdurchsatz kann potenziell verbessert werden, indem CPU-Benachrichtigungen während
@@ -93,8 +111,8 @@ More information about AMD QoS can be found in the AMD64 Technology Platform Qua
Say N if unsure.}
\note{Wir sind uns noch unsicher!}
%3.6 Flexible Return and Event Delivery, since v6.9
\subsection{Flexible Return and Event Delivery {\tiny since 6.9}}
%3.6 Flexible Return and Event Delivery, seit v6.9
\subsection{Flexible Return and Event Delivery {\tiny seit 6.9}}
CONFIG\_X86\_FRED [=Y] \textbf{[Y]}\\
Wenn diese Funktion aktiviert ist, sollten Sie versuchen, Flexible Return and Event Delivery anstelle
der alten SYSCALL/SYSENTER/IDT-Architektur für Ringübergänge und Ausnahme- bzw. Unter\-brechungs\-behandlung
@@ -250,6 +268,9 @@ Der Kernel wird so verändert, dass er sich selbst modifizieren kann, wenn er un
ausgeführt wird, was die Leistung gegenüber einer vollständigen Virtualisierung erheblich verbessern
kann. Wenn der Kernel jedoch ohne Hypervisor ausgeführt wird, ist er theoretisch langsamer und etwas
größer.
\english{This changes the kernel so it can modify itself when it is run under a hypervisor,
potentially improving performance significantly over full virtualization.
However, when run without a hypervisor the kernel is theoretically slower and slightly larger.}
\subsubsection{paravirt-ops debugging}
CONFIG\_PARAVIRT\_DEBUG [=n] \textbf{[N]}\\
@@ -398,6 +419,8 @@ 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.
\english{Select this for an AMD Opteron or Athlon64 Hammer-family processor.
Enables use of some extended instructions, and passes appropriate optimization flags to GCC.}
\subsubsection{Intel P4 / older Netburst based Xeon}
CONFIG\_MPSC [=n] \textbf{[N]}\\
@@ -406,6 +429,12 @@ die mit x86-64 kompatibel sind. Beachten Sie, dass die neuesten Xeons (Xeon 51xx
auf dem Netburst-Kern basieren und diese Option nicht verwenden sollten.\\
Sie können sie anhand des Feldes cpu family in /proc/cpuinfo unterscheiden.
Familie 15 ist ein älterer Xeon, Familie 6 ein neuerer.
\english{Optimize for Intel Pentium 4, Pentium D and older Nocona/Dempsey Xeon CPUs with
Intel 64bit which is compatible with x86-64.
Note that the latest Xeons (Xeon 51xx and 53xx) are not based on the Netburst core and
shouldn't use this option.
You can distinguish them using the cpu family field in /proc/cpuinfo.
Family 15 is an older Xeon, Family 6 a newer one.}
%3.13.3
\subsubsection{Core 2/newer Xeon}
@@ -416,6 +445,7 @@ Neuere haben 6 und ältere 15 (kein Tippfehler).
\english{Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and 53xx) CPUs.
You can distinguish newer from older Xeons by the CPU family in /proc/cpuinfo.
Newer ones have 6 and older ones 15 (not a typo)}
\note{Ein moderner i7 oder i5 Intel-Prozessor wird verwendet, deshalb Y für ein Ja.}
\subsubsection{Intel Atom}
CONFIG\_MATOM [=n] \textbf{[N]}\\
@@ -423,10 +453,16 @@ Wählen Sie diese Option für die Intel Atom-Plattform. Intel Atom CPUs haben ei
In-Order-Pipelining-Architektur und können daher von entsprechend optimiertem Code profitieren.
Verwenden Sie einen aktuellen GCC mit spezieller Atom-Unterstützung, um die Vorteile dieser Option
voll ausschöpfen zu können.
\english{Select this for the Intel Atom platform.
Intel Atom CPUs have an in-order pipelining architecture and thus can benefit from accordingly optimized code.
Use a recent GCC with specific Atom support in order to fully benefit from selecting this option.}
\subsubsection{Generic-x86-64}
CONFIG\_GENERIC\_CPU \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Allgemeine x86-64-CPU. Läuft gleich gut auf allen x86-64-CPUs.
\english{Generic x86-64 CPU.\\
Run equally well on all x86-64 CPUs.}
%3.14
\subsection{Supported processor vendors \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_SELECT \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
@@ -626,21 +662,30 @@ mit Sicherheit N sagen, also nein.
\subsection{Performance monitoring \texorpdfstring{$\rightarrow$}{->}}
Leistungsüberwachung
%3.21
%3.24.1
\subsubsection{Intel uncore performance events}
CONFIG\_PERF\_EVENTS\_INTEL\_UNCORE [=m] \textbf{[M]}\\
CONFIG\_PERF\_EVENTS\_INTEL\_UNCORE \colorbox{yellow!80}{[=m] \textbf{[N]}}\\
Unterstützung für Intel-Uncore-Leistungsereignisse. Diese sind auf NehalemEX
und moderneren Prozessoren verfügbar.
\english{Include support for Intel uncore performance events.
These are available on NehalemEX and more modern processors.}
\note{Das war auf [m] für Modul-Kompilat eingestellt, wir kümmern uns nicht darum und wählen N für ein Nein.}
\subsubsection{Intel/AMD rapl performance events}
CONFIG\_PERF\_EVENTS\_INTEL\_RAPL [=m] \textbf{[M]}\\
CONFIG\_PERF\_EVENTS\_INTEL\_RAPL \colorbox{yellow!80}{[=m] \textbf{[N]}}\\
Unterstützung für Intel- und AMD-RAPL-Leistungsereignisse zur
Leistungsüberwachung auf modernen Prozessoren.
\english{Include support for Intel and AMD rapl performance events for power monitoring on modern processors.}
\note{Das war auf [m] für Modul-Kompilat eingestellt, wir kümmern uns nicht darum und wählen N für ein Nein.}
\subsubsection{Intel cstate performance events}
CONFIG\_PERF\_EVENTS\_INTEL\_CSTATE [=m] \textbf{[M]}\\
CONFIG\_PERF\_EVENTS\_INTEL\_CSTATE \colorbox{yellow!80}{[=m] \textbf{[N]}}\\
Einbeziehung der Unterstützung für Intel cstate performance events für die
Leistungsüberwachung auf modernen Prozessoren.
\english{Include support for Intel cstate performance events for power monitoring on modern processors.}
\note{Das war auf [m] für Modul-Kompilat eingestellt, wir kümmern uns nicht darum und wählen N für ein Nein.}
\subsubsection{AMD Processor Power Reporting Mechanism}
CONFIG\_PERF\_EVENTS\_AMD\_POWER [=m] \textbf{[M]}\\
@@ -708,6 +753,7 @@ capabilities and permission from potentially active security modules.\\
The emulation restricts the functionality of the syscall to only allowing the full range
I/O port access, but prevents the ability to disable interrupts from user space which would be
granted if the hardware IOPL mechanism would be used.}
\note{Wir könnten diese Emulation versuchen auszuschalten, ist aber ein Sicherheitsrisiko.}
%3.28
\subsection{Late microcode loading (DANGEROUS)}
@@ -742,19 +788,23 @@ ausgeführt werden soll. Es handelt sich um ein Zeichengerät mit Major 203 und
%3.31
\subsection{Enable 5-level page tables support}
CONFIG\_X86\_5LEVEL [=y] \textbf{[Y]}\\
CONFIG\_X86\_5LEVEL \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
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.
\note{Wir verwenden keine so großen Maschinen, also N. 4-Level mit \qty{256}{\tebi\byte} ist momentan ausreichend.}
%3.32
\subsection{Enable statistic for Change Page Attribute}
CONFIG\_X86\_CPA\_STATISTICS [=y] \textbf{[Y]}\\
CONFIG\_X86\_CPA\_STATISTICS \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
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.
\english{Expose statistics about the Change Page Attribute mechanism, which helps to determine
the effectiveness of preserving large and huge page mappings when mapping protections are changed.}
\note{Das ist ein Entwicklerwerkzeug, das wir nicht benötigen, deshalb N.}
%3.33
\subsection{AMD Secure Memory Encryption (SME) support}
@@ -772,7 +822,7 @@ des Systemspeichers mit der Befehlszeilenoption \texttt{mem\_encrypt=on} aktivie
%3.34
\subsection{NUMA Memory Allocation and Scheduler Support}
CONFIG\_NUMA [=y] \textbf{[Y]}\\
CONFIG\_NUMA [=y] \colorbox{yellow!80}{\textbf{[N]}}\\
Aktivieren Sie die NUMA-Unterstützung (Non-Uniform Memory Access). Der Kernel wird versuchen, den
von einer CPU verwendeten Speicher dem lokalen Speicher-Controller der CPU zuzuweisen und dem Kernel
mehr Kenntnis über NUMA zu geben.\\
@@ -780,6 +830,9 @@ 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.
\note{Nur erforderlich, wenn man ein System mit mehr als einem Sockel (CPUs) betreibt.
Wir setzen Laptops ein, deshalb ein N möglich.
}
\subsubsection{Old style AMD Opteron NUMA detection}
CONFIG\_AMD\_NUMA [=y] \textbf{[N]}\\
@@ -806,22 +859,23 @@ CONFIG\_NODES\_SHIFT [=5] \textbf{[5]}\\
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}
\subsection{Enable sysfs memory/probe interface}
CONFIG\_ARCH\_MEMORY\_PROBE [=n] \textbf{[N]}\\
Diese Option aktiviert eine sysfs-Speicher/Probe-Schnittstelle für Tests.\\
Siehe Documentation/admin-guide/mm/memory-hotplug.rst für weitere Informationen.
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\subsubsection{Support non-standard NVDIMMs and ADR protected memory}
CONFIG\_X86\_PMEM\_LEGACY [=m] \textbf{[M]}\\
\subsection{Support non-standard NVDIMMs and ADR protected memory}
CONFIG\_X86\_PMEM\_LEGACY \colorbox{yellow!80}{[=m] \textbf{[N]}}\\
Behandeln Sie Speicher, der mit dem nicht standardmäßigen e820-Typ von 12 markiert ist, wie er vom
Intel Sandy Bridge-EP Referenz-BIOS verwendet wird, als geschützten Speicher.
Der Kernel bietet diese Regionen dem \texttt{pmem}-Treiber an, so dass sie für persistenten Speicher
verwendet werden können.\\
Sagen Sie Y, wenn Sie unsicher sind.
\note{Verwenden wir nicht, deshalb ein N für Nein.}
\subsubsection{Check for low memory corruption}
CONFIG\_X86\_CHECK\_BIOS\_CORRUPTION [=y] \textbf{[Y]}\\
\subsection{Check for low memory corruption}
CONFIG\_X86\_CHECK\_BIOS\_CORRUPTION \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Regelmäßige Überprüfung auf Speicherbeschädigung im niedrigen Speicher, die vermutlich durch das BIOS
verursacht wird. Auch wenn dies in der Konfiguration aktiviert ist, zur Laufzeit ist es deaktiviert.
Aktivieren Sie es, indem Sie \texttt{memory\_corruption\_check=1} in der Kernel-Befehlszeile eingeben.
@@ -837,8 +891,9 @@ wenn eine wiederholte BIOS-verursachte Beschädigung stets denselben Speicher be
\parbox{445\unitlength}{Hinweis: Kann ausgeschaltet werden, wenn im \texttt{journalctl} niemals
\glqq corrupted low memory\grqq{} erscheint.}
}
\note{Wir setzen dies auf N für Nein, da auch die obengenannte Meldung nie kommt.}
\paragraph{Set the default setting of memory\_corruption\_check}$~$\\
\subsubsection{Set the default setting of memory\_corruption\_check}
CONFIG\_X86\_BOOTPARAM\_MEMORY\_CORRUPTION\_CHECK [=y] \textbf{[Y]}\\
Legt fest, ob der Standardstatus von \texttt{memory\_corruption\_check} ein- oder ausgeschaltet ist.
@@ -863,13 +918,39 @@ Boot-CPU und nicht für die sekundären CPUs setzen. Das kann zu allen mögliche
hier Y zu sagen.\\
Sie können sicher Y sagen, auch wenn Ihr Rechner keine MTRRs hat, Sie werden nur etwa 9 KB zu Ihrem Kernel hinzufügen.
Siehe $<$file:Documentation/arch/x86/mtrr.rst$>$ für weitere Informationen.
\english{On Intel P6 family processors (Pentium Pro, Pentium II and later) the Memory Type Range Registers
(MTRRs) may be used to control processor access to memory ranges.
This is most useful if you have a video (VGA) card on a PCI or AGP bus.
Enabling write-combining allows bus write transfers to be combined into a larger transfer
before bursting over the PCI/AGP bus.
This can increase performance of image write operations 2.5 times or more.
Saying Y here creates a /proc/mtrr file which may be used to manipulate your processor's MTRRs.
Typically the X server should use this.\\
This code has a reasonably generic interface so that similar control registers on other processors
can be easily supported as well:\\
The Cyrix 6x86, 6x86MX and M II processors have Address Range Registers (ARRs) which provide
a similar functionality to MTRRs.
For these, the ARRs are used to emulate the MTRRs.
The AMD K6-2 (stepping 8 and above) and K6-3 processors have two MTRRs.
The Centaur C6 (WinChip) has 8 MCRs, allowing write-combining.
All of these processors are supported by this code and it makes sense to say Y here if you have one of them.
\\Saying Y here also fixes a problem with buggy SMP BIOSes which only set the MTRRs for the boot CPU
and not for the secondary CPUs.
This can lead to all sorts of problems, so it's good to say Y here.\\
You can safely say Y even if your machine doesn't have MTRRs, you'll just add about 9 KB to your kernel.\\
See $<$file:Documentation/arch/x86/mtrr.rst$>$ for more information.}
\paragraph{MTRR cleanup support}$~$\\
\subsubsection{MTRR cleanup support}
CONFIG\_MTRR\_SANITIZER [=y] \textbf{[Y]}\\
Umwandlung des MTRR-Layouts von kontinuierlich in diskret, damit X-Treiber Rückschreibeinträge hinzufügen können.
Kann mit \texttt{disable\_mtrr\_cleanup} in der Kernel-Kommandozeile deaktiviert werden.
Die größte MTRR-Eintragsgröße für einen kontinuierlichen Block kann mit \texttt{mtrr\_chunk\_size} festgelegt werden.\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{Convert MTRR layout from continuous to discrete, so X drivers can add writeback entries.\\
Can be disabled with disable\_mtrr\_cleanup on the kernel command line.
The largest mtrr entry size for a continuous block can be set with mtrr\_chunk\_size.\\
If unsure, say Y.}
\note{Für normale Systeme Y für Ja. Nur bei einem \glqq headless server\grqq{} ein N.}
\paragraph{MTRR cleanup enable value (0-1)}$~$\\
CONFIG\_MTRR\_SANITIZER [=1] \textbf{[1]}\\
@@ -880,8 +961,42 @@ 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]}\\
%3.37.4
\subsubsection{x86 PAT support}
CONFIG\_X86\_PAT [=y] \textbf{[Y]}\\
Verwenden Sie PAT-Attribute zur Einrichtung der Cache-Steuerung auf Seitenebene.\\
PATs sind die modernen Äquivalente von MTRRs und sind viel flexibler als MTRRs.
Sagen Sie hier N, wenn Sie Probleme beim Booten (Boot-Absturz, Boot-Hänger,
spontane Neustarts) oder einen nicht funktionierenden Grafiktreiber feststellen.\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{Use PAT attributes to setup page level cache control.\\
PATs are the modern equivalents of MTRRs and are much more flexible than MTRRs.\\
Say N here if you see bootup problems (boot crash, boot hang, spontaneous reboots)
or a non-working video driver.\\
If unsure, say Y.}
\note{Überprüfe mit \texttt{cat /proc/cpuinfo | grep pat}, ob das System PAT unterstützt.}
%3.38
\subsection{User Mode Instruction Prevention}
CONFIG\_X86\_UMIP [=y] \textbf{[Y]}\\
User Mode Instruction Prevention (UMIP) ist eine Sicherheits\-funktion in einigen x86-Prozessoren.
Wenn sie aktiviert ist, wird ein allgemeiner Schutzfehler ausgegeben, wenn die Anweisungen SGDT, SLDT,
SIDT, SMSW oder STR im Benutzer\-modus ausgeführt werden.
Diese Befehle geben unnötigerweise Informationen über den Hardwarezustand preis.\\
Die große Mehrheit der Anwendungen verwendet diese Befehle nicht.
Für die wenigen, die sie verwenden, wird in bestimmten Fällen eine Software-Emulation im geschützten und
virtuellen 8086-Modus vorgesehen. Die emulierten Ergebnisse sind Scheinergebnisse.
\english{User Mode Instruction Prevention (UMIP) is a security feature in some x86 processors.
If enabled, a general protection fault is issued if the SGDT, SLDT, SIDT, SMSW or STR instructions are
executed in user mode.
These instructions unnecessarily expose information about the hardware state.\\
The vast majority of applications do not use these instructions.
For the very few that do, software emulation is provided in specific cases in protected and
virtual-8086 modes. Emulated results are dummy.}
%3.39
\subsection{Indirect Branch Tracking}
CONFIG\_X86\_KERNEL\_IBT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
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.\\
@@ -889,15 +1004,29 @@ Zusätzlich zur Erstellung des Kernels mit IBT werden alle Funktionen, die keine
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.
\english{Build the kernel with support for Indirect Branch Tracking, a hardware support
course-grain forward-edge Control Flow Integrity protection.
It enforces that all indirect calls must land on an ENDBR instruction, as such,
the compiler will instrument the code with them to make this happen.\\
In addition to building the kernel with IBT, seal all functions that are not indirect call targets,
avoiding them ever becoming one.\\
This requires LTO like objtool runs and will slow down the build.
It does significantly reduce the number of ENDBR instructions in the kernel image.}
\note{Wir können hier N wählen, hat natürlich Sicherheitsmerkmale. Compilieren geht schneller!}
\subsubsection{Memory Protection Keys}
%3.40
\subsection{Memory Protection Keys}
CONFIG\_X86\_INTEL\_MEMORY\_PROTECTION\_KEYS [=y] \textbf{[Y]}\\
Memory Protection Keys bietet einen Mechanismus zur Erzwingung seitenbasierter Schutzmaßnahmen, ohne dass die
Seitentabellen geändert werden müssen, wenn eine Anwendung ihre Schutzdomänen ändert. Einzelheiten siehe
Documentation/core-api/protection-keys.rst\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{Memory Protection Keys provides a mechanism for enforcing page-based protections,
but without requiring modification of the page tables when an application changes protection domains.\\
For details, see Documentation/core-api/protection-keys.rst\\
If unsure, say y.}
\subsubsection{TSX enable mode () \texorpdfstring{$\rightarrow$}{->}}
\subsection{TSX enable mode () \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_X86\_INTEL\_MEMORY\_PROTECTION\_KEYS [=y] \textbf{[Y]}\\
Intels TSX-Funktion (Transactional Synchronization Extensions) ermöglicht die Optimierung von Sperrprotokollen durch
Lock Elision, was zu einer spürbaren Leistungssteigerung führen kann.
@@ -912,53 +1041,85 @@ eingestellt werden. Siehe
Documentation/admin-guide/kernel-parameters.txt für weitere Details.
Sagen Sie off, wenn Sie sich nicht sicher sind, auto, wenn TSX in Gebrauch ist, aber auf sicheren Plattformen
verwendet werden sollte, oder on, wenn TSX in Gebrauch ist und der Sicherheitsaspekt von tsx nicht relevant ist.
\english{Intel's TSX (Transactional Synchronization Extensions) feature allows to optimize
locking protocols through lock elision which can lead to a noticeable performance boost.\\
On the other hand it has been shown that TSX can be exploited to form side channel attacks (e.g. TAA)
and chances are there will be more of those attacks discovered in the future.\\
Therefore TSX is not enabled by default (aka tsx=off).
An admin might override this decision by tsx=on the command line parameter.
Even with TSX enabled, the kernel will attempt to enable the best possible TAA mitigation setting
depending on the microcode available for the particular machine.\\
This option allows to set the default tsx mode between tsx=on, =off and =auto.
See Documentation/admin-guide/kernel-parameters.txt for more details.\\
Say off if not sure, auto if TSX is in use but it should be used on safe platforms or on if
TSX is in use and the security aspect of tsx is not relevant.}
\paragraph{off}$~$\\
\subsubsection{off}
CONFIG\_X86\_INTEL\_TSX\_MODE\_OFF [=n] \textbf{[N]}\\
TSX ist, wenn möglich, deaktiviert -- entspricht dem Befehlszeilenparameter \texttt{tsx=off}.
\paragraph{on}$~$\\
\subsubsection{on}
CONFIG\_X86\_INTEL\_TSX\_MODE\_ON [=n] \textbf{[N]}\\
TSX ist auf TSX-fähiger Hardware immer aktiviert -- gleichbedeutend
mit dem Befehlszeilenparameter \texttt{tsx=on}
\paragraph{auto}$~$\\
\subsubsection{auto}
CONFIG\_X86\_INTEL\_TSX\_MODE\_AUTO [=y] \textbf{[Y]}\\
TSX wird auf TSX-fähiger Hardware aktiviert, die als sicher gegen Seitenkanalangriffe gilt -- gleichbedeutend
mit dem Befehlszeilenparameter \texttt{tsx=auto}.
\subsubsection{Software Guard eXtensions (SGX)}
CONFIG\_X86\_SGX [=y] \textbf{[Y]}\\
%3.42
\subsection{Software Guard eXtensions (SGX)}
CONFIG\_X86\_SGX \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Intel(R) Software Guard eXtensions (SGX) ist eine Reihe von CPU-Befehlen, die von Anwendungen verwendet werden
können, um private Code- und Datenbereiche, die so genannten Enklaven, zu reservieren. Auf den privaten Speicher
einer Enklave kann nur von Code zugegriffen werden, der innerhalb der Enklave läuft. Zugriffe von außerhalb der
Enklave, einschließlich anderer Enklaven, werden von der Hardware nicht zugelassen.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{Intel(R) Software Guard eXtensions (SGX) is a set of CPU instructions that can be used
by applications to set aside private regions of code and data, referred to as enclaves.
An enclave's private memory can only be accessed by code running within the enclave.
Accesses from outside the enclave, including other enclaves, are disallowed by hardware.\\
If unsure, say N.}
\note{N,\\
Y, wenn Sie eine echte Verwendung dafür haben, denn die tatsächliche Sicherheit dieser Funktion ist umstritten.}
\subsubsection{X86 userspace shadow stack}
\subsection{X86 userspace shadow stack}
CONFIG\_X86\_USER\_SHADOW\_STACK [=y] \textbf{[Y]}\\
Der Schattenstapelschutz ist eine Hardwarefunktion, die eine Beschädigung der Rücksprungadresse einer Funktion
erkennt. Dies hilft, ROP-Angriffe abzuschwächen. Anwendungen müssen aktiviert sein, um sie zu nutzen, und der
alte Userspace erhält den Schutz nicht "umsonst". CPUs, die Shadow Stacks unterstützen, wurden erstmals im
alte Userspace erhält den Schutz nicht \glqq umsonst\grqq{}. CPUs, die Shadow Stacks unterstützen, wurden erstmals im
Jahr~2020 vorgestellt. Weitere Informationen finden Sie unter Documentation/arch/x86/shstk.rst.\\
Wenn Sie unsicher sind, sagen Sie N.
\note{Y, ein Ja aus Sicherheitsgründen}
\subsubsection{EFI runtime service support}
\subsection{EFI runtime service support}
CONFIG\_EFI [=y] \textbf{[Y]}\\
Dies ermöglicht es dem Kernel, verfügbare EFI-Laufzeitdienste (wie die EFI-Variablendienste) zu nutzen.\\
Diese Option ist nur auf Systemen mit EFI-Firmware sinnvoll. Außerdem sollten Sie den neuesten ELILO-Lader
verwenden, der unter \url{http://elilo.sourceforge.net} verfügbar ist, um die Vorteile der
EFI-Laufzeitdienste zu nutzen. Aber auch mit dieser Option sollte der resultierende Kernel weiterhin auf
bestehenden Nicht-EFI-Plattformen booten.
\english{This enables the kernel to use EFI runtime services that are available
(such as the EFI variable services).\\
This option is only useful on systems that have EFI firmware.
In addition, you should use the latest ELILO loader available at $<$http://elilo.sourceforge.net$>$
in order to take advantage of EFI runtime services.
However, even with this option, the resultant kernel should continue to boot on existing non-EFI platforms.}
\note{Um von EFI booten zu können, dürfen wir dies nicht deaktivieren.}
\paragraph{EFI stub support}$~$\\
\subsubsection{EFI stub support}
CONFIG\_EFI\_STUB [=y] \textbf{[Y]}\\
Mit dieser Kernel-Funktion kann ein bzImage direkt von der EFI-Firmware geladen werden, ohne dass ein
Bootloader erforderlich ist.\\
Weitere Informationen finden Sie unter Documentation/admin-guide/efi-stub.rst.
\english{This kernel feature allows a bzImage to be loaded directly by EFI firmware
without the use of a bootloader.\\
See \texttt{Documentation/admin-guide/efi-stub.rst} for more information.}
\note{Y, nur, wenn Sie den Kernel direkt als EFI-Binary booten und nicht mit grub}
\subparagraph{EFI handover protocol (DEPRECATED)}$~$\\
CONFIG\_EFI\_STUB [=y] \textbf{[Y]}\\
\paragraph{EFI handover protocol (DEPRECATED)}$~$\\
CONFIG\_EFI\_STUB \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
(EFI-Übergabeprotokoll (VERALTET))\\
Wählen Sie dies, um Unterstützung für das veraltete EFI-Handover-Protokoll zu erhalten, das alternative
Einstiegspunkte in den EFI-Stub definiert. Dies ist eine Praxis, die keine Grundlage in der UEFI-Spezifikation
@@ -967,49 +1128,96 @@ und initrd erfordert, und wo im Speicher diese Assets geladen werden können.\\
Im Zweifelsfall sagen Sie Y. Auch wenn die entsprechende Unterstützung im Upstream-GRUB oder anderen
Bootloadern nicht vorhanden ist, bauen die meisten Distros GRUB mit zahlreichen Downstream-Patches und können
sich daher auf das Handover-Protokoll verlassen.
\english{Select this in order to include support for the deprecated EFI handover protocol,
which defines alternative entry points into the EFI stub.
This is a practice that has no basis in the UEFI specification, and requires a priori knowledge
on the part of the bootloader about Linux/x86 specific ways of passing the command line and initrd,
and where in memory those assets may be loaded.\\
If in doubt, say Y. Even though the corresponding support is not present in upstream GRUB or
other bootloaders, most distros build GRUB with numerous downstream patches applied,
and may rely on the handover protocol as as result.}
\note{Ein Versuch wäre es wert, das \glqq Handover-Protokoll\grqq{} zu deaktivieren, da es obsolet wurde.}
\subparagraph{EFI mixed-mode support}$~$\\
CONFIG\_EFI\_MIXED [=y] \textbf{[Y]}\\
\paragraph{EFI mixed-mode support}$~$\\
CONFIG\_EFI\_MIXED \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Wenn Sie diese Funktion aktivieren, kann ein 64-Bit-Kernel auf einer 32-Bit-Firmware gebootet werden,
vorausgesetzt, Ihre CPU unterstützt den 64-Bit-Modus.\\
Beachten Sie, dass es nicht möglich ist, einen Mixed-Mode-fähigen Kernel über den EFI-Boot-Stub zu
booten -- es muss ein Bootloader verwendet werden, der das EFI-Handover-Protokoll unterstützt.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{Enabling this feature allows a 64-bit kernel to be booted on a 32-bit firmware,
provided that your CPU supports 64-bit mode.\\
Note that it is not possible to boot a mixed-mode enabled kernel via the EFI boot stub -- a
bootloader that supports the EFI handover protocol must be used.\\
If unsure, say N.}
\note{Nur auf alter Apple-Hardware relevant, deshalb N.}
\paragraph{Enable EFI fake memory map}$~$\\
{\color{gray}
\subsubsection*{Enable EFI fake memory map \tiny{abgeschafft seit 6.11}}
CONFIG\_EFI\_FAKE\_MEMMAP [=n] \textbf{[N]}\\
Wenn Sie hier Y angeben, wird die Boot-Option \texttt{efi\_fake\_mem} aktiviert.
Durch Angabe dieses Parameters können Sie einem bestimmten Speicherbereich beliebige Attribute hinzufügen,
indem Sie die ursprüngliche (von der Firmware bereitgestellte) EFI-Memmap aktualisieren.
Dies ist nützlich für das Debugging von EFI-Memmap-bezogenen Funktionen, z.\,B. Address Range Mirroring.
\english{Saying Y here will enable ``efi\_fake\_mem'' boot option. By specifying this parameter,
you can add arbitrary attribute to specific memory range by updating original (firmware provided) EFI memmap.
This is useful for debugging of EFI memmap related feature, e.g. Address Range Mirroring feature.}
}
\subsubsection{Timer frequency () \texorpdfstring{$\rightarrow$}{->}}
\subsubsection{Export EFI runtime maps to sysfs {\tiny seit 6.2}}
CONFIG\_EFI\_RUNTIME\_MAP [=y] \textbf{[Y]}\\
Exportieren Sie EFI-Laufzeitspeicherbereiche nach \texttt{/sys/firmware/efi/runtime-map}.
Diese Speichermap wird vom 2. Kernel benötigt, um virtuelle EFI-Mappings nach kexec einzurichten,
aber sie kann auch für Debugging-Zwecke verwendet werden.\\
Siehe auch \texttt{Documentation/ABI/testing/sysfs-firmware-efi-runtime-map}.
\english{Export EFI runtime memory regions to \texttt{/sys/firmware/efi/runtime-map}.
That memory map is required by the 2nd kernel to set up EFI virtual mappings after kexec,
but can also be used for debugging purposes.\\
See also \texttt{Documentation/ABI/testing/sysfs-firmware-efi-runtime-map}.}
\note{Kann nicht deaktiviert werden, wenn kexec und EFI runtime service eingeschaltet ist.}
\subsection{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.
\note{\qty{100}{\hertz} für Server, \qty{300}{\hertz} für Desktops,
\qty{1000}{\hertz} für Anforderungen mit niedrigen Latenzzeiten}
\paragraph{100~Hz}$~$\\
\subsubsection{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
\qty{100}{\hertz} ist eine typische Wahl für Server, SMP- und NUMA-Systeme mit vielen Prozessoren, die eine
geringere Leistung aufweisen können, wenn zu viele Timer-Interrupts auftreten.
\paragraph{250~Hz}$~$\\
\english{100~Hz is a typical choice for servers, SMP and NUMA systems with lots of processors
that may show reduced performance if too many timer interrupts are occurring.}
\subsubsection{250~Hz}
CONFIG\_HZ\_250 [=n] \textbf{[N]}\\
250~Hz ist ein guter Kompromiss, der eine gute Serverleistung ermöglicht und auch auf SMP- und
\qty{250}{\hertz} ist ein guter Kompromiss, der eine gute Serverleistung ermöglicht und auch auf SMP- und
NUMA-Systemen eine gute interaktive Reaktionsfähigkeit zeigt. Wenn Sie NTSC-Video oder Multimedia
verwenden, wählen Sie stattdessen 300~Hz.
\paragraph{300~Hz}$~$\\
\english{250~Hz is a good compromise choice allowing server performance while also showing
good interactive responsiveness even on SMP and NUMA systems.
If you are going to be using NTSC video or multimedia, selected 300Hz instead.}
\subsubsection{300~Hz}
CONFIG\_HZ\_300 [=y] \textbf{[Y]}\\
300~Hz ist ein guter Kompromiss, der eine gute Serverleistung und gleichzeitig eine gute interaktive
\qty{300}{\hertz} ist ein guter Kompromiss, der eine gute Serverleistung und gleichzeitig eine gute interaktive
Reaktionsfähigkeit selbst auf SMP- und NUMA-Systemen ermöglicht und sowohl bei PAL- als auch bei
NTSC-Bildraten für Video- und Multimedia-Arbeiten genau eingehalten wird.
\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.
\english{300~Hz is a good compromise choice allowing server performance while also showing
good interactive responsiveness even on SMP and NUMA systems and exactly dividing by both PAL and
NTSC frame rates for video and multimedia work.}
\subsubsection{Physical address where the kernel is loaded}
\subsubsection{1000~Hz}
CONFIG\_HZ\_1000 [=n] \textbf{[N]}\\
\qty{1000}{\hertz} ist die bevorzugte Wahl für Desktop-Systeme und andere Systeme, die schnelle interaktive
Reaktionen auf Ereignisse erfordern.
\english{1000~Hz is the preferred choice for desktop systems and other systems requiring
fast interactive responses to events.}
\subsection{Physical address where the kernel is loaded}
CONFIG\_PHYSICAL\_START [=0x1000000] \textbf{[0x1000000]}\\
Dies gibt die physikalische Adresse an, unter der der Kernel geladen wird. Wenn der Kernel nicht verschiebbar ist
(CONFIG\_RELOCATABLE=n), dekomprimiert sich bzImage an die oben genannte physikalische Adresse und wird von dort
@@ -1031,18 +1239,50 @@ erstellen muss. Derselbe Kernel kann als Produktionskernel und als Erfassungsker
Option sollte verschwinden, nachdem die Unterstützung von relocatable bzImage eingeführt wurde. Sie ist aber noch
vorhanden, weil es Benutzer gibt, die weiterhin vmlinux für die Dump-Erfassung verwenden. Diese Option sollte im
Laufe der Zeit verschwinden. Ändern Sie diese Option nicht, wenn Sie nicht wissen, was Sie tun.
\english{This gives the physical address where the kernel is loaded.\\
If the kernel is not relocatable (CONFIG\_RELOCATABLE=n) then bzImage will decompress itself
to above physical address and run from there.
Otherwise, bzImage will run from the address where it has been loaded by the boot loader.
The only exception is if it is loaded below the above physical address, in which case
it will relocate itself there.\\
In normal kdump cases one does not have to set/change this option as now bzImage can be compiled
as a completely relocatable image (CONFIG\_RELOCATABLE=y) and be used to load and run from a different address.
This option is mainly useful for the folks who don't want to use a bzImage for capturing the crash dump
and want to use a vmlinux instead.
vmlinux is not relocatable hence a kernel needs to be specifically compiled to run from a specific
memory area (normally a reserved region) and this option comes handy.\\
So if you are using bzImage for capturing the crash dump, leave the value here unchanged to 0x1000000 and
set CONFIG\_RELOCATABLE=y.
Otherwise if you plan to use vmlinux for capturing the crash dump change this value to start of the
reserved region. In other words, it can be set based on the ``X'' value as specified in the
``crashkernel=YM\@XM'' command line boot parameter passed to the panic-ed kernel.
Please take a look at Documentation/admin-guide/kdump/kdump.rst for more details about crash dumps.\\
Usage of bzImage for capturing the crash dump is recommended as one does not have to build two kernels.
Same kernel can be used as production kernel and capture kernel.
Above option should have gone away after relocatable bzImage support is introduced.
But it is present because there are users out there who continue to use vmlinux for dump capture.
This option should go away down the line.\\
Don't change this unless you know what you are doing.}
\subsubsection{Build a relocatable kernel}
\subsection{Build a relocatable kernel}
CONFIG\_RELOCATABLE [=y] \textbf{[Y]}\\
Dadurch wird ein Kernel-Image erstellt, das die Informationen über den Standortwechsel beibehält, so dass es an
einem anderen Ort als den standardmäßigen 1~MB geladen werden kann.
Die Verschiebungen machen das Kernel-Binary etwa 10~\% größer, werden aber zur Laufzeit verworfen.
einem anderen Ort als den standardmäßigen \qty{1}{\mega\byte} geladen werden kann.
Die Verschiebungen machen das Kernel-Binary etwa \qty{10}{\percent} größer,
werden aber zur Laufzeit verworfen.
Eine Anwendung ist der kexec on panic-Fall, bei dem der Wiederherstellungs-Kernel an einer anderen
physikalischen Adresse liegen muss als der primäre Kernel.
Anmerkung: Wenn CONFIG\_RELOCATABLE=y ist, dann läuft der Kernel von der Adresse aus, an der er geladen wurde,
und von der zur Kompilierzeit physische Adresse (CONFIG\_PHYSICAL\_START) als Mindeststandort verwendet.
\english{This builds a kernel image that retains relocation information so it can be loaded
someplace besides the default 1MB.\\
The relocations tend to make the kernel binary about 10\% larger, but are discarded at runtime.\\
One use is for the kexec on panic case where the recovery kernel must live at a different physical address
than the primary kernel.\\
Note: If CONFIG\_RELOCATABLE=y, then the kernel runs from the address it has been loaded at and
the compile time physical address (CONFIG\_PHYSICAL\_START) is used as the minimum location.}
\paragraph{Randomize the address of the kernel image (KASLR)}$~$\\
\subsubsection{Randomize the address of the kernel image (KASLR)}
CONFIG\_RANDOMIZE\_BASE [=y] \textbf{[Y]}\\
Zur Unterstützung der Kernel Address Space Layout Randomization (KASLR) werden
die physische Adresse, an der das Kernel-Image dekomprimiert wird, und
@@ -1053,7 +1293,7 @@ Bei 64-Bit werden die physische und die virtuelle Adresse des Kernels getrennt r
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 auchec der für Kernel-Module verfügbare Speicherplatz
Beachten Sie, dass dadurch auch der für Kernel-Module verfügbare Speicherplatz
von \qty{1.5}{\giga\byte} auf \qty{1}{\giga\byte} reduziert wird.
Bei 32-Bit werden die physischen und virtuellen Adressen des Kernels zusammen
randomisiert. Sie werden von 16~MB bis zu 512~MB randomisiert (8 Bits Entropie).\\
@@ -1066,8 +1306,26 @@ Kernel mit 2~GB-Adressierung aufgebaut ist und dass PHYSICAL\_ALIGN mindestens
Infolgedessen sind theoretisch nur 10 Bits Entropie möglich, aber die
Implementierungen sind aufgrund des Speicherlayouts noch weiter eingeschränkt.\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{In support of Kernel Address Space Layout Randomization (KASLR), this randomizes
the physical address at which the kernel image is decompressed and the virtual address where
the kernel image is mapped, as a security feature that deters exploit attempts relying on knowledge
of the location of kernel code internals.\\
On 64-bit, the kernel physical and virtual addresses are randomized separately.
The physical address will be anywhere between 16MB and the top of physical memory (up to 64TB).
The virtual address will be randomized from 16MB up to 1GB (9 bits of entropy).
Note that this also reduces the memory space available to kernel modules from 1.5GB to 1GB.\\
On 32-bit, the kernel physical and virtual addresses are randomized together.
They will be randomized from 16MB up to 512MB (8 bits of entropy).\\
Entropy is generated using the RDRAND instruction if it is supported.
If RDTSC is supported, its value is mixed into the entropy pool as well.
If neither RDRAND nor RDTSC are supported, then entropy is read from the i8254 timer.
The usable entropy is limited by the kernel being built using 2GB addressing, and that PHYSICAL\_ALIGN
must be at a minimum of 2MB. As a result, only 10 bits of entropy are theoretically possible,
but the implementations are further limited due to memory layouts.\\
If unsure, say Y.}
\subsubsection{Alignment value to which kernel should be aligned}
%3.48
\subsection{Alignment value to which kernel should be aligned}
CONFIG\_PHYSICAL\_ALIGN [=0x200000] \textbf{[0x200000]}\\
Dieser Wert legt die Ausrichtungsbeschränkungen für die physikalische Adresse fest, von der der Kernel geladen und
ausgeführt wird. Der Kernel wird für eine Adresse kompiliert, die den obigen Ausrichtungsbeschränkungen entspricht.
@@ -1081,22 +1339,55 @@ Ausrichtungsbeschränkungen. Das Endergebnis ist also, dass der Kernel von einer
die die oben genannten Ausrichtungsbeschränkungen erfüllt.
Bei 32-Bit muss dieser Wert ein Vielfaches von 0x2000 sein. Bei 64-Bit muss dieser Wert ein Vielfaches von 0x200000 sein.\\
Ändern Sie dies nicht, wenn Sie nicht wissen, was Sie tun.
\english{This value puts the alignment restrictions on physical address where kernel is loaded and run from.
Kernel is compiled for an address which meets above alignment restriction.\\
If bootloader loads the kernel at a non-aligned address and CONFIG\_RELOCATABLE is set, kernel will move
itself to nearest address aligned to above value and run from there.\\
If bootloader loads the kernel at a non-aligned address and CONFIG\_RELOCATABLE is not set,
kernel will ignore the run time load address and decompress itself to the address it has been compiled
for and run from there. The address for which kernel is compiled already meets above alignment restrictions.
Hence the end result is that kernel runs from a physical address meeting above alignment restrictions.\\
On 32-bit this value must be a multiple of 0x2000. On 64-bit this value must be a multiple of 0x200000.\\
Don't change this unless you know what you are doing.}
\subsubsection{Randomize the kernel memory sections}
\subsection{Randomize the kernel memory sections}
CONFIG\_RANDOMIZE\_MEMORY [=y] \textbf{[Y]}\\
Randomisiert die virtuelle Basisadresse von Kernel-Speicherabschnitten (physische Speicherzuordnung, vmalloc \& vmemmap).
Dieses Sicherheitsmerkmal macht Exploits, die sich auf vorhersehbare Speicherplätze verlassen, weniger zuverlässig. Die Reihenfolge der
Zuweisungen bleibt unverändert. Entropie wird auf die gleiche Weise wie bei RANDOMIZE\_BASE erzeugt. Aktuelle Implementierung
in der optimalen Konfiguration haben im Durchschnitt 30.000 verschiedene mögliche virtuelle Adressen für jeden Speicherabschnitt.\\
Wenn Sie unsicher sind, sagen Sie Y.
\english{Randomizes the base virtual address of kernel memory sections
(physical memory mapping, vmalloc \& vmemmap).
This security feature makes exploits relying on predictable memory locations less reliable.\\
The order of allocations remains unchanged. Entropy is generated in the same way as RANDOMIZE\_BASE.
Current implementation in the optimal configuration have in average 30,000 different possible virtual
addresses for each memory section.\\
If unsure, say Y.}
\subsubsection{Linear Address Masking support}
{\color{gray}
\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)}
%3.50
\subsection{Physical memory mapping padding}
CONFIG\_RANDOMIZE\_MEMORY\_PHYSICAL\_PADDING [=0xa] \textbf{[0xA]}\\
Definieren Sie die Auffüllung in Terabytes, die während der Kernel-Speicherrandomisierung zur
vorhandenen physischen Speichergröße hinzugefügt wird.
Dies ist nützlich für die Unterstützung von Speicher-Hotplug, verringert aber die für die
Adress-Randomisierung verfügbare Entropie.\\
Wenn Sie unsicher sind, belassen Sie es beim Standardwert.
\english{Define the padding in terabytes added to the existing physical
memory size during kernel memory randomization.
It is useful for memory hotplug support but reduces the entropy available for address randomization.\\
If unsure, leave at the default value.}
%3.51
\subsection{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.
@@ -1111,8 +1402,18 @@ Wenn Sie hier Y sagen, wird der Standardwert der Bootoption vdso32 von 1 auf 0 g
32-Bit vDSO vollständig deaktiviert wird. Dies umgeht zwar den Glibc-Bug, beeinträchtigt aber die Leistung.\\
Wenn Sie unsicher sind, sagen Sie N: Wenn Sie Ihren eigenen Kernel kompilieren, ist es unwahrscheinlich,
dass Sie eine fehlerhafte Version der glibc verwenden.
\english{Certain buggy versions of glibc will crash if they are presented with a 32-bit vDSO that
is not mapped at the address indicated in its segment table.\\
The bug was introduced by f866314b89d56845f55e6f365e18b31ec978ec3a and fixed\\
by 3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a and 49ad572a70b8aeb91e57483a11dd1b77e31c4468.
Glibc 2.3.3 is the only released version with the bug, but OpenSUSE~9 contains a buggy ``glibc 2.3.2''.\\
The symptom of the bug is that everything crashes on startup, saying:
dl\_main:\\Assertion \texttt{(void *) ph$->$p\_vaddr == \_rtld\_local.\_dl\_sysinfo\_dso} failed!\\
Saying Y here changes the default value of the vdso32 boot option from 1 to 0, which turns off
the 32-bit vDSO entirely. This works around the glibc bug but hurts performance.\\
If unsure, say N: if you are compiling your own kernel, you are unlikely to be using a buggy version of glibc.}
\subsubsection{vsyscall table for legacy applications () \texorpdfstring{$\rightarrow$}{->}}
\subsection{vsyscall table for legacy applications () \texorpdfstring{$\rightarrow$}{->}}
Legacy-Benutzercode, der nicht weiß, wie er den vDSO finden kann, erwartet, dass er drei Syscalls ausgeben kann,
indem er feste Adressen im Kernel-Bereich aufruft.
Da dieser Ort nicht mit ASLR randomisiert wird, kann er dazu verwendet werden, die Ausnutzung von Sicherheitslücken
@@ -1122,22 +1423,39 @@ Diese Einstellung kann zur Boot-Zeit über den Kernel-Befehlszeilenparameter
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{}.
Wenn Sie unsicher sind, wählen Sie \glqq Nur Ausführung emulieren\grqq{}.
\english{Legacy user code that does not know how to find the vDSO expects to be able to issue
three syscalls by calling fixed addresses in kernel space.
Since this location is not randomized with ASLR, it can be used to assist security vulnerability exploitation.\\
This setting can be changed at boot time via the kernel command line parameter
vsyscall=[emulate|xonly|none].
Emulate mode is deprecated and can only be enabled using the kernel command line.\\
On a system with recent enough glibc (2.14 or newer) and no static binaries, you can say None
without a performance penalty to improve security.\\
If unsure, select ``Emulate execution only''.}
\paragraph{Emulate execution only}$~$\\
\subsubsection{Emulate execution only}
CONFIG\_LEGACY\_VSYSCALL\_XONLY [=y] \textbf{[Y]}\\
Der Kernel fängt und emuliert Aufrufe in die feste vsyscall-Adresszuordnung und lässt keine Lesezugriffe zu.
Diese Konfiguration wird empfohlen, wenn der Userspace den Legacy-Vsyscall-Bereich verwenden könnte, aber keine
Unterstützung für die binäre Instrumentierung von Legacy-Code benötigt wird. Sie entschärft bestimmte Verwendungen
des vsyscall-Bereichs als Puffer zur Umgehung von ASLR.
\english{The kernel traps and emulates calls into the fixed vsyscall address mapping and does not allow reads.
This configuration is recommended when userspace might use the legacy vsyscall area
but support for legacy binary instrumentation of legacy code is not needed.
It mitigates certain uses of the vsyscall area as an ASLR-bypassing buffer.}
\paragraph{None}$~$\\
\subsubsection{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.
\english{There will be no vsyscall mapping at all.
This will eliminate any risk of ASLR bypass due to the vsyscall fixed address mapping.
Attempts to use the vsyscalls will be reported to dmesg, so that either old or
malicious userspace programs can be identified.}
\subsubsection{Built-in kernel command line}
\subsection{Built-in kernel command line}
CONFIG\_CMDLINE\_BOOL [=n] \textbf{[N]}\\
Ermöglicht die Angabe von Boot-Argumenten für den Kernel zur Erstellungszeit. Auf einigen Systemen
(z.\,B. eingebetteten [embedded]) ist es notwendig oder praktisch, einige oder alle Kernel-Boot-Argumente mit
@@ -1145,8 +1463,37 @@ dem Kernel selbst bereitzustellen (d.\,h. sich nicht darauf zu verlassen, dass d
Um Kommandozeilenargumente in den Kernel zu kompilieren, setzen Sie diese Option auf Y und geben Sie dann
die Boot-Argumente in CONFIG\_CMDLINE ein. Bei Systemen mit voll funktionsfähigen Bootloadern
(d.\,h. nicht eingebetteten) sollte diese Option auf N gesetzt bleiben.
\english{Allow for specifying boot arguments to the kernel at build time.
On some systems (e.g. embedded ones), it is necessary or convenient to provide some or all of the
kernel boot arguments with the kernel itself (that is, to not rely on the boot loader to provide them.)\\
To compile command line arguments into the kernel, set this option to 'Y', then fill in the
boot arguments in CONFIG\_CMDLINE.\\
Systems with fully functional boot loaders (i.e. non-embedded) should leave this option set to 'N'.}
\subsubsection{Enforce strict size checking for sigaltstack}
%3.54
\subsection{Enable the LDT (local descriptor table)}
CONFIG\_MODIFY\_LDT\_SYSCALL \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Linux kann es Benutzerprogrammen erlauben, mit dem Systemaufruf modify\_ldt(2)
eine prozessspezifische x86 Local Descriptor Table (LDT) zu installieren.
Dies ist erforderlich, um 16-Bit- oder segmentierten Code wie DOSEMU oder einige Wine-Programme auszuführen.
Sie wird auch von einigen sehr alten Threading-Bibliotheken verwendet.\\
Das Aktivieren dieser Funktion fügt eine kleine Menge an Overhead für Kontextwechsel hinzu und vergrößert die Angriffsfläche für den Kernel auf niedriger Ebene.
Durch die Deaktivierung wird der Systemaufruf modify\_ldt(2) entfernt.\\
Hier \glqq N\grqq{} zu sagen, kann für eingebettete oder Server-Kernel sinnvoll sein.
\english{Linux can allow user programs to install a per-process x86 Local Descriptor Table (LDT)
using the modify\_ldt(2) system call.
This is required to run 16-bit or segmented code such as DOSEMU or some Wine programs.
It is also used by some very old threading libraries.\\
Enabling this feature adds a small amount of overhead to context switches and increases
the low-level kernel attack surface.
Disabling it removes the modify\_ldt(2) system call.\\
Saying 'N' here may make sense for embedded or server kernels.}
\note{Sie können diese Option getrost ausschließen, wenn Sie ein einfacher WINE-Benutzer sind und
die meisten Ihrer Anwendungen funktionieren, ohne dass Sie etwas am Kernel ändern müssen.
Aktivieren Sie diese Option nur, wenn Sie über ein WINE-Programm gestolpert sind, das sie benötigt.}
%3.55
\subsection{Enforce strict size checking for sigaltstack}
CONFIG\_STRICT\_SIGALTSTACK\_SIZE [=n] \textbf{[N]}\\
Aus historischen Gründen ist MINSIGSTKSZ eine Konstante, die mit der AVX512-Unterstützung bereits zu klein wurde.
Fügen Sie einen Mechanismus hinzu, um die strenge Überprüfung der Sigaltstack-Größe gegen die tatsächliche Größe
@@ -1155,10 +1502,31 @@ Kernel-Kommandozeilenoption \texttt{strict\_sas\_size} unabhängig von diesem Ko
Das Aktivieren dieser Option könnte bestehende Anwendungen zerstören, die einen zu kleinen Sigaltstack zuweisen,
aber \glq funktionieren\grq{}, weil sie nie ein Signal geliefert bekommen.\\
Sagen Sie N, wenn Sie diese Prüfung nicht wirklich erzwingen wollen.
\english{For historical reasons MINSIGSTKSZ is a constant which became already too small
with AVX512 support. Add a mechanism to enforce strict checking of the sigaltstack size against the
real size of the FPU frame.
This option enables the check by default.
It can also be controlled via the kernel command line option \texttt{strict\_sas\_size}
independent of this config switch.
Enabling it might break existing applications which allocate a too small sigaltstack but
\texttt{work} because they never get a signal delivered.\\
Say 'N' unless you want to really enforce this check.}
\subsubsection{Kernel Live Patching}
%3.56
\subsection{Split Lock Detect and Bus Lock Detect support {\tiny seit 6.13}}
CONFIG\_X86\_BUS\_LOCK\_DETECT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Aktivieren der Funktionen Split Lock Detect und Bus Lock Detect.\\
Siehe $<$file:Documentation/arch/x86/buslock.rst$>$ für weitere Informationen.
\english{Enable Split Lock Detect and Bus Lock Detect functionalities.\\
See $<$file:Documentation/arch/x86/buslock.rst$>$ for more information.}
\note{Testweise schalten wir das vorerst ab.}
{\color{gray}
\subsection*{Kernel Live Patching}
CONFIG\_LIVEPATCH [=n] \textbf{[N]}\\
Geben Sie hier Y an, wenn Sie Kernel-Live-Patching unterstützen wollen. Diese Option hat keine Auswirkungen auf die
Laufzeit, bis ein Kernel-\glqq Patch\grqq{}-Modul die von dieser Option bereitgestellte Schnittstelle verwendet,
um einen Patch zu registrieren, was dazu führt, dass Aufrufe der gepatchten Funktionen auf den neuen Funktionscode
im Patch-Modul umgeleitet werden.
}

View File

@@ -1,31 +1,52 @@
%6.13
\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.
\english{Say Y here to enable options which enable mitigations for hardware vulnerabilities
(usually related to speculative execution).
Mitigations can be disabled or restricted to SMT systems at runtime via the "mitigations" kernel parameter.\\
If you say N, all mitigations will be disabled.
This CANNOT be overridden at runtime.\\
Say 'Y', unless you really know what you are doing.}
%4.1
\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.
Kernel-Adressen nicht in den Benutzerraum abgebildet werden.\\
Siehe \texttt{Documentation/arch/x86/pti.rst} für weitere Details.
\english{This feature reduces the number of hardware side channels by ensuring that
the majority of kernel addresses are not mapped into userspace.\\
See Documentation/arch/x86/pti.rst for more details.}
%4.2
\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.
\english{Compile kernel with the retpoline compiler options to guard against kernel-to-user
data leaks by avoiding speculative indirect branches.
Requires a compiler with -mindirect-branch=thunk-extern support for full protection.
The kernel may run slower.}
\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.
\english{Compile the kernel with the return-thunks compiler option to guard against
kernel-to-user data leaks by avoiding return speculation.
Requires a compiler with -mfunction-return=thunk-extern support for full protection.
The kernel may run slower.}
\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.
\english{Compile the kernel with support for the retbleed=unret mitigation.}
\note{Wird nur bei AMD-Prozessoren angezeigt.}
\subsection{Mitigate RSB underflow with call depth tracking}
CONFIG\_CALL\_DEPTH\_TRACKING [=y] \textbf{[Y]}\\
@@ -33,9 +54,17 @@ Kompiliere den Kernel mit Call-Depth-Tracking, um das Intel SKL Return-Speculati
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
Padding-Bereich und Call Patching verwendet. Dies erhöht die Textgröße um $\sim\qty{5}{\percent}$. 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.
\english{Compile the kernel with call depth tracking to mitigate the
Intel SKL Return-Stack-Buffer (RSB) underflow issue.
The mitigation is off by default and needs to be enabled on the kernel command line via the
retbleed=stuff option.
For non-affected systems the overhead of this option is marginal as the call depth tracking
is using run-time generated call thunks in a compiler generated padding area and call patching.
This increases text size by $\sim$5\%. For non affected systems this space is unused.
On affected SKL systems this results in a significant performance gain over the IBRS mitigation.}
\subsubsection{Enable call thunks and call depth tracking debugging}
CONFIG\_CALL\_THUNKS\_DEBUG [=n] \textbf{[N]}\\
@@ -43,6 +72,11 @@ Aktiviere Call/Ret-Zähler zur Erkennung von Ungleichgewichten und baue ein laut
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.
\english{Enable call/ret counters for imbalance detection and build in a noisy dmesg about
callthunks generation and call patching for trouble shooting.
The debug prints need to be enabled on the kernel command line with 'debug-callthunks'.
Only enable this when you are debugging call thunks as this creates a noticeable runtime overhead.
If unsure say N.}
\subsection{Enable IBPB on kernel entry}
CONFIG\_CPU\_IBPB\_ENTRY [=y] \textbf{[Y]}\\
@@ -52,6 +86,8 @@ Kompiliere den Kernel mit Unterstützung für die \texttt{retbleed=ibpb}-Abschw
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.
\english{Compile the kernel with support for the spectre\_v2=ibrs mitigation.
This mitigates both spectre\_v2 and retbleed at great cost to performance.}
\subsection{Mitigate speculative RAS overflow on AMD}
CONFIG\_CPU\_SRSO [=y] \textbf{[N]}\\