Kernel Linux em Poucas Palavras – Parte 2

Se tiver alguma dúvida, consulte os PDFs em inglês disponibilizados no fim do post.

*---*---*---*---*---*---*---*---*---*---*

2. Requisitos para Compilar e Utilizar o Kernel

Esse capítulo descreve os programas que você precisa para configurar um kernel, compilá-lo e inicializá-lo com sucesso. É uma boa idéia consultar os arquivos Documentation/Changes para verificar o número especifico da versão que você tem de cada ferramenta descrita nesse capítulo. Esse capítulo foi baseado no kernel 2.6.18 e descreve as versões das ferramentas que funcionam com esse kernel. Se você está usando um kernel diferente, por favor verifique se você tem as versões certas como especificadas nesses arquivos ou algumas coisas podem não funcionar corretamente e pode ser bem difícil determinar o que deu errado.

Ferramentas para Compilar o Kernel

A maioria das distribuições Linux oferecem um opção d instalação para instalar uma gama de pacotes de modificações do kernel. Se a sua distribuição fornece essa opção, é mais fácil instalar isso em vez de tentar catar individualmente todos os programas que são necessários para essa tarefa.

Somente três pacotes são necessários para compilar um kernel com sucesso: um compilador, um linker e a ferramenta make. Essa seção descreve o conteúdo de cada pacote.

Compilador

O kernel Linux está escrito na linguagem de programação C, com uma pequena quantidade de linguagem assembly em alguns lugares. Para compilar o kernel, o compilar em C gcc deve ser usado. A maioria das distribuições Linux tem um pacote entitulado gcc que deverá ser instalado. Se você quiser baixar o compilador e compilá-lo você mesmo, você pode encontrá-lo em http://gcc.gnu.org.

Para a versão 2.6.18 do kernel, a versão 3.2 do gcc é a mais antiga que pode compilar corretamente um kernel funcional. Esteja avisado que instalar a versão mais recente do gcc nem sempre é uma boa idéia. Algumas das versões mais novas do gcc não compilam o kernel corretamente, portanto, ao menos que você queira ajudar o debug do compilador, não é recomendável que você as experimente.

Para determinar qual versão do gcc você tem no seu sistema, rode o seguinte comando:

$ gcc --version

Linker

O compilador C, gcc, não faz toda a compilação por si só. Ele necessita de um conjunto de ferramentas adicional conhecido como binutils para linkar e montar os arquivos fonte. O pacote binutils também contém ferramentas úteis que podem manipular arquivos de objetos de diversas maneiras, como visualizar o conteúdo de uma biblioteca.

O binutils pode ser encontrado normalmente num pacote chamado (sem surpresas) binutils. Se você quiser baixar e instalar o pacote você mesmo, você pode encontrá-lo em http://www.gnu.org/software/binutils.

Para a versão 2.6.18 do kernel, a versão 2.12 do binutils é a mais antiga que pode linkar o kernel corretamente. Para ver qual versão do binutils você tem instalada no seu sistema, rode o seguinte comando:

$ ls -v

make

O make é uma ferramenta que percorre a árvore do código do kernel para determinar quais arquivos precisam ser compilados, para então chamar o compilador e outras ferramentas de compilação para fazerem a tarefa na construção do kernel. O kernel exige a versão GNU do make, que pode ser normalmente encontrado num pacote chamado make na sua distribuição.

Se você deseja baixar e instalar o make você mesmo, você pode encontrá-lo em http://www.gnu.org/software/make.

Para a versão 2.6.18 do kernel, a versão 3.79.1 do make é a mais antiga a compilar o kernel corretamente. É recomendado que você instale a última versão estável do make, já que as versões mais novas são famosas por serem mais rápidas no processo de compilação de arquivos.

Para ver qual a versão do make que você tem em seu sistema, rode o comando a seguir:

$ make --version

Ferramentas para Utilizar o Kernel

Enquanto a versão do kernel que está rodando normalmente não afeta qualquer aplicação do usuário, existe um pequeno número de programas que realmente dependem de certa versão do kernel. Essa seção descreve várias ferramentas que provavelmente já estão instaladas no seu sistema Linux. Se você atualizar o seu kernel para uma versão diferente daquela que veio com a sua distribuição, alguns desses pacotes possivelmente precisarão ser atualizado para que o sistema funcione da forma apropriada.

util-linux

O pacote util-linux é uma coleção de pequenas ferramentas que fazem uma grande quantidade de tarefas. A maioria dessas ferramentas lidam com a montagem e criação de partições de discos e com a manipulação do relógio do hardware no sistema.

Se você deseja baixar e instalar o util-linux você mesmo, você pode encontrá-lo em http://www.kernel.org/pub/linux/utils/util-linux.

Para a versão 2.6.18 do kernel, a versão 2.10 do util-linux é a mais antiga que funciona corretamente. É recomendado que você instale a última versão desse pacote, já que a nova versão suporta novas funções adicionadas ao kernel. A montagem com a opção bind é um exemplo de uma opção dos novos kernels e uma nova versão do util-linux é necessária para ter essas funções funcionando corretamente.

