FreeBSD에서 rc.conf, loader.conf 및 정적 커널 링크의 차이점

FreeBSD에서 rc.conf, loader.conf 및 정적 커널 링크의 차이점

궁금해:

rc.conf 등을 통해 모듈을 로드하는 대신 모듈을 커널에 정적으로 연결하면 정확히 어떤 이점이 있습니까?

예를 들어:

Linux 에뮬레이션을 추가하려면 linux_enable="YES"커널 구성에 추가하거나 /etc/rc.conf커널에 연결할 수 있습니다.options COMPAT_LINUX

이것이 실제로 유익한가요? 그렇다면, 그래서 무엇입니까?

답변1

정적 링크는 모듈을 로드하는 유일한 방법이었는데, 이것이 COMPAT_LINUX와 같은 옵션을 사용하는 주요 이유라고 간주되었습니다. 또한 loader루트 파일 시스템을 마운트하고 FreeBSD를 부팅하는 데 필요한 드라이버를 얻기 위해 FreeBSD에 필요한 모듈을 로드하는 유일한 방법이었습니다. 요즘에는 런타임에 모듈을 쉽게 로드할 수 있다면 모듈을 정적으로 연결하는 것에는 큰 이점이 없다고 생각합니다. Linux 호환성 지원을 정적으로 연결하면 성능상의 이점이 없다고 생각하지만 일부 사용자는 여전히 이를 주장합니다. 나는 눈에 띄는 성능 향상이 거의 없이 커널을 다시 컴파일해야 하는 불편함 때문에 이 방법을 피하고 싶습니다.

답변2

  1. makeoptions NO_MODULES=yes불필요한 모듈을 구축하지 않도록 필요한 모든 것을 정적으로 링크하면 간단히 사용할 수 있습니다 .

    MODULES_OVERRIDE이 작업은 및/또는 로도 수행할 수 있습니다 WITHOUT_MODULES.

  2. 런타임에 모듈을 로드하는 기능이 항상 좋은 것은 아닙니다. 예를 들어 모듈은 루트킷일 수 있습니다.

    SECURELEVEL은 이 상태를 완화할 수도 있습니다.

두 가지 모두와 마찬가지로 다른 방법으로도 이점을 얻을 수 있으며 일부는 달성해야 한다고 생각합니다.

개인적으로 나는 내 커널이 방화벽 규칙 세트와 비슷하다는 점을 좋아합니다. 먼저 모든 것을 제외하고 필요한 것을 추가하고 런타임에 추가되지 않도록 방지합니다.

커널을 다시 컴파일하지 않는 한, 지원되는 것이 무엇인지 정확히 알고 있습니다. 따라서 SCTP나 NFS와 같은 특정 기능을 컴파일하지 않으면 해당 부분에만 영향을 미치는 권장 사항을 무시할 수 있습니다. 기능을 추가하려면 수동으로 추가해야 합니다.

모듈의 경우, 모듈을 자동 로드하는 다양한 방법이 있습니다. 특정 기능을 한 번만 사용하고, 포트를 설치하고, 업데이트(기본값 변경, 새 기능 추가) 등을 할 수 있습니다.

이 모든 경우에 실제로 필요한 경우에만 기능을 수동으로 추가하도록 강요받는 것이 이점이 있다고 생각합니다.

관련 정보