| Compilar o Kernel no Ubuntu |
|
|
|
| Escrito por Wanderley Ribeiro | |
| Terça, 11 Setembro 2007 17:25 | |
![]() Olá este é um básico tutorial sobre como compilar o kernel do Linux, para muitos essa parece ser uma difícil tarefa, também conhecida como "tarefa para nerds", mas não é bem assim, existe sim o perigo e muita das vezes é exatamente nessa hora que a "Lady Murphy" senta-se do nosso lado para fazer o seu trabalho. Porém, só saberemos a real complexidade desta tarefa se nos propusermos a enfrentá-la. Por isso vamos ao que interessa: 1º DOWNLOAD DO KERNEL O kernel atual que estou a usar é o 2.6.20-16 e pretendo atualizar para a última versão 2.6.22.6 (liberada em 31/08/07), a primeira coisa que devemos fazer é acessar o site oficial do kernel para então fazermos o download: http://kernel.org O kernel deverá ser salvo no diretório /usr/src porém, é um diretório que não tem permissão de escrita para qualquer usuário, o que pode impedir que o download direto para essa pasta seja efectuado com sucesso, caso isso ocorra, devemos então fazer o download para qualquer outro diretório onde tenhamos permissão de escrita por exemplo: /home/wanderley/Desktop/kernel_novo. Criei uma pasta espessífica para o novo kernel no meu ambiente de trabalho, após o download ser concluído vamos então copiar o novo kernel para a sua pasta de destino, faremos isso através do console/terminal usando o comando 'cp', isso ficaria mais ou menos assim: cp /home/wanderley/Desktop/kernel_novo/linux-2.6.22.6.tar.bz2 /usr/src/ Geralmente as pessoas costumam pensar que quando fazemos o download do ficheiro linux-2.6.22.6.tar.bz2 estamos a baixar exatamente o kernel funcional então só temos que instalá-lo, na verdade não é bem assim, o que existe no ficheiro linux-2.6.22.6.tar.bz2 é o código fonte do kernel por isso ele precisa ser compilado para então depois ser instalado, ou seja, é exatamente o mesmo processo de instalação de um programa no linux, em que seja disponibilizado somente o código fonte.No Ubuntu 6.06 - (Edgy Eft), parece que existe um pequeno problema com o interpretador de comandos /bin/dash quando se pretende compilar determinados programas, então vamos criar um novo link simbólico do /bin/sh para o /bin/bash, isso pode ser feito através do seguinte comando: Primeiramente removemos o /bin/sh rm -f /bin/sh E logo em seguida criamos o novo link: ln -s /bin/bash /bin/sh 2º INSTALAÇÃO DOS PROGRAMAS NECESSÁRIOS PARA COMPILAR O KERNEL Alguns programas são necessários para podermos compilar o kernel, um exemplo? Um compilador, se queremos compilar um programa, logo, precisamos de um compilador que no nosso caso será o gcc, aqui vai uma lista do programas que precisaremos instalar antes de compilar o kernel: - kernel-package: serve para criar uma imagem do kernel ao executar o make-kpkg num diretório com o source do kernel. - gcc: é um conjunto de compiladores de linguagens de programação que foi produzido pelo projeto GNU, inicialmente era somente um compilador para c, porém depois de algum tempos algumas melhorias foram feitas e hoje suporta mais linguagens como: Fortran, C++, Java e entre outras. - Ncurses é uma biblioteca que provê uma API para o desenvolvimento de interfaces em modo texto. Garante também uma otimização quanto às mudanças de telas, reduzindo a latência quando se utiliza acesso remoto via shells. O pacote libncurses5-dev nada mais é do que as bibliotecas de desenvolvimento e documentos para o ncurses. De forma geral o ncourses é que permite o uso de janelas e opções padronizadas de teclado no terminal (quando vamos escolher os modulos do Kernel). - fakeroot: executa comandos em um ambiente simulado como se fosse o root. - wget: é um programa que nos permite fazer o download de páginas web e ficheiros hospedados em páginas! Podemos fazer o download do kernel através do wget: cd /usr/src (nos posicionamos no diretório de destino do kernel) wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.bz2 - bzip2: é um software compactador de arquivos. Agora vamos então instalar esses programas: apt-get update (para atualizar a lista de pacotes) apt-get install kernel-package gcc libncurses5-dev fakeroot wget bzip2 Em determiandos casos alguns programas podem já estar instalados, como por exemplo o gcc. 3º DESCOMPACTAR O KERNEL tar xjfv linux-2.6.22.6.tar.bz2 Agora vamos criar um link simbólico do diretório linux-2.6.22.6/ para um novo diretório 'linux': ln -s linux-2.6.22.6.tar.bz2 linux cd /usr/src/linux O nosso sistema possui um ficheiro com a configuração do kernel antigo, podemos usar esse mesmo ficheiro como ponto de partida para o novo kernel (essa escolha é opcional) cp /boot/config-`uname -r` ./.config (o parametro `uname -r` vai apresentar a versão do kernel atual) e esse arquivo será copiado para ./.config que nada mais é do que o diretório em que nós nos encontramos (/usr/src/linux). Para verificar a existência do .config no diretório /usr/src/linux é só escrever 'ls -a' no termial. Agora execumantos: make menuconfig O comando 'make menuconfig' é usado para nos apresentar as opções do kernel que queremos ativar/desativar. Existe um outro comando que faz a mesma coisa mas em modo gráfico que o o 'make xconfig'. (Mas no nosso caso usaremos o make menuconfig). Feito isso vamos escolher o que nos interessa no novo kernel. Quando a opção tiver um '*' quer dizer que será embutido no sistema, se estiver com 'M' significa que será utilizável por módulo, e para não usar é só deixar em branco, para selecionar ou não uma opção é só pressionar a tecla [SPACE] do teclado (essa tecla é a que usas para dar espaço entre uma palavra e outra) :) Bom, depois de escolher o que vai ser carregado pelo novo kernel, escolhes a opção Carergar um novo arquivo de configuração e OK 4º EXECUÇÃO DA COMPILAÇÃO make-kpkg clean make-kpkg clean: elimina os arquivos que foram criados durante a montagem do novo kernel, ou arquivos de compilações anteriores. fakeroot make-kpkg --initrd --append-to-version=-linux2.66.2.6 kernel_image kernel_headers Repare que depois de version=- vem a versão do novo kernel, e precisa ser escrita com letras minúsculas e nada de espaços! A separação entre pontos (.) é o ideal. E depois do nome da nova versão tem que escrever kernel_image kernel_headers. Agora meu amigo o kernel será compilado, enquanto isso aproveite para tomar um refresco e ler alguma coisa de útil (mesmo que seja na internet) tal como: http://www.benone.org http://www.modoroot.com http://www.under-linux.org/ Algumas horas depois.. Prontinho, agora voltamos para o diretório /usr/src/ e digitamos: ls -l Esse comando nos mostra os ficheiros dentro desse diretório. O parametro -l serve para mostrar quem é o dono do arquivo. Vamos notar que foram criados 2 arquivos .deb que no meu caso ficaram assim: -rw-r--r-- 1 root src 8718582 2007-09-10 21:17 linux-headers-2.6.22.6-linux2.66.2.6_2.6.22.6-linux2.66.2.6-10.00.Custom_i386.deb -rw-r--r-- 1 root src 184944730 2007-09-10 21:12 linux-image-2.6.22.6-linux2.66.2.6_2.6.22.6-linux2.66.2.6-10.00.Custom_i386.deb Um desses arquivos serve para a instalação do novo kernel (linux-image) e o outro (linux-header) caso precises compilar módulos do kernel mais tarde.Agora vamos instalar os pacotes .deb dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb Estes dois arquivos poderão ser usados para instalar o novo kernel em outras máquinas sem a necessidade de se recompilar o kernel! Poupa-se trabalho! :) Agora para finalizar só temos que verificar o menu de inicialização do GRUB (sistema de gerenciamento de boot) gedit /boot/grub/menu.lst Feito isso deverá aparecer o novo kernel listado entre as opções do outro kernel: title Ubuntu, kernel 2.6.22.6-linux2.66.2.6 root (hd0,4) kernel /boot/vmlinuz-2.6.22.6-linux2.66.2.6 root=UUID=6801e18d-a385-4915-b671-dd1e5aad0fc3 ro quiet splash initrd /boot/initrd.img-2.6.22.6-linux2.66.2.6 quiet savedefault Agora só temos que reiniciar a máquina e testar o novo kernel: shutdown -r now Agora torça para que dê tudo certo! Pois se a amiga "Lady Murphy" ainda estiver do teu lado, ja éra vai dar tudo errado! heheheh (brincadeirinha) Ao reiniciar o PC vá até o terminal e digite: uname -r Para saber qual é a versão atual do kernel. Se aparecer linux2.66.2.6 voilá!!!! Funcionou, agora ligue para os seus ente queridos e diga a eles que já sabes compilar o kernel do linux e que isso faz de ti um ser humano mais útil! :) Até a próxima! :) Por: Wanderley Ribeiro ( Este endereço de e-mail está protegido de spam bots, pelo que necessita do Javascript activado para o visualizar ) |
|
| Actualizado em ( Quarta, 12 Setembro 2007 05:14 ) |
















