diff --git a/.vscode/settings.json b/.vscode/settings.json index 7e80a9c..2ff280a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1237,6 +1237,7 @@ "minidrivers", "minilzo", "minix", + "minrev", "MINSIGSTKSZ", "MIPID", "mitbringen", @@ -1903,6 +1904,7 @@ "sofern", "softing", "Softlimits", + "Softlock", "softlocking", "SOFTLOCKUP", "softwaregeschützte", @@ -2391,5 +2393,4 @@ ], "cSpell.language": "en,de-DE", "editor.renderWhitespace": "boundary" - } -} \ No newline at end of file +} diff --git a/config-6.16 b/config-6.16 index d13d0f4..2cd5064 100644 --- a/config-6.16 +++ b/config-6.16 @@ -373,7 +373,7 @@ CONFIG_PGTABLE_LEVELS=5 # CONFIG_SMP=y CONFIG_X86_X2APIC=y -CONFIG_X86_POSTED_MSI=y +# CONFIG_X86_POSTED_MSI is not set # CONFIG_X86_MPPARSE is not set CONFIG_X86_CPU_RESCTRL=y CONFIG_X86_FRED=y @@ -407,19 +407,19 @@ CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_DMI=y CONFIG_BOOT_VESA_SUPPORT=y -CONFIG_MAXSMP=y -CONFIG_NR_CPUS_RANGE_BEGIN=8192 -CONFIG_NR_CPUS_RANGE_END=8192 -CONFIG_NR_CPUS_DEFAULT=8192 -CONFIG_NR_CPUS=8192 -CONFIG_SCHED_CLUSTER=y +# CONFIG_MAXSMP is not set +CONFIG_NR_CPUS_RANGE_BEGIN=2 +CONFIG_NR_CPUS_RANGE_END=512 +CONFIG_NR_CPUS_DEFAULT=64 +CONFIG_NR_CPUS=8 +# CONFIG_SCHED_CLUSTER is not set CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y CONFIG_SCHED_MC_PRIO=y CONFIG_X86_LOCAL_APIC=y CONFIG_ACPI_MADT_WAKEUP=y CONFIG_X86_IO_APIC=y -CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set CONFIG_X86_MCE=y # CONFIG_X86_MCELOG_LEGACY is not set CONFIG_X86_MCE_INTEL=y @@ -11744,7 +11744,6 @@ CONFIG_CMA_ALIGNMENT=8 # CONFIG_DMA_MAP_BENCHMARK is not set CONFIG_SGL_ALLOC=y CONFIG_CHECK_SIGNATURE=y -CONFIG_CPUMASK_OFFSTACK=y CONFIG_CPU_RMAP=y CONFIG_DQL=y CONFIG_GLOB=y @@ -11919,6 +11918,8 @@ CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y # CONFIG_DEBUG_VIRTUAL is not set CONFIG_DEBUG_MEMORY_INIT=y # CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP=y +# CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is not set # CONFIG_MEM_ALLOC_PROFILING is not set CONFIG_HAVE_ARCH_KASAN=y CONFIG_HAVE_ARCH_KASAN_VMALLOC=y diff --git a/config-6.16.patch b/config-6.16.patch index aadbcc7..f49960a 100644 --- a/config-6.16.patch +++ b/config-6.16.patch @@ -1,5 +1,5 @@ --- ../config 2025-08-04 13:04:52.053193843 +0200 -+++ .config 2025-08-05 11:55:02.886174059 +0200 ++++ .config 2025-08-05 14:08:36.583550136 +0200 @@ -55,13 +55,13 @@ # CONFIG_KERNEL_LZ4 is not set CONFIG_KERNEL_ZSTD=y @@ -164,11 +164,13 @@ CONFIG_PGTABLE_LEVELS=5 # -@@ -387,43 +374,17 @@ +@@ -386,44 +373,18 @@ + # CONFIG_SMP=y CONFIG_X86_X2APIC=y - CONFIG_X86_POSTED_MSI=y +-CONFIG_X86_POSTED_MSI=y -CONFIG_X86_MPPARSE=y ++# CONFIG_X86_POSTED_MSI is not set +# CONFIG_X86_MPPARSE is not set CONFIG_X86_CPU_RESCTRL=y CONFIG_X86_FRED=y @@ -211,7 +213,7 @@ CONFIG_CC_HAS_MARCH_NATIVE=y # CONFIG_X86_NATIVE_CPU is not set CONFIG_X86_INTERNODE_CACHE_SHIFT=6 -@@ -436,16 +397,15 @@ +@@ -436,30 +397,29 @@ CONFIG_X86_DEBUGCTLMSR=y CONFIG_IA32_FEAT_CTL=y CONFIG_X86_VMX_FEATURE_NAMES=y @@ -231,8 +233,29 @@ CONFIG_DMI=y -# CONFIG_GART_IOMMU is not set CONFIG_BOOT_VESA_SUPPORT=y - CONFIG_MAXSMP=y - CONFIG_NR_CPUS_RANGE_BEGIN=8192 +-CONFIG_MAXSMP=y +-CONFIG_NR_CPUS_RANGE_BEGIN=8192 +-CONFIG_NR_CPUS_RANGE_END=8192 +-CONFIG_NR_CPUS_DEFAULT=8192 +-CONFIG_NR_CPUS=8192 +-CONFIG_SCHED_CLUSTER=y ++# CONFIG_MAXSMP is not set ++CONFIG_NR_CPUS_RANGE_BEGIN=2 ++CONFIG_NR_CPUS_RANGE_END=512 ++CONFIG_NR_CPUS_DEFAULT=64 ++CONFIG_NR_CPUS=8 ++# CONFIG_SCHED_CLUSTER is not set + CONFIG_SCHED_SMT=y + CONFIG_SCHED_MC=y + CONFIG_SCHED_MC_PRIO=y + CONFIG_X86_LOCAL_APIC=y + CONFIG_ACPI_MADT_WAKEUP=y + CONFIG_X86_IO_APIC=y +-CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y ++# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set + CONFIG_X86_MCE=y + # CONFIG_X86_MCELOG_LEGACY is not set + CONFIG_X86_MCE_INTEL=y @@ -473,9 +433,6 @@ CONFIG_PERF_EVENTS_INTEL_UNCORE=m CONFIG_PERF_EVENTS_INTEL_RAPL=m @@ -1749,7 +1772,15 @@ CONFIG_DMA_CMA=y # CONFIG_DMA_NUMA_CMA is not set -@@ -11930,8 +11851,10 @@ +@@ -11823,7 +11744,6 @@ + # CONFIG_DMA_MAP_BENCHMARK is not set + CONFIG_SGL_ALLOC=y + CONFIG_CHECK_SIGNATURE=y +-CONFIG_CPUMASK_OFFSTACK=y + CONFIG_CPU_RMAP=y + CONFIG_DQL=y + CONFIG_GLOB=y +@@ -11930,8 +11850,10 @@ # CONFIG_HEADERS_INSTALL is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set CONFIG_SECTION_MISMATCH_WARN_ONLY=y @@ -1760,7 +1791,16 @@ # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # end of Compile-time checks and compiler options -@@ -12008,6 +11931,7 @@ +@@ -11996,6 +11918,8 @@ + # CONFIG_DEBUG_VIRTUAL is not set + CONFIG_DEBUG_MEMORY_INIT=y + # CONFIG_DEBUG_PER_CPU_MAPS is not set ++CONFIG_ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP=y ++# CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is not set + # CONFIG_MEM_ALLOC_PROFILING is not set + CONFIG_HAVE_ARCH_KASAN=y + CONFIG_HAVE_ARCH_KASAN_VMALLOC=y +@@ -12008,6 +11932,7 @@ CONFIG_KFENCE_SAMPLE_INTERVAL=100 CONFIG_KFENCE_NUM_OBJECTS=255 CONFIG_KFENCE_DEFERRABLE=y @@ -1768,7 +1808,7 @@ CONFIG_KFENCE_STRESS_TEST_FAULTS=0 CONFIG_HAVE_ARCH_KMSAN=y # end of Memory Debugging -@@ -12022,7 +11946,6 @@ +@@ -12022,7 +11947,6 @@ CONFIG_PANIC_TIMEOUT=0 CONFIG_LOCKUP_DETECTOR=y CONFIG_SOFTLOCKUP_DETECTOR=y @@ -1776,7 +1816,7 @@ # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y CONFIG_HARDLOCKUP_DETECTOR=y -@@ -12097,7 +12020,6 @@ +@@ -12097,7 +12021,6 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60 CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 # CONFIG_RCU_CPU_STALL_CPUTIME is not set @@ -1784,7 +1824,7 @@ # CONFIG_RCU_TRACE is not set # CONFIG_RCU_EQS_DEBUG is not set # end of RCU Debugging -@@ -12282,7 +12204,6 @@ +@@ -12282,7 +12205,6 @@ # CONFIG_TEST_OBJPOOL is not set CONFIG_ARCH_USE_MEMTEST=y CONFIG_MEMTEST=y diff --git a/documentation/linux_configuration.pdf b/documentation/linux_configuration.pdf index b4154a5..371d81b 100644 --- a/documentation/linux_configuration.pdf +++ b/documentation/linux_configuration.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60fcfea6bb84e740ac7f15a5faa9a130af51e3206546d4e32b3fd829c1f57853 -size 3262838 +oid sha256:0264051eb57ab97bad5cc1f87d431774ce7da3e6fee07a1def7a0bba17e76f62 +size 841319 diff --git a/documentation/linux_configuration.tex b/documentation/linux_configuration.tex index ed74e16..330cfac 100644 --- a/documentation/linux_configuration.tex +++ b/documentation/linux_configuration.tex @@ -1,6 +1,6 @@ % % Thomas Kuschel 2023-2025 -\newcommand{\version}{V6.15} +\newcommand{\version}{V6.16} % preconditions: % install on ARCH linux: % pacman -S texlive-plaingeneric @@ -9,20 +9,22 @@ % pacman -S hyphen hyphen-de % pacman -S texlive-mathscience -%\includeonly{ - %linux_configuration_03_processor_type_and_features, +\includeonly{ + linux_configuration_01_general_setup, + linux_configuration_02_64-bit_kernel, + linux_configuration_03_processor_type_and_features, %linux_configuration_04_mitigations_for_speculative_execution_vulnerabilities, %linux_configuration_05_power_management_and_acpi_options, %linux_configuration_09_general_architecture-dependent_options, %linux_configuration_11_enable_the_block_layer, %linux_configuration_12_executable_file_formats, - %linux_configuration_13_memory_management_options, + linux_configuration_13_memory_management_options, %linux_configuration_14_networking_support, %linux_configuration_15_device_drivers, %linux_configuration_16_file_systems, %linux_configuration_17_security_options, %linux_configuration_18_cryptographic_API -%}% +}% \documentclass[10pt,a4paper]{article} %\documentclass[12pt,a4paper]{report} diff --git a/documentation/linux_configuration_01_general_setup.tex b/documentation/linux_configuration_01_general_setup.tex index 17bd85a..5c89a54 100644 --- a/documentation/linux_configuration_01_general_setup.tex +++ b/documentation/linux_configuration_01_general_setup.tex @@ -1948,7 +1948,8 @@ Wenn Sie unsicher sind, sagen Sie Y. This is a much more advanced approach than userspace attempting that.\\ If unsure, say Y.} -\subparagraph{Specify the maximum number of memory regions for the elfcorehdr}$~$\\ +% früher subparagraph +\paragraph{Specify the maximum number of memory regions for the elfcorehdr}$~$\\ CONFIG\_CRASH\_MAX\_MEMORY\_RANGES [=\num{8192}] \textbf{[8192]}\\ Für den Pfad des Systemaufrufs \texttt{kexec\_file\_load()} ist die maximale Anzahl der Speicherbereiche anzugeben, die der \texttt{elfcorehdr}"=Puffer bzw. das \texttt{elfcorehdr}"=Segment aufnehmen kann. Diese Regionen werden über \texttt{walk\_system\_ram\_res()} ermittelt, z.\,B. die \glq System RAM\grq{}-Einträge in \texttt{/proc/iomem}. diff --git a/documentation/linux_configuration_02_64-bit_kernel.tex b/documentation/linux_configuration_02_64-bit_kernel.tex index c91bbb2..495dafb 100644 --- a/documentation/linux_configuration_02_64-bit_kernel.tex +++ b/documentation/linux_configuration_02_64-bit_kernel.tex @@ -1,4 +1,5 @@ -% since Linux 6.15 +% linux_configuration_02_64-bit_kernel +% since Linux 6.16 \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\\ diff --git a/documentation/linux_configuration_03_processor_type_and_features.tex b/documentation/linux_configuration_03_processor_type_and_features.tex index e8afbcc..df6b2cf 100644 --- a/documentation/linux_configuration_03_processor_type_and_features.tex +++ b/documentation/linux_configuration_03_processor_type_and_features.tex @@ -1,4 +1,5 @@ -% since Linux 6.15 +% linux_configuration_03_processor_type_and_features +% since Linux 6.16 \section{Processor type and features \texorpdfstring{$\rightarrow$}{->}} Prozessortyp und Eigenschaften @@ -478,13 +479,27 @@ Allgemeine x86-64-CPU. Läuft gleich gut auf allen x86-64-CPUs. \english{Generic x86-64 CPU.\\ Run equally well on all x86-64 CPUs.} } -%3.13 + +%3.13 Build and optimize for local/native CPU +\subsection{Build and optimize for local/native CPU \tiny{seit 6.16}} +CONFIG\_X86\_NATIVE\_CPU \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\ +Optimieren Sie das Kompilieren des Kernels für die aktuelle CPU. +Verwenden Sie diese Option, wenn Sie den Kernel für Ihren lokalen Rechner erstellen möchten. + +Beachten Sie, dass ein solcher Kernel auf einem anderen x86"=Rechner möglicherweise nicht optimal funktioniert. +Wenn Sie sich nicht sicher sind, geben Sie N ein. +\english{Optimize for the current CPU used to compile the kernel. +Use this option if you intend to build the kernel for your local machine.\\ +Note that such a kernel might not work optimally on a different x86 machine. +If unsure, say N.} + +%3.14 \subsection{Supported processor vendors \texorpdfstring{$\rightarrow$}{->}} CONFIG\_SELECT \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\ Damit können Sie auswählen, welchen x86-Hersteller-Support-Code Ihr Kernel enthalten soll. \english{This lets you choose what x86 vendor support code your kernel will include.} -%3.14 former 3.14.1 +%3.15 former 3.14.1 \subsection{Support Intel processors} CONFIG\_CPU\_SUP\_INTEL \colorbox{green!80}{[=y] \textbf{[Y]}}\\ Dies aktiviert die Erkennung, die Einstellungen und die Macken für Intel-Prozessoren\\ @@ -498,7 +513,7 @@ Disabling this option on other types of CPUs makes the kernel a tiny bit smaller Disabling it on an Intel CPU might render the kernel unbootable.\\ If unsure, say N.} -%3.15 former 3.14.2 +%3.16 former 3.14.2 \subsection{Support AMD processors} CONFIG\_CPU\_SUP\_AMD \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ Dies ermöglicht die Erkennung, Abstimmung und Macken von AMD-Prozessoren.\\ @@ -513,7 +528,7 @@ Disabling it on an AMD CPU might render the kernel unbootable.\\ If unsure, say N.} \note{Sie müssen zuerst den untenstehenden \glqq Support Hygon processor\grqq{} deaktivieren, um diese Einstellung zu tätigen.} -%3.16 former 3.14.3 +%3.17 former 3.14.3 \subsection{Support Hygon processors} CONFIG\_CPU\_SUP\_HYGON \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ Dies ermöglicht die Erkennung, Abstimmung und Macken von Hygon-Prozessoren.\\ @@ -526,7 +541,8 @@ You need this enabled if you want your kernel to run on an Hygon CPU. Disabling this option on other types of CPUs makes the kernel a tiny bit smaller. Disabling it on an Hygon CPU might render the kernel unbootable.\\ If unsure, say N.} -%3.17 former 3.14.4 + +%3.18 former 3.14.4 \subsection{Support Centaur processors} CONFIG\_CPU\_SUP\_CENTAUR \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ Dies ermöglicht die Erkennung, Abstimmung und Macken von Centaur-Prozessoren.\\ @@ -540,7 +556,7 @@ Disabling this option on other types of CPUs makes the kernel a tiny bit smaller Disabling it on a Centaur CPU might render the kernel unbootable.\\ If unsure, say N.} -%3.18 former 3.14.5 +%3.19 former 3.14.5 \subsection{Support Zhaoxin processors} CONFIG\_CPU\_SUP\_ZHAOXIN \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ Dies ermöglicht die Erkennung, Abstimmung und Macken von Zhaoxin-Prozessoren.\\ @@ -554,7 +570,7 @@ Disabling this option on other types of CPUs makes the kernel a tiny bit smaller Disabling it on a Zhaoxin CPU might render the kernel unbootable.\\ If unsure, say N.} -%3.19 +%3.20 \subsection{Enable DMI scanning} CONFIG\_DMI [=y] \textbf{[Y]}\\ Aktiviert das Scannen von DMI zur Erkennung von Gerätefehlern. @@ -564,11 +580,11 @@ Erforderlich für PNP-BIOS-Code. Say Y here unless you have verified that your setup is not affected by entries in the DMI blacklist. Required by PNP BIOS code.} -%3.20 +%3.21 \subsection{Old AMD GART IOMMU support} CONFIG\_GART\_IOMMU [=n] \textbf{[N]}\\ Bietet einen Treiber für ältere AMD Athlon64/Opteron/Turion/Sempron GART basierte Hardware \mbox{IOMMUs} an. -Der GART unterstützt vollen DMA-Zugriff für Geräte mit 32-Bit"=Zugriffsbeschränkungen auf Systemen mit mehr als \qty{3}{\giga\byte}. +Der GART unterstützt vollen DMA-Zugriff für Geräte mit 32-Bit"=Zugriffsbeschränkungen auf Systemen mit mehr als \qty{3}{\giga\byte}. Dies wird normalerweise für USB, Sound, viele IDE/SATA-Chipsätze und einige andere Geräte benötigt. Neuere Systeme haben in der Regel eine moderne AMD IOMMU, die über die Konfigurationsoption CONFIG\_AMD\_IOMMU=y unterstützt wird. In normalen Konfigurationen ist dieser Treiber nur aktiv, wenn er benötigt wird: @@ -583,7 +599,7 @@ there's more than 3~GB of memory and the system contains a 32-bit limited device If unsure, say Y.} \note{Dies ist nur sichtbar, wenn Support AMD processorts eingeschaltet ist.} -%3.21 +%3.22 \subsection{Enable Maximum number of SMP Processors and NUMA Nodes} CONFIG\_MAXSMP \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ Aktivieren der maximalen Anzahl von CPUs- und NUMA"=Knoten für diese Architektur.\\ @@ -591,7 +607,7 @@ Wenn Sie unsicher sind, sagen Sie N. \english{Enable maximum number of CPUS and NUMA Nodes for this architecture.\\ If unsure, say N.} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ?? +%3.23 Maximum number of CPUs \subsection{Maximum number of CPUs} CONFIG\_NR\_CPUS \colorbox{yellow!80}{[=320] \textbf{[8]}}\\ Hier können Sie die maximale Anzahl von CPUs angeben, die dieser Kernel unterstützen soll. @@ -603,21 +619,19 @@ If CPUMASK\_OFFSTACK is enabled, the maximum supported value is 8192, otherwise The minimum value which makes sense is 2.\\ This is purely to save memory: each supported CPU adds about 8KB to the kernel image.} +%3.24 Cluster scheduler support \subsection{Cluster scheduler support} CONFIG\_SCHED\_CLUSTER \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ -Die Unterstützung des Cluster-Schedulers verbessert die Entscheidungsfindung des CPU-Schedulers -beim Umgang mit Maschinen, die Cluster von CPUs haben. Mit Cluster sind in der Regel mehrere CPUs -gemeint, die eng beieinander liegen und sich Mid-Level-Caches, Last-Level-Cache-Tags oder interne -Busse teilen. +Die Unterstützung des Cluster-Schedulers verbessert die Entscheidungsfindung des CPU-Schedulers beim Umgang mit Maschinen, die Cluster von CPUs haben. +Mit Cluster sind in der Regel mehrere CPUs gemeint, die eng beieinander liegen und sich Mid-Level-Caches, Last-Level-Cache-Tags oder interne Busse teilen. \english{Cluster scheduler support improves the CPU scheduler's decision making when dealing with machines that have clusters of CPUs. Cluster usually means a couple of CPUs which are placed closely by sharing mid-level caches, last-level cache tags or internal busses.} \note{Da wir normalerweise keinen Cluster haben, hier N.} -%3.20 +%3.25 Multi-core scheduler support \subsection{Multi-core scheduler support} CONFIG\_SCHED\_MC [=y] \textbf{[Y]}\\ -Die Unterstützung des Multi-Core-Schedulers verbessert die Entscheidungsfindung des CPU-Schedulers -beim Umgang mit Multi-Core-CPU-Chips auf Kosten eines leicht erhöhten Overheads an einigen Stellen.\\ +Die Unterstützung des Multi-Core-Schedulers verbessert die Entscheidungsfindung des CPU-Schedulers beim Umgang mit Multi-Core-CPU-Chips auf Kosten eines leicht erhöhten Overheads an einigen Stellen.\\ Wenn Sie unsicher sind, geben Sie hier N an. \english{Multi-core scheduler support improves the CPU scheduler's decision making when dealing with multi-core CPU chips at a cost of slightly increased overhead in some places. @@ -626,44 +640,31 @@ If unsure say N here.} \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.\\ +Bei CPUs mit Intel Turbo-Boost-Max-Technik 3.0 wird die Reihenfolge der Kerne bei der Herstellung festgelegt, so dass bestimmte Kerne höhere Turbofrequenzen erreichen können (bei Single-Thread-Arbeitslasten) als andere. +Durch die Aktivierung dieser Kernel"=Funktion wird der Scheduler über die TBM3- (auch ITMT-) Prioritätsreihenfolge der CPU-Kerne informiert und passt die CPU-Auswahllogik des Schedulers entsprechend an, so dass eine höhere Gesamtsystemleistung erzielt werden kann. +Diese Funktion hat keine Auswirkungen auf CPUs ohne diese Funktion.\\ Wenn Sie unsicher sind, geben Sie hier Y an. -\english{Intel Turbo Boost Max Technology 3.0 enabled CPUs have a core ordering determined at -manufacturing time, which allows certain cores to reach higher turbo frequencies -(when running single threaded workloads) than others.\\ -Enabling this kernel feature teaches the scheduler about the TBM3 (aka ITMT) priority order of -the CPU cores and adjusts the scheduler's CPU selection logic accordingly, so that higher -overall system performance can be achieved.\\ +\english{Intel Turbo Boost Max Technology 3.0 enabled CPUs have a core ordering determined at manufacturing time, which allows certain cores to reach higher turbo frequencies (when running single threaded workloads) than others.\\ +Enabling this kernel feature teaches the scheduler about the TBM3 (aka ITMT) priority order of the CPU cores and adjusts the scheduler's CPU selection logic accordingly, so that higher overall system performance can be achieved.\\ This feature will have no effect on CPUs without this feature.\\ If unsure say Y here.} +% 3.26 Reroute for broken boot IRQs \subsection{Reroute for broken boot IRQs} CONFIG\_X86\_REROUTE\_FOR\_BROKEN\_BOOT\_IRQS \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ Diese Option ermöglicht eine Umgehung, die eine Quelle für unerwünschte Unterbrechungen behebt. -Dies wird empfohlen, wenn die Thread-Interrupt-Behandlung auf Systemen verwendet wird, bei denen -die Erzeugung von überflüssigen \glqq Boot-Interrupts\grqq{} nicht deaktiviert werden kann. -Einige Chipsätze erzeugen einen Legacy-INTx-\glqq Boot-IRQ\grqq{}, wenn der IRQ-Eintrag im -IO-APIC des Chipsatzes maskiert ist (wie es z.\,B. der RT-Kernel während der Interruptbehandlung -tut). Bei Chipsätzen, bei denen diese Boot-IRQ-Erzeugung nicht deaktiviert werden kann, wird -durch diese Abhilfe die ursprüngliche IRQ-Leitung maskiert, so dass nur der entsprechende -\glqq Boot-IRQ\grqq{} an die CPUs geliefert wird. Die Problemumgehung weist den Kernel außerdem -an, den IRQ-Handler auf der Boot-IRQ-Leitung einzurichten. Auf diese Weise wird nur ein Interrupt -an den Kernel geliefert. Andernfalls kann der zweite Interrupt den Kernel dazu veranlassen, -(lebenswichtige) Interrupt-Leitungen herunterzufahren. Betrifft nur -\glqq defekte\grqq{} Chipsätze. Die gemeinsame Nutzung von Interrupts kann auf diesen Systemen -erhöht werden. +Dies wird empfohlen, wenn die Thread-Interrupt-Behandlung auf Systemen verwendet wird, bei denen die Erzeugung von überflüssigen \glqq Boot-Interrupts\grqq{} nicht deaktiviert werden kann. +Einige Chipsätze erzeugen einen Legacy-INTx-\glqq Boot-IRQ\grqq{}, wenn der IRQ-Eintrag im IO-APIC des Chipsatzes maskiert ist (wie es z.\,B. der RT-Kernel während der Interruptbehandlung tut). +Bei Chipsätzen, bei denen diese Boot-IRQ-Erzeugung nicht deaktiviert werden kann, wird durch diese Abhilfe die ursprüngliche IRQ-Leitung maskiert, so dass nur der entsprechende \glqq Boot-IRQ\grqq{} an die CPUs geliefert wird. +Die Problemumgehung weist den Kernel außerdem an, den IRQ-Handler auf der Boot-IRQ-Leitung einzurichten. +Auf diese Weise wird nur ein Interrupt an den Kernel geliefert. +Andernfalls kann der zweite Interrupt den Kernel dazu veranlassen, (lebenswichtige) Interrupt-Leitungen herunterzufahren. +Betrifft nur \glqq defekte\grqq{} Chipsätze. +Die gemeinsame Nutzung von Interrupts kann auf diesen Systemen erhöht werden. \english{This option enables a workaround that fixes a source of spurious interrupts. -This is recommended when threaded interrupt handling is used on systems where the generation -of superfluous ``boot interrupts'' cannot be disabled.\\ -Some chipsets generate a legacy INTx ``boot IRQ'' when the IRQ entry in the chipset's IO-APIC -is masked (as, e.g. the RT kernel does during interrupt handling). -On chipsets where this boot IRQ generation cannot be disabled, this workaround keeps the -original IRQ line masked so that only the equivalent ``boot IRQ'' is delivered to the CPUs. +This is recommended when threaded interrupt handling is used on systems where the generation of superfluous ``boot interrupts'' cannot be disabled.\\ +Some chipsets generate a legacy INTx ``boot IRQ'' when the IRQ entry in the chipset's IO-APIC is masked (as, e.g. the RT kernel does during interrupt handling). +On chipsets where this boot IRQ generation cannot be disabled, this workaround keeps the original IRQ line masked so that only the equivalent ``boot IRQ'' is delivered to the CPUs. The workaround also tells the kernel to set up the IRQ handler on the boot IRQ line. In this way only one interrupt is delivered to the kernel. Otherwise the spurious second interrupt may cause the kernel to bring down (vital) interrupt lines.\\ @@ -672,81 +673,72 @@ Only affects ``broken'' chipsets. Interrupt sharing may be increased on these sy \texttt{irq X: nobody cared (try booting with \dq irqpoll\dq{} option)}\\ -- Abfrage mit: \texttt{sudo journalctl -b | grep cared}} -%3.22 +%3.27 \subsection{Machine Check / overheating reporting} CONFIG\_X86\_MCE [=y] \textbf{[Y]}\\ (Maschinenprüfung / Überhitzungsmeldung) -Durch die Unterstützung von Machine Check kann der Prozessor den Kernel benachrichtigen, -wenn er ein Problem feststellt (z.\,B. Überhitzung, Datenbeschädigung). Welche Maßnahmen der -Kernel ergreift, hängt von der Schwere des Problems ab und reicht von Warnmeldungen bis -zum Anhalten des Rechners. -\english{Machine Check support allows the processor to notify the kernel if it detects a problem -(e.g. overheating, data corruption). -The action the kernel takes depends on the severity of the problem, ranging from warning messages -to halting the machine.} +Durch die Unterstützung von Machine Check kann der Prozessor den Kernel benachrichtigen, wenn er ein Problem feststellt (z.\,B. Überhitzung, Datenbeschädigung). +Welche Maßnahmen der Kernel ergreift, hängt von der Schwere des Problems ab und reicht von Warnmeldungen bis zum Anhalten des Rechners. +\english{Machine Check support allows the processor to notify the kernel if it detects a problem (e.g. overheating, data corruption). +The action the kernel takes depends on the severity of the problem, ranging from warning messages to halting the machine.} \note{Sollte eingeschaltet sein, ansonsten könnte der Prozessor bei Überhitzung Schaden nehmen.} \subsubsection{Support for deprecated /dev/mcelog character device} CONFIG\_X86\_MCELOG\_LEGACY [=n] \textbf{[N]}\\ -Aktivierung der Unterstützung für /dev/mcelog, die vom alten mcelog-Benutzerraum-Logging-Daemon -(mcelog userspace logging daemon) benötigt wird. Erwägen Sie den Umstieg auf die neue -Generation des rasdaemon. +Aktivierung der Unterstützung für /dev/mcelog, die vom alten mcelog-Benutzerraum-Logging-Daemon(mcelog userspace logging daemon) benötigt wird. +Erwägen Sie den Umstieg auf die neue Generation des rasdaemon. \english{Enable support for /dev/mcelog which is needed by the old mcelog userspace logging daemon. Consider switching to the new generation rasdaemon solution.} \subsubsection{Intel MCE features} CONFIG\_X86\_MCE\_INTEL [=y] \textbf{[Y]}\\ -Zusätzliche Unterstützung für Intel-spezifische MCE-Funktionen wie den -Temperaturmonitor (thermal monitor). +Zusätzliche Unterstützung für Intel-spezifische MCE-Funktionen wie den Temperaturmonitor (thermal monitor). \english{Additional support for intel specific MCE features such as the thermal monitor.} \note{Einschalten für Intel-CPUs} \subsubsection{AMD MCE features} CONFIG\_X86\_MCE\_AMD \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ -Zusätzliche Unterstützung für AMD-spezifische MCE-Funktionen wie den -DRAM-Fehlerschwellenwert (DRAM Error Threshold). +Zusätzliche Unterstützung für AMD-spezifische MCE-Funktionen wie den DRAM-Fehlerschwellenwert (DRAM Error Threshold). \english{Additional support for AMD specific MCE features such as the DRAM Error Threshold.} \note{Einschalten für AMD-CPUs, da wir eine Intel-CPU haben, N.} -%3.23 +%3.28 \subsection{Machine check injector support} CONFIG\_X86\_MCE\_INJECT \colorbox{yellow!80}{[=m] \textbf{[N]}}\\ -Unterstützung bei der Einspeisung von Maschinenprüfungen zu Testzwecken. Wenn Sie nicht wissen, -was eine Maschinenprüfung ist und Sie keine Kernel-Qualitätssicherung durchführen, können Sie -mit Sicherheit N sagen, also nein. +Unterstützung bei der Einspeisung von Maschinenprüfungen zu Testzwecken. +Wenn Sie nicht wissen, was eine Maschinenprüfung ist und Sie keine Kernel-Qualitätssicherung durchführen, können Sie mit Sicherheit N sagen, also nein. \english{Provide support for injecting machine checks for testing purposes. If you don't know what a machine check is and you don't do kernel QA it is safe to say n.} \note{Das ist nur für Entwickler interessant, wir können anstatt ein Modul zu generieren N für Nein sagen.} -%3.24 +%3.29 \subsection{Performance monitoring \texorpdfstring{$\rightarrow$}{->}} \textit{Leistungsüberwachung} -%3.24.1 +%3.29.1 \subsubsection{Intel uncore performance events} CONFIG\_PERF\_EVENTS\_INTEL\_UNCORE \colorbox{yellow!80}{[=m] \textbf{[N]}}\\ -Unterstützung für Intel-Uncore"=Leistungsereignisse. Diese sind auf NehalemEX -und moderneren Prozessoren verfügbar. +Unterstützung für Intel-Uncore"=Leistungsereignisse. +Diese sind auf NehalemEX und moderneren Prozessoren verfügbar. \english{Include support for Intel uncore performance events. These are available on NehalemEX and more modern processors.} \note{Das war auf [m] für Modul-Kompilat eingestellt, wir kümmern uns nicht darum und wählen N für ein Nein.} +%3.29.2 \subsubsection{Intel/AMD rapl performance events} CONFIG\_PERF\_EVENTS\_INTEL\_RAPL \colorbox{yellow!80}{[=m] \textbf{[N]}}\\ -Unterstützung für Intel- und AMD-RAPL"=Leistungsereignisse zur -Leistungsüberwachung auf modernen Prozessoren. +Unterstützung für Intel- und AMD-RAPL"=Leistungsereignisse zur Leistungsüberwachung auf modernen Prozessoren. \english{Include support for Intel and AMD rapl performance events for power monitoring on modern processors.} \note{Das war auf [m] für Modul-Kompilat eingestellt, wir kümmern uns nicht darum und wählen N für ein Nein.} - +%3.29.3 \subsubsection{Intel cstate performance events} CONFIG\_PERF\_EVENTS\_INTEL\_CSTATE \colorbox{yellow!80}{[=m] \textbf{[N]}}\\ -Einbeziehung der Unterstützung für Intel cstate performance events für die -Leistungsüberwachung auf modernen Prozessoren. +Einbeziehung der Unterstützung für Intel cstate performance events für die Leistungsüberwachung auf modernen Prozessoren. \english{Include support for Intel cstate performance events for power monitoring on modern processors.} \note{Das war auf [m] für Modul-Kompilat eingestellt, wir kümmern uns nicht darum und wählen N für ein Nein.} - +%3.29.4 \subsubsection{AMD Processor Power Reporting Mechanism} CONFIG\_PERF\_EVENTS\_AMD\_POWER [=m] \textbf{[M]}\\ Unterstützung von Stromversorgungsberichten für AMD-Prozessoren.\\ @@ -754,22 +746,21 @@ Derzeit wird die Schnittstelle X86\_FEATURE\_ACC\_POWER (CPUID Fn8000\_0007\_EDX \english{Provide power reporting mechanism support for AMD processors.\\ Currently, it leverages X86\_FEATURE\_ACC\_POWER (CPUID Fn8000\_0007\_EDX[12]) interface to calculate the average power consumption on Family 15h processors.} +%3.29.5 \subsubsection{AMD Uncore performance events} CONFIG\_PERF\_EVENTS\_AMD\_UNCORE [=m] \textbf{[M]}\\ -Unterstützung für AMD-Uncore-Leistungsereignisse für die Verwendung mit z.\,B.\\ -\texttt{perf stat -e amd\_l3/\dots/,amd\_df/\dots/}.\\ -Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: -Das Modul wird \texttt{amd-uncore} genannt. +Unterstützung für AMD-Uncore-Leistungsereignisse für die Verwendung mit z.\,B.\\ \texttt{perf stat -e amd\_l3/\dots/,amd\_df/\dots/}.\\ +Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{amd-uncore} genannt. \english{Include support for AMD uncore performance events for use with e.g., perf stat -e amd\_l3/.../,amd\_df/.../.\\ To compile this driver as a module, choose M here: the module will be called `amd-uncore'.} +%3.29.6 \subsubsection{AMD Zen3 Branch Sampling support} CONFIG\_PERF\_EVENTS\_AMD\_BRS [=y] \textbf{[Y]}\\ -Aktivieren Sie die AMD Zen3 Branch Sampling-Unterstützung (BRS), die bis zu 16 aufeinanderfolgende -Verzweigungen in Registern erfasst. +Aktivieren Sie die AMD Zen3 Branch Sampling-Unterstützung (BRS), die bis zu 16 aufeinanderfolgende Verzweigungen in Registern erfasst. \english{Enable AMD Zen3 branch sampling support (BRS) which samples up to 16~consecutive taken branches in registers.} -%3.25 +%3.30 Enable support for 16-bit segments \subsection{Enable support for 16-bit segments} CONFIG\_X86\_16BIT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ Diese Option wird von Programmen wie Wine benötigt, um 16-Bit-Legacy-Code im geschützten Modus auf x86-Prozessoren auszuführen. @@ -778,7 +769,7 @@ Die Deaktivierung dieser Option spart etwa 300 Bytes auf i386, oder etwa 6K Text Disabling this option saves about 300 bytes on i386, or around 6K text plus 16K runtime memory on x86-64,} \note{Selbst benötige ich keine 16-bit Windows-Programme (Spiele) mehr, deshalb N für Nein.} -%3.26 +%3.31 Enable vsyscall emulation \subsection{Enable vsyscall emulation} CONFIG\_X86\_VSYSCALL\_EMULATION \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ Dies aktiviert die Emulation der alten vsyscall-Seite. @@ -792,7 +783,7 @@ With this option set to N, offending programs will just segfault, citing address This option is required by many programs built before 2013, and care should be used even with newer programs if set to N.\\ Disabling this option saves about 7K of kernel size and possibly 4K of additional runtime pagetable memory.} -%3.27 +%3.32 IOPERM and IOPL Emulation \subsection{IOPERM and IOPL Emulation} CONFIG\_X86\_IOPL\_IOPERM [=y] \textbf{[Y]}\\ Dies ermöglicht die ioperm()- und iopl()-Systemaufrufe, die für Legacy-Anwendungen erforderlich sind. @@ -805,29 +796,30 @@ To gain this access the caller needs CAP\_SYS\_RAWIO capabilities and permission 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 +%3.33 \subsection{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. +Das späte Laden von Mikrocode, wenn das System hochgefahren ist und Befehle ausführt, ist eine heikle Angelegenheit und sollte nach Möglichkeit vermieden werden. +Allein schon die Synchronisierung aller Kerne und SMT-Threads ist ein heikler Vorgang, der nicht garantiert, dass die Kerne nach dem Laden nicht in einen Softlock geraten. +Verwenden Sie diese Funktion daher auf eigene Gefahr. Das späte Laden beeinträchtigt den Kernel, es sei denn, der Mikrocode-Header gibt an, dass das späte Laden durch die minimale Revisionsprüfung sicher ist. +Diese minimale Revisionsprüfung kann in der Kernel-Befehlszeile mit \glqq microcode.minrev=Y\grqq{} erzwungen werden. \english{Loading microcode late, when the system is up and executing instructions is a tricky business and should be avoided if possible. Just the sequence of synchronizing all cores and SMT threads is one fragile dance which does not guarantee that cores might not softlock after the loading. Therefore, use this at your own risk. Late loading taints the kernel unless the microcode header indicates that it is safe for late loading via the minimal revision check. This minimal revision check can be enforced on the kernel command line with ``microcode.minrev=Y''.} -%3.29 -\subsection{/dev/cpu/*/msr - Model-specific register support} +%3.34 +\subsection{/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}. +Dieses Gerät ermöglicht privilegierten Prozessen Zugriff auf die modellspezifischen x86-Register (MSRs).\\ +Es handelt sich um ein Zeichengerät mit Major 202 und Minors 0 bis 31 für \texttt{/dev/cpu/0/msr} bis \texttt{/dev/cpu/31/msr}. MSR-Zugriffe sind bei Multiprozessorsystemen an eine bestimmte CPU gerichtet. \english{This device gives privileged processes access to the x86 Model-Specific Registers (MSRs). It is a character device with major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr. MSR accesses are directed to a specific CPU on multi-processor systems.} -%3.30 +%3.35 \subsection{/dev/cpu/*/cpuid - CPU information support} CONFIG\_X86\_CPUID [=y] \textbf{[Y]}\\ Dieses Gerät ermöglicht Prozessen den Zugriff auf den x86 CPUID-Befehl, der auf einem bestimmten Prozessor ausgeführt werden soll. @@ -835,8 +827,9 @@ Es handelt sich um ein Zeichengerät mit Major 203 und Minors 0 bis 31 für \tex \english{This device gives processes access to the x86 CPUID instruction to be executed on a specific processor. It is a character device with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to /dev/cpu/31/cpuid.} -%3.31 -\subsection{Enable 5-level page tables support} +%former 3.36 +{\color{gray} +\subsection*{Enable 5-level page tables support \tiny{bis 6.15}} CONFIG\_X86\_5LEVEL \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ 5-Level-Paging ermöglicht den Zugriff auf einen größeren Adressraum: bis zu \qty{128}{\pebi\byte} virtueller Adressraum und \qty{4}{\pebi\byte} physikalischer Adressraum. Es wird von zukünftigen Intel-CPUs unterstützt werden. @@ -848,19 +841,17 @@ It will be supported by future Intel CPUs.\\ A kernel with the option enabled can be booted on machines that support 4- or 5-level paging.\\ See Documentation/arch/x86/x86\_64/5level-paging.rst for more information.\\ Say N if unsure.} -\note{Wir verwenden keine so großen Maschinen, also N. 4-Level mit \qty{256}{\tebi\byte} ist momentan ausreichend.} +\note{Wir verwenden keine so großen Maschinen, also N. 4-Level mit \qty{256}{\tebi\byte} ist momentan ausreichend. Der Linux-Kernel 6.16 führt die bedingungslose Aktivierung von fünfstufigen Seitentabellen ein.} +} -%3.32 +%3.36 Enable statistic for Change Page Attribute \subsection{Enable statistic for Change Page Attribute} CONFIG\_X86\_CPA\_STATISTICS \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ -Statistiken ü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.} +Statistiken zum Mechanismus \glqq Ändern von Seitenattributen\grqq{} anzeigen, mit dessen Hilfe die Wirksamkeit der Beibehaltung großer und umfangreicher Seitenzuordnungen bei Änderung der Zuordnungsschutzfunktionen ermittelt werden kann. +\english{Expose statistics about the Change Page Attribute mechanism, which helps to determine the effectiveness of preserving large and huge page mappings when mapping protections are changed.} \note{Das ist ein Entwicklerwerkzeug, das wir nicht benötigen, deshalb N.} -%3.33 +%3.37 \subsection{AMD Secure Memory Encryption (SME) support} CONFIG\_AMD\_MEM\_ENCRYPT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ Sagen Sie Ja, um die Unterstützung für die Verschlüsselung des Systemspeichers zu aktivieren. @@ -868,36 +859,38 @@ Dies erfordert einen AMD-Prozessor, der Secure Memory Encryption (SME) unterstü \english{Say yes to enable support for the encryption of system memory. This requires an AMD processor that supports Secure Memory Encryption (SME).} -\subsubsection{Activate AMD Secure Memory Encryption (SME) by default} +{\color{gray} +\subsubsection*{Activate AMD Secure Memory Encryption (SME) by default \tiny{bis 6.8}} CONFIG\_AMD\_MEM\_ENCRYPT\_ACTIVE\_BY\_DEFAULT [=n] \textbf{[N]}\\ -Sagen Sie Ja, damit der Systemspeicher standardmäßig verschlüsselt wird, wenn er auf einem -AMD"=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. +Sagen Sie Ja, damit der Systemspeicher standardmäßig verschlüsselt wird, wenn er auf einem AMD"=Prozessor läuft, der Secure Memory Encryption (SME) unterstützt. +Wenn Sie Y wählen, kann die Verschlüsselung des Systemspeichers mit der Befehlszeilenoption \texttt{mem\_encrypt=off} deaktiviert werden. +Ist der Wert auf N gesetzt, kann die Verschlüsselung des Systemspeichers mit der Befehlszeilenoption \texttt{mem\_encrypt=on} aktiviert werden. +\english{Say yes to have system memory encrypted by default if running on an AMD processor that supports Secure Memory Encryption (SME). +If set to Y, then the encryption of system memory can be deactivated with the mem\_encrypt=off command line option. +If set to N, then the encryption of system memory can be activated with the mem\_encrypt=on command line option.} +} -%3.34 +%3.38 \subsection{NUMA Memory Allocation and Scheduler Support} CONFIG\_NUMA \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ -Aktivieren Sie die NUMA-Unterstützung (Non-Uniform Memory Access). Der Kernel wird versuchen, den -von einer CPU verwendeten Speicher dem lokalen Speicher-Controller der CPU zuzuweisen und dem Kernel -mehr Kenntnis über NUMA zu geben.\\ -Für 64-Bit wird dies empfohlen, wenn das System Intel Core i7 (oder höher), -AMD Opteron oder EM64T NUMA ist.\\ +Aktivieren Sie die NUMA-Unterstützung (Non-Uniform Memory Access). +Der Kernel wird versuchen, den von einer CPU verwendeten Speicher dem lokalen Speicher-Controller der CPU zuzuweisen und dem Kernel mehr Kenntnis über NUMA zu geben.\\ +Für 64-Bit wird dies empfohlen, wenn das System Intel Core i7 (oder höher), AMD Opteron oder EM64T NUMA ist.\\ Für 32-Bit ist dies nur erforderlich, wenn Sie einen 32-Bit-Kernel auf einer 64-Bit-NUMA-Plattform booten. Andernfalls sollten Sie N angeben. +\english{Enable NUMA (Non-Uniform Memory Access) support. +The kernel will try to allocate memory used by a CPU on the local memory controller of the CPU and add some more NUMA awareness to the kernel. +For 64-bit this is recommended if the system is Intel Core i7 (or later), AMD Opteron, or EM64T NUMA. +Otherwise, you should say N.} \note{Nur erforderlich, wenn man ein System mit mehr als einem Sockel (CPUs) betreibt. -Wir setzen Laptops ein, deshalb ein N möglich. -} +Wir setzen Laptops ein, deshalb ist ein N möglich.} \subsubsection{Old style AMD Opteron NUMA detection} CONFIG\_AMD\_NUMA [=y] \textbf{[N]}\\ -Aktivieren Sie die Erkennung der AMD NUMA-Knoten-Topologie. Wenn Sie ein AMD-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. +Aktivieren Sie die Erkennung der AMD NUMA"=Knoten-Topologie. +Wenn Sie ein AMD-Multiprozessorsystem haben, sollten Sie hier Y angeben. +Dies verwendet eine alte Methode, um die NUMA-Konfiguration direkt von der eingebauten Northbridge des Opteron zu lesen.\\ +Es wird empfohlen, stattdessen X86\_64\_ACPI\_NUMA zu verwenden, das auch Priorität hat, wenn beide einkompiliert sind. \english{Enable AMD NUMA node topology detection. You should say Y here if you have a multi processor AMD system. This uses an old method to read the NUMA configuration directly from the builtin Northbridge of Opteron. @@ -905,21 +898,29 @@ It is recommended to use X86\_64\_ACPI\_NUMA instead, which also takes priority \subsubsection{ACPI NUMA detection} CONFIG\_X86\_64\_ACOU\_NUMA [=y] \textbf{[Y]}\\ -Aktivieren Sie die auf ACPI SRAT basierende Knoten-Topologie-Erkennung. +Aktivieren Sie die ACPI-SRAT-basierte Erkennung der Knotentopologie. \english{Enable ACPI SRAT based node topology detection.} -\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. +%moved to Memory Management options - linux_configuration_13_memory management_options +% \paragraph{NUMA emulation}$~$\\ +% CONFIG\_NUMA\_EMU [=n] \textbf{[N]}\\ +% Aktivieren Sie die NUMA-Emulation. Eine flache Maschine wird in virtuelle Knoten aufgeteilt, wenn sie mit +% \texttt{numa=fake=N} gebootet wird, wobei N die Anzahl der Knoten ist. +% Dies ist nur für die Fehlersuche nützlich. +% \english{Enable NUMA emulation. +% A flat machine will be split into virtual nodes when booted with "numa=fake=N", where N is the number of nodes. +% This is only useful for debugging.} -\paragraph{Maximum NUMA Nodes (as a power of 2)}$~$\\ -CONFIG\_NODES\_SHIFT [=5] \textbf{[5]}\\ +\subsubsection{Maximum NUMA Nodes (as a power of 2)} +CONFIG\_NODES\_SHIFT \colorbox{yellow!80}{[=10] \textbf{[6]}}\\ (Maximale NUMA-Knoten (als eine Potenz von 2))\\ Geben Sie die maximale Anzahl der auf dem Zielsystem verfügbaren NUMA-Knoten an. Erhöht den reservierten Speicherplatz für verschiedene Tabellen. +\english{Specify the maximum number of NUMA Nodes available on the target system. +Increases memory reserved to accommodate various tables.} +\note{Wenn MAXSMP definiert ist, dann wird default=10, bei X86\_64 default=6, sonst =3.} +%3.39 Enable sysfs memory/probe interface \subsection{Enable sysfs memory/probe interface} CONFIG\_ARCH\_MEMORY\_PROBE [=n] \textbf{[N]}\\ Diese Option aktiviert eine sysfs-Speicher/Probe-Schnittstelle für Tests.\\ @@ -967,43 +968,34 @@ Legt fest, ob der Standardstatus von \texttt{memory\_corruption\_check} ein- ode \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.\\ +Bei Prozessoren der Intel P6-Familie (Pentium Pro, Pentium II und später) können die Memory Type Range Register (MTRRs) verwendet werden, um den Zugriff des Prozessors auf Speicherbereiche zu steuern. +Dies ist besonders nützlich, wenn Sie eine Videokarte (VGA) an einem PCI- oder AGP-Bus haben. +Durch die Aktivierung von Write-Combining können Bus-Schreibübertragungen zu einer größeren Übertragung kombiniert werden, bevor sie über den PCI/AGP-Bus geleitet werden. +Dies kann die Leistung von Bildschreiboperationen um das 2,5-fache oder mehr erhöhen. +Wenn Sie hier Y angeben, wird eine /proc/mtrr-Datei erstellt, die zur Manipulation der MTRRs Ihres Prozessors verwendet werden kann. +Normalerweise sollte der X-Server dies verwenden.\\ +Dieser Code hat eine recht generische Schnittstelle, so dass ähnliche Steuerregister auf anderen Prozessoren ebenfalls leicht unterstützt werden können:\\ +Die Prozessoren Cyrix 6x86, 6x86MX und M II verfügen über Address Range Registers (ARRs), die eine ähnliche Funktionalität wie MTRRs bieten. +In diesen Fällen werden die ARRs zur Emulation der MTRRs verwendet. +Die AMD-Prozessoren K6-2 (Stepping 8 und höher) und K6-3 haben zwei MTRRs. Der Centaur C6 (WinChip) hat 8 MCRs, die Schreibkombinationen ermöglichen. +Alle diese Prozessoren werden von diesem Code unterstützt und es ist sinnvoll, hier Y anzugeben, wenn Sie einen dieser Prozessoren haben.\\ +Die Angabe von Y an dieser Stelle behebt auch ein Problem mit fehlerhaften SMP-BIOSen, die die MTRRs nur für die Boot-CPU und nicht für die sekundären CPUs setzen. +Das kann zu allen möglichen Problemen führen, also ist es gut, hier Y zu sagen.\\ Sie können sicher Y sagen, auch wenn Ihr Rechner keine MTRRs hat, Sie werden nur etwa 9 KB zu Ihrem Kernel hinzufügen. Siehe $<$file:Documentation/arch/x86/mtrr.rst$>$ für weitere Informationen. -\english{On Intel P6 family processors (Pentium Pro, Pentium II and later) the Memory Type Range Registers -(MTRRs) may be used to control processor access to memory ranges. +\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. +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. +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. +\\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.} @@ -1018,7 +1010,7 @@ Wenn Sie unsicher sind, sagen Sie Y. 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.} +\note{Für normale Systeme Y für Ja. Nur bei einem \glqq headless server\grqq{} ein N.} \paragraph{MTRR cleanup enable value (0-1)}$~$\\ CONFIG\_MTRR\_SANITIZER\_ENABLE\_DEFAULT [=1] \textbf{[1]}\\ @@ -1027,11 +1019,10 @@ 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"=Befehlszeile geändert werden. +MTRR cleanup spare entries Defaulteintrag, dies kann über \texttt{mtrr\_spare\_reg\_nr=N} auf der Kernel"=Befehlszeile geändert werden. \english{mtrr cleanup spare entries default, it can be changed via mtrr\_spare\_reg\_nr=N on the kernel command line.} -%3.37.4 +%3.41.4 \subsubsection{x86 PAT support} CONFIG\_X86\_PAT [=y] \textbf{[Y]}\\ Verwenden Sie PAT-Attribute zur Einrichtung der Cache-Steuerung auf Seitenebene.\\ @@ -1046,83 +1037,69 @@ 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 +%3.42 \subsection{User Mode Instruction Prevention} CONFIG\_X86\_UMIP [=y] \textbf{[Y]}\\ User Mode Instruction Prevention (UMIP) ist eine Sicherheits\-funktion in einigen x86-Prozessoren. -Wenn sie aktiviert ist, wird ein allgemeiner Schutzfehler ausgegeben, wenn die Anweisungen SGDT, SLDT, -SIDT, SMSW oder STR im Benutzer\-modus ausgeführt werden. +Wenn sie aktiviert ist, wird ein allgemeiner Schutzfehler ausgegeben, wenn die Anweisungen SGDT, SLDT, SIDT, SMSW oder STR im Benutzermodus ausgeführt werden. Diese Befehle geben unnötigerweise Informationen über den Hardwarezustand preis.\\ Die große Mehrheit der Anwendungen verwendet diese Befehle nicht. -Für die wenigen, die sie verwenden, wird in bestimmten Fällen eine Software-Emulation im geschützten und -virtuellen 8086-Modus vorgesehen. Die emulierten Ergebnisse sind Scheinergebnisse. +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. +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.} +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 +%3.43 \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.\\ -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. -\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.\\ +Erstellen Sie den Kernel mit Unterstützung für Indirect Branch Tracking, einem hardwaregestützten Schutz für den Kontrollflussintegrität mit grober Granularität. +Dadurch wird sichergestellt, dass alle indirekten Aufrufe auf einer ENDBR-Anweisung landen müssen. +Der Compiler instrumentiert den Code entsprechend, um dies zu erreichen.\\ +Zusätzlich zum Erstellen des Kernels mit IBT sollten alle Funktionen, die keine indirekten Aufrufziele sind, versiegelt werden, um zu verhindern, dass sie jemals zu solchen werden.\\ +Dies erfordert LTO-ähnliche objtool-Läufe und verlangsamt den Build-Vorgang. +Dadurch wird die Anzahl der ENDBR-Anweisungen im Kernel-Image erheblich reduziert. +\english{Build the kernel with support for Indirect Branch Tracking, a hardware support course-grain forward-edge Control Flow Integrity protection. +It enforces that all indirect calls must land on an ENDBR instruction, as such, the compiler will instrument the code with them to make this happen.\\ +In addition to building the kernel with IBT, seal all functions that are not indirect call targets, avoiding them ever becoming one.\\ This requires LTO like objtool runs and will slow down the build. It does significantly reduce the number of ENDBR instructions in the kernel image.} \note{Wir können hier N wählen, hat natürlich Sicherheitsmerkmale. Compilieren geht schneller!} -%3.40 +%3.44 \subsection{Memory Protection Keys} CONFIG\_X86\_INTEL\_MEMORY\_PROTECTION\_KEYS [=y] \textbf{[Y]}\\ -Memory Protection Keys bietet einen Mechanismus zur Erzwingung seitenbasierter Schutzmaßnahmen, ohne dass die -Seitentabellen geändert werden müssen, wenn eine Anwendung ihre Schutzdomänen ändert. Einzelheiten siehe -Documentation/core-api/protection-keys.rst\\ +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.\\ +\english{Memory Protection Keys provides a mechanism for enforcing page-based protections, but without requiring modification of the page tables when an application changes protection domains.\\ For details, see Documentation/core-api/protection-keys.rst\\ If unsure, say y.} +%3.45 TSX enable mode (auto) \subsection{TSX enable mode () \texorpdfstring{$\rightarrow$}{->}} CONFIG\_X86\_INTEL\_MEMORY\_PROTECTION\_KEYS [=y] \textbf{[Y]}\\ -Intels TSX-Funktion (Transactional Synchronization Extensions) ermöglicht die Optimierung von Sperrprotokollen durch -Lock Elision, was zu einer spürbaren Leistungssteigerung führen kann. -Andererseits hat sich gezeigt, dass TSX für Seitenkanalangriffe (z.\,B. TAA) ausgenutzt werden kann, und es ist -wahrscheinlich, dass in Zukunft weitere Angriffe dieser Art entdeckt werden. -Daher ist TSX standardmäßig nicht aktiviert (aka \texttt{tsx=off}). Ein Administrator kann diese Entscheidung durch den -Befehlszeilenparameter \texttt{tsx=on} außer Kraft setzen. -Auch wenn TSX aktiviert ist, versucht der Kernel, die bestmögliche TAA-Abschwächung zu aktivieren, je nach dem für -den jeweiligen Rechner verfügbaren Mikrocode. -Mit dieser Option kann der Standard-Tsx-Modus zwischen \texttt{tsx=on}, \texttt{=off} und \texttt{=auto} -eingestellt werden. Siehe -Documentation/admin-guide/kernel-parameters.txt für weitere Details. +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. +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.\\ +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.} +Say off if not sure, auto if TSX is in use but it should be used on safe platforms or on if TSX is in use and the security aspect of tsx is not relevant.} \subsubsection{off} CONFIG\_X86\_INTEL\_TSX\_MODE\_OFF [=n] \textbf{[N]}\\ @@ -1131,38 +1108,36 @@ TSX ist, wenn möglich, deaktiviert -- entspricht dem Befehlszeilenparameter \te \subsubsection{on} CONFIG\_X86\_INTEL\_TSX\_MODE\_ON [=n] \textbf{[N]}\\ -TSX ist auf TSX-fähiger Hardware immer aktiviert -- gleichbedeutend -mit dem Befehlszeilenparameter \texttt{tsx=on} -\english{TSX is always enabled on TSX capable HW - equals the tsx=on command line parameter.} +TSX ist auf TSX-fähiger Hardware immer aktiviert -- gleichbedeutend mit dem Befehlszeilenparameter \texttt{tsx=on} +\english{TSX is always enabled on TSX capable HW -- equals the tsx=on command line parameter.} \subsubsection{auto} CONFIG\_X86\_INTEL\_TSX\_MODE\_AUTO [=y] \textbf{[Y]}\\ -TSX wird auf TSX-fähiger Hardware aktiviert, die als sicher gegen Seitenkanalangriffe gilt -- gleichbedeutend -mit dem Befehlszeilenparameter \texttt{tsx=auto}. +TSX wird auf TSX-fähiger Hardware aktiviert, die als sicher gegen Seitenkanalangriffe gilt -- gleichbedeutend mit dem Befehlszeilenparameter \texttt{tsx=auto}. \english{TSX is enabled on TSX capable HW that is believed to be safe against side channel attacks- equals the tsx=auto command line parameter.} -%3.42 +%3.46 \subsection{Software Guard eXtensions (SGX)} CONFIG\_X86\_SGX \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ -Intel(R) Software Guard eXtensions (SGX) ist eine Reihe von CPU-Befehlen, die von Anwendungen verwendet werden -können, um private Code- und Datenbereiche, die so genannten Enklaven, zu reservieren. Auf den privaten Speicher -einer Enklave kann nur von Code zugegriffen werden, der innerhalb der Enklave läuft. Zugriffe von außerhalb der -Enklave, einschließlich anderer Enklaven, werden von der Hardware nicht zugelassen.\\ +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. +\english{Intel(R) Software Guard eXtensions (SGX) is a set of CPU instructions that can be used by applications to set aside private regions of code and data, referred to as enclaves. An enclave's private memory can only be accessed by code running within the enclave. Accesses from outside the enclave, including other enclaves, are disallowed by hardware.\\ If unsure, say N.} \note{N,\\ Y, wenn Sie eine echte Verwendung dafür haben, denn die tatsächliche Sicherheit dieser Funktion ist umstritten.} +%3.47 \subsection{X86 userspace shadow stack} CONFIG\_X86\_USER\_SHADOW\_STACK [=y] \textbf{[Y]}\\ -Der Schattenstapelschutz ist eine Hardwarefunktion, die eine Beschädigung der Rücksprungadresse einer Funktion -erkennt. Dies hilft, ROP-Angriffe abzuschwächen. Anwendungen müssen aktiviert sein, um sie zu nutzen, und der -alte Userspace erhält den Schutz nicht \glqq umsonst\grqq{}. CPUs, die Shadow Stacks unterstützen, wurden erstmals im -Jahr~2020 vorgestellt. Weitere Informationen finden Sie unter Documentation/arch/x86/shstk.rst.\\ +Der Schattenstapelschutz ist eine Hardwarefunktion, die eine Beschädigung der Rücksprungadresse einer Funktion erkennt. +Dies hilft, ROP-Angriffe abzuschwächen. +Anwendungen müssen aktiviert sein, um sie zu nutzen, und der alte Userspace erhält den Schutz nicht \glqq umsonst\grqq{}. +CPUs, die Shadow Stacks unterstützen, wurden erstmals im Jahr~2020 vorgestellt. +Weitere Informationen finden Sie unter Documentation/arch/x86/shstk.rst.\\ Wenn Sie unsicher sind, sagen Sie N. \english{Shadow stack protection is a hardware feature that detects function return address corruption. This helps mitigate ROP attacks. @@ -1172,57 +1147,44 @@ See Documentation/arch/x86/shstk.rst for more information.\\ If unsure, say N.} \note{Y, ein Ja aus Sicherheitsgründen} +%3.48 \subsection{EFI runtime service support} CONFIG\_EFI [=y] \textbf{[Y]}\\ Dies ermöglicht es dem Kernel, verfügbare EFI-Laufzeitdienste (wie die EFI-Variablendienste) zu nutzen.\\ -Diese Option ist nur auf Systemen mit EFI-Firmware sinnvoll. Außerdem sollten Sie den neuesten ELILO-Lader -verwenden, der unter \url{http://elilo.sourceforge.net} verfügbar ist, um die Vorteile der -EFI-Laufzeitdienste zu nutzen. Aber auch mit dieser Option sollte der resultierende Kernel weiterhin auf -bestehenden Nicht-EFI-Plattformen booten. -\english{This enables the kernel to use EFI runtime services that are available -(such as the EFI variable services).\\ +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. +In addition, you should use the latest ELILO loader available at $<$http://elilo.sourceforge.net$>$ in order to take advantage of EFI runtime services. However, even with this option, the resultant kernel should continue to boot on existing non-EFI platforms.} \note{Um von EFI booten zu können, dürfen wir dies nicht deaktivieren.} \subsubsection{EFI stub support} CONFIG\_EFI\_STUB [=y] \textbf{[Y]}\\ -Mit dieser Kernel-Funktion kann ein bzImage direkt von der EFI-Firmware geladen werden, ohne dass ein -Bootloader erforderlich ist.\\ +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.\\ +\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} +\note{Y, nur, wenn Sie den Kernel direkt als EFI-Binary booten und nicht mit \texttt{grub}} \paragraph{EFI handover protocol (DEPRECATED)}$~$\\ CONFIG\_EFI\_STUB \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ (EFI-Übergabeprotokoll (VERALTET))\\ -Wählen Sie dies, um Unterstützung für das veraltete EFI-Handover-Protokoll zu erhalten, das alternative -Einstiegspunkte in den EFI-Stub definiert. Dies ist eine Praxis, die keine Grundlage in der UEFI-Spezifikation -hat und ein Vorwissen seitens des Bootloaders über Linux/x86-spezifische Wege der Übergabe der Kommandozeile -und initrd erfordert, und wo im Speicher diese Assets geladen werden können.\\ -Im Zweifelsfall sagen Sie Y. Auch wenn die entsprechende Unterstützung im Upstream-GRUB oder anderen -Bootloadern nicht vorhanden ist, bauen die meisten Distros GRUB mit zahlreichen Downstream-Patches und können -sich daher auf das Handover-Protokoll verlassen. -\english{Select this in order to include support for the deprecated EFI handover protocol, -which defines alternative entry points into the EFI stub. -This is a practice that has no basis in the UEFI specification, and requires a priori knowledge -on the part of the bootloader about Linux/x86 specific ways of passing the command line and initrd, -and where in memory those assets may be loaded.\\ -If in doubt, say Y. Even though the corresponding support is not present in upstream GRUB or -other bootloaders, most distros build GRUB with numerous downstream patches applied, -and may rely on the handover protocol as as result.} +Wählen Sie dies, um Unterstützung für das veraltete EFI-Handover-Protokoll zu erhalten, das alternative Einstiegspunkte in den EFI-Stub definiert. +Dies ist eine Praxis, die keine Grundlage in der UEFI-Spezifikation hat und ein Vorwissen seitens des Bootloaders über Linux/x86-spezifische Wege der Übergabe der Kommandozeile und initrd erfordert, und wo im Speicher diese Assets geladen werden können.\\ +Im Zweifelsfall sagen Sie Y. +Auch wenn die entsprechende Unterstützung im Upstream-GRUB oder anderen Bootloadern nicht vorhanden ist, bauen die meisten Distros GRUB mit zahlreichen Downstream-Patches und können sich daher auf das Handover-Protokoll verlassen. +\english{Select this in order to include support for the deprecated EFI handover protocol, which defines alternative entry points into the EFI stub. +This is a practice that has no basis in the UEFI specification, and requires a priori knowledge on the part of the bootloader about Linux/x86 specific ways of passing the command line and initrd, and where in memory those assets may be loaded.\\ +If in doubt, say Y. +Even though the corresponding support is not present in upstream GRUB or other bootloaders, most distros build GRUB with numerous downstream patches applied, and may rely on the handover protocol as as result.} \note{Ein Versuch wäre es wert, das \glqq Handover-Protokoll\grqq{} zu deaktivieren, da es obsolet wurde.} \paragraph{EFI mixed-mode support}$~$\\ CONFIG\_EFI\_MIXED \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ -Wenn Sie diese Funktion aktivieren, kann ein 64-Bit-Kernel auf einer 32-Bit-Firmware gebootet werden, -vorausgesetzt, Ihre CPU unterstützt den 64-Bit-Modus.\\ -Beachten Sie, dass es nicht möglich ist, einen Mixed-Mode-fähigen Kernel über den EFI-Boot-Stub zu -booten -- es muss ein Bootloader verwendet werden, der das EFI-Handover-Protokoll unterstützt.\\ +Wenn Sie 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.\\ @@ -1245,101 +1207,74 @@ This is useful for debugging of EFI memmap related feature, e.g. Address Range M \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.\\ +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.\\ +That memory map is required by the 2nd kernel to set up EFI virtual mappings after kexec, but can also be used for debugging purposes.\\ See also \texttt{Documentation/ABI/testing/sysfs-firmware-efi-runtime-map}.} \note{Kann nicht deaktiviert werden, wenn kexec und EFI runtime service eingeschaltet ist.} +%3.49 Timer frequency () \subsection{Timer frequency () \texorpdfstring{$\rightarrow$}{->}} -Ermöglicht die Konfiguration der Timer-Frequenz. Es ist üblich, den Timer-Interrupt mit 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. +Ermöglicht die Konfiguration der Timer-Frequenz. +Es ist üblich, den Timer-Interrupt mit \qty{1000}{\hertz} laufen zu lassen, aber \qty{100}{\hertz} kann für Server und NUMA-Systeme vorteilhafter sein, die keine schnelle Reaktion für die Benutzerinteraktion benötigen und bei denen es zu Buskonflikten und Cacheline-Bounches als Folge von Timer-Interrupts kommen kann. +Beachten Sie, dass der Timer-Interrupt in einer SMP-Umgebung auf jedem Prozessor auftritt, was zu NR\_CPUS * HZ Anzahl der Timer-Interrupts pro Sekunde führt. \english{Allows the configuration of the timer frequency. -It is customary to have the timer interrupt run at 1000 Hz but 100 Hz may be more beneficial for servers -and NUMA systems that do not need to have a fast response for user interaction and that may experience bus -contention and cacheline bounces as a result of timer interrupts.\\ -Note that the timer interrupt occurs on each processor in an SMP environment leading to NR\_CPUS * HZ number -of timer interrupts per second.} -\note{\qty{100}{\hertz} für Server, \qty{300}{\hertz} für Desktops, -\qty{1000}{\hertz} für Anforderungen mit niedrigen Latenzzeiten} +It is customary to have the timer interrupt run at 1000 Hz but 100 Hz may be more beneficial for servers and NUMA systems that do not need to have a fast response for user interaction and that may experience bus contention and cacheline bounces as a result of timer interrupts.\\ +Note that the timer interrupt occurs on each processor in an SMP environment leading to NR\_CPUS * HZ number of timer interrupts per second.} +\note{\qty{100}{\hertz} für Server, \qty{300}{\hertz} für Desktops, \qty{1000}{\hertz} für Anforderungen mit niedrigen Latenzzeiten} \subsubsection{100~Hz} CONFIG\_HZ\_100 [=n] \textbf{[N]}\\ -\qty{100}{\hertz} ist eine typische Wahl für Server, SMP- und NUMA-Systeme mit vielen Prozessoren, die eine -geringere Leistung aufweisen können, wenn zu viele Timer-Interrupts auftreten. -\english{100~Hz is a typical choice for servers, SMP and NUMA systems with lots of processors -that may show reduced performance if too many timer interrupts are occurring.} +\qty{100}{\hertz} ist eine typische Wahl für Server, SMP- und NUMA-Systeme mit vielen Prozessoren, die eine geringere Leistung aufweisen können, wenn zu viele Timer-Interrupts auftreten. +\english{100~Hz is a typical choice for servers, SMP and NUMA systems with lots of processors that may show reduced performance if too many timer interrupts are occurring.} \subsubsection{250~Hz} CONFIG\_HZ\_250 [=n] \textbf{[N]}\\ -\qty{250}{\hertz} ist ein guter Kompromiss, der eine gute Serverleistung ermöglicht und auch auf SMP- und -NUMA-Systemen eine gute interaktive Reaktionsfähigkeit zeigt. Wenn Sie NTSC-Video oder Multimedia -verwenden, wählen Sie stattdessen 300~Hz. -\english{250~Hz is a good compromise choice allowing server performance while also showing -good interactive responsiveness even on SMP and NUMA systems. +\qty{250}{\hertz} ist ein guter Kompromiss, der eine gute Serverleistung ermöglicht und auch auf SMP- und NUMA-Systemen eine gute interaktive Reaktionsfähigkeit zeigt. +Wenn Sie NTSC-Video oder Multimedia verwenden, wählen Sie stattdessen 300~Hz. +\english{250~Hz is a good compromise choice allowing server performance while also showing good interactive responsiveness even on SMP and NUMA systems. If you are going to be using NTSC video or multimedia, selected 300Hz instead.} \subsubsection{300~Hz} CONFIG\_HZ\_300 \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\ -\qty{300}{\hertz} ist ein guter Kompromiss, der eine gute Serverleistung und gleichzeitig eine gute interaktive -Reaktionsfähigkeit selbst auf SMP- und NUMA-Systemen ermöglicht und sowohl bei PAL- als auch bei -NTSC-Bildraten für Video- und Multimedia-Arbeiten genau eingehalten wird. -\english{300~Hz is a good compromise choice allowing server performance while also showing -good interactive responsiveness even on SMP and NUMA systems and exactly dividing by both PAL and -NTSC frame rates for video and multimedia work.} +\qty{300}{\hertz} ist ein guter Kompromiss, der eine gute Serverleistung und gleichzeitig eine gute interaktive Reaktionsfähigkeit selbst auf SMP- und NUMA-Systemen ermöglicht und sowohl bei PAL- als auch bei NTSC-Bildraten für Video- und Multimedia-Arbeiten genau eingehalten wird. +\english{300~Hz is a good compromise choice allowing server performance while also showing good interactive responsiveness even on SMP and NUMA systems and exactly dividing by both PAL and NTSC frame rates for video and multimedia work.} \subsubsection{1000~Hz} -CONFIG\_HZ\_1000 \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\ -\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.} +CONFIG\_HZ\_1000 \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ +\qty{1000}{\hertz} ist die bevorzugte Wahl für Desktop-Systeme und andere Systeme, die schnelle interaktive Reaktionen auf Ereignisse erfordern. +\english{1000~Hz is the preferred choice for desktop systems and other systems requiring fast interactive responses to events.} +%3.50 Physical address where the kernel is loaded \subsection{Physical address where the kernel is loaded} CONFIG\_PHYSICAL\_START [=0x1000000] \textbf{[0x1000000]}\\ -Dies gibt die physikalische Adresse an, unter der der Kernel geladen wird. Wenn der Kernel nicht verschiebbar ist -(CONFIG\_RELOCATABLE=n), dekomprimiert sich bzImage an die oben genannte physikalische Adresse und wird von dort -aus gestartet. Andernfalls wird bzImage von der Adresse aus gestartet, an der es vom Bootloader geladen wurde, -und ignoriert die obige physikalische Adresse. In normalen kdump-Fällen muss diese Option nicht gesetzt/geändert -werden, da bzImage nun als vollständig relozierbares Image (CONFIG\_RELOCATABLE=y) kompiliert und zum Laden und -Ausführen von einer anderen Adresse verwendet werden kann. Diese Option ist vor allem für die Leute nützlich, -die kein bzImage für die Erfassung des Crash-Dumps verwenden wollen und stattdessen vmlinux einsetzen wollen. -vmlinux ist nicht relocatable, daher muss ein Kernel speziell kompiliert werden, um von einem bestimmten -Speicherbereich (normalerweise ein reservierter Bereich) zu laufen, und diese Option ist sehr nützlich. -Wenn Sie also bzImage zum Erfassen des Crash-Dumps verwenden, lassen Sie den Wert hier unverändert auf -0x1000000 und setzen Sie CONFIG\_RELOCATABLE=y.\\ -Andernfalls, wenn Sie vmlinux für die Aufzeichnung des Crash-Dumps verwenden wollen, ändern Sie diesen Wert -auf den Beginn des reservierten Bereichs. Mit anderen Worten, er kann auf der Grundlage des "X"-Wertes gesetzt -werden, wie er im "crashkernel=YM@XM"-Befehlszeilen-Boot-Parameter angegeben ist, der an den panic-ed-Kernel -übergeben wird. Weitere Details zu Crash Dumps finden Sie in Documentation/admin-guide/kdump/kdump.rst. -Die Verwendung von bzImage für die Aufzeichnung des Crash-Dumps wird empfohlen, da man nicht zwei Kernel -erstellen muss. Derselbe Kernel kann als Produktionskernel und als Erfassungskernel verwendet werden. Die obige -Option sollte verschwinden, nachdem die Unterstützung von relocatable bzImage eingeführt wurde. Sie ist aber noch -vorhanden, weil es Benutzer gibt, die weiterhin vmlinux für die Dump-Erfassung verwenden. Diese Option sollte im -Laufe der Zeit verschwinden. Ändern Sie diese Option nicht, wenn Sie nicht wissen, was Sie tun. +Dies gibt die physikalische Adresse an, unter der der Kernel geladen wird. +Wenn der Kernel nicht verschiebbar ist (CONFIG\_RELOCATABLE=n), dekomprimiert sich bzImage an die oben genannte physikalische Adresse und wird von dort aus gestartet. +Andernfalls wird bzImage von der Adresse aus gestartet, an der es vom Bootloader geladen wurde, und ignoriert die obige physikalische Adresse. +In normalen kdump-Fällen muss diese Option nicht gesetzt/geändert werden, da bzImage nun als vollständig relozierbares Image (CONFIG\_RELOCATABLE=y) kompiliert und zum Laden und Ausführen von einer anderen Adresse verwendet werden kann. +Diese Option ist vor allem für die Leute nützlich, die kein bzImage für die Erfassung des Crash-Dumps verwenden wollen und stattdessen vmlinux einsetzen wollen. +vmlinux ist nicht relocatable, daher muss ein Kernel speziell kompiliert werden, um von einem bestimmten Speicherbereich (normalerweise ein reservierter Bereich) zu laufen, und diese Option ist sehr nützlich. +Wenn Sie also bzImage zum Erfassen des Crash-Dumps verwenden, lassen Sie den Wert hier unverändert auf 0x1000000 und setzen Sie CONFIG\_RELOCATABLE=y.\\ +Andernfalls, wenn Sie vmlinux für die Aufzeichnung des Crash-Dumps verwenden wollen, ändern Sie diesen Wert auf den Beginn des reservierten Bereichs. +Mit anderen Worten, er kann auf der Grundlage des "X"-Wertes gesetzt werden, wie er im "crashkernel=YM@XM"-Befehlszeilen-Boot-Parameter angegeben ist, der an den panic-ed-Kernel übergeben wird. +Weitere Details zu Crash Dumps finden Sie in Documentation/admin-guide/kdump/kdump.rst. +Die Verwendung von bzImage für die Aufzeichnung des Crash-Dumps wird empfohlen, da man nicht zwei Kernel erstellen muss. +Derselbe Kernel kann als Produktionskernel und als Erfassungskernel verwendet werden. +Die obige Option sollte verschwinden, nachdem die Unterstützung von relocatable bzImage eingeführt wurde. +Sie ist aber noch vorhanden, weil es Benutzer gibt, die weiterhin vmlinux für die Dump-Erfassung verwenden. +Diese Option sollte im Laufe der Zeit verschwinden. +Ändern Sie diese Option nicht, wenn Sie nicht wissen, was Sie tun. \english{This gives the physical address where the kernel is loaded.\\ -If the kernel is not relocatable (CONFIG\_RELOCATABLE=n) then bzImage will decompress itself -to above physical address and run from there. +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. +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. @@ -1348,52 +1283,34 @@ But it is present because there are users out there who continue to use vmlinux This option should go away down the line.\\ Don't change this unless you know what you are doing.} +%3.51 Build a relocatable kernel \subsection{Build a relocatable kernel} CONFIG\_RELOCATABLE [=y] \textbf{[Y]}\\ -Dadurch wird ein Kernel-Image erstellt, das die Informationen über den Standortwechsel beibehält, so dass es an -einem anderen Ort als den standardmäßigen \qty{1}{\mega\byte} geladen werden kann. -Die Verschiebungen machen das Kernel-Binary etwa \qty{10}{\percent} größer, -werden aber zur Laufzeit verworfen. -Eine Anwendung ist der kexec on panic-Fall, bei dem der Wiederherstellungs-Kernel an einer anderen -physikalischen Adresse liegen muss als der primäre Kernel. -Anmerkung: Wenn CONFIG\_RELOCATABLE=y ist, dann läuft der Kernel von der Adresse aus, an der er geladen wurde, -und von der zur Kompilierzeit physische Adresse (CONFIG\_PHYSICAL\_START) als Mindeststandort verwendet. -\english{This builds a kernel image that retains relocation information so it can be loaded -someplace besides the default 1MB.\\ +Dadurch wird ein Kernel-Image erstellt, das die Informationen über den Standortwechsel beibehält, so dass es an einem anderen Ort als den standardmäßigen \qty{1}{\mega\byte} geladen werden kann. +Die Verschiebungen machen das Kernel-Binary etwa \qty{10}{\percent} größer, werden aber zur Laufzeit verworfen. +Eine Anwendung ist der kexec on panic-Fall, bei dem der Wiederherstellungs-Kernel an einer anderen physikalischen Adresse liegen muss als der primäre Kernel. +Anmerkung: Wenn CONFIG\_RELOCATABLE=y ist, dann läuft der Kernel von der Adresse aus, an der er geladen wurde, und von der zur Kompilierzeit physische Adresse (CONFIG\_PHYSICAL\_START) als Mindeststandort verwendet. +\english{This builds a kernel image that retains relocation information so it can be loaded someplace besides the default 1MB.\\ The relocations tend to make the kernel binary about 10\% larger, but are discarded at runtime.\\ -One use is for the kexec on panic case where the recovery kernel must live at a different physical address -than the primary kernel.\\ -Note: If CONFIG\_RELOCATABLE=y, then the kernel runs from the address it has been loaded at and -the compile time physical address (CONFIG\_PHYSICAL\_START) is used as the minimum location.} +One use is for the kexec on panic case where the recovery kernel must live at a different physical address than the primary kernel.\\ +Note: If CONFIG\_RELOCATABLE=y, then the kernel runs from the address it has been loaded at and the compile time physical address (CONFIG\_PHYSICAL\_START) is used as the minimum location.} \subsubsection{Randomize the address of the kernel image (KASLR)} CONFIG\_RANDOMIZE\_BASE [=y] \textbf{[Y]}\\ -Zur Unterstützung der Kernel Address Space Layout Randomization (KASLR) werden -die physische Adresse, an der das Kernel-Image dekomprimiert wird, und -die virtuelle Adresse, auf die das Kernel-Image abgebildet wird, -randomisiert. Dies ist ein Sicherheitsmerkmal, das Exploit-Versuche verhindert, -die auf der Kenntnis des Speicherorts von Kernel-Code-Interna beruhen. +Zur Unterstützung der Kernel Address Space Layout Randomization (KASLR) werden die physische Adresse, an der das Kernel-Image dekomprimiert wird, und die virtuelle Adresse, auf die das Kernel-Image abgebildet wird, randomisiert. +Dies ist ein Sicherheitsmerkmal, das Exploit-Versuche verhindert, die auf der Kenntnis des Speicherorts von Kernel-Code-Interna beruhen. Bei 64-Bit werden die physische und die virtuelle Adresse des Kernels getrennt randomisiert. -Die physische Adresse liegt irgendwo zwischen 16~MB und dem Anfang des physischen Speichers -(bis zu 64~TB). Die virtuelle Adresse wird von 16~MB bis zu 1~GB randomisiert -(9 Bits Entropie). -Beachten Sie, dass dadurch auch der für Kernel-Module verfügbare Speicherplatz -von \qty{1.5}{\giga\byte} auf \qty{1}{\giga\byte} reduziert wird. -Bei 32-Bit werden die physischen und virtuellen Adressen des Kernels zusammen -randomisiert. Sie werden von 16~MB bis zu 512~MB randomisiert (8 Bits Entropie).\\ +Die physische Adresse liegt irgendwo zwischen 16~MB und dem Anfang des physischen Speichers (bis zu 64~TB). Die virtuelle Adresse wird von 16~MB bis zu 1~GB randomisiert (9 Bits Entropie). +Beachten Sie, dass dadurch auch der für Kernel-Module verfügbare Speicherplatz von \qty{1.5}{\giga\byte} auf \qty{1}{\giga\byte} reduziert wird. +Bei 32-Bit werden die physischen und virtuellen Adressen des Kernels zusammen randomisiert. +Sie werden von 16~MB bis zu 512~MB randomisiert (8 Bits Entropie).\\ Die Entropie wird mit dem RDRAND-Befehl erzeugt, sofern er unterstützt wird. -Wenn RDTSC unterstützt wird, wird sein Wert ebenfalls in den Entropie-Pool -gemischt. Wenn weder RDRAND noch RDTSC unterstützt werden, wird die Entropie aus -dem i8254-Zeitgeber gelesen. Die nutzbare Entropie ist dadurch begrenzt, dass der -Kernel mit 2~GB-Adressierung aufgebaut ist und dass PHYSICAL\_ALIGN mindestens -2~MB betragen muss. -Infolgedessen sind theoretisch nur 10 Bits Entropie möglich, aber die -Implementierungen sind aufgrund des Speicherlayouts noch weiter eingeschränkt.\\ +Wenn RDTSC unterstützt wird, wird sein Wert ebenfalls in den Entropie-Pool gemischt. +Wenn weder RDRAND noch RDTSC unterstützt werden, wird die Entropie aus dem i8254"=Zeitgeber gelesen. +Die nutzbare Entropie ist dadurch begrenzt, dass der Kernel mit 2-GB-Adressierung aufgebaut ist und dass PHYSICAL\_ALIGN mindestens 2~MB betragen muss. +Infolgedessen sind theoretisch nur 10~Bits Entropie möglich, aber die Implementierungen sind aufgrund des Speicherlayouts noch weiter eingeschränkt.\\ Wenn Sie unsicher sind, sagen Sie Y. -\english{In support of Kernel Address Space Layout Randomization (KASLR), this randomizes -the physical address at which the kernel image is decompressed and the virtual address where -the kernel image is mapped, as a security feature that deters exploit attempts relying on knowledge -of the location of kernel code internals.\\ +\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). @@ -1403,201 +1320,179 @@ 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.\\ +The usable entropy is limited by the kernel being built using 2GB addressing, and that PHYSICAL\_ALIGN must be at a minimum of 2MB. +As a result, only 10 bits of entropy are theoretically possible, but the implementations are further limited due to memory layouts.\\ If unsure, say Y.} -%3.48 +%3.52 Alignment value to which kernel should be aligned \subsection{Alignment value to which kernel should be aligned} CONFIG\_PHYSICAL\_ALIGN [=0x200000] \textbf{[0x200000]}\\ -Dieser Wert legt die Ausrichtungsbeschränkungen für die physikalische Adresse fest, von der der Kernel geladen und -ausgeführt wird. Der Kernel wird für eine Adresse kompiliert, die den obigen Ausrichtungsbeschränkungen entspricht. -Wenn der Bootloader den Kernel an einer nicht ausgerichteten Adresse lädt und CONFIG\_RELOCATABLE gesetzt ist, -verschiebt sich der Kernel an die nächstgelegene Adresse, die auf den obigen Wert ausgerichtet ist, und wird von -dort aus gestartet. -Wenn der Bootloader den Kernel an einer nicht ausgerichteten Adresse lädt und CONFIG\_RELOCATABLE nicht gesetzt ist, -ignoriert der Kernel die Ladeadresse zur Laufzeit und dekomprimiert sich an die Adresse, für die er kompiliert wurde, -und läuft von dort aus. Die Adresse, für die der Kernel kompiliert wurde, erfüllt bereits die oben genannten -Ausrichtungsbeschränkungen. Das Endergebnis ist also, dass der Kernel von einer physikalischen Adresse aus läuft, -die die oben genannten Ausrichtungsbeschränkungen erfüllt. -Bei 32-Bit muss dieser Wert ein Vielfaches von 0x2000 sein. Bei 64-Bit muss dieser Wert ein Vielfaches von 0x200000 sein.\\ +Dieser Wert legt die Ausrichtungsbeschränkungen für die physikalische Adresse fest, von der der Kernel geladen und ausgeführt wird. +Der Kernel wird für eine Adresse kompiliert, die den obigen Ausrichtungsbeschränkungen entspricht. +Wenn der Bootloader den Kernel an einer nicht ausgerichteten Adresse lädt und CONFIG\_RELOCATABLE gesetzt ist, verschiebt sich der Kernel an die nächstgelegene Adresse, die auf den obigen Wert ausgerichtet ist, und wird von dort aus gestartet. +Wenn der Bootloader den Kernel an einer nicht ausgerichteten Adresse lädt und CONFIG\_RELOCATABLE nicht gesetzt ist, ignoriert der Kernel die Ladeadresse zur Laufzeit und dekomprimiert sich an die Adresse, für die er kompiliert wurde, und läuft von dort aus. +Die Adresse, für die der Kernel kompiliert wurde, erfüllt bereits die oben genannten Ausrichtungsbeschränkungen. +Das Endergebnis ist also, dass der Kernel von einer physikalischen Adresse aus läuft, die die oben genannten Ausrichtungsbeschränkungen erfüllt. +Bei 32-Bit muss dieser Wert ein Vielfaches von 0x2000 sein. +Bei 64-Bit muss dieser Wert ein Vielfaches von 0x200000 sein.\\ Ändern Sie dies nicht, wenn Sie nicht wissen, was Sie tun. \english{This value puts the alignment restrictions on physical address where kernel is loaded and run from. Kernel is compiled for an address which meets above alignment restriction.\\ -If bootloader loads the kernel at a non-aligned address and CONFIG\_RELOCATABLE is set, kernel will move -itself to nearest address aligned to above value and run from there.\\ -If bootloader loads the kernel at a non-aligned address and CONFIG\_RELOCATABLE is not set, -kernel will ignore the run time load address and decompress itself to the address it has been compiled -for and run from there. The address for which kernel is compiled already meets above alignment restrictions. +If bootloader loads the kernel at a non-aligned address and CONFIG\_RELOCATABLE is set, kernel will move itself to nearest address aligned to above value and run from there.\\ +If bootloader loads the kernel at a non-aligned address and CONFIG\_RELOCATABLE is not set, kernel will ignore the run time load address and decompress itself to the address it has been compiled for and run from there. +The address for which kernel is compiled already meets above alignment restrictions. Hence the end result is that kernel runs from a physical address meeting above alignment restrictions.\\ On 32-bit this value must be a multiple of 0x2000. On 64-bit this value must be a multiple of 0x200000.\\ Don't change this unless you know what you are doing.} +%3.53 Randomize the kernel memory sections \subsection{Randomize the kernel memory sections} CONFIG\_RANDOMIZE\_MEMORY [=y] \textbf{[Y]}\\ Randomisiert die virtuelle Basisadresse von Kernel-Speicherabschnitten (physische Speicherzuordnung, vmalloc \& vmemmap). -Dieses Sicherheitsmerkmal macht Exploits, die sich auf vorhersehbare Speicherplätze verlassen, weniger zuverlässig. Die Reihenfolge der -Zuweisungen bleibt unverändert. Entropie wird auf die gleiche Weise wie bei RANDOMIZE\_BASE erzeugt. Aktuelle Implementierung -in der optimalen Konfiguration haben im Durchschnitt 30.000 verschiedene mögliche virtuelle Adressen für jeden Speicherabschnitt.\\ +Dieses Sicherheitsmerkmal macht Exploits, die sich auf vorhersehbare Speicherplätze verlassen, weniger zuverlässig. +Die Reihenfolge der Zuweisungen bleibt unverändert. +Entropie wird auf die gleiche Weise wie bei RANDOMIZE\_BASE erzeugt. +Aktuelle Implementierung in der optimalen Konfiguration haben im Durchschnitt \num{30000} verschiedene mögliche virtuelle Adressen für jeden Speicherabschnitt.\\ Wenn Sie unsicher sind, sagen Sie Y. -\english{Randomizes the base virtual address of kernel memory sections -(physical memory mapping, vmalloc \& vmemmap). +\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.\\ +Current implementation in the optimal configuration have in average 30,000 different possible virtual addresses for each memory section.\\ If unsure, say Y.} -{\color{gray} -\subsubsection*{Linear Address Masking support} +%3.54 Physical memory mapping padding +\subsection{Physical memory mapping padding} +CONFIG\_RANDOMIZE\_MEMORY\_PHYSICAL\_PADDING [=0xa] \textbf{[0xA]}\\ +Definieren Sie die Auffüllung in Terabytes, die während der Kernel-Speicherrandomisierung zur vorhandenen physischen Speichergröße hinzugefügt wird. +Dies ist nützlich für die Unterstützung von Speicher-Hotplug, verringert aber die für die Adress-Randomisierung verfügbare Entropie.\\ +Wenn Sie unsicher sind, belassen Sie es beim Standardwert. +\english{Define the padding in terabytes added to the existing physical memory size during kernel memory randomization. +It is useful for memory hotplug support but reduces the entropy available for address randomization.\\ +If unsure, leave at the default value.} + +%3.55 +\subsection{Linear Address Masking support} CONFIG\_ADDRESS\_MASKING [=y] \textbf{[Y]}\\ Linear Address Masking (LAM) ändert die Prüfung, die auf lineare 64-Bit-Adressen angewandt wird, und ermöglicht der Software die nicht übersetzten Adressbits für Metadaten zu verwenden.\\ Diese Fähigkeit kann für die effiziente Implementierung von Adress-Sanitizern (ASAN) und für Optimierungen in JITs genutzt werden. -} +\english{Linear Address Masking (LAM) modifies the checking that is applied to 64-bit linear addresses, allowing software to use of the untranslated address bits for metadata. +The capability can be used for efficient address sanitizers (ASAN) implementation and for optimizations in JITs.} +\note{Diese Option wird nur bei X86\_64 und bei den Optionen (COMPILE\_TEST [=n] $||$ !CPU\_MITIGATIONS [=y]) angezeigt.} -%3.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)} +%3.56 former: Disable the 32-bit vDSO (needed for glibc 2.3.3) +\subsection{Workaround for glibc 2.3.2 / 2.3.3 (released in year 2003/2004)} CONFIG\_COMPAT\_VDSO [=n] \textbf{[N]}\\ -Bestimmte fehlerhafte Versionen der glibc stürzen ab, wenn sie mit einem 32-Bit vDSO konfrontiert werden, das nicht auf die in -der Segmenttabelle angegebene Adresse abgebildet ist. +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{}. +Glibc~2.3.3 ist die einzige veröffentlichte Version mit dem Fehler, aber OpenSUSE 9 enthält eine fehlerhafte \glqq glibc 2.3.2\grqq{}. Das Symptom des Fehlers ist, dass alles beim Start abstürzt und sagt:\\ \texttt{dl\_main: Assertion \`~(void \*) ph-$>$p\_vaddr == \_rtld\_local.\_dl\_sysinfo\_dso}\\ -Wenn Sie hier Y sagen, wird der Standardwert der Bootoption vdso32 von 1 auf 0 geändert, wodurch die -32-Bit vDSO vollständig deaktiviert wird. Dies umgeht zwar den Glibc-Bug, beeinträchtigt aber die Leistung.\\ -Wenn Sie unsicher sind, sagen Sie N: Wenn Sie Ihren eigenen Kernel kompilieren, ist es unwahrscheinlich, -dass Sie eine fehlerhafte Version der glibc verwenden. -\english{Certain buggy versions of glibc will crash if they are presented with a 32-bit vDSO that -is not mapped at the address indicated in its segment table.\\ +Wenn Sie hier Y sagen, wird der Standardwert der Bootoption vdso32 von 1 auf 0 geändert, wodurch die 32-Bit vDSO vollständig deaktiviert wird. +Dies umgeht zwar den Glibc-Bug, beeinträchtigt aber die Leistung.\\ +Wenn Sie unsicher sind, sagen Sie N: Wenn Sie Ihren eigenen Kernel kompilieren, ist es unwahrscheinlich, dass Sie eine fehlerhafte Version der glibc verwenden. +\english{Certain buggy versions of glibc will crash if they are presented with a 32-bit vDSO that is not mapped at the address indicated in its segment table.\\ The bug was introduced by f866314b89d56845f55e6f365e18b31ec978ec3a and fixed\\ by 3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a and 49ad572a70b8aeb91e57483a11dd1b77e31c4468. Glibc 2.3.3 is the only released version with the bug, but OpenSUSE~9 contains a buggy ``glibc 2.3.2''.\\ The symptom of the bug is that everything crashes on startup, saying: dl\_main:\\Assertion \texttt{(void *) ph$->$p\_vaddr == \_rtld\_local.\_dl\_sysinfo\_dso} failed!\\ -Saying Y here changes the default value of the vdso32 boot option from 1 to 0, which turns off -the 32-bit vDSO entirely. This works around the glibc bug but hurts performance.\\ +Saying Y here changes the default value of the vdso32 boot option from 1 to 0, which turns off the 32-bit vDSO entirely. +This works around the glibc bug but hurts performance.\\ If unsure, say N: if you are compiling your own kernel, you are unlikely to be using a buggy version of glibc.} \subsection{vsyscall table for legacy applications () \texorpdfstring{$\rightarrow$}{->}} -Legacy-Benutzercode, der nicht weiß, wie er den vDSO finden kann, erwartet, dass er drei Syscalls ausgeben kann, -indem er feste Adressen im Kernel-Bereich aufruft. -Da dieser Ort nicht mit ASLR randomisiert wird, kann er dazu verwendet werden, die Ausnutzung von Sicherheitslücken -zu unterstützen. -Diese Einstellung kann zur Boot-Zeit über den Kernel-Befehlszeilenparameter -\texttt{vsyscall=[emulate|xonly|none]} geändert werden.\\ +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.\\ +Auf einem System mit ausreichend aktueller glibc (2.14 oder neuer) und ohne statische Binärdateien können Sie \glqq None\grqq{} ohne Leistungseinbußen verwenden um die Sicherheit zu verbessern.\\ Wenn Sie unsicher sind, wählen Sie \glqq Nur Ausführung emulieren\grqq{}. -\english{Legacy user code that does not know how to find the vDSO expects to be able to issue -three syscalls by calling fixed addresses in kernel space. +\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]. +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.\\ +On a system with recent enough glibc (2.14 or newer) and no static binaries, you can say None without a performance penalty to improve security.\\ If unsure, select ``Emulate execution only''.} \subsubsection{Emulate execution only} CONFIG\_LEGACY\_VSYSCALL\_XONLY [=y] \textbf{[Y]}\\ Der Kernel fängt und emuliert Aufrufe in die feste vsyscall-Adresszuordnung und lässt keine Lesezugriffe zu. -Diese Konfiguration wird empfohlen, wenn der Userspace den Legacy-Vsyscall-Bereich verwenden könnte, aber keine -Unterstützung für die binäre Instrumentierung von Legacy-Code benötigt wird. Sie entschärft bestimmte Verwendungen -des vsyscall-Bereichs als Puffer zur Umgehung von ASLR. +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. +This configuration is recommended when userspace might use the legacy vsyscall area but support for legacy binary instrumentation of legacy code is not needed. It mitigates certain uses of the vsyscall area as an ASLR-bypassing buffer.} \subsubsection{None} CONFIG\_LEGACY\_VSYSCALL\_NONE [=n] \textbf{[N]}\\ -Es wird überhaupt keine vsyscall-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. +Es wird überhaupt keine vsyscall-Zuordnung geben. +Dies eliminiert jegliches Risiko einer ASLR"=Umgehung aufgrund der festen vsyscall"=Adressen-Zuordnung. +Versuche, die vsyscalls zu verwenden, werden an dmesg gemeldet, so dass entweder alte oder bösartige Userspace"=Programme identifiziert werden können. \english{There will be no vsyscall mapping at all. This will eliminate any risk of ASLR bypass due to the vsyscall fixed address mapping. -Attempts to use the vsyscalls will be reported to dmesg, so that either old or -malicious userspace programs can be identified.} +Attempts to use the vsyscalls will be reported to dmesg, so that either old or malicious userspace programs can be identified.} +%3.58 Built-in kernel commmand line \subsection{Built-in kernel command line} CONFIG\_CMDLINE\_BOOL [=n] \textbf{[N]}\\ -Ermöglicht die Angabe von Boot-Argumenten für den Kernel zur Erstellungszeit. Auf einigen Systemen -(z.\,B. eingebetteten [embedded]) ist es notwendig oder praktisch, einige oder alle Kernel-Boot-Argumente mit -dem Kernel selbst bereitzustellen (d.\,h. sich nicht darauf zu verlassen, dass der Bootloader sie bereitstellt). -Um Kommandozeilenargumente in den Kernel zu kompilieren, setzen Sie diese Option auf Y und geben Sie dann -die Boot-Argumente in CONFIG\_CMDLINE ein. Bei Systemen mit voll funktionsfähigen Bootloadern -(d.\,h. nicht eingebetteten) sollte diese Option auf N gesetzt bleiben. +Ermöglicht die Angabe von Boot-Argumenten für den Kernel zur Erstellungszeit. +Auf einigen Systemen (z.\,B. eingebetteten [embedded]) ist es notwendig oder praktisch, einige oder alle Kernel-Boot-Argumente mit dem Kernel selbst bereitzustellen (d.\,h. sich nicht darauf zu verlassen, dass der Bootloader sie bereitstellt). +Um Kommandozeilenargumente in den Kernel zu kompilieren, setzen Sie diese Option auf Y und geben Sie dann die Boot-Argumente in CONFIG\_CMDLINE ein. +Bei Systemen mit voll funktionsfähigen Bootloadern (d.\,h. nicht eingebetteten) sollte diese Option auf N gesetzt bleiben. \english{Allow for specifying boot arguments to the kernel at build time. -On some systems (e.g. embedded ones), it is necessary or convenient to provide some or all of the -kernel boot arguments with the kernel itself (that is, to not rely on the boot loader to provide them.)\\ -To compile command line arguments into the kernel, set this option to 'Y', then fill in the -boot arguments in CONFIG\_CMDLINE.\\ +On some systems (e.g. embedded ones), it is necessary or convenient to provide some or all of the kernel boot arguments with the kernel itself (that is, to not rely on the boot loader to provide them.)\\ +To compile command line arguments into the kernel, set this option to 'Y', then fill in the boot arguments in CONFIG\_CMDLINE.\\ Systems with fully functional boot loaders (i.e. non-embedded) should leave this option set to 'N'.} -%3.54 +%3.59 \subsection{Enable the LDT (local descriptor table)} CONFIG\_MODIFY\_LDT\_SYSCALL \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ -Linux kann es Benutzerprogrammen erlauben, mit dem Systemaufruf modify\_ldt(2) -eine prozessspezifische x86 Local Descriptor Table (LDT) zu installieren. +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. +\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. +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. +\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 +%3.60 Enforce strict size checking for sigaltstack \subsection{Enforce strict size checking for sigaltstack} CONFIG\_STRICT\_SIGALTSTACK\_SIZE [=n] \textbf{[N]}\\ Aus historischen Gründen ist MINSIGSTKSZ eine Konstante, die mit der AVX512-Unterstützung bereits zu klein wurde. -Fügen Sie einen Mechanismus hinzu, um die strenge Überprüfung der Sigaltstack-Größe gegen die tatsächliche Größe -des FPU-Rahmens zu erzwingen. Diese Option aktiviert die Überprüfung standardmäßig. Sie kann auch über die -Kernel-Kommandozeilenoption \texttt{strict\_sas\_size} unabhängig von diesem Konfigurationsschalter gesteuert werden. -Das Aktivieren dieser Option könnte bestehende Anwendungen zerstören, die einen zu kleinen Sigaltstack zuweisen, -aber \glq funktionieren\grq{}, weil sie nie ein Signal geliefert bekommen.\\ +Fügen Sie einen Mechanismus hinzu, um die strenge Überprüfung der Sigaltstack"=Größe gegen die tatsächliche Größe des FPU-Rahmens zu erzwingen. +Diese Option aktiviert die Überprüfung standardmäßig. +Sie kann auch über die Kernel-Kommandozeilenoption \texttt{strict\_sas\_size} unabhängig von diesem Konfigurationsschalter gesteuert werden. +Das Aktivieren dieser Option könnte bestehende Anwendungen zerstören, die einen zu kleinen Sigaltstack zuweisen, aber \glq funktionieren\grq{}, weil sie nie ein Signal geliefert bekommen.\\ Sagen Sie N, wenn Sie diese Prüfung nicht wirklich erzwingen wollen. -\english{For historical reasons MINSIGSTKSZ is a constant which became already too small -with AVX512 support. Add a mechanism to enforce strict checking of the sigaltstack size against the -real size of the FPU frame. +\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.\\ +It can also be controlled via the kernel command line option \texttt{strict\_sas\_size} independent of this config switch. +Enabling it might break existing applications which allocate a too small sigaltstack but \texttt{work} because they never get a signal delivered.\\ Say 'N' unless you want to really enforce this check.} +%3.61 +\subsection{Kernel Live Patching} +CONFIG\_LIVEPATCH [=n] \textbf{[N]}\\ +Geben Sie hier Y an, wenn Sie Kernel-Live-Patching unterstützen wollen. Diese Option hat keine Auswirkungen auf die +Laufzeit, bis ein Kernel-\glqq Patch\grqq{}-Modul die von dieser Option bereitgestellte Schnittstelle verwendet, +um einen Patch zu registrieren, was dazu führt, dass Aufrufe der gepatchten Funktionen auf den neuen Funktionscode +im Patch-Modul umgeleitet werden. +\english{Say Y here if you want to support kernel live patching. +This option has no runtime impact until a kernel ``patch'' module uses the interface provided by this option to register a patch, causing calls to patched functions to be redirected to new function code contained in the patch module.} +\note{Diese Option ist nur sichtbar, wenn folgendes gesetzt ist:\\(DYNAMIC\_FTRACE\_WITH\_REGS [=y] $||$ DYNAMIC\_FTRACE\_WITH\_ARGS [=y]) $\&\&$ MODULES [=y] $\&\&$ SYSFS [=y] $\&\&$ KALLSYMS\_ALL [=n] $\&\&$ HAVE\_LIVEPATCH [=y] $\&\&$ !TRIM\_UNUSED\_KSYMS [=n]} -%3.56 + +%3.62 Split Lock Detect and Bus Lock Detect support \subsection{Split Lock Detect and Bus Lock Detect support {\tiny seit 6.13}} CONFIG\_X86\_BUS\_LOCK\_DETECT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\ Aktivieren der Funktionen Split Lock Detect und Bus Lock Detect.\\ @@ -1606,11 +1501,4 @@ Siehe $<$file:Documentation/arch/x86/buslock.rst$>$ für weitere Informationen. 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. -} + diff --git a/documentation/linux_configuration_13_memory_management_options.tex b/documentation/linux_configuration_13_memory_management_options.tex index 3d21b03..779dbba 100644 --- a/documentation/linux_configuration_13_memory_management_options.tex +++ b/documentation/linux_configuration_13_memory_management_options.tex @@ -511,9 +511,9 @@ This value can be changed after boot using the /proc/sys/vm/mmap\_min\_addr tuna \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. +Ermöglicht die Wiederherstellung von Code nach einigen Speicherfehlern auf Systemen mit MCA"=Wiederherstellung. +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. \english{Enables code to recover from some memory failures on systems with MCA recovery. This allows a system to continue running even when some of its memory has uncorrected errors. This requires special hardware support and typically ECC memory.} @@ -773,6 +773,17 @@ Diese Option hat einen Speicher-Overhead pro memcg und pro Knoten. \english{Do not enable this option unless you plan to look at historical stats from evicted generations for debugging purpose.\\ This option has a per-memcg and per-node memory overhead.} +%13.34 NUMA emulation +% this moved from linux_configuration_03_processor_type_and_features to here: +\subsection{NUMA emulation} +CONFIG\_NUMA\_EMU [=n] \textbf{[N]}\\ +Aktivierung der NUMA-Emulation. +Eine einfache Maschine wird in virtuelle Knoten aufgeteilt, wenn sie mit \texttt{numa=fake=N} gebootet wird, wobei N die Anzahl der Knoten ist. +Dies ist nur für die Fehlersuche nützlich. +\english{Enable NUMA emulation. +A flat machine will be split into virtual nodes when booted with "numa=fake=N", where N is the number of nodes. +This is only useful for debugging.} + %13.27 \subsection{reclaim empty user page table pages} CONFIG\_PT\_RECLAIM [=y] \textbf{[Y]}\\