Esta seção cobre as mudanças e informações importantes sobre o kernel no Fedora Core 6 baseado na versão 2.6.18. O kernel 2.6.18 inclui:
Suporte leve à prioridade da camada de usuário (Lightweight user space priority inheritance) (http://lwn.net/Articles/178253/)
Uma ferramenta de depuração "validadora de locks" (http://lwn.net/Articles/185666/)
Uma nova política de economia de energia para sistemas multicore, SMPnice (http://lwn.net/Articles/186438/)
Uma camada SATA muito melhorada (http://lwn.net/Articles/183734/)
Migração de Paginação sem Swap (http://lwn.net/Articles/160201/)
Contadores VM por-zona
Gerenciamento de espera por tarefa
Um novo controle de acesso por pacote para o SELinux, chamado secmark (http://james-morris.livejournal.com/11010.html)
vDSO i386 Aleatório
Novos drivers e suporte adicional de dispositivos para os muitos drivers existentes
Muitas correções de erros e outras melhorias pequenas
O Fedora Core pode incluir patches adicionais do kernel para melhorias, correções de erros e funcionalidades adicionais. Por esta razão, o kernel do Fedora Core pode não ser totalmente equivalente ao chamado kernel vanilla do site kernel.org:
Para obter uma lista destes patches, efetue download do pacote fonte RPM e execute o seguinte comando nele:
rpm -qpl kernel-<versão>.src.rpmPara obter um log de mudanças do pacote, execute o seguinte comando:
rpm -q --changelog kernel-<versão>Se você precisar de uma versão amigável para o log de mudanças, visite http://wiki.kernelnewbies.org/LinuxChanges. Um arquivo de diferenças curto e completo está disponível em http://kernel.org/git. A versão do kernel do Fedora é baseada na árvore do Linus.
Personalizações feitas para a versão do Fedora estão disponíveis através do endereço http://cvs.fedora.redhat.com.
O Fedora Core 6 inclui as seguintes construções de kernel:
Kernel nativo, para uso na maioria dos sistemas. Os fontes configurados estão disponíveis no pacote kernel-devel-.<versão>.<arquitetura>.rpm
kernel-PAE, para uso em sistemas 32-bit x86 com mais de 4GB de RAM, ou com CPUs que têm a funcionalidade 'NX (No eXecute). Este kernel suporta ambos sistemas de um processador e múltiplos processadores.
Kernel de virtualização para ser usado no pacote do emulador Xen. Fontes configurados estão disponíveis no pacote kernel-xen-devel-.<versão>.<arquitetura>.rpm
Kernel Kdump para uso com as funcionalidades kexec/kdump. Os fontes configurados estão disponíveis no pacote kernel-kdump-devel-.<versão>.<arquitetura>.rpm
Você pode instalar os cabeçalhos de todos os tipos de kernel ao mesmo tempo. Os arquivos são instalados na árvore /usr/src/kernels/. Use o seguinte comando:<versão>-[xen|kdump]-<arquitetura>/
su -c 'yum install kernel-{PAE,xen,kdump}-devel'Selecione um ou mais destes tipos, separados por vírgula e sem espaços, como apropriado. Digite a senha de root quando solicitada.
![]() | Kernel Padrão Fornece SMP |
|---|---|
Não há um kernel separado de SMP para o Fedora Core 6 no i386, x86_64 e ppc64, Suporte a múltiplos processadores é fornecido através do kernel nativo. |
![]() | Suporte PowerPC do Kernel |
|---|---|
Não há suporte para Xen ou kdump na arquitetura PowerPC no Fedora Core 6. O PowerPC 32-bits ainda tem um kernel SMP separado. |
Visite http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html para informações sobre como relatar bugs no kernel do Linux. Você também pode usar http://bugzilla.redhat.com para relatar bugs que são específicos para o Fedora.
Muitos dos tutoriais, exemplos e textos sobre desenvolvimento do kernel Linux assumem que os códigos-fonte do kernel são instalados no diretório /usr/src/linux/. Se você fizer um link simbólico, como mostrado abaixo, você poderá usar estes materiais de aprendizado com os pacotes do Fedora Core. Instale os códigos-fonte apropriados do kernel, como mostrado anteriormente e então execute o seguinte comando:
su -c 'ln -s /usr/src/kernels/<versão>.<versão>-<arquitetura>/usr/src/linux'
Digite a senha de root quando solicitada.
O Fedora Core 6 não inclui o pacote kernel-source fornecido em versões passadas, uma vez que agora apenas o pacote kernel-devel é necessário para compilar módulos externos do kernel. Os fontes configurados estão disponíveis, conforme descrição contida nesta seção de tipos de kernel.
![]() | Instruções Referentes ao Kernel Atual |
|---|---|
Para simplificar as instruções, assumimos que você quer configurar os códigos-fonte do kernel para combinar com o seu kernel atual. Nos passos abaixo, a expressão |
Usuários que necessitam acessar os códigos-fonte originais do kernel do Fedora Core podem achá-los no pacote do kernel com extensão .src.rpm. Para criar e extrair o código deste arquivo, siga os seguintes passos:
![]() | Não Construa Pacotes como Super-usuário (root) |
|---|---|
Construir pacotes como super-usuário pode ser perigoso e não é necessário, mesmo para o kernel. Estas instruções permitem você instalar o código-fonte do kernel como um usuário normal. Muitos sites de informações gerais referenciam o diretório |
Prepare um ambiente de construção de pacotes RPM em seu diretório home. Execute os seguintes comandos:
su -c 'yum install rpmdevtools yum-utils' rpmdev-setuptree
Digite a senha de root quando solicitada.
Efetue download do arquivo kernel-. Habilite os repositórios de código-fonte apropriados, como os do Core, Updates ou Testing, com o parâmetro <versão>.src.rpm-e:
yumdownloader -e core-source -e updates-source --source kernel
Digite a senha de root quando solicitada.
Instale o pacote kernel- usando o seguinte comando:<versão>.src.rpm
rpm -Uvh kernel-<versão>.src.rpmEste comando escreve o conteúdo do RPM nos diretórios ${HOME}/rpmbuild/SOURCES e ${HOME}/rpmbuild/SPECS, onde ${HOME} é o seu diretório home.
![]() | Espaço Necessário |
|---|---|
Todo o processo de construção do kernel pode necessitar de alguns gigabytes de espaço extra no sistema de arquivos em que seu diretório home está localizado. |
Prepare os códigos-fonte do kernel usando os comandos:
cd ~/rpmbuild/SPECS rpmbuild -bp --target $(uname -m) kernel-2.6.spec
A árvore do código-fonte do kernel está localizada no diretório ~/rpmbuild/BUILD/kernel-.<versão>/linux-<versão>.<arquitetura>
Configurações para kernels específicos distribuídos no Fedora Core 6 estão no diretório ~/rpmbuild/BUILD/kernel-. Por exemplo, o arquivo de configuração para i686 é o <versão>/linux-<versão>.<arquitetura>/configs~/rpmbuild/BUILD/kernel-. Execute o seguinte comando para colocar a configuração desejada no lugar apropriado para a construção:<versão>/linux-<versão>.<arquitetura>/configs/kernel-<versão>-i686.config
cp configs/<arquivo-config> .configTodo kernel tem um nome baseado em seu número de versão. Este número é o valor que o comando uname -r mostra. O nome do kernel é definido pelas primeiras quatro linhas do Makefile do kernel. O Makefile foi modificado para gerar um kernel com um nome diferente do atual kernel. Para ser aceito pelo kernel atual, um módulo precisa ser compilado para um kernel com o nome correto. Para fazer isso, você precisa editar o Makefile do kernel.
Por exemplo, se o uname -r retorna 2.6.17-1.2345_FC6, mude a definição EXTRAVERSION disto:
EXTRAVERSION = -prep
para isto:
EXTRAVERSION = -1.2345_FC6
Ou seja, substitua tudo depois do hífen.
Execute o seguinte comando:
make oldconfig
Você pode proceder como de costume.
![]() | Construindo RPMs Binários do Kernel |
|---|---|
Normalmente, os kernels do Fedora são construídos utilizando o utilitário |
Uma árvore expandida do código-fonte não é necessária para construir um módulo de kernel, como por exemplo seu próprio driver de dispositivo, para o seu kernel atualmente em uso. Apenas o pacote kernel-devel é necessário para construir módulos externos. Se você não o selecionou durante a instalação, use o Pirut para instalá-lo, indo em Aplicações → Adicionar/Remover Programas, ou use o yum para instalá-lo. Execute o seguinte comando para instalar o pacote kernel-devel usando o yum.
su -c 'yum install kernel-devel'
Por exemplo, para construir um módulo foo.ko, crie o seguinte arquivo Makefile no diretório contendo o arquivo foo.c:
obj-m := foo.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
Execute o comando make para construir o módulo foo.ko.