downloadDownload FAQFAQ
Site Navigation:
 
 

8. 'Kernel' ou Núcleo do Linux

Esta secção cobre as alterações e outras informações importantes respeitantes ao 'kernel' 2.6.18 no Fedora Core 6. O 'kernel' 2.6.18 inclui:

8.1. Versão

O Fedora Core poderá incluir correcções adicionais para melhorias, correcções de erros ou funcionalidades adicionais. Por esta razão, o 'kernel' do Fedora Core poderá não ser um equivalente alinhado com o que se chama vanilla kernel ('kernel' original) da página Web 'kernel.org':

http://www.kernel.org/

Para obter uma lista destas actualizações, transfira o pacote RPM com o código e execute o seguinte comando sobre ele:

rpm -qpl kernel-<versão>.src.rpm

8.2. Changelog

Para obter um registo das alterações no pacote, execute o seguinte comando:

rpm -q --changelog kernel-<versão>

Se precisar de uma versão amigável do registo de alterações, veja em http://wiki.kernelnewbies.org/LinuxChanges. Existem as diferenças resumidas e completas do 'kernel' em http://kernel.org/git. A versão do Fedora baseia-se na árvore do Linus.

As personalizações feitas na versão para o Fedora estão disponíveis em http://cvs.fedora.redhat.com.

8.3. Variantes do 'Kernel'

O Fedora Core 6 inclui as seguintes compilações do 'kernel':

  • O 'kernel' nativo, para usar na maioria dos sistemas. O código configurado está disponível no pacote kernel-kdump-devel-<versão>.<arquitectura>.rpm.

  • O 'kernel-PAE', para ser usado nos sistemas x86 de 32-bits como > 4GB de RAM, ou para os CPUs que tenham a funcionalidade 'NX (No eXecute)'. Este 'kernel' suporta tanto a versão mono-processador como a multi-processador.

  • O 'kernel' virtual para um sistema convidado, para usar com o pacote do emulador Xen. O código-fonte configurado está disponível no pacote kernel-xen-devel-<versão>.<arquitectura>.rpm.

  • O 'kernel' do 'kdump' para usar com as capacidades do kexec/kdump. As fontes configuradas estão disponíveis no pacote kernel-kdump-devel-<versão>.<arquitectura>.rpm.

Poderá instalar os ficheiros de inclusão do 'kernel', para todas as variantes do mesmo, ao mesmo tempo. Os ficheiros serão instalados na árvore /usr/src/kernels/<versão>-[xen|kdump]-<arquitectura>/. Use este comando:

su -c 'yum install kernel-{PAE,xen,kdump}-devel'

Seleccione uma ou mais destas variantes, separadas por vírgulas e sem espaços, da forma apropriada. Indique a senha do root quando for pedida.

[Nota]O 'Kernel' Predefinido Oferece o SMP

Não existe um 'kernel' SMP separado para a arquitectura i386, x86_64 e ppc64 no Fedora Core 6. O suporte de multi-processamento é oferecida no 'kernel' nativo.

[Nota]Suporte do 'Kernel' para o PowerPC

Não existe o suporte para o Xen ou o kdump na arquitectura PowerPC no Fedora Core 6 test3. O PowerPC de 32-bits tem ainda um 'kernel' SMP em separado.

8.4. Comunicar Erros

Veja em http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html mais informações sobre a comunicação de erros no 'kernel' do Linux. Poderá também usar o http://bugzilla.redhat.com para comunicar erros que sejam específicos do Fedora.

8.5. Livros Genéricos Seguintes

Muitos dos tutoriais, exemplos e manuais de texto sobre o desenvolvimento para o 'kernel' do Linux assumem que o código do 'kernel' está instalado na pasta /usr/src/linux/. Se criar uma ligação simbólica, como aparece abaixo, poderá usar este material de aprendizagem com os pacotes do Fedora Core. Instale o código apropriado do 'kernel', como aparece acima, e depois:

su -c 'ln -s /usr/src/kernels/<versão>.<versão>-<arquitectura> /usr/src/linux'

Indique a senha do root, quando lhe for pedida.

8.6. Preparar o Desenvolvimento do 'Kernel'

O Fedora Core 6 não inclui o pacote kernel-source que aparecia nas versões mais antigas, dado que só é necessário agora o pacote kernel-devel para compilar os módulos externos. Estão disponíveis os pacotes de código configurados, como foi descrito nesta secção das variantes do 'kernel'.

[Nota]As Instruções Referem-se ao 'Kernel' Actual

Para simplificar as direcções seguintes, assume-se que deseja configurar o código-fonte do 'kernel' de modo a corresponder ao seu 'kernel' actualmente em execução. Nos passos abaixo, a expressão <versão> refere-se à versão do 'kernel' que aparece com o comando: uname -r.

