3장. 외부 커널 매개변수의 중요한 변경 사항
이 장에서는 Red Hat Enterprise Linux 7.7에 제공된 커널의 중요한 변경 사항에 대한 요약을 시스템 관리자에게 제공합니다. 이러한 변경 사항에는 추가 또는 업데이트된 proc
항목, sysctl
및 sysfs
기본값, 부팅 매개 변수, 커널 구성 옵션 또는 눈에 띄는 동작 변경 사항이 포함됩니다.
새 커널 매개변수
- usbcore.quirks = [USB]
이 매개변수는 내장 usb 코어 quirk 목록을 보강하기 위해 quirk 항목 목록을 제공합니다.
항목은 쉼표로 구분됩니다. 각 항목에는
VendorID:ProductID:
>-<s 형식이 있습니다.ID
는 4자리 16진수이고ECDHE는 문자 집합입니다. 각 문자는 내장 된 quirk를 변경합니다; 설정 된 경우 명확하고 해제하는 경우. 문자에는 다음과 같은 의미가 있습니다.
-
A =
USB_QUIRK_STRING_FETCH_255
(문자열 설명자는 255바이트 읽기를 사용하여 가져오지 않아야 함) -
b =
USB_QUIRK_RESET_RESET_RESUME
(시스템을 올바르게 재개할 수 없으므로 대신 재설정할 수 없음) -
C =
USB_QUIRK_NO_SET_INTF
(device가 Set-Interface 요청을 처리할 수 없음) -
D =
USB_QUIRK_CONFIG_INTF_STRINGS
(디바이스 구성 또는 인터페이스 문자열을 처리할 수 없음) -
e =
USB_QUIRK_RESET
(device cannot be reset (e.g calledph devices))은 reset을 사용하지 마십시오. -
F =
USB_QUIRK_HONOR_BNUMINTERFACES
(대화 장치에는bNumInterfaces
수보다 더 많은 인터페이스 설명이 있으며 이러한 인터페이스에 대한 대화를 처리할 수 없음) -
G =
USB_QUIRK_DELAY_INIT
(Device descriptor를 읽은 후 초기화 중 일시 중지가 필요함) -
H =
USB_QUIRK_LINEAR_UFRAME_INTERVAL
(고속 속도 및 초고속 인터럽트 끝점의 경우 USB 2.0 및 USB 3.0 사양은 간격 = 2 ^ (bInterval
-1)로 계산되기 위해서는 마이크로 프레임 (1마이크 프레임 = 125 초)의 간격이 필요합니다. 이 quirk가 있는 장치는 계산에 사용된 지수 변수 대신 이 계산의 결과로서bInterval
을 보고합니다. -
i =
USB_QUIRK_DEVICE_QUALIFIER
(디바이저가 device_qualifier 설명자 요청을 처리할 수 없음) -
J =
USB_QUIRK_IGNORE_REMOTE_
WAK EUP (device generates spurious wakeup, ignore remote wakeup 기능). -
k =
USB_QUIRK_NO_LPM
(device cannot handle Link Power Management) -
L =
USB_QUIRK_LINEAR_FRAME_INTR_BINTERVAL
(Device는 USB 2.0 계산 대신 선형 프레임으로bInterval
을 보고함) -
m =
USB_QUIRK_DISCONNECT_SUSPEND
(재해 발생을 방지하기 위해 일시 중지되기 전에 장치 연결이 끊어야 함) N =
USB_QUIRK_DELAY_CTRL_MSG
(모든 제어 메시지 이후 장치에 일시 중지 필요)예제 항목:
quirks=0781:5580:bk,0a5c:5834:gij
-
A =
- ppc_tm = [PPC]
하드웨어 트랜잭션 메모리를 비활성화합니다.
형식: {"off"}
- cgroup.memory = [KNL]
cgroup 메모리 컨트롤러에 옵션을 전달합니다.
형식: <string>
nokmem
ECDHE-ECDHE 이 옵션은 커널 메모리 계산을 비활성화합니다.- mds = [X86,INTEL]
MDS(Micro-architectural Data Sampling) 취약점에 대한 완화 조치를 제어합니다.
특정 CPU는 특정 조건에서 공개 가젯으로 정보를 전달할 수 있는 CPU 내부 버퍼에 대한 악용에 취약합니다.
취약한 프로세서에서는 추측적으로 전달된 데이터를 캐시 사이드 채널 공격에 사용하여 공격자가 직접 액세스할 수 없는 데이터에 액세스할 수 있습니다.
옵션은 다음과 같습니다.
-
Full
- 취약한 CPU에서 MDS 완화를 활성화합니다. -
전체,nosmt
- MDS 완화를 활성화하고 취약한 CPU에서 SMT(Simultaneous multithreading)를 비활성화합니다. Off
- 무조건 MDS 완화를 비활성화합니다.이 옵션을 지정하지 않는 것은
mds=full
과 동일합니다.
-
- mitigations = [X86,PPC,S390]
CPU 취약점에 대한 선택적 완화 조치를 제어합니다. 이는 선별된 아키텍처 독립적인 옵션 세트이며, 각각은 기존 아키텍처별 옵션의 집계입니다.
옵션은 다음과 같습니다.
Off
- 선택한 CPU 완화를 모두 비활성화합니다. 이로 인해 시스템 성능이 향상되지만 사용자가 여러 CPU 취약점에 노출될 수도 있습니다.다음과 같습니다.
-
nopti [X86,PPC]
-
nospectre_v1 [PPC]
-
nobp=0 [S390]
-
nospectre_v2 [X86,PPC,S390]
-
spec_store_bypass_disable=off [X86,PPC]
-
l1tf=off [X86]
-
mds=off [X86]
-
Auto
(default) - 모든 CPU 취약점을 완화하지만 취약한 경우에도 SMT(Simultaneous multithreading)를 활성화합니다. 이는 SMT가 커널 업그레이드 전반에 걸쳐 비활성화되거나 SMT 기반 공격을 방지할 수 있는 다른 방법이 있는 경우 예기치 않은 사용자용입니다.다음과 같습니다.
- (기본 동작)
Auto,nosmt
- 모든 CPU 취약점을 완화하여 필요한 경우 SMT(Simultaneous multithreading)를 비활성화합니다. 이는 SMT 손실을 의미하더라도 항상 완전히 완화되기를 원하는 사용자에게 적합합니다.다음과 같습니다.
-
l1tf=flush,nosmt [X86]
-
mds=full,nosmt [X86]
-
- watchdog_thresh = [KNL]
하드 잠금 감지기 stall 기간 임계값을 초 단위로 설정합니다.
소프트 잠금 감지기 임계값이 값의 두 배로 설정됩니다.
값이 0이면 두 잠금 감지기를 모두 비활성화합니다. 기본값은 10초입니다.
- novmcoredd [KNL,KDUMP]
장치 덤프를 비활성화합니다. 장치 덤프를 사용하면 드라이버에서 vmcore에 덤프 데이터를 추가할 수 있으므로 지정된 디버그 정보를 수집할 수 있습니다.
드라이버는 제한 없이 데이터를 추가할 수 있으며 이 데이터는 메모리에 저장되므로 이로 인해 상당한 메모리 과부하가 발생할 수 있습니다.
장치 덤프를 비활성화하면 메모리를 절약할 수 있지만 드라이버 디버그 데이터를 더 이상 사용할 수 없습니다.
이 매개변수는
CONFIG_PROC_VMCORE_DEVICE_DUMP
가 설정된 경우에만 사용할 수 있습니다.
업데이트된 커널 매개변수
- resource_alignment
정렬 및 장치를 지정하여 정렬된 메모리 리소스를 다시 할당합니다.
형식:
-
[<order of align>@][<domain>:]<bus>:<slot>.<func>[; …]
-
[<order of align>@]pci:<vendor>:<device>\[:<subvendor>:<subdevice>][; …]
-
& lt;order of align&
gt;을 지정하지 않으면 PAGE_SIZE가 정렬으로 사용됩니다. 리소스 창을 확장해야 하는 경우 PCI- PCI 브리지를 지정할 수 있습니다.
- irqaffinity = [SMP]
기본 irq 선호도 마스크를 설정합니다.
형식:
-
<cpu number>,…,<cpu number>
-
<cpu number>-<cpu number>
- 드라이버(정확한 순서의 범위여야 함)
mixture
<cpu number>,…,<cpu number>-<cpu number>
드라이버는 CPU0에 모두 배치하지 않고 기본 인터럽트 할당에 드라이버의 선호도 마스크를 사용합니다.
-
옵션은 다음과 같습니다.
Auto
(default) - 모든 CPU 취약점을 완화하지만 취약한 경우에도 SMT(Simultaneous multithreading)를 활성화합니다. 이는 SMT가 커널 업그레이드 전반에 걸쳐 비활성화되거나 SMT 기반 공격을 방지할 수 있는 다른 방법이 있는 경우 예기치 않은 사용자용입니다.동일성: (기본 동작)
Auto,nosmt
- 모든 CPU 취약점을 완화하여 필요한 경우 SMT(Simultaneous multithreading)를 비활성화합니다. 이는 SMT 손실을 의미하더라도 항상 완전히 완화되기를 원하는 사용자에게 적합합니다.다음과 같습니다.
-
l1tf=flush,nosmt [X86]
-
mds=full,nosmt [X86]
-
새로운 /proc/sys/net/core 매개변수
- bpf_jit_kallsyms
Berkeley Packet Filter Just in Time 컴파일러가 활성화된 경우 컴파일된 이미지는 커널에 알 수 없는 주소입니다. 이는 추적이나
/proc/kallsyms
파일에 표시되지 않음을 의미합니다. 이를 통해 이러한 주소를 내보낼 수 있으며, 이는 디버깅/추적에 사용할 수 있습니다.bpf_jit_harden
매개변수가 활성화된 경우 이 기능은 비활성화되어 있습니다.가능한 값은 다음과 같습니다.
0
-JIT(Just in Time)kallsyms
내보내기(기본값)를 비활성화합니다.1
- 권한 있는 사용자에게만JIT(Just in Time)kallsyms
내보내기를 활성화합니다.
업데이트된 /proc/sys/fs 매개변수
- dentry-state
들여쓰기는 동적으로 할당 및 할당 해제됩니다.
linux/include/linux/dcache.h
에서 다음을 수행합니다.struct dentry_stat_t dentry_stat { int nr_dentry; int nr_unused; int age_limit; (age in seconds) int want_pages; (pages requested by system) int nr_negative; (# of unused negative dentries) int dummy; (Reserved for future use) };
nr_dentry
번호는 할당된 총 들여쓰기 수(활성 + 사용되지 않음)를 보여줍니다.nr_unused
숫자는 적극적으로 사용되지 않지만 나중에 재사용할 수 있도록 가장 적게 사용되는 LRU(LRU) 목록에 저장됩니다.age_limit
숫자는 메모리가 단축될 때dcache
shrink_dcache_pages()
함수가 호출되고 dcache가 아직 정리되지 않은 경우want_pages
번호가 0이 아닙니다.nr_negative
번호는 파일에 매핑되지 않는 음수 들여쓰기이기도 하는 사용하지 않는 들여쓰기 수를 보여줍니다. 대신 사용자가 제공한 기존 파일의 거부 속도를 높이는 데 도움이 됩니다.