O kernel Unix age como um mediador para seus programas e seu hardware. Primeiro, ele faz (ou arranja para) o gerenciamento de memória para todos os programas executados (processos), e certifica-se de que todos eles tenha um justo (ou injusto, se você quiser) compartilhamento dos ciclos do processador. Adicionalmente, o kernel provê uma interface elegante e clara para os seus programas conversarem com o seu hardware.
Certamente o kernel faz mais do que isso, mas estas funções básicas são as mais importantes que temos que conhecer.
Kernels mais novos geralmente oferecem a habilidade de conversar com mais tipos de hardwares (isto é, possuem mais drivers de dispositivo), podem possuir melhor gerenciamento de processor, podem ser mais rápidos, podem ser mais estáveis e podem trazer consertos para bugs indesejáveis das versões anteriores. A maioria das pessoas atualiza o kernel porque elas querem os drivers de dispositivos e consertos de bugs.
Veja o Hardware-HOWTO. Alternativamente, veja o arquivo `config.in' do código-fonte do Linux, ou simplesmente procure quando tentar `make config'. Isso vai mostrar todo o hardware suportado pelo distribuição padrão do kernel, mas nem tudo o que o Linux suporta; muitos drivers de dipositivo comuns (como os drivers PCMCIA e alguns drivers de fitas) são módulos carregáveis mantidos e distribuídos separadamente.
Linus recomenda a versão do gcc indicada no arquivo `README' incluso no código-fonte do Linux. Se não tiver esta versão, a documentação da versão recomendada do gcc deve dizer se será necessário atualizar a libc. Isto não é um procedimento difícil, mas é importante seguir as instruções.
São pedaços do código do kernel que não estão vinculadas (incluídas) diretamente no kernel. Uma compilação deles separadamente e podem ser inseridos e removido enquanto o kernel estiver em execução quase que a qualquer instante. Devido a esta flexibilidade, esta é a forma preferida para criar algumas características do kernel. Muitos drivers de dispositivo populares, como os drivers PCMCIA e driver de fita QIC-80/40, são módulos carregáveis.
Isso depende da configuração do seu sistema particular. Primeiro, a imagem compactada do código-fonte tem aproximadamente 14 MB de tamanho na versão 2.2.9. Muitos sites mantém isso mesmo após desempacotar. Descompactado e construído com uma configuração moderada, consome outros 67 MB.
Em máquinas mais novas, a compilação demora menos do que em máquinas mais antigas; um AMD K6-2/300 com um disco rápido pode fazer um kernel 2.2.x em aproximadamente quatro minutos. Para antigos Pentiums, 486s e 386s, se você planeja compilar, esteja preparado para esperar, possívelmente horas, dias...
Se isso lhe aborrece, e você possui uma máquina mais rápida perto onde dê pra compilar, você poderá construir o kernel na máquina mais rápida (assumindo que você forneca os parâmetros corretos, que seus utilitários estão atualizados e assim por diante), e depois transferir a imagem do kernel para a máquina mais devagar.