리눅스 커널을 자동차의 핵심 엔진이라고 생각해 보세요. 엔진 자체를 변경하지 않고도 루프 랙이나 새로운 사운드 시스템과 같은 액세서리를 추가할 수 있습니다. 이러한 액세서리는 필요에 따라 추가하거나 제거할 수 있습니다. 리눅스 커널은 커널 모듈을 사용하여 이와 유사한 개념을 사용합니다.
커널 모듈이란 무엇인가
그렇다면 커널 모듈이란 무엇일까요? 이는 필요에 따라 커널에 로드되거나 커널에서 언로드될 수 있는 코드 조각입니다. 이는 핵심 커널을 다시 컴파일하거나 시스템을 재부팅할 필요 없이 커널의 기능을 확장합니다. 이러한 모듈식 접근 방식을 통해 새로운 하드웨어 (새로운 Wi-Fi 카드 등) 또는 새로운 소프트웨어 기능 (새로운 파일 시스템 등) 에 대한 지원을 동적으로 추가할 수 있습니다. 이를 통해 핵심 커널은 가볍게 유지하면서도 엄청난 유연성을 확보할 수 있습니다.
로드된 모듈 나열하기
현재 메모리에 로드된 모든 커널 모듈 목록을 보려면 lsmod 명령을 사용할 수 있습니다. 이는 활성 모듈과 해당 종속성에 대한 스냅샷을 제공합니다.
lsmod
커널 모듈 로드하기
커널 모듈을 로드하려면 modprobe 명령을 사용합니다. 예를 들어, bluetooth 모듈을 로드하려면 다음을 실행합니다.
sudo modprobe bluetooth
modprobe 명령은 지능적입니다. 표준 디렉터리 (/lib/modules/$(uname -r)/) 에서 모듈을 검색하고 대상 모듈이 종속하는 다른 모든 모듈도 로드합니다.
커널 모듈 언로드하기
더 이상 필요하지 않은 모듈은 언로드하여 시스템 리소스를 확보할 수 있습니다. 모듈을 제거하려면 modprobe에 -r 플래그를 사용합니다.
sudo modprobe -r bluetooth
부팅 시 모듈 관리
modprobe로 로드된 모듈은 일시적이므로 재부팅 후 사라집니다. 모듈 구성을 영구적으로 만들려면 /etc/modprobe.d/ 디렉터리에 구성 파일을 만들 수 있습니다.
부팅 시 특정 옵션으로 모듈을 자동으로 로드하려면 .conf 파일을 만듭니다. 예를 들어, 가상의 peanut_butter 모듈이 있고 해당 type 매개변수를 almond로 설정하려는 경우 구성 파일은 다음과 같습니다.
# /etc/modprobe.d/peanutbutter.conf
options peanut_butter type=almond
반대로, 부팅 시 모듈 로드를 방지하려면 (블랙리스트 지정 프로세스) 구성 파일에서 blacklist 키워드를 사용할 수 있습니다.
# /etc/modprobe.d/peanutbutter.conf
blacklist peanut_butter
이러한 구성 파일은 시스템 시작 시 어떤 모듈을 사용할 수 있는지에 대한 세부적인 제어를 허용합니다.