segunda-feira, 14 de novembro de 2011

Compilar Kernel do Linux no Arch

O Archlinux faz da compilação do kernel uma tarefa menos árdua através do Arch Build System, porque automatiza grande parte do processo de obtenção de fontes sem perder o controle de acesso às mesmas que um usuário experiente desejaria. Tendo em vista que o Arch é uma das distros de grande repositório mais enxutas e através da compilação do kernel podemos configurá-lo para carregar somente o necessário para a máquina e para as necessidades do usuário, vamos ao tutorial básico de compilação.

Para ter acesso às ferramentas básicas de compilação do kernel, necessitaremos da instalação do ABS (Arch Build System), compiladores base e xmlto. Abra o terminal e os instale com o comando:

# sudo pacman -S abs base-devel xmlto

Gere toda a árvore do ABS.

# sudo abs

Crie uma pasta para descarregar os arquivos a serem compilados, copie-os, altere as permissões e entre nela.

# mkdir build/

# sudo cp /var/abs/core/linux/* build/

# sudo chown -hR seulogin build/

# cd build/

Antes de prosseguir, preste atenção que é uma compilação personalizada, então, para evitar que o kernel padrão não conflite com o kernel personalizado e para que você possa iniciar o sistema com a versão de kernel padrão, precisa alterar algumas instruções do pkgbuild. Para isso, carregue o arquivo no editor de terminal com o comando:

# nano PKGBUILD

Logo no início do arquivo, encontrará as seguintes linhas:

pkgbase=linux
pkgname=('linux' 'linux-headers' 'linux-docs') # Build stock -ARCH kernel
# pkgname=linux-custom # Build kernel with a different name
_kernelname=${pkgname#linux}

Altere para:

pkgbase=linux
# pkgname=('linux' 'linux-headers' 'linux-docs') # Build stock -ARCH kernel
pkgname=linux-custom # Build kernel with a different name
_kernelname=${pkgname#linux}

Aperte F3 para salvar e F2 para sair, então crie os arquivos para a criação do kernel personalizado copiando os arquivos padrão.

# cp linux.install linux-custom.install && cp linux.preset linux-custom.preset

Pronto, agora você está salvo de você mesmo. Prossiga abrindo o pkgbuild novamente.

# nano PKGBUILD

Encontre essas linhas no arquivo, que definem a ferramenta onde você fará a configuração do kernel:

# load configuration
# Configure the kernel. Replace the line below with one of your choice.
#make menuconfig # CLI menu for configuration
#make nconfig # new CLI menu for configuration
#make xconfig # X-based configuration
#make oldconfig # using old config from previous kernel version
# ... or manually edit .config

Cada uma das linhas com o comando make abrirá um menu de configuração diferente num passo adiante deste tutorial. Pode escolher qualquer um (apenas um), a minha sugestão é o menu CLI novo, assim:

# load configuration
# Configure the kernel. Replace the line below with one of your choice.
#make menuconfig # CLI menu for configuration
make nconfig # new CLI menu for configuration
#make xconfig # X-based configuration
#make oldconfig # using old config from previous kernel version
# ... or manually edit .config

Agora, procure por esta linha:

package_linux() {
pkgdesc="The Linux Kernel and modules"
...
}

E, para referir a compilação para o kernel personalizado, altere para:

package_linux-custom() {
pkgdesc="The Linux Kernel and modules"
...
}

Aperte F3 para salvar, F2 para sair e comece a compilação automática com o comando:

# makepkg

O ABS irá baixar o código fonte do kernel, realizar alguns procedimentos e abrir o menu de configurações que você escolheu. Tenha certeza do hardware que desabilita e das funções que habilita (algumas são experimentais), salve o arquivo de configuração e saia do menu para o ABS fazer o restante da compilação. Após terminada a compilação, seu kernel estará pronto pra ser instalado com o comando:

# sudo pacman -U nome_do_pacote

Depois é só configurar o Grub para por o seu kernel personalizado no menu de boot e ser feliz. =]