Este texto foi escrito pelo João Alexandre Voss de Oliveira (joalex@pro.via-rs.com.br), a princípio como uma mensagem na lista Linux-BR, mas ele concordou em compartilhar as dicas com os leitores do Linux in Brazil
O foco do João, e os exemplos que ele usa, são todos para um upgrade do kernel 2.2.13 para o 2.2.14. Mas todos os procedimentos expostos são genéricos o suficiente para qualquer upgrade da série 2.2, e eventualmente até mesmo das séries posteriores.
Agradecemos pela contribuição do João, que é usuário de Slackware e membro do GULE - Grupo de Usuarios Linux de Erechim - RS - BRASIL.
Peço desculpas pela pretensão, mas como tenho observado várias dúvidas de companheiros quanto à atualização do kernel de suas distros, resolvi sair do ghost e enviar este "mini - HOWTO" indicando os passos para a atualização do kernel ...
IMHO, a única necessidade "real" de recompilar o kernel, para o usuário novato, é a de adequar o kernel recém instalado a seu tipo de processador, para não subutilizar a máquina. Para isto é interessante uma primeira compilação.
Claro que a adequação do kernel ao tipo de hardware do usuário também é um bom motivo, mas o usuário comum pode esperar um pouco até dominar um pouco mais o Linux.
Entretanto, há aqueles que não se contentam com uma simples compilação, e adoram perder horas de sono e convívio familiar, somente pelo prazer de "fuçar" na máquina. Felizmente (?) eu me enquadro nessa categoria, e senti aquela "comichão" quando vi lançado o kernel 2.2.14 - meu slackware 7.0 não podia ficar para trás :)
Apesar de eu não acreditar muito em "recipes", seguem os passos que eu executei para a atualização do kernel 2.2.13 para o 2.2.14, no slackware.
Os passos a seguir dizem respeito à compilação do kernel, com a construção e instalação de novos módulos, adequados às necessidades do usuário. Voce deve estar logado como root (passo "b" em diante):
a. Baixar o linux-2.2.14.tar.gz do www.kernel.org ou algum mirror;
b. copiar o linux-2.2.14.tar.gz para /usr/src: cp linux-2.2.14.tar.gz /usr/src
c. em /usr/src, excluir o link simbólico "linux": rm linux
d. descompactar o fonte do kernel copiado em /usr/src - será criado um diretório chamado "linux": tar -zxvf linux-2.2.14.tar.gz
e. renomear o diretório "linux" recém descompactado: mv /usr/src/linux /usr/src/linux-2.2.14
f. criar um novo link simbólico "linux", desta vez apontando para o novo diretório linux-2.2.14: ln -s /usr/src/linux-2.2.14 linux
Neste ponto voce deve ter, em /usr/src, os dois diretórios e um symlink:
# pwd
# /usr/src
# ls
# linux@ linux-2.2.13 linux-2.2.14 rpm sendmail
Essa é a listagem em /usr/src em meu sistema.
O link simbólico deve apontar para o diretório linux-2.2.14. É nele que o trabalho a seguir deve ser feito. Não delete o diretório linux-2.2.13 ainda, voce pode precisar dele mais tarde, se as coisas derem erradas.
Continuando, os próximos passos DEVEM ser executados em /usr/src/linux;
# cd /usr/src/linux # make menuconfig
O comando acima iniciará a configuração em modo gráfico do kernel.
Opcionalmente, estando em algum ambiente X (KDE, Windowmaker, Blackbox ...), o comando poderá ser:
# make xconfig
Escolha a opção "Store configuration to file" e salve a configuração atual em / com um nome bem claro, tipo "config.original" ou algo parecido.
Mais tarde, se vc precisar restaurar a configuração original, basta rodar o make menuconfig e carregar os parâmetros a partir deste arquivo.
Em seguida escolha a opção "Quit without save" e saia.
Continuando, digite (em /usr/src/linux):
# make mrproper
Isto apagará a configuração anterior do kernel no sistema.
Em seguida, novamente:
# make menuconfig (ou make xconfig, se for o caso)
Escolha as opções que quiser, adapte o kernel ao seu hardware. Salve a configuração.
Novamente no prompt:
# make dep # make clean # make zImage
Oa comandos acima criam as dependências necessárias, limpam arquivos temporários e de instalação e criam a imagem compactada do novo kernel, em /usr/src/linux/arch/i386/boot.
No meu caso, como a imagem do kernel a ser gerado é muito grande, tenho de usar "make bzImage" ao invés de "make zImage". Significa, literalmente, "make a BIG zImage" ... :)
Após algum tempo (que varia de acordo com a máquina), a imagem é gerada e gravada no diretório acima referido.
Vá agora para o diretório /lib/modules. O comando ls dá a listagem do conteúdo:
# cd /lib/modules # ls # 2.2.13
O único diretório listado, 2.2.13, é onde encontram-se os módulos originais da primeira instalação. Caso vc esteja apenas compilando um kernel existente, renomeie para, por exemplo, 2.2.13.old. Caso seja uma atualização, deixe intacto, pois a seguir será criado um novo diretório.
Volte para /usr/src/linux:
# cd /usr/src/linux
Digite os comandos:
# make modules # make modules_install
Os comandos acima criarão e instalarão os novos módulos em /lib/modules. No caso da atualização desta receita, será criado um diretório "2.2.14" em /lib/modules.
O trabalho de criação dos módulos pode demorar um pouco, dependendo do tipo de máquina (processador, RAM disponível, etc).
Após o prompt ser novamente liberado (!), mova a imagem compactada do kernel, de /usr/src/linux/arch/i386/boot para o diretório raiz (/):
# mv /usr/src/linux/arch/i386/boot/bzImage /
Vá para o diretório raiz, e renomeie o novo kernel recém compilado para um nome facilmente identificável:
# cd / # mv bzImage vmlinuz-2.2.14
O novo kernel, agora, terá o nome acima, vmlinuz-2.2.14.
Observe que será necessário indicar, ao LILO, qual a imagem compactada que deverá ser inicializada no boot da máquina. Vá para /etc e edite o arquivo "lilo.conf":
# cd /etc # pico lilo.conf
Meu /etc/lilo.conf se parece com isto:
# LILO configuration file # generated by 'liloconfig' # # Start LILO global section boot = /dev/hda message = /boot/boot_message.txt prompt timeout = 20 vga = normal image = /vmlinuz root = /dev/hda1 label = Linux read-only # Linux bootable partition config ends
Veja que apenas uma imagem pode ser inicializada. Para adicionar a nova imagem, na seção:
image = /vmlinuz root = /dev/hda1 label = Linux read-only
adicione mais uma entrada:
image = /vmlinuz-2.2.14 root = /dev/hda1 label = New read-only
O arquivo lilo.conf deve ficar assim:
# LILO configuration file # generated by 'liloconfig' # # Start LILO global section boot = /dev/hda message = /boot/boot_message.txt prompt timeout = 20 vga = normal image = /vmlinuz root = /dev/hda1 label = Linux read-only image = /vmlinuz-2.2.14 root = /dev/hda1 label = New read-only # Linux bootable partition config ends
Salve o arquivo lilo.conf. No prompt, digite:
# lilo
para salvar as alterações. Você poderá ver:
Added Linux * New
indicando que a imagem vmlinuz-2.2.14 poderá ser inicializada no boot da máquina digitando-se "new" no prompt do lilo. Posteriormente vc poderá mesmo eliminar a imagem antiga (vmlinuz) em "/" e mesmo deletar o dire- tório /lib/modules/2.2.13. Mas espere alguns dias, e observe se não ocorrem erros em módulos, e se todas as funcionalidades estão operantes (ppp, etc).
Efetue um reboot na máquina, e a nova inicialização deverá apresentar
Welcome to linux 2.2.14
indicando que tudo correu como devia e o novo kernel está instalado.
boa diversão!
Observe as mensagens de inicialização, às vezes alguns módulos teimam em não ser instalados corretamente ...
Em caso de kernel panic, inicialize a partir de um disco de incialização (você não tem um? o que está esperando para fazer um?) e efetue as alterações necessárias. É possível voltar ao antigo kernel 2.2.13, simplesmente desfazendo as alterações. Lembre-se que o comando "linux" digitado no prompt do lilo inicializa a imagem antiga do kernel 2.2.13, e o comando "new" a nova imagem, vmlinuz-2.2.14.
Não deixe de consultar a documentação referente ao kernel, em especial o "kernel HOWTO" (em linuxdoc.org) e o guia para o kernel 2.2.XX.
Como dito, esta é uma receita simples, que visa orientar os iniciantes a trilharem o caminho das pedras ... não tem a pretensão de ser nada mais além disto.
Espero ter sido útil, estamos à disposição para eventuais esclarecimentos (e mesmo correções por parte dos "mais velhos" da lista ...
+---------+---------------------------------------------------------+ | .^. | João Alexandre Voss de Oliveira | | /V\ | Registered Linux User # 147244 - Linux Machine # 63929 | | // \\ | e-mail: joalex@pro.via-rs.com.br // joalex@via-rs.net | | /( . )\ | GULE - Grupo de Usuarios Linux de Erechim - RS - BRASIL | | ^^-^^ | "God is in His heaven. All`s right with the world" | | #147244 | Powered by Slackware Linux 7.0 Kernel 2.2.14 | +---------+---------------------------------------------------------+
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.