Como um kernel do Linux pode ser tão pequeno?

50

Um kernel 3 * normal e estável tem cerca de 70 mb agora. Mas existem pequenas distribuições de linux de 30-10 mb com software e outras coisas funcionando fora da caixa.

Como o kernel do Linux pode ser tão pequeno nessas distribuições? Pode desmontar apenas módulos desnecessários e drivers reduzir drasticamente o tamanho? O que mais é feito para reduzir o tamanho do kernel?

    
por puzzled tux 22.12.2011 / 11:00

5 respostas

35

Sim. Se você desmontá-los (compilar / fazer módulos apenas coisas que você precisa), comprimir o kernel (otimizar o tamanho) ... isso resultará em um kernel tão pequeno. Você pode fazer um ainda menor para o sistema alvo. Como eu conheço meu PC, eu sei das minhas coisas. Então, vou apenas compilar o que preciso. Como meus próprios drivers SATA, driver para USB, etc. Nada mais. Sem webcam, sem drives IDE antigos, nada.

Além disso, os maiores que você encontra são o kernel INTEIRO (que nunca é necessário usar). Mesmo os desktops contêm (na maioria das vezes, como módulos) muitas coisas desnecessárias. Mas os novatos esperam que todo tipo de hardware que eles usem apenas funcione.

(Note que, os módulos não serão carregados até que sejam necessários. Existem 3 estados: [ ] - não será compilado, não fará parte do seu kernel).[M] - Será compilado como um módulo.
(Você pode modificá-lo, ou seu sistema irá carregá-lo automaticamente quando for necessário.
Depende do sistema, userland.)
[X] - Ele será compilado no kernel E estará presente - sempre.

Distros com pequeno kernel:

por 22.12.2011 / 11:22
20

Distribuições antigas do Linux, como Boot-raiz do Tom , MuLinux , Roteador de dietas , (o agora extinto) LOAF e muitos outros que já partiram, todos montaram um sistema Linux funcional em um ou dois disquetes de 1,44 MB.

O kernel do Linux cresceu mas não se esqueça que é modular, módulos do kernel são carregados conforme a necessidade. Assim, ainda é possível produzir uma distribuição Linux com uma pegada muito pequena.

Veja: Guia de ajuste do tamanho do kernel - eLinux.org

Se você ler Linux_tiny.pdf , verá isso

  • kernel histórico 0.99pl15: Slackware 1.1.2, 1994 301K
  • Fedora Core 2 1.2M
  • SuSE 9.1 1,5M
  • configuração de teste 2.6.5-tiny1: IDE, ext2, TCP, NIC 363K
por 22.12.2011 / 11:16
9

A configuração padrão do kernel está configurada para suportar o maior número de hardware possível. Um kernel não separado com configuração padrão resultou em um tamanho de 1897996 kB (incluindo kernel + módulos). Ao remover muitos drivers e opções desnecessárias (por que eu precisaria de um módulo HP se eu possuo um notebook Clevo), isso resultou em um tamanho de 892892 kB, que é uma redução de tamanho de 53% em comparação ao kernel padrão.

Ao instalar os módulos do kernel, anexe a opção INSTALL_MOD_STRIP=1 . Isso removerá todos os símbolos de depuração e reduzirá o tamanho em 92% para mim (de 892892 kB para 69356 kB). Observe que isso afetará apenas os módulos a serem instalados e não o kernel (vmlinuz):

make INSTALL_MOD_STRIP=1 modules_install

De Documentação / 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.
    
por 24.12.2011 / 10:59
3

A maioria das principais distros configura seus kernels com o máximo de suporte de hardware, de modo que funcionará imediatamente com a maioria dos computadores e qualquer coisa que você conecte posteriormente. Eles também usam um sistema initrd que não é necessário na maioria dos casos. Há também opções na configuração do kernel que otimizam o tamanho do processo de compilação, e um método de compactação melhor (embora mais lento) também pode ser selecionado. Por último, se você está olhando para o tamanho do código-fonte do kernel, tenha em mente que ele também inclui suporte a várias arquiteturas além de x86 / amd64, protocolos de rede, sistemas de arquivos e outros recursos que você provavelmente nunca utilizará. ser desativado.

    
por 22.12.2011 / 15:28
1

É bastante simples, um sistema mínimo só precisa de bootloader + kernel, embora seja quase inútil. A maioria dos comandos usados todos os dias, são binários opcionais para o sistema, como sh, ls, etc. Se você estiver interessado em internos, Linux From Scratch! é um bom ponto de partida.

    
por 22.12.2011 / 15:50

Tags