리눅스 시스템에서 부팅 과정에 필요한 커널 모듈을 어떻게 포함시킬 수 있는지에 대해 알아보겠습니다. 이 내용은 Red Hat Enterprise Linux (RHEL) 4부터 9까지의 버전에 적용됩니다.

RHEL에서 특정 커널 모듈을 initrd 또는 initramfs에 포함하려면 다음 방법 중 하나를 사용할 수 있습니다.

리눅스 커널 모듈 포함 방법

  • 변경하기 전에 원본 initrd/initramfs 파일을 백업합니다.
  • 명령에서 <kernelVersion>을 실제 커널 버전으로 바꿉니다.
  • <kernel module>을 특정 모듈 이름(.ko 확장자 제외)으로 바꿉니다.

RHEL 6, 7, 8, 9에서 커널 모듈 포함시키기

이 버전에서는 두 가지 방법이 있습니다.

방법 1

  1. initramfs 파일을 백업합니다.
# cp /boot/initramfs-<kernelVersion>.img /boot/<kernelVersion>.bak

여기서 <kernelVersion>은 재구성하려는 커널의 전체 버전입니다. 예를 들어, 커널 버전이 “5.14.0-70.22.1.el9_0.x86_64″이라면 다음과 같이 입력합니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
# cp /boot/initramfs-5.14.0-70.22.1.el9_0.x86_64.img /boot/5.14.0-70.22.1.el9_0.x86_64.bak.$(date +%m-%d-%H%M%S).img
  1. dracut 명령어를 사용하여 initramfs를 수동으로 생성합니다. --add-drivers 옵션에 포함시키고자 하는 커널 모듈의 이름을 지정합니다.
# dracut -fv --add-drivers <kernel module> /boot/initramfs-<kernelVersion>.img <kernelVersion>

예를 들어, foo라는 커널 모듈을 포함시키고자 한다면 다음과 같이 입력합니다.

# dracut -fv --add-drivers foo /boot/initramfs-5.14.0-70.22.1.el9_0.x86_64.img 5.14.0-70.22.1.el9_0.x86_64
  1. dracut가 생성한 initramfs 파일에 커널 모듈이 로드되었는지 확인합니다.
# lsinitrd /boot/initramfs-<kernelVersion>.img | grep <module_name>

예를 들어, foo라는 커널 모듈을 확인하고자 한다면 다음과 같이 입력합니다.

# lsinitrd /boot/initramfs-5.14.0-70.22.1.el9_0.x86_64.img | grep foo

방법 2

  1. /etc/dracut.conf 또는 /etc/dracut.conf.d/<my_conf>.conf 설정 파일에 add_drivers 지시문을 추가합니다. 이 지시문에는 공백으로 구분된 커널 모듈의 목록(.ko 확장자 제외)을 입력합니다. dracut.conf(5) 매뉴얼 페이지를 참고하세요.
add_drivers+="<kernel module>"

예를 들어, foobar라는 커널 모듈을 추가하고자 한다면 다음과 같이 입력합니다.

add_drivers+="foo bar"
  1. initramfs 파일을 백업합니다.
# cp /boot/initramfs-<kernelVersion>.img /boot/<kernelVersion>.bak
  1. initramfs를 재구성합니다.
# dracut -fv /boot/initramfs-<kernelVersion>.img <kernelVersion>
  1. dracut가 생성한 initramfs 파일에 커널 모듈이 로드되었는지 확인합니다.
# lsinitrd /boot/initramfs-<kernelVersion>.img | grep <module_name>

RHEL 4, 5에서 커널 모듈 포함시키기

이 버전에서는 세 가지 방법이 있습니다.

방법 1

mkinitrd 명령어를 사용하여 initrd를 수동으로 생성합니다. --with 옵션에 포함시키고자 하는 커널 모듈의 이름을 지정합니다.

# mkinitrd --with=<kernel module> /boot/initrd-$(uname -r).img $(uname -r)

예를 들어, foo라는 커널 모듈을 포함시키고자 한다면 다음과 같이 입력합니다.

# mkinitrd --with=foo /boot/initrd-$(uname -r).img $(uname -r)

방법 2

저장소 관련 커널 모듈을 포함시키고자 한다면, /etc/modprobe.conf 파일에 별칭(alias)을 추가합니다. 여러 개의 커널 모듈을 추가하고자 한다면 별칭 번호를 증가시킵니다.

alias scsi_hostadapter <kernel module>
alias scsi_hostadapter1 <kernel module>
alias scsi_hostadapter2 <kernel module>

예를 들어, foo, bar, baz라는 커널 모듈을 추가하고자 한다면 다음과 같이 입력합니다.

alias scsi_hostadapter foo
alias scsi_hostadapter1 bar
alias scsi_hostadapter2 baz

이렇게 하면 커널 모듈(그리고 그에 따른 의존성)이 initrd에 포함됩니다.

방법 3

저장소 관련이 아닌 커널 모듈을 포함시키고자 한다면, /etc/modprobe.conf 파일에 다음과 같은 줄을 추가합니다.

install <kernel module> /sbin/modprobe -q --ignore-install <kernel module>; /bin/true

예를 들어, foo라는 커널 모듈을 추가하고자 한다면 다음과 같이 입력합니다.

install foo /sbin/modprobe -q --ignore-install foo; /bin/true

요약

이상으로 리눅스 시스템에서 부팅 과정에 필요한 커널 모듈을 어떻게 포함시킬 수 있는지에 대해 알아보았습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

아마존 해외 구매: 서버, 네트워크, 노트북 구매

Amazon Best Sellers Servers

Amazon Best Sellers Networking

Amazon Best Sellers Laptops

위로 스크롤