Para ver qual a versão do util-linux você tem instalada no seu sistema, rode o seguinte comando:

$ fdformat --version

module-init-tools

O pacote module-init-tools é necessário se você deseja usar os módulos do kernel Linux. Um módulo do kernel é um pedaço de código carregado que pode ser adicionado ou removido do kernel enquanto o kernel está rodando. É útil compilar drivers de dispositivos como módulos e então carregar apenas aqueles que correspondem ao hardware presente no sistema. Todas as distribuições Linux usam módulos para carregar apenas os drivers e opções necessários para o sistema baseado no hardware presente, em vez de ser forçado a compilar todos os drivers e opções possíveis no kernel como um grande código único. Os módulos economizam memória por carregar apenas o código que é necessário para controlar a máquina da forma apropriada.

O processo de carregamento de módulos do kernel sofreu uma mudança radical na série 2.6 do kernel. O linker para o módulo (o código que decodifica todos os símbolos e descobre como unir os pedaços na memória) agora está acoplado no kernel, o que torna as ferramentas do userspace bem pequenas. Distribuições antigas têm um pacote chamado modutils que não funcionam corretamente com o kernel 2.6. O pacote module-init-tools é o pacote que você precisa para fazer o kernel 2.6 funcionar corretamente com os módulos.

Se você quiser baixar e instalar o pacote module-init-tools você mesmo, você pode encontrá-lo em http://www.kernel.org/pub/linux/utils/kernel/module-init-tools.

Para a versão 2.6.18 do kernel, a versão 0.9.10 do module-init-tools é a mais antiga a funcionar corretamente. É recomendado que a última versão desse pacote esteja instalada, já que novas funções adicionadas ao kernel podem ser usadas pela versão mais recente desse pacote. Colocar os módulos na blacklist previne que eles sejam carregados automaticamente pelo pacote udev é uma das opções que está presente na mais recente versão do module-init-tools, porém não está nas versão antigas.

Para ver qual versão do module-init-tools está instalada no seu sistema, rode o seguinte comando:

$ depmod -V

Ferramentas Específicas para Sistemas de Arquivos

Uma grande gama de ferramentas específicas para certos sistemas de arquivos são necessárias para criar, formatar, configurar e consertar partições de discos. O pacote util-linux tem algumas dessas ferramentas, mas alguns dos sistemas de arquivos mais populares têm pacotes separados que contém os programas necessários.

Ext2/Ext3/Ext4

Os sistemas de arquivos Ext3 e o experimental Ext4 são atualizações do Ext2 e podem ser gerenciados com a mesma ferramenta. Qualquer versão recente de uma ferramenta para o Ext2 também consegue funcionar com os outros dois sistemas de arquivos.

Para trabalhar com qual um desses sistemas de arquivos, você deve ter o pacote e2fsprogs. Se você deseja baixar e instalar esse pacote você mesmo, você pode encontrá-lo em http://e2fsprogs.sourceforge.net.

Para a versão 2.6.18 do kernel, a versão 1.29 do e2fsprogs é a mais antiga a funcionar corretamente com o kernel. É altamente recomendável que você use a versão mais nova para aproveitar as vantagens das novas funções dos sistemas de arquivos Ext3 e Ext4.

Para ver qual versão do e2fsprogs você tem instalado no seu sistema, rode o seguinte comando:

$ tune2fs

JFS

Para usar o sistema de arquivos da IBM, o JFS, você deve ter o pacote ifsutils. Se você deseja baixar e instalar o pacote você mesmo, você pode encontrá-lo em http://jfs.sourceforge.net.

Para a versão 2.6.18 do kernel, a versão 1.1.3 do ifsutils é a mais antiga a funcionar corretamente com o kernel. Para ver qual versão do ifsutils você tem no seu sistema, rode o seguinte comando:

$ fsck.jfs -V

ReiserFS

Para usar o sistema de arquivos ReiserFS, você deve ter o pacote reiserfsprogs. Se você deseja baixar e instalar esse pacote você mesmo, você pode encontrá-lo em http://www.namesys.com/download.html.

Para a versão 2.6.18 do kernel, a versão 3.6.3 do reiserfsprogs é a mais antiga a funcionar corretamente com o kernel. Para ver qual versão do reiserfsprogs você tem no sistema, rode o seguinte comando:

$ reiserfsck -V

XFS

Para usar o sistema de arquivos XFS da SGI, você deve ter o pacote xfsprogs. Se você deseja baixar e instalar esse pacote você mesmo, você pode encontrá-lo em http://oss.sgi.com/projects/xfs.

Para a versão 2.6.18 do kernel, a versão 2.6.0 do xfsprogs é a mais antiga a funcionar corretamente com o kernel. Para ver qual versão do xfsprogs você tem instalada no sistema, rode o seguinte comando:

$ xfs_db -V

Quotas

