Revista Do Linux
 
  
  
 

  CD do Mês
  Capa
  Entrevista
  Estudo de Caso
  Curso de Java
  Comunidade
  Internacional
  Especial
assinantes
 

Kernel 2.6

O que muda na nova versão do Linux

O lançamento de uma nova versão de produção do kernel Linux é um dos acontecimentos que mais agita a comunidade, e com justa razão. Surgem novos recursos, novos hardwares são suportados, a forma de fazer algumas coisas muda e os entusiastas têm razão de sobra para praticar o esporte da recompilação

O que é o kernel

Quando você adquire e instala uma distribuição Linux, como o Conectiva, o Slackware, o Red Hat ou o Debian, na verdade, está lidando com um pacote que contém uma série de programas diferentes: O instalador e configurador do sistema, os utilitários padrão GNU (como a shell bash e o compilador gcc), o suporte a modo gráfico provido pelo projeto XFree, ambientes gráficos como o KDE e o GNOME, servidores como o Apache e o Sendmail, aplicativos, bibliotecas e muito mais.

Nenhum destes componentes pode ser chamado propriamente de Linux. De fato, a maior parte deles não é específico do Linux, podendo estar disponível em diversas outras arquiteturas. O Apache, por exemplo, está disponível até para o Windows.

Surge a pergunta: o que é o Linux, então? De modo simplista, o Linux é o kernel do sistema operacional incluído em todas as distribuições. A próxima pergunta é: o que é um kernel? A resposta, também simplificada, é que kernel é o núcleo do sistema operacional, responsável por traduzir as requisições de alto nível, geradas pelos aplicativos em comandos adequados aos equipamentos que estão sendo utilizados. Além disso, ele gerencia o uso da memória, controla a atribuição do tempo da CPU a todos os processos em execução simultânea (multitarefa), gerencia os direitos de acesso a todos os recursos de forma a garantir a segurança, fornece os serviços básicos de rede e muito mais.

O kernel Linux é um software cujo desenvolvimento foi iniciado em 1991 por Linus Torvalds, e que hoje permite a execução de todos os softwares citados acima e incluídos na maior parte das distribuições. Mas ele nem sempre foi tão completo e estável, como mostra o Gráfico 1 indicando o número de linhas de código ao longo da história do sistema.

O que significa uma nova versão

