CompilandoRTAI
Por que este Wiki
Decidi escrever este Wiki porque vários colegas e alunos sempre me perguntam como fazer esta compilação no ambiente do Ubuntu. Há vários textos na Internet, mas estão em inglês, são espalhados, e a maioria é para distribuições derivadas do Red Hat. Este procedimento é uma adaptação de um procedimento para Debian e executado num Notebook Acer com Ubuntu 8.04. É claro, como se trata de um procedimento de compilação o ambiente hospedeiro acaba sendo mais um detalhes que o principal, mas é sempre bom termos um texto deste em bom português.
O que é o RTAI
RTAI é o acrônimo de Real Time Application Interface - é uma API de programação em tempo real. Na prática é um patch sobre o kernel Linux padrão (o vanilla) e que o transforma em um sistema de tempo real verdadeiro (hard real time). Para maiores detalhes sobre a arquitetura do RTAI, favor verificar o site: http://www.rtai.org.
Procedimento de Compilação do Kernel de Tempo Real
Esta sessão descreve os procedimentos básicos para a compilação de um kernel vanilla no ambiente Ubuntu, isto é, a versão padrão do kernel Linux e é apenas sobre a versão vanilla que o patch do RTAI pode ser aplicado. A versão utilizada no Ubuntu é a versão 8.04. Provavelmente o procedimento funcione com outras versões do Ubuntu, bem como outras distribuições baseadas no Debian. Utilizou-se o jeito Debian de se compilar e instalar o kernel do Linux.
Os procedimentos a seguir devem ser realizados como superusuário (root), inclusive os testes no RTAI.
Preparativos
- Criar diretorio dos fontes:
# mkdir /usr /usr/src
- Ir para o diretorio de fontes:
# cd /usr/src
- Baixar o linux e o rtai:
# wget www.rtai.org/RTAI/rtai-3.6.bz2+
# ftp ftp.kernel.org+
login> anonymous
pass> <enter>
ftp> pass
ftp> bin
ftp> cd /pub/linux/kernel/v2.6/
ftp> get linux-2.6.23- Descompactar os fontes:
# tar xjf rtai-3.6.tar.bz2
# tar xjf linux-2.6.23.tar.bz2- Criar os links simbólicos:
# ln -s linux-2.6.23/ linux
# ln -s rtai-3.6/ rtaiObs.: Provavelmente o leitor que replicar estes procedimentos o fará somente uma vez enquanto que os demais procedimentos serão executados inúmeras vezes.
Compilando o Kernel
Linux mais recente suportado: linux-2.6.23 Rtai mais recente: rtai-3.6
- Ir ao diretorio do linux:
# cd linux
- Aplicar o patch do RTAI no Linux:
# patch -p1 < ../rtai/base/arch/i386/patches/hal-linux-2.6.23-i386-1.12-00.patch
- Copiar a configuração atual:
# cp /boot/config-`uname -r` .config
- Editar a configuração:
# make menuconfig
- Opções a serem editadas:
- General Setup
Prompt for development and/or incomplete code/drivers: Y
Local version - append to kernel release: -rtai
Enable loadable module support: Y
Module versioning support: N
- Processor Type and Features
Interrupt Pipeline: Y
Timer frequence: 1000 Hz
Preemption model: Low Latency Desktop
- Kernel hacking
Compile the kernel with debug info (Para diminuir o tamanho do kernel): N
Compile kernel with frame poiters: N Obs.: Pode ser necessário, e é extremamente recomendável segundo o manual do RTAI, desabilitar as opções relacionadas ao Gerenciamento de Energia: ACPI, APM e Graduação da Freqüência da CPU.
- Opções a serem editadas para o meu caso (Notebook Acer Centrino Duo):
- Processor Type and Features
Processor Family: Core 2/newer Xeon
Hyperthreading: N
Device Drivers -> Sound -> Advanced Linux Sound Architecture -> PCI Devices -> Intel HD Audio: Y
Obs. 2: Necessitei deixar as opções de Gerenciamento de Energia habilitada para a compilação, mas no boot do kernel utilizo as opções noacpi e noapm
- Processor Type and Features
- Compilando:
# make-kpkg --initrd kernel_image kernel_headers
- Aguardar o término da compilação. Pode levar horas.
- Ir para a pasta src:
# cd ..
- Criar a pasta de firmware para esta instalação
- (Um bug no pacote criado gera uma mensagem de erro durante a posterior instalação do pacote, por isso a necessidade deste passo)
# mkdir /lib/firmware/2.6.23-rtai
- Instalar os pacotes Debian criados
# dpkg -i *.deb
- Reiniciar com o kernel novo
Se alguma coisa der errado
Se algo sair errado (e vai!) você DEVE começar tudo de novo:
- Para limpar os produtos da compilação
# make clean
- Para deixar tudo limpo, inclusive arquivos de configuração
# make mrproper
- Para desinstalar algum pacote previamente instalado
# dpkg -P nome-do-pacote-com-numero-de-versao
É sempre bom utilizar o purge neste caso.
Compilando o RTAI
Compilar o kernel vanilla é somente a metade do procedimento. Devemos agora, compilar o RTAI.
* Apagar qualquer versão anterior
# rm -rf /usr/realtime
* Ir ao diretorio do RTAI
# cd /usr/src/rtai
* Configurar RTAI
# make menuconfig
- Obs.: Seja coerente com as opções
* Compilar e instalar o RTAI
# make
# make install* Reboot
# reboot
Testando o RTAI
Para se saber se o sistema está aceitável ou não, a implementação do RTAI contém um conjunto de programas de teste e calibração. Em especial, utilizamos o testsuit para os testes.
* Ir ao diretorio do testsuit:
# cd /usr/realtime/testsuit/user
* Testar a instalação
# cd latency
# ./run
# cd ../preempt
# ./run+
# cd ../switch
# ./runO objetivo é que a latência seja baixa, sem overruns e valores de tempo de troca de contexto o menor e menos variante possível.
É isso aí!
André Cavalcante
CompilandoRTAI (last edited 2011-09-19 23:23:03 by localhost)