자신만의 리눅스 커널을 컴파일할 때 유용한 5가지 팁

5 Kernel Tips 00 Featured Image

리눅스 커널은 훌륭한 소프트웨어 엔지니어링의 산물입니다. 백만 줄이 넘는 코드로 구성되어 있으며, 여전히 활발히 개발되고 있는 가장 복잡한 프로그램 중 하나라고 할 수 있습니다. 1990년대 후반부터 리눅스 커널은 계산 집약적인 프로젝트와 최소한의 임베디드 애플리케이션 모두에서 사용되어 왔습니다.

목차

  • 커널이란 무엇이며 왜 설정해야 하는가?
    1. 도움말 시스템 사용하기
    1. 불필요한 HID 지원 비활성화하기
    1. 불필요한 파일 시스템 지원 비활성화하기
    1. 불필요한 그래픽 드라이버 비활성화하기
    1. 드라이버를 모듈로 설치하기
  • 자주 묻는 질문

또한 읽어보세요: 더 나은 보안을 위한 5가지 최고의 리눅스-리브르 배포판

커널이란 무엇이며 왜 설정해야 하는가?

그럼에도 불구하고 리눅스 커널은 컴퓨터의 하드웨어와 매일 사용하는 소프트웨어 간의 연결 역할을 하는 프로그램일 뿐입니다. 이는 매일 사용하는 프로그램을 위해 다양한 장치를 사용할 수 있게 해줍니다.

하드웨어와 소프트웨어의 연결 예로는 고급 리눅스 사운드 아키텍처(ALSA)가 있습니다. ALSA는 리눅스 커널에 내장된 사운드 드라이버 프레임워크입니다. 이를 통해 사운드 카드를 쉽게 설치하고 좋아하는 프로그램과 즉시 작동하도록 구성할 수 있습니다.

5 Kernel Tips 02 Alsamixer Window

이러한 점을 감안할 때, 리눅스 커널은 일반 사용자에게는 거의 알려지지 않은 프로그램입니다. 대부분의 경우 배포판을 설치할 때 기본적으로 작동하는 커널을 받게 됩니다. 이는 시스템을 작동시키고자 할 때 유용할 수 있습니다.

그러나 Arch 및 Gentoo와 같은 배포판을 사용하는 경우, 커널을 구성할 수 있는 능력은 장기적으로 유익합니다. 예를 들어, 원하는 기능만 활성화하면 부팅 시간을 단축할 수 있습니다.

이 글에서는 자신만의 리눅스 커널을 컴파일할 때 유용한 5가지 팁을 제공하고자 합니다.

참고: 자신만의 커널을 컴파일하는 방법에 대한 기사를 확인하세요.

1. 도움말 시스템 사용하기

리눅스 커널을 구성할 때 가장 유용한 기능 중 하나는 도움말 시스템입니다. 이는 커널 구성 메뉴 내에서 접근할 수 있는 내장 기능입니다. 이를 통해 커널에 설치할 수 있는 모든 기능과 드라이버에 대한 설명을 볼 수 있습니다.

5 Kernel Tips 03 Sample Kernel Help

이 시스템을 사용하려면 특정 커널 옵션을 강조 표시한 상태에서 Shift + /를 누르면 됩니다. 그러면 구성 메뉴에서 해당 기능이 수행하는 작업에 대한 간단한 슬라이드를 인쇄합니다. 예를 들어, “PCI 지원” 옵션에 Shift + /를 눌러 활성화해야 할 모든 옵션을 확인할 수 있습니다.

5 Kernel Tips 04 Linux Pci Sample Help

이와 함께, 특정 커널 기능에 대한 정보를 검색하기 위해 동일한 도움말 시스템을 사용할 수도 있습니다. 이는 특정 기능이 요구하는 모든 옵션에 대해 더 알고 싶을 때 특히 유용합니다.

이렇게 하려면 구성 메뉴 내에서 /를 누르면 됩니다. 그러면 특정 옵션의 이름을 입력할 수 있는 작은 프롬프트가 나타납니다. 예를 들어, /를 누르고 “PCI”를 입력하여 PCI 플래그를 사용하는 옵션을 검색할 수 있습니다.

5 Kernel Tips 05 Kernel Search Prompt

또한 읽어보세요: Gentoo 리눅스란 무엇이며 설치 방법

2. 불필요한 HID 지원 비활성화하기

리눅스 커널은 종종 거의 모든 하드웨어 지원을 제공하는 소프트웨어로 자부합니다. 따라서 연결하는 모든 장치를 구동할 수 있을 것이라고 확신할 수 있습니다.

5 Kernel Tips 06 Sample Linux Hardware Support