Para usar a funcionalidade quotas do kernel, você deve ter o pacote quota-tools*. Esse pacote inclui programas que lhe permitem configurar quotas para o usuários, fornece estatísticas sobre a quantidade de quota que está sendo utilizada por usuários diferentes e avisa quando as pessoas ficam muito próximas de atingir a quota disponível do sistema de arquivos.

Se você deseja baixar e instalar esse pacote você mesmo, você pode encontrá-lo em http://sourceforge.net/projects/linuxquota.

Para a versão 2.6.18 do kernel, a versão 3.09 do quota-tools é a mais antiga a funcionar corretamente com o kernel. Para ver qual versão do quota-tools você tem em seu sistema, rode o comando seguinte:

$ quota -V

*: Algumas distribuições, particularmente o Debian, chamam esse pacote de quota em vez de quota-tools.

NFS

Para usar o sistema de arquivos NFS, você deve ter o pacote nfs-utils*. Esse pacote inclui programas que lhe permitem montar partições NFS como um cliente e rodar um servidor NFS.

Se você deseja baixar e instalar esse pacote você mesmo, você pode encontrá-lo em http://nfs.sf.net.

Para a versão 2.6.18 do kernel, a versão 1.0.5 do nfs-utils é a mais antiga a funcionar corretamente com o kernel. Para ver qual versão do nfs-utils você tem em seu sistema, rode o seguinte comando:

$ showmount --version

*: Algumas distribuições, particularmente o Debian, chamam esse pacote de nfs-common em vez de nfs-utils.

Outras Ferramentas

Existem vários outros programas importantes que estão estreitamente ligados à versão do kernel. Esses programas normalmente não são necessários para que o kernel funcione corretamente, mas eles habilitam o acesso a diferentes tipos hardware e funções.

udev

O udev é um programa que habilita o Linux forneça um sistema de nomeação de dispositivos persistente no diretório /dev. Ele também fornece um /dev dinâmico, parecido com o antigo (e agora removido) sistema de arquivos devfs. Quase todas as distribuições Linux utilizam o udev para gerenciar o diretório /dev, então ele é necessário para iniciar a máquina corretamente.

Infelizmente, o udev depende da estrutura do /sys, que é conhecido por mudar de tempos em tempos com as versões do kernel. Algumas dessas mudanças no passado foram conhecidas por quebrar o udev, então a sua máquina não irá iniciar corretamente. Se você tem a última versão do udev recomendada para o eu kernel e está tendo problemas no funcionamento, por favor comunique os desenvolvedores do udev na lista de email disponível em linux-hotplug-devel@lists.sourceforge.net.

É altamente recomendado que você usa a versão do udev que vem com a sua distribuição Linux, já que ele está altamente ligado ao processo de boot da distribuição. Mas se você deseja atualizar o udev por sua conta e risco, você pode encontrá-lo em http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html.

Para a versão 2.6.18 do kernel, a versão 081 do udev é a mais antiga a funcionar corretamente com o kernel. É recomendado que você use a última versão do udev, afinal ele funcionará melhor com os kernels mais novos, devido à mudanças de como o udev e o kernel se comunicam.

Para ver qual a versão do udev que você tem instalada no seu sistema, rode o seguinte comando:

$ udevinfo -V

Ferramentas de Processos

O pacote procps inclui as ferramentas comumente usadas ps e top, como também muitas outras ferramentas úteis para gerenciar e monitoras processos que estão rodando no sistema.

Se você deseja baixe e instalar esse pacote por você mesmo, você pode encontrá-lo em http://procps.sourceforge.net
.

Para a versão 2.6.18 do kernel, a versão 3.2.0 do procps é a mais antiga a funcionar corretamente. Para ver qual é a versão do procps que está instalada no seu sistema, rode o seguinte comando:

$ ps --version

Ferramentas PCMCIA

Para utitizar dispositivos PCMCIA corretamente com o Linux, um programa que ajuda o userspace deve ser utilizado para configurar os dispositivos. Para versões antigas do kernel, esse programa era chamado de pcmcia-ss, mas foi substituído por um sistema muito mais simples chamado pcmciautils. Se você deseja utilizar dispositivos PCMCIA, você deve ter esse pacote instalado para que eles funcionem corretamente.

Se você deseja baixar e instalar esse pacote você mesmo, você pode encontrá-lo em ftp://ftp.kernel.org/pub/linux/utils/kernel/pcmcia.

Para a versão 2.6.18 do kernel, a versão 004 do pcmciautils é a mais antiga a funcionar corretamente com o kernel. Mas a versão mais recente é recomendada para tirar vantagem das novas funções no subsistema PCMCIA, como o carregamento automático do driver quando um novo dispositivo é encontrado.

Para ver qual é a versão do pcmciautils que você tem instalada em seu sistema, rode seguinte comando:

$ pccardctl -V

*---*---*---*---*---*---*---*---*---*---*

PDF em inglês - Chapter 2: Requirements for Building and Using the Kernel

*---*---*---*---*---*---*---*---*---*---*

Qualquer correção, crítica & derivados, nos comentários por favor. Agradecido.

 
Powered by FeedBurner Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.