5.2. 외부 커널 매개변수로 중요한 변경
이 장에서는 시스템 관리자에게 Red Hat Enterprise Linux 8.3과 함께 제공되는 커널의 중요한 변경 사항을 요약해서 설명합니다. 이러한 변경에는 추가 또는 업데이트된 proc
항목, sysctl
및 sysfs
기본값, 부팅 매개 변수, 커널 구성 옵션 또는 눈에 띄게 동작 변경이 포함될 수 있습니다.
새 커널 매개변수
- acpi_no_watchdog = [HW,ACPI,WDT]
- 이 매개 변수를 사용하면 고급 구성 및 전원 인터페이스(ACPI) 기반 워치독 인터페이스(WDAT)를 무시하고 기본 드라이버가 워치독 장치를 대신 제어하도록 합니다.
- dfltcc = [HW,S390]
이 매개 변수는 IBM Z 아키텍처에 대한
zlib
하드웨어 지원을 구성합니다.형식: { on | off | def_only | inf_only | always }
옵션은 다음과 같습니다.
-
에서
(기본값) - 레벨 1에서의 압축 및 압축 해제를 위한 IBM Zzlib
하드웨어 지원 -
off
- IBM Zzlib
하드웨어 지원 없음 -
deflate
Z알고리즘에
대한 IBMzlib
하드웨어 지원(레벨 1에 대한 압축) -
inf_only
- IBM Zzlib
하드웨어가 비플릿알고리즘에
대한 지원 (압축 해제) -
Always
- 와유사하지만
선택한 압축 수준을 무시하고 항상 하드웨어 지원을 사용합니다(디렉터리에 사용됨)
-
- irqchip.gicv3_pseudo_nmi = [ARM64]
이 매개변수는 커널에서 마스크 불가능 인터럽트(NMI)를 지원합니다.
이 매개 변수를 사용하려면
CONFIG_ARM64_PS EUDO_NMI
구성 항목을 사용하여 커널을 빌드해야 합니다.- panic_on_taint =
add_taint
()에서 panic()
을 조건부로 호출하는 비트마스크형식: <hex>[,
nousertaint
]이 세트에서
add_taint()
시스템 호출을 호출할 때 커널이 패닉을 발생시키는TAINT
플래그 세트를 나타내는 16진수 비트마스크입니다. 선택 사항인nousertaint
스위치는panic_on_taint의 비트마스크와 일치하는 플래그 세트와 일치하는
/proc/sys/kernel/tainted
파일에 기록하여 사용자 공간 강화 충돌을 방지합니다.자세한 내용은 업스트림 문서를 참조하십시오.
- prot_virt = [S390]
형식: <bool>
이 매개 변수를 사용하면 하드웨어 지원이 있는 경우 하이퍼바이저와 격리된 보호된 가상 시스템을 호스팅할 수 있습니다.
- rcutree.use_softirq = [KNL]
이 매개 변수를 사용하면 Tree-RCU
softirq
처리를 제거할 수 있습니다.이 매개변수를 0으로 설정하면 모든
RCU_SOFTIRQ
처리를 CPU당 rcuc kthreads로 이동합니다.rcutree.use_softirq
를 0이 아닌 값(기본값)으로 설정하면RCU_SOFTIRQ
가 기본적으로 사용됩니다. rcuc kthreads를 사용하려면rcutree.use_softirq=0
을 지정합니다.- split_lock_detect = [X86]
이 매개변수는 분할 잠금 탐지를 활성화합니다. 활성화되고 하드웨어 지원이 있는 경우 캐시 라인 경계에서 데이터에 액세스하는 원자성 지침으로 인해 정렬 확인 예외가 발생합니다.
옵션은 다음과 같습니다.
-
off
- 활성화되지 않음 -
경고
- 커널이 Alignment Check Exception(#AC)을 트리거하는 애플리케이션에 대한 속도 제한 경고를 발송합니다. 이 모드는 분할 잠금 탐지를 지원하는 CPU의 기본값입니다. 치명적
- 커널은 #AC 예외를 트리거하는 애플리케이션에 버스 오류(SIGBUS) 신호를 보냅니다.사용자 모드에서 실행하지 않는 동안 #AC 예외가 충돌하면 커널은
경고
또는치명적인
모드에서 oops 오류를 실행합니다.
-
- srbds = [X86,INTEL]
이 매개변수는 SRBDS(Special Register Buffer Data Sampling) 완화를 제어합니다.
특정 CPU는 MDS(Microarchitectural Data Sampling)에 취약하여 임의 번호 생성기로부터 비트를 누출할 수 있습니다.
기본적으로 마이크로코드는 이 문제를 완화합니다. 그러나 마이크로 코드 수정으로
RDRAND
및RDSEED
명령이 훨씬 느려질 수 있습니다. 이로 인해urandom
커널 임의 소스 장치에서 처리량이 줄어듭니다.마이크로 코드 완화를 비활성화하려면 다음 옵션을 설정합니다.
-
off
- 완화를 비활성화하고RDRAND
및RDSEED
에 대한 성능 영향을 제거
-
- svm = [PPC]
형식: { on | off | y | n | 1 | 0 }
이 매개변수는 pSeries 시스템에서 보호된 실행 기능 사용을 제어합니다.
- nopv = [X86,XEN,KVM,HYPER_V,VMWARE]
이 매개변수는 PV 최적화를 비활성화하여 게스트가 PV 드라이버 없이 일반 게스트로 실행되도록 합니다.
현재 지원되는 XEN HVM, KVM, HYPER_V 및 VMWARE 게스트.
업데이트된 커널 매개변수
- hugepagesz = [HW]
이 매개변수는 대규모 페이지 크기를 지정합니다. 지정된 크기의 대규모 페이지를 미리 할당하려면
hugepages
매개변수와 함께 이 매개변수를 사용합니다.다음과 같이
hugepagesz
및hugepages
매개변수를 쌍으로 지정합니다.hugepagesz=2M hugepages=512
hugepagesz
매개변수는 특정 대규모 페이지 크기에 대해 명령줄에서 한 번만 지정할 수 있습니다. 유효한 대규모 페이지 크기는 아키텍처에 따라 다릅니다.- hugepages = [HW]
이 매개 변수는 사전 할당할 대규모 페이지 수를 지정합니다. 이 매개 변수는 일반적으로 유효한
hugepagesz
또는default_hugepagesz
매개 변수를 따릅니다.그러나
hugepages
가 첫 번째 또는 유일한 HugeTLB 명령줄 매개 변수인 경우 할당할 기본 크기의 대규모 페이지 수를 암시적으로 지정합니다. 기본 크기의 대규모 페이지 수를 암시적으로 지정하는 경우 기본 크기에 대한hugepagesz + hugepages
매개변수 쌍으로 덮어쓸 수 없습니다.
예를 들어 2M의 기본 대규모 페이지 크기가 있는 아키텍처에서 다음을 수행합니다.
hugepages=256 hugepagesz=2M hugepages=512
위의 예에서 설정하면 256 2M 대규모 페이지가 할당되고
hugepages=512
매개 변수가 무시된 경고 메시지가 표시됩니다.hugepages
앞에 잘못된 hugepagesz
가 있으면hugepages
가 무시됩니다.- default_hugepagesz = [HW]
이 매개변수는 기본 대규모 페이지 크기를 지정합니다. 명령행에서
default_hugepagesz
를 한 번만 지정할 수 있습니다. 선택적으로default_hugepagesz
크기의 특정 대규모 페이지 수를 사전 할당할 수 있습니다. 또한 사전 할당할 기본 대규모 페이지 수를 암시적으로 지정할 수 있습니다.를 hugepages
매개변수로 따라 기본예를 들어 2M의 기본 대규모 페이지 크기가 있는 아키텍처에서 다음을 수행합니다.
hugepages=256 default_hugepagesz=2M hugepages=256 hugepages=256 default_hugepagesz=2M
위의 예제의 설정은 모두 256 2M 대규모 페이지를 할당합니다. 유효한 기본 대규모 페이지 크기는 아키텍처에 따라 다릅니다.
- efi = [EFI]
Format: { "old_map", "nochunk", "noruntime", "debug", "nosoftreserve" }
옵션은 다음과 같습니다.
-
old_map
[X86-64] - 기존의 ioremap 기반 EFI 런타임 서비스 매핑으로 전환합니다. 32비트는 기본적으로 이 파일을 계속 사용합니다. -
nochunk
- 일부 펌웨어 구현에서 문제를 일으킬 수 있으므로 EFI 부트 스텁의 "청크"에서 파일을 읽지 않도록 설정할 수 있습니다. -
noruntime
- EFI 런타임 서비스 지원 비활성화 -
debug
- 기타 디버그 출력 활성화 -
nosoftreserve
-EFI_MEMORY_SP
(특정 용도) 속성으로 인해 커널이 메모리 매핑 드라이버의 메모리 범위를 클레임하는 경우가 있습니다. 이 예약을 비활성화하고 기본 유형(예:EFI_CONVENTIONAL_MEMORY
/ "System RAM")으로 메모리를 처리하려면efi=nosoftreserve
를 지정합니다.
-
- intel_iommu = [DMAR]
Intel IOMMU 드라이버 DMAR(Direct Memory Access Remapping).
추가 옵션은 다음과 같습니다.
-
nobounce
(기본값 끄기) - HFS 장치와 같은 신뢰할 수 없는 장치에 대해 바운스 버퍼 비활성화. 이렇게 하면 신뢰할 수 없는 장치를 신뢰할 수 있는 장치로 처리합니다. 따라서 이 설정은 DMA(직접 메모리 액세스) 공격의 보안 위험을 초래할 수 있습니다.
-
- mem = nn[KMG] [KNL, BoOT]
이 매개 변수는 특정 메모리 양을 강제로 사용합니다.
사용할 메모리 양은 다음과 같습니다.
- 테스트용.
- 커널이 전체 시스템 메모리를 볼 수 없는 경우.
하이퍼바이저에서
mem
경계를 제외한 후 KVM 게스트에 할당된 메모리입니다.[X86] 최대 주소 제한으로 작업합니다. 물리적 주소 공간 충돌을 방지하려면
memmap
매개변수와 함께 를 사용합니다.memmap
이 없으면 PCI(Peripheral Component Interconnect) 장치를 사용하지 않는 RAM에 속하는 주소에 배치할 수 있었습니다.위의 경우 3번의 경우 하이퍼바이저의 시스템 메모리가 충분하지 않은 경우 부팅 후 메모리를 핫으로 추가해야 하므로 이 설정은 부팅 시에만 적용됩니다.
- pci = [PCI]
다양한 PCI(Peripheral Component Interconnect) 하위 시스템 옵션.
여기에서 일부 옵션은 특정 장치 또는 장치 집합(
<pci_dev>
)에서 작동합니다. 다음 형식 중 하나로 지정됩니다.[<domain>:]<bus>:<dev>.<func>[/<dev>.<func>]* pci:<vendor>:<device>[:<subvendor>:<subdevice>]
첫 번째 형식은 새 하드웨어가 삽입되거나 마더보드 펌웨어가 변경되거나 다른 커널 매개 변수로 인한 변경으로 인해 변경될 수 있는 PCI 버스/장치/기능 주소를 지정합니다. 도메인이 지정되지 않은 경우 0이 됩니다. 또는 기본 주소 이후에 여러 장치/기능 주소를 통해 장치의 경로를 지정할 수 있습니다(문제의 번호 변경에 대해 더 강력함). 두 번째 형식은 구성 공간의 ID를 사용하여 시스템의 여러 장치와 일치할 수 있는 장치를 선택합니다.
옵션은 다음과 같습니다.
-
hpmmiosize
- 핫플러그 브리지의 메모리 매핑 I/O(MMIO) 창에 예약된 고정된 버스 공간입니다. 기본 크기는 2MB입니다. -
hpmmioprefsize
- 핫플러그 브리지의 MMIO_PREF 창을 위해 예약된 고정된 버스 공간 기본 크기는 2MB입니다.
-
- pcie_ports = [PCIE]
PCIe(Wear Component Interconnect Express) 포트 서비스 처리.
옵션은 다음과 같습니다.
-
네이티브
- 플랫폼이 OS에서 사용할 수 있는 권한을 제공하지 않아도 기본 PCIe 서비스(PME, AER, DPC, PCIe 핫플러그) 사용. 플랫폼에서 이러한 서비스를 사용하려는 경우에도 이러한 설정이 충돌할 수 있습니다. -
DPC
-native
- DPC에만 기본 PCIe 서비스를 사용합니다. 펌웨어가 AER 또는 DPC를 사용하는 경우 이러한 설정이 충돌할 수 있습니다. -
Compat
- 기본 PCIe 서비스(PME, AER, DPC, PCIe 핫플러그)를 비활성화합니다.
-
- rcu_nocbs = [KNL]
- 인수는 CPU 목록입니다. 문자열 "all"을 사용하여 시스템의 모든 CPU를 지정할 수 있습니다.
- usbcore.authorized_default = [USB]
기본 USB 장치 권한 부여.
옵션은 다음과 같습니다.
-
-1
(기본값) - 무선 USB를 제외하고 인증됨 -
0
- 인증되지 않음 -
1
- 인증됨 -
2
- 장치가 내부 포트에 연결된 경우 인증
-
- usbcore.old_scheme_first = [USB]
- 이 매개 변수를 사용하면 이전 장치 초기화 스키마로 시작할 수 있습니다. 이 설정은 낮음 및 전체 속도 장치에만 적용됩니다(기본값 0 = 꺼짐).
- usbcore.quirks = [USB]
기본 제공 USB 코어 quirk 목록을 보강하는 quirk 항목 목록입니다. 목록 항목은 쉼표로 구분됩니다. 각 항목에는 VendorID:ProductID:Flags(예:
quirks=0781:5580:bk,0a5c:5834:gij
) 형식이 있습니다. ID 는 4자리 16진수 이고 플래그는 문자 집합입니다. 각 문자는 내장된 quirk를 변경하고, 명확하고 설정된 경우 이를 지웁니다.추가된 플래그:
-
o
-USB_QUIRK_HUB_SLOW_RESET
, 포트를 재설정한 후 허브가 추가 지연이 필요합니다
-
새로운 /proc/sys/fs 매개변수
- protected_fifos
이 매개 변수는 Openwall 소프트웨어의 제한 사항을 기반으로 하며, 프로그램이 일반 파일을 만들려는 공격자가 제어하는 FIFO에 의도하지 않은 쓰기를 방지할 수 있도록 함으로써 보호를 제공합니다.
옵션은 다음과 같습니다.
-
0
- FIFO에게 쓰기는 제한되지 않습니다. -
1
- 디렉터리 소유자가 소유하지 않는 한 세계 쓰기 가능한 고정 디렉토리에서 소유하지 않는 FIFO에O_CREAT
플래그를 열도록 허용하지 않습니다. -
2
- 쓰기 가능한 Sticky 디렉토리에 적용됩니다.
-
- protected_regular
이 매개 변수는
protected_fifos
매개변수와 비슷하지만, 프로그램을 생성하려는 공격자가 제어하는 정규 파일에 쓰기를 방지할 수 있습니다.옵션은 다음과 같습니다.
-
0
- 일반 파일에 쓰는 것은 제한되지 않습니다. -
1
- 디렉터리 소유자가 소유하지 않는 한 world writable sticky directory에 소유하지 않는 일반 파일에서O_CREAT
플래그를 열도록 허용하지 않습니다. -
2
- 쓰기 가능한 Sticky 디렉토리에 적용됩니다.
-