Arquivos históricos do BR-Linux.org apresenta:

O que muda no Linux 2.6

Este é um artigo de minha autoria, publicado na edição de abril/2003 da Revista do Linux e reproduzido aqui com autorização. Apresentei a lista das principais novidades da nova série do kernel que está por sair, um pouco do panorama sobre como o kernel é feito, e qual a importância de uma nova série. Seus comentários são bem vindos! Leia a íntegra do artigo logo abaixo.

Kernel 2.6 - O que muda na nova versão do Linux

por Augusto Campos (brain@br-linux.com)

O lançamento de uma nova versão de produção do kernel do 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 entusistas têm razão extra para praticar o esporte da recompilação.

O que é o kernel

Quando você adquire e instala uma distribuição de 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. Há 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é mesmo para 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 é: e 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 do 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 diagrama acima 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, para 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

- 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 que 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, e ele irá avaliar, aceitar ou rejeitar cada proposta referente à sua área de atuação. Posteriormente, os responsáveis pela versão do kernel corrente (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 é submetido, em um processo de desenvolvimento aberto que lembra os princípios da pesquisa acadêmica ou científica, com discussão entre toda a comunidade. Quando há discórdia, geralmente a opinião dos líderes (principalmente Linus Torvalds) acaba prevalecendo.

Mas o Linus não está sozinho neste barco. Muitos dos desenvolvedores "centrais" do kernel são nomes conhecidos na comunidade do software livre, enquanto outros são relativamente anônimos. Eles chegam a se reunir pessoalmente, em eventos informais como o Kernel Summit (http://lwn.net/2001/features/KernelSummit/), para trocar experiências, combinar suas agendas e tramar para 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 do Linux mesmo sem saber programar. Projetos como o Kernel Janitors (http://kernel-janitor.sourceforge.net/) ou o http://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 sua ausência 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, inclusive 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 IO 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 extendidos, superando os limites dos antigos modos ?rwxrwxrwx? 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 algumas 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 1000Hz ? é 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 seus vídeos com ainda 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, 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 shutdown, desligar a máquina e recuperar no momento do próximo boot.

A área de rede também tem novidades, incluindo 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 o x86-64 (o Hammer, processador de 64 bits da AMD), o PowerPC de 64 bits, e o 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) a 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 shutdown, 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. Por exemplo, nessa nova versão 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 portanto possa 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 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 tranquilo testar seu sistema se você sabe 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 que estejam em 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 fazer backup de todos os dados importantes antes, e de ler todas as instruções relevantes. O site tldp.org 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 salvo em poucos casos já não é mais uma necessidade - as boas distribuições de Linux têm distribuído versões estáveis, seguras, completas e de bom desempenho, já 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 nos seus favoritos também os seguintes endereços: kernel.org, kernelnewbies.org e www.linuxhq.com/kernel. Procure também pelos guias do TLDP.org, incluindo os "Linux 2.4 kernel internals", "Linux Kernel Module Programming Guide", "Linux Kernel Hackers Guide", e "The Linux Kernel". Postado por brain em maio 11, 2003 08:15 PM

Comentários para "O que muda no Linux 2.6"

» Postado por: decko em maio 12, 2003 08:03 AM, 200.225.254:

 

» Postado por: Haroldo Luthor em maio 12, 2003 08:30 AM, 200.165.15.:

 

» Postado por: Augusto Campos em maio 12, 2003 08:51 AM, 200.193.98.:

 

» Postado por: iran em maio 12, 2003 12:33 PM, 200.171.95.:

 

» Postado por: Tiago Cruz em maio 12, 2003 01:01 PM, 200.207.152:

 

» Postado por: ofranja em maio 13, 2003 04:02 AM, 200.101.200:

 

» Postado por: Animal-X® em julho 21, 2003 02:44 PM, 200.221.52.:

 

» Postado por: JavaNunes em setembro 22, 2003 08:06 PM, 200.158.170:

 

» Postado por: Rodrigo_Brito em fevereiro 17, 2004 04:38 PM, 200.163.14.:

 

» Postado por: Anunakin em março 27, 2004 02:40 PM, 200.216.143:

 

» Postado por: Zithromax em setembro 25, 2004 10:47 AM, 65.75.139.9:

 

» Postado por: Amoxicillin online em outubro 4, 2004 10:29 PM, 67.19.91.50:

 

» Postado por: Cialis em outubro 9, 2004 11:30 AM, 65.75.139.9:

 

» Postado por: Levaquin em outubro 13, 2004 10:57 AM, 65.75.139.9:

 

» Postado por: Elidel online em novembro 3, 2004 05:44 PM, 65.75.139.9:

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.