소스 코드에서 구성/컴파일할 때 "완전 선점형 커널(실시간)"을 선택할 수 없습니다.

소스 코드에서 구성/컴파일할 때 "완전 선점형 커널(실시간)"을 선택할 수 없습니다.

안정적인 최신 PREEMPT_RT 패치(5.4.28-rt19)를 사용하여 5.4 커널을 컴파일하려고 하는데 어떤 이유로 작동하지 않습니다.완전 선점형 코어(RT)내부 옵션nconfig/menconfig 만들기.

이전에 4.19 rt 패치를 컴파일한 적이 있는데 현재 구성(/boot/config-4.18-xxx)을 새 구성에 복사하는 것만큼 간단했고 .config옵션이 표시되었습니다. 이제 다음만 볼 수 있습니다.

No Forced Preemption (Server)
Voluntary Kernel Preemption (Desktop)
Preemptible Kernel (Low-Latency Desktop)

F4를 눌러 "모두 보이기”, 다음 옵션이 표시됩니다.

XXX Fully Preemptible Kernel (Real-Time) 

하지만 선택할 수 있는 방법이 없습니다. .config다음과 같은 다양한 PREEMPT 옵션을 사용하여 수동으로 설정해 보았습니다 .

CONFIG_PREEMPT=y
CONFIG_PREEMPT_RT_BASE=y
CONFIG_PREEMPT_RT_FULL=y

그러나 그것은 결코 보여주지 않았습니다. 방금 가서 컴파일했지만 CONFIG_PREEMPT_RT_FULL=y(저장하기 전에 덮어썼습니다 make nconfig) 아직 완전히 선점형 커널이 설치되어 있지 않은 것 같습니다.

4.19의 경우 uname -a다음과 유사한 내용이 표시됩니다.

Linux 4.19.106-rt45 #2 SMP PREEMPT RT <date>

또는 그와 비슷한 것인데 지금은 다음과 같이 말합니다.

Linux 5.4.28-rt19 #2 <date>

내가 여기서 무엇을 놓치고 있는지 아는 사람 있나요?

운영 체제: CentOS 8.1.1911

커널: 4.18.0-147.8.1 -> 5.4.28-rt19

답변1

make nconfig시작 시/시작 후에 전문가 모드를 활성화하세요 menuconfig. 그런 다음 완전 선점형 코어(RT) 옵션을 선택할 수 있습니다.

답변2

utk가 취한 접근 방식은 나에게 정확히 맞지 않았습니다.

논문에서 ARM64 서버(ThunderX CN8890)를 사용하고 있는데, 무엇을 하든 메뉴 구성에 표시할 완전 선점형 코어(RT)를 얻을 수 없습니다.

kernel/Kconfig.preempt를 확인한 후 답을 얻었습니다.

config PREEMPT_RT
    bool "Fully Preemptible Kernel (Real-Time)"
    depends on EXPERT && ARCH_SUPPORTS_RT
    select PREEMPTION

->https://elixir.bootlin.com/linux/latest/source/kernel/Kconfig.preempt#L61

EXPERT 플래그(위 설명에서 krishna chaitanya를 통해 임베디드 시스템 전환)를 활성화했지만 구성 파일에 CONFIG_ARCH_SUPPORTS_RT 항목이 없습니다.

플래그를 수동으로 입력하면 make 단계에서 덮어쓰게 됩니다. 기본적으로 이 플래그를 활성화하려면, arch/Kconfig 파일을 열고 ARCH_SUPPORTS_RT 항목을 검색하십시오. (나노로 검색하려면 CTRL+W를 누르세요)

다음에서 항목 변경

config ARCH_SUPPORTS_RT
    bool

도착하다

config ARCH_SUPPORTS_RT
    def_bool y

이제 EXPERT(일반 설정->임베디드 시스템) 플래그도 활성화했으므로 일반 설정->선점 모델 아래에 "완전 선점형 커널(실시간)" 옵션이 표시되어야 합니다.

플래그를 강제로 적용하는 것은 이 문제를 해결하는 이상한 방법이지만 여전히 저에게는 효과적입니다.

답변3

허용되는 답변은 최대 5.8의 커널 버전에서 작동합니다. 5.9부터 완전 선점형 옵션이 나타나기 전에 KVM을 비활성화해야 합니다. 이 옵션은 다음에서 찾을 수 있습니다.

Virtualization -> Kernel-based Virtual Machine (KVM) support

이걸 찾았어요, 고마워요https://unix.stackexchange.com/a/616822/231640그리고https://lore.kernel.org/linux-rt-users/[이메일 보호됨]

답변4

라이브 패치가 없거나 RT 패치와 함께 Linux 커널 소스를 사용하고 있는 것 같습니다. https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/

당신은 또한 볼 수 있습니다Linux Foundation 위키 라이브 페이지

관련 정보