그러나 이러한 접근 방식의 한 가지 문제는 모든 지원을 포함하면 커널의 전체 크기와 발자국이 증가한다는 것입니다. 이는 악의적인 해커가 쉽게 악용하고 침입할 수 있는 느린 바이너리로 이어질 수 있습니다.

이 문제를 해결하는 한 가지 방법은 머신에서 사용하지 않는 하드웨어 지원을 제거하는 것입니다. 예를 들어, 리눅스 커널은 기본 구성에 Firewire 지원을 포함합니다. 그럼에도 불구하고 대부분의 머신은 기본적으로 Firewire 포트를 포함하지 않습니다.

5 Kernel Tips 07 Linux Firewire Support

이 점을 감안할 때, 비활성화할 수 있는 하드웨어 장치를 빠르게 확인하는 방법은 “특수 HID 드라이버” 섹션을 살펴보는 것입니다. 이는 구성 메뉴의 “장치 드라이버” 및 “HID 지원” 아래에서 접근할 수 있는 카테고리입니다. 여기에서 커널은 지원할 수 있는 모든 희귀하고 비정상적인 장치를 나열합니다.

5 Kernel Tips 08 Special Hid Category

이와 함께, Shift + / 및 /를 사용하여 이 섹션에 나열된 각 옵션을 검색할 수 있습니다. 예를 들어, “ELECOM 장치“를 선택하고 Shift + /를 눌러 해당 옵션이 수행하는 작업을 확인할 수 있습니다.

5 Kernel Tips 09 Sample Elecom Help

그런 다음 원하는 장치를 선택하고 N을 눌러 해당 기능을 비활성화할 수 있습니다. 제 경우에는 이러한 장치를 사용하지 않기 때문에 모든 특수 HID 지원을 비활성화할 것입니다.

5 Kernel Tips 10 Disabled Special Hid Drivers

또한 읽어보세요: 개발자와 프로그래머를 위한 최고의 리눅스 배포판 5가지

3. 불필요한 파일 시스템 지원 비활성화하기

커널의 크기를 줄이는 또 다른 빠른 방법은 사용하지 않는 파일 시스템에 대한 지원을 제거하는 것입니다. 기본적으로 리눅스 커널은 대부분의 파일 시스템 유형에 대한 선택적 지원으로 구축됩니다. 여기에는 오래된 BSD FFS와 BTRFS와 같은 고성능 시스템이 포함됩니다.

5 Kernel Tips 12 Linux Filesystem Support

대부분의 경우, 일반 사용자는 일상적으로 몇 가지 파일 시스템만 사용합니다. 예를 들어, 리눅스 시스템은 일반적으로 모든 데이터 저장을 위해 EXT2, EXT4, FAT32 및 NTFS를 사용합니다. 따라서 다른 파일 시스템에 대한 지원을 제거하면 커널에서 합리적인 성능 향상을 얻을 수 있습니다.

커널에서 불필요한 파일 시스템 지원을 제거하려면 “파일 시스템” 카테고리로 이동하면 됩니다.

5 Kernel Tips 13 Kernel Filesystem Category

그런 다음 시스템에서 제거하려는 파일 시스템을 강조 표시하고 N을 눌러 선택할 수 있습니다. 제 경우에는 EXT2, EXT3, EXT4 및 JFS에 대한 지원만 남길 것입니다.

5 Kernel Tips 14 Few Linux Filesystems Enabled

4. 불필요한 그래픽 드라이버 비활성화하기

특수 HID 및 파일 시스템 지원을 비활성화하는 것 외에도 구성 메뉴를 사용하여 사용하지 않는 그래픽 드라이버를 제거할 수 있습니다. 이는 리눅스 커널이 대부분의 현대 그래픽 장치에 대한 지원을 번들로 제공하기 때문입니다. 즉, 머신이 그래픽 카드를 사용하지 않더라도 커널은 여전히 그래픽 카드가 있는 것처럼 실행됩니다.

5 Kernel Tips 15 Linux Graphics Support

위와 유사하게, 이는 필요하지 않은 기능을 실행하는 커널 바이너리로 이어집니다. 이는 오래되거나 성능이 낮은 하드웨어에서 리눅스를 실행할 때 문제가 될 수 있습니다.

불필요한 그래픽 지원을 제거하려면 먼저 구성 메뉴의 “장치 드라이버” 섹션으로 이동해야 합니다. 그곳에서 아래로 스크롤하여 “그래픽 지원”을 선택해야 합니다.

5 Kernel Tips 16 Kernel Graphics Category

