CentOS 8.2에서 Linux 커널 5.x 컴파일, 인증서

CentOS 8.2에서 Linux 커널 5.x 컴파일, 인증서

나는 CentOS 8.2with 를 사용하고 Kernel (4.18.0-193.6.3.el8_2.x86_64)있으며 컴파일에 관심이 있습니다 Kernel version 5.7.

실제로 내 컴퓨터에 설치하고 싶지 않기 때문에 일부 라이브러리를 추출해야 합니다.

나는 이 단계를 따르고 있습니다https://www.cyberciti.biz/tips/compiling-linux-kernel-26.html

sudo dnf upgrade -y
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.7.tar.xz
unxz -v linux-5.7.tar.xz
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.7.tar.sign
gpg --verify linux-5.7.tar.sign 
gpg --recv-keys 647F28654894E3BD457199BE38DBBDC86092693E
gpg --verify linux-5.7.tar.sign
tar xvf linux-5.7.tar
cp -v /boot/config-$(uname -r) .config
sudo dnf group install "Development Tools"
sudo dnf install ncurses-devel bison flex elfutils-libelf-devel openssl-devel
make menuconfig
make 

그러나 여기서 make나는 이것을 얻습니다:

  CC      kernel/pid_namespace.o
  CC      kernel/stop_machine.o
  CC      kernel/audit.o
  CC      kernel/auditfilter.o
  CC      kernel/auditsc.o
  CC      kernel/audit_watch.o
  CC      kernel/audit_fsnotify.o
  CC      kernel/audit_tree.o
  CC      kernel/hung_task.o
  CC      kernel/watchdog.o
  CC      kernel/watchdog_hld.o
  CC      kernel/seccomp.o
  CC      kernel/relay.o
  CC      kernel/utsname_sysctl.o
  CC      kernel/delayacct.o
  CC      kernel/taskstats.o
  CC      kernel/tsacct.o
  CC      kernel/tracepoint.o
  CC      kernel/irq_work.o
  CC      kernel/padata.o
  CC      kernel/crash_dump.o
  CC      kernel/jump_label.o
  CC      kernel/iomem.o
  CC      kernel/rseq.o
  AR      kernel/built-in.a
  CC      certs/system_keyring.o
make[1]: *** No rule to make target 'certs/rhel.pem', needed by 'certs/x509_certificate_list'.  Stop.
make: *** [Makefile:1729: certs] Error 2
[joseluisbz@centos linux-5.7]$ 

어떻게 해결하나요?

1 2

답변1

RHEL/CentOS 커널은 Secure Boot와 호환되도록 구축되었으므로 RedHat의 개인 키로 서명됩니다. RedHat에서는 이를 얻을 수 없으므로 보안 부팅/커널 서명을 위해 자체 키 + 인증서를 생성하거나 시스템에서 보안 부팅을 비활성화할 수 있습니다.

관련 커널 컴파일 옵션:

  • CONFIG_MODULE_SIG_KEY(Crypto API 아래): 커널 모듈 서명에 사용되는 파일을 지정합니다. certs/rhel.pemRHEL/CentOS 커널에서 로 설정합니다. "공장 기본값"으로 설정하면 certs/signing_key.pem커널 컴파일 프로세스가 자동으로 키와 인증서를 생성합니다.
  • CONFIG_MODULE_SIG("Enable loadable module support" 아래): 커널 모듈 서명 확인을 활성화합니다.
  • CONFIG_MODULE_SIG_FORCE: 커널이 서명을 확인할 수 없거나 전혀 서명되지 않은 모듈을 거부하도록 합니다. 이것이 없으면 보안 부팅은 별로 효과적이지 않습니다.
  • CONFIG_MODULE_SIG_ALL: 커널 빌드 프로세스가 커널로 빌드된 모든 모듈에 자동으로 서명하도록 합니다.

너는 읽어야 해Documentation/admin-guide/module-signing.rst모듈 서명에 대한 자세한 내용은 커널 소스 패키지를 참조하세요. 여기에는 자동 키 생성 프로세스를 구성하고 OpenSSL을 사용하여 자체 장기 커널 서명 키를 생성하기 위한 지침이 포함되어 있습니다. 또한 커널 패키지에 포함되지 않은 일부 모듈("타사 모듈")을 사용하려는 경우 모듈을 개별적으로 서명하는 방법도 알려줍니다.

시스템이 보안 부팅을 지원하고 이를 비활성화하고 싶지 않은 경우 다음 단계는 커널 서명 키의 공개 부분을 보안 부팅 db변수에 추가하거나 shim.efi부트로더용 키로 추가하는 것입니다 MOK. 그러나 가장 쉬운 옵션은 보안 부팅을 일시적으로 비활성화하고 먼저 보안 부팅의 복잡성에 대해 걱정하지 않고 새 커널과 해당 모듈을 컴파일하고 설치하는 방법을 배우는 것입니다. 보안 부팅 없이 작동하는 서명된 모듈이 포함된 커널이 있으면 특정 하드웨어에서 사용자 지정 키와 함께 보안 부팅을 사용하는 가장 좋은 방법을 찾을 수 있습니다.

를 실행하기 전에 Let the Kernel Configuration Tool을 make menuconfig실행하여 make oldconfig표준 CentOS 커널 버전 4.18에서 복사한 구성 파일을 자동으로 확인하고 버전 4.18과 컴파일 중인 커널 버전 사이에 추가된 새 구성 옵션을 어떻게 설정해야 하는지 물어보세요. (매우 기술적인 질문이 포함된 꽤 긴 목록이 되겠지만 프롬프트에 물음표를 입력하면 묻는 구성 옵션에 대한 도움말 텍스트가 표시됩니다.)

관련 정보