sexta-feira, 25 de fevereiro de 2011

Aplicar um DSDT modificado e recompilar o KERNEL no Debian 6.0 (Squeeze)

Estou com dor nas costas por causa da tarde sentado à frente do netbook, em posição desconfortável, procurando no google algumas dicas de como recompilar o kernel do debian e criar o pacote .deb pronto para ser instalado no sistema.

Encontrando uma parte aqui, outra ali... um erro aqui, outro ali... enfim, consegui
juntar informações de duas ou três documentações encontradas pelo oráculo e compilar
o kernel.

Meu interesse nessa compilação é aplicar o DSDT corrigido para o meu netbook (Clique aqui para aprender como criar um novo DSDT) que, em outras versões do Debian, era bastante simples - bastava copiar o novo DSDT.aml para o diretorio /etc/initramfs-tools/ e gerar um novo initramfs pelo comando "update-initramfs -c -u -k all" mas a equipe de desenvolvedores do Debian resolveu desativar essa facilidade por questões de segurança.

Já falei demais, vamos aprender a compilar o kernel

Obs: Provavelmente existem outros métodos para isso mas só testei esse e deu certo. Todos os comandos abaixo devem ser executados como root.

Passo 1 - Instale as dependências e a fonte (source) do kernel:
apt-get install kernel-package fakeroot build-essential devscripts
apt-get build-dep linux-2.6
apt-get source linux-2.6

Passo 2 - Copie o arquivo "/boot/config-2.6.32-5-686" para a pasta onde foi extraida a fonte (source) do kernel - provavelmente "/root/linux-2.6-2.6.32" - com o nome ".config" através do comando abaixo:
cp /boot/config-2.6.32-5-686 /root/linux-2.6-2.6.32/.config
Passo 3 - Va para a pasta com a fonte (source) do kernel citada acima e edite o arquivo .config
cd /root/linux-2.6-2.6.32
nano -w .config

Procure pela linha comentada
# CONFIG_ACPI_CUSTOM_DSDT not set yet.

Substitua pelas linhas abaixo
CONFIG_ACPI_CUSTOM_DSDT=y
CONFIG_ACPI_CUSTOM_DSDT_FILE="/caminho/do/arquivo/dsdt.hex"

No meu caso o arquivo estava em "/root/dsdt.hex"

Salve a alteração e feche o editor de texto

Passo 4 - Edite o changelog com o comando dch --local +dsdt - será aberto o editor
de texto padrão (no meu caso o nano). Apenas salve e feche o editor.

Passo 5 - Execute o comando para compilar o kernel
Dentro da pasta com a fonte (source) do kernel execute o comando abaixo:
make-kpkg --append-to-version "-sufixo" --revision "revisao" --us --uc --initrd kernel_image kernel_headers

no meu caso:
make-kpkg --append-to-version "-dsdt" --revision "1" --us --uc --initrd kernel_image kernel_headers

Passo 6 - Após uma longa espera (dependendo da configuração de seu computador), volte ao diretorio do root e instale os dois pacotes .deb que foram gerados. No meu caso o linux-headers-2.6.32-dsdt_1_i386.deb e o linux-image-2.6.32-dsdt_1_i386.deb. Para instala-los utilize o comando dpkg -i linux*.deb

Passo 7 - Para finalizar execute o comando update-initramfs -c -u -k all e reinicie o PC. Lembre-se de escolher o novo kernel na tela do grub.

Fontes:
Follow Me on Twitter