Instalación de RTAI en Debian
Se podría "separar" lo que es específico de la
distribución de linux de lo que corresponde a RTAI
Instalación de RTAI
La sucesión de pasos a realizar para
instalar RTAI podría dividirse en partes que son dependientes de la
distribución de Linux que se quiera utilizar y otros que son
independientes de la misma. En este "reporte" (por llamarlo
de alguna manera) se muestra inicialmente la instalación de Debian y
luego lo que sería independiente de Debian y, de hecho, de cualquier
otra distribución.
1.- Instalación de una Distribución de Linux: Debian
Versión 4.0: Etch, kernel version:
1.1) Obtener de la
página de Debian o algunos de sus mirrors una imagen ISO para
instalación de la distribución. Grabar el CD y arrancar la
PC.
1.2) Detalles de la instalación desde el CD elegidos.
No necesariamente son las mejores elecciones ni para Debian ni
para RTAI, solamente se documentan en este reporte las
opciones elegidas en la instalación:
a) Language: English
b) Keyboard layout: Spanish
c) hostname: rtai
d) Domain Name: (Enter)
e) Partitioning method:
e.1) Guided use entire disk
e.2) All files in 1 partition
e.3) (ok)
e.4) write to disk
f) Root passwd
g) User and passwd (no root)
h) Network mirror: yes
i) Country: Argentina
j) Mirror: debian.logiclinux.com
k) Proxy: (enter, en blanco)... buscó para actualizar
m) Software to install: (enter, en blanco)
n) Install Grub
o) Reboot
1.3) Detalles post-instalación de CD. Nuevamente, no necesariamente son las mejores
opciones, solamente se documenta en este reporte lo
hecho.
a) Apuntar a un mirror de Debian "más directo" accesible. Esto está en
http://actualizaciones.linti.unlp.edu.ar/index.php?sid=debian
$> cd /etc/apt
$> editor sources.list
Comentar lo que está apuntado como para ir a buscar al mirror
Agregar
deb http://debian.linti.unlp.edu.ar/debian stable main contrib non-free
deb http://seguridad.debian.linti.unlp.edu.ar/debian stable/updates main
b) Actualizar con
apt-get update --> ok
c) Instalar herramientas de desarrollo
apt-get install build-essential --> ok a varios paquetes
d) Instalar joe (sine qua non)
apt-get install joe
1.4) Siguiendo algunas de las recomendaciones de
http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?Debian_Etch_Compile_RTAI
se instalaron paquetes que parecen ser útiles y/o necesarios para
los pasos siguientes de compilación de kernel e instalación y
uso de RTAI:
$> apt-get install dh-make
module-assistant
sharutils
libncurses5-dev
Dado que después faltó bzip2, hay que hacer también:
$> apt-get install bzip2
2.- Instalar los fuentes de kernel para RTAI
Es importante tener en cuenta que ninguna distribución (y
Debian no es la excepción) genera una versión con cada versión
estable de kernel. Por lo tanto, se debe tener en cuenta las
siguientes condiciones para el código fuente del kernel a
utilizar:
a) Versión de kernel usada por la
distribución instalada. En este caso:
2.6.18-6-686
b) Versión de kernel menor o igual a la instalada por
la distribución de Linux para la cual hay
un "patch" de RTAI. En este
caso: 2.6.17, para la que hay un patch
de RTAI: 3.5-cv
Hay más información sobre esto
en https://www.rtai.org/RTAILAB/RTAI-TARGET-HOWTO.txt aunque es un
poco complicado ver primero el contenido de lo que se obtiene en
rtai para luego saber qué kernel hay que utilizar. Se corresponde
con el contenido de base/arch/i386/patches/, donde "i386"
se "correspondería" con el procesador y binarios del
kernel.
$> cd /usr/src
$> wget http://www.toptech.lkams.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2
$> tar-xjf linux-2.6.17.tar.bz2
$> ln -s linux-source-2.6.17 linux
3.- Obtención e instalación de fuentes de RTAI
$> cd
$> wget --no-check-certif https://www.rtai.org/RTAI/rtai-3.5-cv.tar.bz2
$> mkdir /usr/src/modules
$> tar -xjf rtai-3.5-cv.tar.bz2 -C /usr/src
$> chown root:src /usr/src/rtai-3.5-cv/ -R
$> cd /usr/src/modules
$> ln -s ../rtai-3.5-cv/ rtai (aparentemente éste ln no es necesario)
$> cd ..
$> ln -s rtai-3.5-cv rtai
4.- Aplicar patch de RTAI para el fuente del kernel de linux
$> cd /usr/src/linux
$> patch -p1 < ../rtai/base/arch/i386/patches/hal-linux-2.6.17-i386-1.5-02.patch
5.- Recompilar el kernel de linux
No está muy claro si son estrictamente necesarios:
$> cp /boot/config-2.6.18-6-686 .config (el wd es /usr/src/linux)
$> make oldconfig (todo enter...)
A partir de este punto, es más o menos tradicional de la compilación de un
kernel:
$> make menuconfig Processor type and features Sacar symmetric multiprocessing si se tiene 1 sola CPU Processor family (PIII, poner la que sea que se tiene) Preemption model --> preemptible High memory support --> off Loadable module support Sacar Module versioning support Power management options Legacy --> Disabled Soft. suspend --> Disabled ACPI --> Disabled APM --> Disabled CPU --> Disabled Power Management support --> Disabled $> make clean && make && make modules_install && make install
6.- Instalar el kernel de linux con el patch de rtai
$> cd /boot
$> mkinitramfs -o initrd.img-2.7.17 2.6.17
El último parámetro, 2.6.17, es la versión de
kernel que tiene sus módulos en el correspondiente subdirectorio de
/lib/modules, es decir en /lib/modules/2.6.17. No se puede evitar
porque Debian necesariamente arranca con un filesystem en RAM. Antes
esto se hacía con mkinitrd
$> cd grub $> joe menu.lst title RTAI GNU/linux, kernel 2.6.17 root (hd0, 0) kernel /boot/vmlinuz-2.6.17 root=/dev/hda1 ro initrd /boot/initrd.img-2.7.17 savedefaulttitle: puede ser cualquiera, aparentemente
7.- Instalación de rtai
$> cd /usr/src/rtai $> make menuconfig machine(x86) --> (1) Number of CPUs (SMP-only) $> make $> make installEsta versión de rtai no tiene los /dev/rtfi que luego usan los ejemplos, así que es necesario poner el script /etc/rc.local con el contenido que indica
$> cd /etc $> joe rc.local #!/bin/bashAparentemente, éste no es un problema para la versión de kernel 2.6.20 - patch de rtai correspondiente.
mknod -m 666 /dev/rtai_shm c 10 254 for n in `seq 0 9` do f=/dev/rtf$n mknod -m 666 $f c 150 $n done