O quadro "Versões e números" explica o fenômeno matemático do surgimento do novo kernel 2.6. Mas a questão numérica não é a mais crucial, ainda mais quando sabemos que o kernel 2.6 é apenas uma continuação da série 2.5, embora com maior garantia de estabilidade e com a bênção oficial de Linus Torvalds. Mas a transformação que ocorre no panorama do Linux é bem mais profunda. Alguns dos eventos tradicionais que ocorrem a cada mudança de versão do kernel são:

  • As distribuições comerciais tentam sincronizar o lançamento de novas versões, aguardando para disponibilizar logo uma versão que inclua tanto a última versão da série de produção anterior (no caso, a 2.4.x) como a mais recente da nova série (ou uma das últimas da série de desenvolvimento corrente, como é comum acontecer).

  • Diversos interessados adaptam recursos da nova série estável para as séries anteriores, num fenômeno conhecido como backporting.

  • Há uma tempestade de pequenos bugs localizados e prontamente corrigidos nas primeiras versões da nova série de produção, o que é natural, pois o público usuário desta série é imensamente maior do que os que chegam a realmente testar a série de desenvolvimento.

  • A imprensa e os websites especializados publicam reportagens especiais sobre o lançamento do novo kernel e, em seguida, procuram refazer todos os testes e benchmarks, a fim de identificar e quantificar as melhorias.

  • Muitos usuários irão ler a documentação existente e farão um upgrade manual bem-sucedido. Vários deles, experientes, escolherão fazer isto em uma distribuição recente e que já incluía opcionalmente um kernel da série 2.5, o que é quase uma garantia de compatibilidade com a versão 2.6.

  • Muitos usuários acreditarão ser capazes de fazer o upgrade manualmente sem ler nenhum manual ("É só mais um kernel, ManOw"), e gerarão tráfego em todas as listas e fóruns de Linux para perguntar por que seus sistemas estão se comportando de maneira estranha. A resposta costuma ser simples: mesmo que você compile seu kernel corretamente, alguns aplicativos e utilitários (exemplo: insmod, quotas e os fileutils) precisam de upgrades para manter a compatibilidade. Essa informação consta na documentação e precisa ser vista com atenção antes de você acidentalmente deixar seu sistema em um estado instável.

  • Outros usuários aguardarão ansiosamente por pacotes pré-compilados para suas distribuições específicas, e outros ainda nem notarão nada e instalarão o novo kernel sem perceber, na hora do próximo upgrade programado.

    Essa agitação é comum a todas as mudanças de versão do kernel, e é algo que os veteranos já estão acostumados a apreciar. O primeiro boot com um novo kernel traz experiências novas e uma sensação de serviço bem feito que é até difícil de descrever.

    Quem faz o kernel

    O kernel é mantido por um grande número de programadores espalhados pelo mundo todo que se comunicam basicamente através de listas de discussão via e-mail, sendo a principal a linux-kernel. Qualquer pessoa pode ler e participar da lista, e pode-se também contar com resumos via web (kt.zork.net) e com uma FAQ (www.tux.org/lkml).

    Embora a princípio qualquer pessoa possa sugerir ou contribuir com alterações na lista, existe uma hierarquia a ser seguida no que tange a aceitar as alterações. Cada trecho do kernel possui um mantenedor, que irá avaliar, aceitar ou rejeitar cada proposta referente à sua área de atuação. Posteriormente, os responsáveis pela versão do kernel atual (por exemplo, Linus Torvalds para a série 2.5 e o brasileiro Marcelo Tosatti para a série 2.4) também poderão ter algo a dizer sobre aceitar ou rejeitar as alterações.

    E todos os demais membros da lista podem discutir o que está sendo submetido, em um processo de desenvolvimento aberto, que lembra os princípios da pesquisa acadêmica ou científica, envolvendo toda a comunidade. Quando há discordâncias, geralmente a opinião dos líderes (principalmente a de Linus Torvalds) acaba prevalecendo.

    Mas Linus não está sozinho neste barco. Muitos dos desenvolvedores "centrais" do kernel são nomes conhecidos na comunidade do software livre, enquanto que outros são relativamente anônimos. Eles chegam a se reunir pessoalmente em eventos informais como o Kernel Summit (lwn.net/2001/features/KernelSummit), para trocar experiências, combinar as agendas e tramar a conquista do mundo.

    Claro que, além dos "chefões" como Alan Cox, Andrea Arcangeli, Marcelo Tosatti e seus companheiros, existem os colaboradores quase anônimos que contribuem com pequenas coisas aqui e ali - adaptam um driver para suportar um novo modelo de dispositivo, corrigem um pequeno bug, melhoram o desempenho de uma rotina ou outra e assim por diante.

    Na verdade, você pode contribuir para o desenvolvimento do kernel Linux, mesmo sem saber programar. Projetos como o Kernel Janitors (kernel-janitor.sourceforge.net) ou o br.kernelnewbies.org concentram voluntários para tarefas que vão desde a programação para correção de problemas específicos até a atualização de documentação.

    As novidades

    O kernel 2.6 vai trazer consigo muitas novidades, incluindo melhor desempenho, escalabilidade, sistema de I/O (entrada e saída) renovado, novos sistemas de arquivos e suporte a diversos novos dispositivos e plataformas. Vamos listar a maior parte das novidades, para depois fixar a atenção nas principais delas.

    As primeiras novidades são os recursos que serão deixados para trás. Não serão poucos, e muitos deles serão notados principalmente pelos desenvolvedores de sistemas. Mas o khttpd talvez tenha a ausência mais sentida - lembra-se do servidor web embutido no próprio kernel? Na versão 2.6 ele não mais estará presente. Quanto às novas características, vamos por partes:

    Para começar, a configuração da compilação mudou, até visualmente. O popular make xconfig deixou de usar Tk e passou a usar o toolkit Qt - o mesmo do KDE. A configuração em modo texto também foi melhorada, embora visualmente continue a mesma.

    O subsistema de I/O teve diversas melhorias que se traduzem em maior desempenho. Os dispositivos de bloco (discos, etc.) agora podem acessar até 16TB em máquinas de 32 bits. Há suporte a gerenciamento de permissões de acesso através de ACLs POSIX e a atributos estendidos, superando os limites dos antigos modos rwx-rwx-rwx de permissão. O framework LSM (Linux Security Modules) também promete facilitar a inclusão e gerenciamento de novos esquemas de controle e restrição de acesso.

    A nova VM (memória virtual) incorpora alguns dos novos recursos (leia-se RMAP) desenvolvidos por Rik van Riel e que causaram bastante polêmica na série 2.4. Foram acrescentados recursos de preempção, diminuindo a latência de processos críticos, o que favorece bastante as aplicações multimídia e de tempo real, principalmente quando considerado em conjunto com o aumento da frequência do clock interno, de 100 Hz para 1000 Hz - é um dos pontos onde o usuário desktop vai perceber a vantagem do seu novo kernel, ao realizar qualquer operação interativa ou ao ouvir suas MP3 e assistir a seus vídeos ainda com mais clareza.

    O novo escalonador de processos deve trazer maior escalabilidade para ambientes com grande número de tarefas simultâneas, mas sem alterações no desempenho para o usuário comum. Já o novo código na área de threads deve trazer grandes ganhos de desempenho, o que será notado principalmente pelo pessoal do Java, que usa esse recurso intensivamente.

    O suporte a dispositivos de entrada mudou profundamente, trazendo muitas novas opções e a possibilidade de ficar sem suporte a mouse e teclado ao errar as configurações.

    O suporte a placas Plug and Play foi melhorado, os drivers de som ALSA foram incorporados ao kernel (sem retirar os já tradicionais drivers OSS), agora é possível acessar gravadores de CD IDE sem necessidade de emulação SCSI (e com melhor desempenho!) e o código do Video4Linux sofreu uma rearrumação.

    A área de sistemas de arquivos teve muitas novidades. Novo sistema de quotas, diretórios indexados em partições Ext3, NFS com suporte a NFSv4 e transporte sobre TCP, suporte renovado a partições NTFS, inclusão oficial do XFS (da SGI) e JFS (da IBM). O Logical Volume Manager também foi completamente substituído, embora sem perda de compatibilidade. E o velho initrd agora foi substituído (ou complementado) pelo novíssimo initramfs, com as mesmas funções de auxiliar no boot.

    Nas arquiteturas Intel, há algumas surpresas, inclusive melhorias no código de detecção de CPU. Outra novidade é o suporte a um recurso da BIOS chamado SBF, que permite reboots mais rápidos. O gerenciamento de energia também recebeu maior atenção, com suporte mais avançado ao padrão ACPI e recursos avançados como o famoso e tão desejado Suspend to Disk, que permite salvar na partição de swap o estado das aplicações e do sistema na hora do encerramento, desligar a máquina e, no próximo boot, recuperá-la exatamente do ponto onde parou.

    A área de rede também tem novidades, como o suporte ao padrão IPSEC no kernel e a nova CryptoAPI, com suporte a diversos algoritmos, incluindo HMAC, MD4, MD5, SHA-1, DES, Triple DES, EDE e Blowfish. Há suporte ao cada vez mais presente protocolo Bluetooth para comunicação sem fio, e a nova API de rede (NAPI) promete melhorar o desempenho de maneira impressionante.

    Para completar, temos suporte a AGP 3.0, USB 2.0 (velocidade de até 480MB/s, contra os 12MB/s do anterior USB 1.1) e a algumas novas arquiteturas, inclusive a x86-64 (utilizada no Hammer, novo processador de 64 bits da AMD), a PowerPC de 64 bits e a UML (User Mode Linux, ou Linux dentro do Linux), a primeira arquitetura puramente virtual suportada oficialmente pelo kernel.

    Os destaques

    Algumas das novidades merecem atenção especial e mais riqueza de detalhes que uma lista genérica pode fornecer, e é por isso que separamos estes destaques.

    Para começar por um tema de interesse mais geral, vamos analisar a inclusão dos drivers ALSA. Com funcionalidades de áudio e MIDI, estes drivers substituem os drivers de som OSS presentes em versões anteriores do kernel, embora você ainda possa usar os antigos, se desejar. Eles apresentam facilidade de configuração e suporte a uma grande variedade de dispositivos de áudio, além de funcionarem bem inclusive em máquinas SMP.

    Outra novidade relacionada (ainda que não diretamente) à multimídia é o novo suporte a gravadores de CD IDE. Até o kernel 2.4, para gravar CDs nos equipamentos mais comuns do mercado era necessário realizar uma série de acrobacias tecnológicas, incluindo a emulação de um barramento SCSI. Embora as distribuições mais recentes de Linux tenham incluído ferramentas de detecção e configuração automática dessa emulação, muitos usuários ainda passavam por necessidades que deveriam ficar restritas aos experts, como a alteração manual de opções de boot e de carregamento de módulos. No kernel 2.6, a necessidade de emulação desaparece, e os aplicativos poderão acessar os gravadores de CD diretamente (via DMA) - e com maior desempenho! A operação de "ripar" CDs de áudio também se beneficia desta melhoria.

    Na área de sistemas de arquivos, provavelmente, as maiores novidades são a inclusão do JFS (cedido pela IBM) e do XFS (cedido pela SGI) como sistemas suportados pelo kernel oficial. Além das características comuns a outros sistemas de arquivos com o recurso de journaling (como o ReiserFS e o ext3), incluindo a recuperação rápida após desligamentos sem interrupção, ambos foram desenvolvidos para uso em servidores de alto desempenho (até 300MB/s sustentados, no caso do XFS) e já foram bastante testados e aperfeiçoados pelas empresas que os forneceram para inclusão no Linux - a SGI, por exemplo, faz testes com até 32 milhões de arquivos por diretório no XFS.

    Outro item de interesse para os administradores de sistemas de arquivos é o novo LVM, o gerenciador de volumes lógicos que dá flexibilidade e liberdade para gerenciar a babel de discos típicas dos modernos datacenters. Como todo LVM, o do kernel 2.6 permite agrupar discos físicos, criando volumes lógicos para acesso pelas aplicações, fornecendo disponibilidade, desempenho e segurança através de recursos como os backups via volume snapshot, acréscimo e remoção de discos online e redimensionamento dinâmico de volumes. O novo LVM garante reduzir a dor de cabeça causada por discos fisicamente danificados, reorganização da carga de trabalho e adaptação às mudanças de requisitos de armazenamento.

    A arquitetura Intel é sem dúvida a mais comum entre usuários de Linux e merece atenção especial. Nessa nova versão, por exemplo, há suporte ao SBF, uma extensão padrão da BIOS que pode acelerar bastante os seus boots, pois permite que o sistema "lembre" que o último boot ocorreu sem problemas e possa, portanto, deixar de realizar todos aqueles testes de memória e dispositivos que a BIOS costuma fazer antes de iniciar a carga do sistema operacional.

    A soma do novo escalonador o(1), da memória virtual usando mapeamento reverso, da nova frequência do clock interno, da capacidade de preempção e do novo suporte a threads, entre outros recursos, permitirá ganhos sensíveis em atividades interativas, multimídia e de tempo real. Isso significa melhores vídeos, músicas e jogos, melhor interatividade com ambientes gráficos, mas também se traduz em aplicações "sérias", inclusive na área de biomédica e mecatrônica, que dependem de sistemas de tempo real.

    Finalmente, a inclusão do User Mode Linux (UML) como uma arquitetura oficialmente suportada permite a fácil criação de máquinas virtuais no Linux, com reflexos no desenvolvimento de sistemas, no treinamento, em todas as atividades de testes, e até no webhosting. Afinal, é muito mais tranqüilo testar seu sistema se souber que até mesmo um rm -rf / não fará nada além de destruir um sistema de arquivos virtual, sem causar nenhum dano à máquina que o hospeda.

    Para concluir

    Como acontece com qualquer software, você deve ter cuidado na hora de instalar um novo kernel. Não faça experiências com máquinas de produção, pois como 100% dos seus sistemas dependem de recursos controlados pelo kernel, erros nessa área podem ser fatais.

    Se você realmente deseja experimentar compilar seu próprio kernel, lembre-se de antes fazer backup de todos os dados importantes e ler todas as instruções relevantes. O Linux Documentation Project contém vários documentos relacionados ao kernel e merece uma visita. Compilar um novo kernel é bom, pode dar ensejo a conhecer vários novos aspectos do sistema, mas a não ser em poucos casos já não é mais uma necessidade - as boas distribuições de Linux têm fornecido versões estáveis, seguras, completas e de bom desempenho, pré-compiladas e descomplicadas.

    No caso das máquinas de produção, a não ser que você tenha experiência e segurança, considere a opção de aguardar pelo lançamento de uma versão pré-compilada do novo kernel específica para a distribuição que você usa ou até mesmo o lançamento de uma nova edição da distribuição, aproveitando todos os novos recursos.

    E se você deseja saber mais sobre o que há por dentro do kernel, além de visitar os sites já mencionados, coloque também nos seus favoritos os endereços do quadro Para saber mais.

    O mapa da mina

    Alguma vez você já pensou em como seria um "mapa" mostrando o kernel Linux? Pois foi exatamente isso que uma equipe conjunta entre a BCG e a OSDN (Open Source Developers Network, proprietária, entre outros, de sites como o Slashdot e Sourceforge) fez. O Kernelmapper é um mapa que representa o kernel como um conjunto de várias camadas. O círculo interno representa os diretórios kernel/ e mm/, e os círculos ao seu redor são os sistemas de arquivos e rede, código para arquiteturas específicas (com um segmento para cada arquitetura) e drivers de dispositivo, respectivamente.

    O mapa é atualizado constantemente, e pode ser acessado em kernelmapper.osdn.com com qualquer navegador. É possível navegar por suas diferentes seções e obter níveis variados de zoom com cliques do mouse, desde uma visão geral de todo o kernel, até um "close" mostrando as funções dentro de cada arquivo que compõe o código-fonte.

    Um detalhe do mapa do kernel Linux

    Versões e números

    O número da versão do kernel do Linux segue sempre um esquema composto por três valores, no formato maior.menor.release. Por exemplo, no caso do kernel 2.5.22, o número maior é 2, o menor é 5, e o release é 22.

    O número maior não muda com frequência - a versão 0 saiu em 1991, em 1994 saiu a 1, e estamos no 2 desde 1996. O número menor muda a intervalos irregulares, mas não tão longos. Ele tem uma característica importante: quando é um número par, indica uma versão de produção, e quando é ímpar indica versão de desenvolvimento. Como os nomes já apontam, as versões de produção são adequadas para uso em aplicações reais - servidores, desktops, etc. As de desenvolvimento são específicas para quem deseja testar novos recursos do kernel, ou para os casos específicos onde a versão mais recente da série de produção ainda não inclui suporte a algum item já suportado pela série de desenvolvimento.

    A grande diferença entre as duas séries é a estabilidade - quando um dado recurso passa a fazer parte das versões de produção, é porque se considera que ele já foi adequadamente testado - em geral nas versões de desenvolvimento.

    As versões de desenvolvimento se sucedem, refinando-se. Novas características vão sendo sugeridas, incluídas e testadas. Ao atingir um certo ponto de maturidade, os desenvolvedores do kernel entram em um acordo: "nada de novas características, vamos nos concentrar em arrumar o que já temos". A partir deste ponto, chamado de feature freeze, os desenvolvedores centrais do kernel passam a se preocupar com o processo de estabilizar o que já foi feito, visando transformar a atual versão de desenvolvimento no início de uma nova série de produção.

    Assim, em algum momento no tempo decide-se que, em vez de lançar uma versão 2.5.XX, já se pode lançar o 2.6.0. A série de desenvolvimento, já madura, dá início a uma nova série de produção. Por algum tempo todos se esforçam em manter a nova série, mas logo começam a surgir novas características que não são adequadas à versão de produção, e surge uma versão 2.7.0 (de desenvolvimento, portanto) para acomodá-las, e assim o ciclo recomeça.

    É importante esclarecer que o número da versão do do kernel não tem nenhuma relação com o número das versões das diversas distribuições. Por exemplo, estou escrevendo este artigo em uma máquina com o SuSE Linux 8.0 que roda o kernel versão 2.4.18 - 8.0 é a versão da distribuição e 2.4.18 é a versão do kernel. Você pode descobrir a versão do kernel de sua máquina digitando o comando uname -r.

    Para saber mais:
    kernel.org
    br.kernelnewbies.org
    www.linuxhq.com/kernel


    Augusto Campos - brain@matrix.com.br


  • A Revista do Linux é editada pela Conectiva S/A
    Todos os Direitos Reservados.

    Política de Privacidade
    Anuncie na Revista do Linux