완료되면 커널은 드라이버를 제공하는 모든 그래픽 하드웨어의 목록을 표시합니다. 여기에서 Y 또는 N을 눌러 특정 드라이버를 활성화하거나 비활성화할 수 있습니다.

제 경우에는 “Intel 8XX Graphics”와 “Intel GMA500 Framebuffer”만 활성화할 것입니다. 이는 제 노트북에 있는 유일한 그래픽 장치입니다.

5 Kernel Tips 17 Intel Only Graphics Support

또한 읽어보세요: 윈도우 사용자에게 최고의 리눅스 배포판 9가지

5. 드라이버를 모듈로 설치하기

마지막으로, 리눅스 커널의 가장 좋은 기능 중 하나는 자신을 구성 요소로 나누고 이를 모듈로 다시 로드할 수 있는 능력입니다. 이 접근 방식은 커널의 크기를 줄일 뿐만 아니라 커널 기능에 유연성을 제공합니다.

예를 들어, 무선 드라이버를 모듈로 전환하면 커널을 다시 컴파일하지 않고도 업데이트할 수 있습니다. 따라서 모듈은 빠른 커널을 원하면서도 리눅스의 뛰어난 하드웨어 호환성을 유지하고자 하는 사용자에게 특히 유용할 수 있습니다.

5 Kernel Tips 18 Linux Module Files

내장 기능을 모듈로 변환하려면 변환하려는 섹션과 옵션으로 이동해야 합니다. 예를 들어, 무선 드라이버를 변환하려면 “네트워킹 지원” 섹션으로 가서 “무선”을 선택해야 합니다.

5 Kernel Tips 19 Kernel Wireless Category

그곳에서 “cfg80211” 드라이버에 M을 눌러 커널 모듈로 변환할 수 있습니다.

5 Kernel Tips 20 Linux Kernel Module Feature

완료되면 Esc를 여섯 번 눌러 구성 메뉴를 종료할 수 있습니다. 그러면 변경 사항을 저장할 것인지 묻는 프롬프트가 나타납니다. 제 경우에는 “예”를 선택할 것입니다.

5 Kernel Tips 21 Save Kernel Configuration

이제 다음 명령을 실행하여 원하는 기능으로 리눅스 커널 버전을 컴파일할 수 있습니다:

make&&make modules_install  
makeinstall

5 Kernel Tips 11 Linux Kernel Compile

또한 읽어보세요: 사용자 정의 리눅스 배포판을 쉽게 만들기 위한 5가지 도구

자주 묻는 질문

내 리눅스 커널에 필요한 장치 드라이버를 알 수 있나요?

네! 자신만의 커널을 컴파일하기 시작하는 사용자에게는 사용하는 하드웨어의 정확한 종류를 아는 것이 한 가지 장애물입니다. 이는 어려운 작업처럼 보일 수 있지만, 이 과정을 쉽게 해주는 여러 프로그램이 있습니다.

예를 들어, lspcilsusb를 사용하여 머신에 연결된 모든 하드웨어 주변 장치를 확인할 수 있습니다. 또한 sudo dmesg 명령을 실행하여 커널이 장치를 제대로 읽는지 확인할 수 있습니다.

리눅스 커널에서 제거한 기능을 다시 가져올 수 있나요?

네! 리눅스 커널에서 기능을 제거한 후 다시 설치할 수 있습니다. 이렇게 하려면 구성 메뉴로 돌아가서 다시 활성화하려는 기능에 Y 또는 M을 눌러야 합니다. 이렇게 하면 커널이 해당 기능을 내장형 또는 모듈로 포함하도록 지시합니다.

이렇게 한 후에는 커널을 다시 컴파일하여 모든 새로운 기능이 포함된 바이너리를 생성해야 합니다. 이렇게 하려면 Esc를 여섯 번 눌러 구성 메뉴를 저장하고 종료한 후 make를 실행하여 커널을 다시 컴파일할 수 있습니다.

리눅스 커널 기능을 모듈로 설치해야 할 때는 언제인가요?

기능을 모듈로 설치하는 것은 주로 커널에서 필요한 것에 따라 달라집니다. 이를 감안할 때, 좋은 규칙은 부팅 프로세스에 필수적이지 않은 기능에 대해서만 모듈을 생성해야 한다는 것입니다.

이는 리눅스 커널이 단일 이미지로 부팅할 수 있어야 하기 때문입니다. 예를 들어, 다중 프로세서 지원과 같은 중요한 부분을 제거하면 커널이 부팅 불가능한 상황이 발생할 수 있습니다.

따라서 일반적으로 모듈이 되는 커널 구성 요소는 그래픽 및 기타 하드웨어 드라이버 또는 네트워크 인터페이스입니다.