El kernel se ha configurado para correr en un PC industrial con un Atom dual core. Si se requiere otra CPU solo hay que cambiar la selección en el paso de configuración del kernel.
Nota: Por cuestiones de velocidad y espacio en disco (nuestro PC tiene una compact flash de 8GB), la compilación del kernel se puede realizar en cualquier máquina (a ser posible con la misma distribución que la maquina de destino y luego solo hará falta compilar el rtai en la máquina de destino).
Paquetes necesarios:
linux-2.6.32.11.tar.gz
rtai-3.8.1.tar.bz2
Pasos a realizar:
--- En cualquier maquina potente ---
0- cd /usr/src/
1- tar zxvf linux-2.6.31.11.tar.gz
2- ln -s linux-2.6.31.11 linux
3- tar xvf rtai-3.8.1.tar.bz2
4- cd /usr/src/linux
(parcheamos el kernel con el patch de rtai)
5- patch -p1 -b < ../rtai-3.8/base/arch/x86/patches/hal-linux-2.6.32.11-x86-2.6-03.patch
(instalamos los paquetes necesarios para compilar y crear paquetes .deb)
6- aptitude update && apt-get install kernel-package libncurses5 libncurses5-dev zlib1g zlib1g-dev build-essential
7- cd /usr/src/linux
(copiamos el fichero de configuración base)
8- cp /boot/config-2.6.32-24-generic .config
9- make oldconfig
(damos al enter para que tome opciones por defecto hasta que finalize)
(configuramos el kernel)
10- make menuconfig
Enable loadable module support ---> enabled [*]
Loadable module support ---> Module versioning support ---> disabled
Loadable module support ---> Source checksum for all modules ---> disabled
Processor type and features ---> Support sparse irq numbering ---> disabled
Processor type and features ---> HPET Timer Support ---> disabled
Processor type and features ---> Interrupt pipeline ---> enabled [*]
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> enabled [*]
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Deprecated /proc/acpi files ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Deprecated power /proc/acpi directories ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Future power /sys interface ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Deprecated /proc/acpi/event support ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> AC Adapter ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Battery ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Button ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Video ---> module [M]
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Fan ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Dock ---> enabled [*]
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Processor ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Disable ACPI for systems before Jan 1st this year ---> 0
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Debug Statements ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> PCI slot detection driver ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Container and Module Devices ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Smart Battery System ---> disabled
Power management and ACPI options ---> APM (Advanced Power Management) BIOS support ---> disabled
Power management and ACPI options ---> CPU Frequency scaling ---> disabled
En nuestro caso:
Processor type and features ---> Processor family --> Atom
11- make-kpkg --initrd --revision=rtaiAtom386 kernel_image kernel_headers modules_image
12- Cafe....
-- Pasos en la maquina destino--
13- cd /usr/src
14- dpkg -i linux-image-2.6.32.11_rtaiAtom386_i386.deb
15- dpkg -i linux-headers-2.6.32.11_rtai386_i386.deb
16- reboot
(arranca directamente con el kernel recién instalado,
para acceder al menú grub: ctrl+shift).
(enlazamos las cabeceras que se necesitarán para compilar rtai)
17- ln -s linux-headers-2.6.32.11 linux
18- cd /usr/src/rtai-3.8
(configuramos rtai de acuerdo a nuestras necesidades)
19- make menuconfig
Parámetros RTAI para nuestras necesidades especificas: Base system --> Supported services --> Use RTNet --> enable Base system --> Other features --> Mathfuns support in kernel --> enabled Add-ons --> Real-Time Driver Model over RTAI --> enabled Add-ons --> Enable select multiplexing for RTDM services Add-ons --> Shared interrups Add-ons --> Drivers --> RTDM based 16550A driver support --> enabled20- make
21- make install
22- reboot
(Reboot porque sino, da error al ejecutar /usr/realtime/testsuite/user/).
En principio con esto ya estaría, salvo que se quieran añadir los módulos rtai al árbol de módulos del kernel y así poder usar modprobe, en vez de:
insmod /usr/realtime/modules/rtai_hal.ko
insmod /usr/realtime/modules/rtai_sched.ko
y al terminar la aplicación:
rmmod /usr/realtime/modules/rtai_sched.ko
rmmod /usr/realtime/modules/rtai_hal.ko
Nota: Al ejecutar los test se cargan y descargan los módulos necesarios sin necesidad de hacer insmod/rmmod.
Muy buen Post David. Gracias. Lo único es que a la hora de tratar de hacer el insmod /usr/realtime/modules/rtai_hal.ko me aparece -1 Operation not permitted. Ya intente "lapic" en el grub pero aun asi no funciona. Tienes algún remedio para esto. Saludos.
ResponderEliminarHola, perdona que tarde tanto en contestar.
ResponderEliminar¿Podrías mirar con dmesg para ver si optienes mas información?
A lo mejor se debe a que la configuración de la CPU no es la c orrecta.
a mi tambien
ResponderEliminarmk@mk-laptop:/usr$ sudo insmod /usr/realtime/modules/rtai_hal.ko
insmod: error inserting '/usr/realtime/modules/rtai_hal.ko': -1 Invalid module format
alguna idea amigo? gracias como pruebo los programas real time?
Hola estoy compilando un kernel pero no me deja aparecen algunos errores, ya trate varias cosas instale librerias, entro como usuario root y nada, llevo varios dias compilandolo y nada, ayudame por favor
ResponderEliminarMira estos son los errores
make[2]: *** [arch/x86/kernel/irq_32.o] Error 1
make[1]: *** [arch/x86/kernel] Error 2
make[1]: se sale del directorio «/usr/src/linux-build-2.6.24-rtai-3.6.1»
make: *** [debian/stamp/build/kernel] Error 2