Os utilizadores que necessitem de acesso ao código-fonte original do Fedora Core, podê-lo-ão encontrar no pacote .src.rpm do 'kernel'. Para criar uma árvore de código expandida a partir deste ficheiro, execute os seguintes passos:

[Nota]Não Compile os Pacotes como Super-Utilizador (root)

A criação de pacotes como super-utilizador é perigosa por inerência e não é necessário, mesmo para o 'kernel'. Estas instruções permitem-lhe instalar o código-fonte do 'kernel' como um utilizador normal. Muitas páginas de informação gerais referem-se ao /usr/src/linux nas suas instruções do 'kernel'. Se usar estas instruções, basta substituir por ~/rpmbuild/BUILD/kernel-<versão>/linux-<versão>.

  1. Prepare um ambiente de criação de pacotes RPM na sua pasta pessoal. Execute os seguintes comandos:

    su -c 'yum install rpmdevtools yum-utils' 
    rpmdev-setuptree
  2. Indique a senha do root, quando lhe for pedida.

  3. Obtenha o ficheiro kernel-<versão>.src.rpm. Active as opções apropriadas dos repositórios, como o Core, o Updates ou o Testing, com a opção -e:

    yumdownloader -e core-source -e updates-source --source kernel
  4. Indique a senha do root, quando lhe for pedida.

  5. Instale o kernel-<versão>.src.rpm com o comando:

    rpm -Uvh kernel-<versão>.src.rpm
  6. Este comando grava o conteúdo do RPM em ${HOME}/rpmbuild/SOURCES e ${HOME}/rpmbuild/SPECS, onde o ${HOME} é a sua área pessoal.

    [Nota]Espaço Necessário

    O processo de compilação completa do 'kernel' poderá necessitar de vários gigabytes de espaço extra no sistema de ficheiros que contém a sua pasta pessoal.

  7. Prepare o código do 'kernel' com os comandos:

    cd ~/rpmbuild/SPECS 
    rpmbuild -bp --target $(uname -m) kernel-2.6.spec
  8. A árvore de código-fonte do 'kernel' está localizada na pasta ~/rpmbuild/BUILD/kernel-<versão>/linux-<versão>.<arquitectura>.

    As configurações dos 'kernels' específicos que são fornecidos no Fedora Core 6 estão na pasta ~/rpmbuild/BUILD/kernel-<versão>/linux-<versão>.<arquitectura>/configs. Por exemplo, o ficheiro de configuração para 'i686' chama-se ~/rpmbuild/BUILD/kernel-<versão>/linux-<versão>.<arquitectura>/configs/kernel-<versão>-i686.config. Invoque o seguinte comando para colocar o ficheiro de configuração desejado no local correcto para a compilação:

    cp configs/<ficheiro-configuração-desejado> .config
  9. Todos os 'kernels' ficam com um nome baseado no seu número de versão. Este é o valor que o comando uname -r mostra. O nome do 'kernel' é definido pelas primeiras quatro linhas da Makefile do 'kernel'. Para proteger os inocentes, a Makefile foi alterada para gerar um 'kernel' com um nome diferente do 'kernel' actualmente em execução. Antes de um módulo poder ser aceite no 'kernel' em execução, esse módulo precisa ser compilado para um 'kernel' com o nome correcto. Para fazer isto, precisa de editar a Makefile do 'kernel'.

    Por exemplo, se o comando uname -r devolver o texto 2.6.17-1.2345_FC6, mude a definição do EXTRAVERSION de isto:

    EXTRAVERSION = -prep 

    para isto:

    EXTRAVERSION = -1.2345_FC6

    Isto é, substitua tudo desde o hífen final em diante.

  10. Execute o seguinte comando:

    make oldconfig

    Poderá agora prosseguir como de costume.

[Nota]Compilar os RPMs Binários do 'Kernel'

Normalmente, os 'kernels' do Fedora são compilados com o utilitário rpmbuild e um ficheiro SPEC. Os seus resultados poderão variar se usar o alvo make rpm, incorporado no 'kernel'.

8.7. Compilar Apenas os Módulos do 'Kernel'

Uma árvore de código expandida não será necessária para compilar um módulo do 'kernel', como o seu próprio controlador, em relação ao 'kernel' actualmente em uso. Só é necessário o pacote kernel-devel para criar os módulos externos. Se não o seleccionar durante a instalação, use o Pirut para o instalar, vá a AplicaçõesAdicionar/Remover 'Software' ou use o yum para o instalar. Execute o seguinte comando para instalar o pacote kernel-devel com o yum.

su -c 'yum install kernel-devel' 

Por exemplo, para compilar o módulo xpto.ko, crie a seguinte Makefile na pasta que contém o ficheiro xpto.c:

obj-m := foo.o 

KDIR  := /lib/modules/$(shell uname -r)/build
PWD   := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules

Invoque o comando make para compilar o módulo xpto.ko.