최소 FreeBSD 커널을 올바르게 구축하는 방법은 무엇입니까?

최소 FreeBSD 커널을 올바르게 구축하는 방법은 무엇입니까?

FreeBSD용 최소 커널을 구축하는 적절한 방법이 있습니까? 이것FreeBSD 매뉴얼이에 대한 정보가 부족합니다. 디렉토리의 크기는 기본적으로 /boot/kernel약 450MB로 꽤 큽니다. 커널 지문을 최소화하고 불필요한 커널 모듈과 옵션을 모두 제거하고 싶습니다. "NO_MODULES"옵션을 사용해야 합니까 /etc/make.conf? 아니면 C 컴파일러 플래그를 사용합니까?

답변1

을 줄이기 위해 할 수 있는 일이 많이 있습니다 /boot/kernel.

아마도 최상의 공간 절약은 설정 WITHOUT_KERNEL_SYMBOLS( /etc/src.conf파일이 아직 없으면 생성)을 통해 달성할 수 있으며 다음에 를 설치할 때 installkernel디버그 기호 파일은 설치되지 않습니다. 즉시 공간이 필요한 경우 이제 안전하게 삭제할 수 있습니다( rm /boot/kernel/*.symbols).

make.conf어떤 모듈이 빌드되는지 제어하는 ​​설정이 있습니다 :

  • NO_MODULES- 모듈 구축을 완전히 비활성화합니다.
  • MODULES_OVERRIDE- 빌드하려는 모듈을 지정하십시오.
  • WITHOUT_MODULES- 빌드하면 안되는 모듈 목록

NO_MODULES옵션은 다소 가혹할 수 있으므로 다른 두 가지를 현명하게 조합하는 것이 더 나은 옵션입니다. 원하는 모듈을 정확히 알고 있다면 에서 해당 모듈을 설정할 수 있습니다 MODULES_OVERRIDE.WITHOUT_MODULES뒤쪽에 MODULES_OVERRIDE이므로 두 목록 모두에 이름이 지정된 모듈은 빌드되지 않습니다.

모든 모듈 빌드를 비활성화하려면 를 사용 NO_MODULES하고 필요한 모든 드라이버와 모듈이 커널에 정적으로 컴파일되었는지 확인하세요. 각 드라이버의 맨페이지에는 커널 구성 파일에 추가할 해당 행이 표시되므로 필요한 것이 무엇인지 파악할 수 있습니다.

여전히 공간이 문제라고 생각하거나 커널을 가능한 한 간결하게 유지하려는 경우 커널 구성을 편집하여 컴퓨터가 지원하지 않거나 지원하지 않는 모든 장치 및 하위 시스템을 제거할 수 있습니다. 사용하고 싶지 않습니다. 빌드 시스템은 매우 합리적입니다. 구성에서 여전히 활성 상태인 모듈에 필요한 모듈을 실수로 제거하면 빌드가 실패하고 잘못된 이유를 설명하는 오류 메시지가 표시됩니다.

이는 매우 지루할 수 있지만 가장 좋은 접근 방식은 작은 단계를 수행하고 한 번에 한두 가지 항목을 제거한 다음 결과 구성이 올바르게 빌드되고 부팅되는지 확인하는 것입니다. 하지만 무엇을 하든 복사해서 /usr/src/sys/<arch>/config/GENERIC편집하는 것이 좋습니다. 너무 혼란스럽다면 유일한 해결책은 기본 구성으로 시작하는 것입니다. 그러면 시스템에 파일이 아직 남아 있어서 다행일 것입니다 GENERIC!

사용자 정의 커널을 빌드하려면 구성 이름을 명령줄에서와 같이 전달 make KERNCONF=MYKERNCONF buildkernel하거나 . 사용자 정의 구성 파일을 배치하면 빌드 시스템이 이를 찾을 수 있는지 확인하십시오 .KERNCONF/etc/make.conf/usr/src/sys/<arch>/config

답변2

"올바른" 커널은 상대적인 개념이며 필요에 따라 다릅니다. 커널을 만든 사람에게 커널을 만들어 달라고 요청할 필요는 없습니다. 그런데 450MB FreeBSD 커널은 어떻게 생각해냈나요?

root@neill-backup:~ # uname -a
FreeBSD neill-backup.int.autonlab.org 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014     [email protected]:/usr/obj/usr/src/sys/GENERIC  amd64

여기

root@neill-backup:~ # du -h /boot/kernel/kernel
 20M    /boot/kernel/kernel

관련 정보