리눅스 커널은 어떻게 그렇게 작을 수 있습니까?


56

일반적으로 안정적인 3 * 커널은 약 70MB입니다. 그러나 30-10 MB의 리눅스 배포판은 소프트웨어와 다른 것들이 포함되어 거의 없습니다.

이 배포판에서 어떻게 리눅스 커널을 작게 만들 수 있습니까? 불필요한 모듈과 드라이버 만 제거하면 크기를 크게 줄일 수 있습니까? 커널 크기를 줄이기 위해 다른 작업은 무엇입니까?


3
또 다른 옵션은 컴파일 할 때 크기 최적화를 사용하는 것이지만, 그것이 얼마나 큰 영향을 줄 수 있는지 잘 모르겠습니다.
AndrejaKo

5
"리누스는 리눅스를 '부풀고 거대하다'라고 부른다" theregister.co.uk/2009/09/22/linus_torvalds_linux_bloated_huge
Aki

1
@AndrejaKo-많이. (작은 크기로 가면)
Apache

19
소스 크기는 70MB입니다. 표준 컴파일 및 압축 커널은 약 2MB, 10MB와 같은 모듈입니다.
ott--

1
예, 실제로 3.6MB, initramfs는 21MB입니다.
의아해 턱시도

답변:


37

예. 그것들을 제거하면 (필요한 것만 컴파일 / 모듈 만들기) 커널을 압축 (크기에 맞게 최적화)하면 작은 커널이됩니다. 대상 시스템에 대해 더 작은 것을 만들 수 있습니다. 내 PC를 알고있는 것처럼 내 물건도 알고 있습니다. 그래서 내가 필요한 것을 컴파일 할 것입니다. 내 자신의 SATA 드라이버, USB 드라이버 등은 없습니다. 웹캠도없고, 오래된 IDE 드라이브도없고, 아무것도 없습니다.

또한 더 큰 문제는 WHOLE 커널 (사용할 필요가 없음)입니다. 데스크탑에도 대부분 불필요한 모듈이 들어 있습니다 (대부분의 경우 모듈). 그러나 초보자는 플러그인이 모든 종류의 하드웨어가 작동하기를 기대합니다.

(필요할 때까지 모듈을로드하지 않습니다, 그 주 3 주이 있습니다.
[ ]- 컴파일받지 않습니다, 커널의 일부가 될 수 없습니다.
[M]- 모듈로 컴파일됩니다.
(당신은 그것을 modprobe를 할 수 있습니다 또는 시스템이 필요할 때 자동으로로드됩니다.
시스템, 사용자 영역에 따라 다릅니다.)
[X]-커널로 컴파일되어 항상 존재합니다.

작은 커널을 가진 배포판 :


그냥 작은 추가 - [X]가 컴파일됩니다 의미 , 커널이 항상로드 왜 때문에 이유를.
Lawrence

"초보자"는 20 년의 전문 컴퓨터 기술 및 Linux 베테랑으로서 말하기를 ... 나는 일이 잘 될 것으로 기대합니다.
Cliff Armstrong

20

Tom 's Root-Boot , MuLinux , Diet-router (지금은 없어진) LOAF 및 많은 다른 것들과 같은 초기 Linux 배포판 은 모두 작동하는 Linux 시스템을 하나 또는 두 개의 1.44MB 디스켓에 장착했습니다.

리눅스 커널은 커졌지 만 모듈 식 모듈이라는 것을 잊지 마십시오. 커널 모듈은 필요에 따라로드됩니다. 따라서 매우 작은 설치 공간으로 Linux 배포판을 생성 할 수 있습니다.

참조 : 커널 크기 조정 가이드 - eLinux.org

당신이 읽는다면 Linux_tiny.pdf을 이 표시됩니다

  • 역사적인 0.99pl15 커널 : Slackware 1.1.2, 1994 301K
  • 페도라 코어 2 1.2M
  • 수세 9.1 1.5M
  • 2.6.5-tiny1 테스트 구성 : IDE, ext2, TCP, NIC 363K

11

기본 커널 구성은 가능한 많은 하드웨어를 지원하도록 구성되어 있습니다. 기본 구성의 고정되지 않은 커널은 1897996 kB (커널 + 모듈 포함)의 크기를 가졌습니다. 많은 불필요한 드라이버와 옵션을 제거 할 때 (Clevo 노트북을 소유 한 경우 HP 모듈이 필요한 이유), 892892 kB의 크기로 주식 커널에 비해 크기가 53 % 줄었습니다.

커널 모듈을 설치할 때 INSTALL_MOD_STRIP=1옵션을 추가하십시오 . 이렇게하면 모든 디버깅 심볼이 제거되고 크기가 92 % 줄어 들었습니다 (892892 kB에서 69356 kB로). 이것은 커널 (vmlinuz) 자체가 아니라 설치할 모듈에만 영향을 미칩니다.

make INSTALL_MOD_STRIP=1 modules_install

에서 문서 /는 kbuild / kbuild.txt :

INSTALL_MOD_STRIP
--------------------------------------------------
INSTALL_MOD_STRIP, if defined, will cause modules to be
stripped after they are installed.  If INSTALL_MOD_STRIP is '1', then
the default option --strip-debug will be used.  Otherwise,
INSTALL_MOD_STRIP value will be used as the options to the strip command.

3
와우, 1897996 kB는 거의 2GB입니다!
netvope

3

대부분의 주요 배포판은 최대 하드웨어 지원으로 커널을 구성하므로 대부분의 컴퓨터와 나중에 연결하는 모든 항목에서 기본적으로 작동합니다. 또한 대부분의 경우 필요하지 않은 initrd 시스템을 사용합니다. 커널 구성에는 빌드 프로세스의 크기를 최적화하는 옵션이 있으며 더 나은 (더 느린) 압축 방법도 선택할 수 있습니다. 마지막으로, 커널 소스 코드의 크기를 살펴보면 x86 / amd64 이외의 여러 아키텍처, 네트워크 프로토콜, 파일 시스템 및 사용하지 않을 수있는 기타 기능에 대한 지원도 포함됩니다. 비활성화되어 있습니다.


1

아주 간단하지만 최소한의 시스템에는 부트 로더 + 커널이 필요하지만 거의 쓸모가 없습니다. 일상적으로 사용되는 대부분의 명령은 sh, ls 등과 같은 시스템의 선택적 바이너리입니다. 내부에 관심이 있다면 Linux From Scratch! 좋은 출발점입니다.


Busybox는 대부분의 "매일"을 처리합니다.
new123456

아닙니다. busybox는 방금 그것들을 결합했습니다. 소형 및 임베디드 시스템에서 인기가 있지만 데스크탑 시스템의 경우에는 그렇지 않습니다.
pinxue
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.