Red Hat Training

A Red Hat training course is available for RHEL 8

2.11. 시스템 부팅 시 커널 모듈이 자동으로 로드되지 않도록 방지

modprobe 구성 파일에 해당 명령을 사용하여 모듈을 나열하여 부팅 프로세스 중에 시스템이 커널 모듈을 자동으로 로드하지 못하도록 할 수 있습니다.

사전 요구 사항

  • 이 절차의 명령에는 root 권한이 필요합니다. su - 를 사용하여 root 사용자로 전환하거나 sudo 를 사용하여 명령 앞에 추가합니다.
  • kmod 패키지가 설치되어 있습니다.
  • 현재 시스템 구성에 거부하려는 커널 모듈이 필요하지 않은지 확인합니다.

절차

  1. lsmod 명령을 사용하여 현재 실행 중인 커널에 로드된 모듈을 나열합니다.

    $ lsmod
    Module                  Size  Used by
    tls                   131072  0
    uinput                 20480  1
    snd_seq_dummy          16384  0
    snd_hrtimer            16384  1
    …

    출력에서 로드되지 않도록 할 모듈을 식별합니다.

    • 또는 /lib/modules/ <KERNEL-VERSION> /kernel/ <SUBSYSTEM> / 디렉터리에 잠재적으로 로드되지 않도록하려는 언로드된 커널 모듈을 식별합니다. 예를 들면 다음과 같습니다.

      $ ls /lib/modules/4.18.0-477.20.1.el8_8.x86_64/kernel/crypto/
      ansi_cprng.ko.xz        chacha20poly1305.ko.xz  md4.ko.xz               serpent_generic.ko.xz
      anubis.ko.xz            cmac.ko.xz…
  2. 거부 목록 역할을 하는 구성 파일을 생성합니다.

    # touch /etc/modprobe.d/denylist.conf
  3. 선택한 텍스트 편집기에서 blacklist 설정 명령과 함께 커널 자동 로드에서 제외할 모듈 이름을 결합합니다.

    # Prevents <KERNEL-MODULE-1> from being loaded
    blacklist <MODULE-NAME-1>
    install <MODULE-NAME-1> /bin/false
    
    # Prevents <KERNEL-MODULE-2> from being loaded
    blacklist <MODULE-NAME-2>
    install <MODULE-NAME-2> /bin/false
    …

    blacklist 명령은 모듈이 거부 목록에 없는 다른 커널 모듈의 종속성으로 로드되지 않도록 하려면 설치 행도 정의해야 합니다. 이 경우 시스템은 모듈을 설치하는 대신 /bin/false 를 실행합니다. 해시 기호로 시작하는 행은 파일을 더 읽기 쉽게 만드는 데 사용할 수 있는 주석입니다.

    참고

    커널 모듈 이름을 입력할 때 이름 끝에 .ko.xz 확장을 추가하지 마십시오. 커널 모듈 이름에는 확장 기능이 없으며 해당 파일은 다음과 같습니다.

  4. 다시 빌드하기 전에 현재 초기 RAM 디스크 이미지의 백업 사본을 생성합니다.

    # cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
    • 또는 커널 모듈이 자동 로드되지 않도록하려는 커널 버전에 해당하는 초기 RAM 디스크 이미지의 백업 사본을 생성합니다.

      # cp /boot/initramfs-<VERSION>.img /boot/initramfs-<VERSION>.img.bak.$(date +%m-%d-%H%M%S)
  5. 새 초기 RAM 디스크 이미지를 생성하여 변경 사항을 적용합니다.

    # dracut -f -v
    • 현재 시스템과 다른 커널 버전의 초기 RAM 디스크 이미지를 빌드하는 경우 target initramfs 및 커널 버전을 모두 지정합니다.

      # dracut -f -v /boot/initramfs-<TARGET-VERSION>.img <CORRESPONDING-TARGET-KERNEL-VERSION>
  6. 시스템을 다시 시작하십시오.

    $ reboot
중요

이 절차에 설명된 변경 사항은 적용되며 시스템을 재부팅한 후에도 지속됩니다. 거부 목록에 키 커널 모듈을 잘못 나열하는 경우 시스템을 불안정하거나 작동하지 않는 상태로 전환할 수 있습니다.

추가 리소스