답변:
따라 다릅니다. 적은 양의 메모리가 있다면 모듈을 사용하면 매번 다시로드되지 않기 때문에 이력서가 향상 될 수 있습니다 (2GB RAM은 중요하지만 전통적인 하드 드라이브에서는 4GiB가 아니라는 것을 알았습니다). 배터리 모듈에 버그가 있거나 (컴파일 또는 모듈로 상관없이) 시작하는 데 시간이 오래 걸렸을 때 (몇 분) 특히 그렇습니다. 젠투에 버그가 없어도 systemd-analysis
정적으로 컴파일 된 커널에서 모듈로 변경하여 33 초에서 18 초로 시간을 단축 할 수있었습니다. '놀랍게도'커널 시작이 9 초에서 1.5 초로 변경되었습니다.
또한 어떤 하드웨어를 사용할지 모르면 모듈이 유리합니다.
추신. initrd에 포함시키는 한 중요한 드라이버도 모듈로 컴파일 할 수 있습니다. 예를 들어, 배포판에는 설치시 initrd에있는 /의 파일 시스템, 하드 드라이브의 드라이버 등이 포함됩니다.
내가 아는 한 속도 차이는 없습니다.
할당의 세분성이 한 페이지이므로 몇 kB의 커널 메모리를 얻을 수 있다고 생각합니다. 따라서 일반적인 아키텍처에서는 각 모듈이 모듈 당 평균 2kB (½ 페이지)를 낭비합니다. 임베디드 시스템에서도 그다지 중요하지 않습니다. 커널과 같은 방식으로 모듈을 압축 할 수 있으므로 디스크 공간이 약간 확보됩니다. 스토리지가 적은 임베디드 시스템에서 더 관련성이 있습니다.
모듈을 모두 사용할 수 없다면 약간의 커널 메모리 (모듈 로더 필요 없음), 디스크 공간 (모듈 유틸리티 필요 없음) 및 시스템 복잡성 (배포에 기능으로 모듈로드를 포함 할 필요 없음)을 절약 할 수 있습니다 ). 이러한 점은 하드웨어를 확장 할 수없는 일부 임베디드 디자인에서 매우 매력적입니다.
몇 가지 잠재적 이점. 성능은 논쟁의 여지가 있습니다. 동적 로더와 관련된 런타임 오버 헤드를 피할 수는 있지만 실시간 스케줄러에 의존하지 않는 한 큰 문제가 될 것입니다.
시스템에서 큰 페이지를 사용하는 경우 더 큰 정적 커널 이미지를 작성하면 페이지 디스크립터 캐시를보다 효율적으로 사용할 수 있습니다. 일부 시스템은 커널을 '케이지 (cage)'하여 하나의 메모리 위치로 단단히 묶어 사소한 페이지 오류로 인해 약간의 지연을 완화 할 수 있습니다.
하나의 Big Image를 제공하는 것이 아키텍처에 적합 할 것입니다. 독립 모듈 수가 적을수록 유지 관리가 쉽고 유연성의 손실은 중요하지 않습니다. 이런 종류의 추론은 스타일과 실천의 문제로 모험을합니다.
때로는 필요합니다. 중요한 드라이버 (예 : SCSI 드라이버)를 모듈로 컴파일하면 시스템이 부팅되지 않습니다.
모듈로 컴파일 하지 않는 또 다른 훌륭한 후보 는 루트 파티션의 파일 시스템 유형입니다. 커널이 이해하지 않는 경우 ext3
읽기 /lib/modules/
어떻게 그것에서 모듈을로드 할 것인가?
모듈을 사용하려면 커널은 커널 모듈을 읽고로드하기 위해 시스템에 대해 충분히 알아야합니다. 그것을 사용하고 시행 착오 :-)