Ceci est une ancienne révision du document !
This article describes how to install a Linux real-time operating system on a roboard RB-100 motherboard. It is based on the Ubuntu Linux distribution and the Xenomai/Adeos real-time solution.
We install Ubuntu Desktop edition. But Server edition could be used too if you install from an USB CD-Rom drive2). Download the .iso image you choose and burn it on an USB Key (using UNetbootin or usb-creator-gtk for example).
Plug your USB Key on the roboard and power on your roboard. At boot time, press DEL to enter BIOS setup. Then go to Boot ⇒ Boot Device Priority ⇒ 1st Boot Device and select your USB key. Save your changes and exit.
The roboard boots now on your USB key. Install Ubuntu with your own options. If you need more informations about how to install Ubuntu, look at there : https://help.ubuntu.com/community/Installation
Press Restart and disconnect your USB Key when it is asked.
Download Xenomai, the kernel and its corresponding adeos-ipipe patch from the links given in the Downloads section.
If you want to use your own kernel version, for kernel X.X.X.X, download patch adeos-ipipe-X.X.X.X-ARCH-Y.Y-Y.patch. Where X is the kernel version, ARCH the architectire you plan to use and Y the version of the adeos patch. For example, if you want to patch kernel version 2.6.30.10 for an x86 architecture, download adeos patch adeos-ipipe-2.6.30.10-x86-2.4.09.patch 3).
Extract kernel sources :
$ tar xjpf linux-2.6.32.11.tar.bz2
Extract Xenomai sources :
$ tar xjpf xenomai-2.5.2.tar.bz2
Copy the adeos patch in the Xenomai source tree :
$ mv adeos-ipipe-2.6.32.11-x86-2.6-02.patch xenomai-2.5.2/ksrc/arch/x86/patches/
Enter Xenomai source directory :
$ cd xenomai-2.5.2/
Now prepare your kernel by applying suitable patches :
$ scripts/prepare-kernel.sh --linux=../linux-2.6.32.11/ --adeos=ksrc/arch/x86/patches/adeos-ipipe-2.6.32.11-x86-2.6-02.patch --arch=i586 patching file arch/x86/Kconfig patching file arch/x86/include/asm/apic.h patching file arch/x86/include/asm/apicdef.h patching file arch/x86/include/asm/entry_arch.h patching file arch/x86/include/asm/hw_irq.h patching file arch/x86/include/asm/i387.h patching file arch/x86/include/asm/i8259.h patching file arch/x86/include/asm/ipi.h patching file arch/x86/include/asm/ipipe.h patching file arch/x86/include/asm/ipipe_32.h patching file arch/x86/include/asm/ipipe_64.h patching file arch/x86/include/asm/ipipe_base.h patching file arch/x86/include/asm/irq_vectors.h patching file arch/x86/include/asm/irqflags.h patching file arch/x86/include/asm/mmu_context.h patching file arch/x86/include/asm/nmi.h patching file arch/x86/include/asm/processor.h patching file arch/x86/include/asm/system.h patching file arch/x86/include/asm/traps.h patching file arch/x86/kernel/Makefile patching file arch/x86/kernel/apic/apic.c patching file arch/x86/kernel/apic/apic_flat_64.c patching file arch/x86/kernel/apic/io_apic.c patching file arch/x86/kernel/apic/ipi.c patching file arch/x86/kernel/apic/nmi.c patching file arch/x86/kernel/apic/x2apic_cluster.c patching file arch/x86/kernel/apic/x2apic_phys.c patching file arch/x86/kernel/cpu/mtrr/cyrix.c patching file arch/x86/kernel/cpu/mtrr/generic.c patching file arch/x86/kernel/dumpstack.c patching file arch/x86/kernel/dumpstack_32.c patching file arch/x86/kernel/dumpstack_64.c patching file arch/x86/kernel/entry_32.S patching file arch/x86/kernel/entry_64.S patching file arch/x86/kernel/i8253.c patching file arch/x86/kernel/i8259.c patching file arch/x86/kernel/ipipe.c patching file arch/x86/kernel/irq.c patching file arch/x86/kernel/irqinit.c patching file arch/x86/kernel/process.c patching file arch/x86/kernel/process_32.c patching file arch/x86/kernel/process_64.c patching file arch/x86/kernel/smp.c patching file arch/x86/kernel/smpboot.c patching file arch/x86/kernel/time.c patching file arch/x86/kernel/traps.c patching file arch/x86/kernel/vm86_32.c patching file arch/x86/lib/mmx_32.c patching file arch/x86/lib/thunk_64.S patching file arch/x86/mm/fault.c patching file arch/x86/mm/tlb.c patching file drivers/pci/htirq.c patching file drivers/serial/8250.c patching file fs/exec.c patching file include/asm-generic/atomic.h patching file include/asm-generic/bitops/atomic.h patching file include/asm-generic/cmpxchg-local.h patching file include/asm-generic/percpu.h patching file include/linux/hardirq.h patching file include/linux/ipipe.h patching file include/linux/ipipe_base.h patching file include/linux/ipipe_compat.h patching file include/linux/ipipe_lock.h patching file include/linux/ipipe_percpu.h patching file include/linux/ipipe_tickdev.h patching file include/linux/ipipe_trace.h patching file include/linux/irq.h patching file include/linux/kernel.h patching file include/linux/preempt.h patching file include/linux/sched.h patching file include/linux/spinlock.h patching file include/linux/spinlock_api_smp.h patching file init/Kconfig patching file init/main.c patching file kernel/Makefile patching file kernel/exit.c patching file kernel/fork.c patching file kernel/ipipe/Kconfig patching file kernel/ipipe/Kconfig.debug patching file kernel/ipipe/Makefile patching file kernel/ipipe/core.c patching file kernel/ipipe/tracer.c patching file kernel/irq/chip.c patching file kernel/irq/handle.c patching file kernel/lockdep.c patching file kernel/panic.c patching file kernel/power/hibernate.c patching file kernel/printk.c patching file kernel/sched.c patching file kernel/signal.c patching file kernel/spinlock.c patching file kernel/time/tick-common.c patching file kernel/time/tick-sched.c patching file kernel/timer.c patching file kernel/trace/ftrace.c patching file lib/Kconfig.debug patching file lib/bust_spinlocks.c patching file lib/ioremap.c patching file lib/smp_processor_id.c patching file mm/memory.c patching file mm/mmu_context.c patching file mm/vmalloc.c
Next configure your kernel with $ make menuconfig command or use my configuration file :
$ cp config_roboard.txt linux-2.6.32.11/.config
Then you can launch the build process that will result in a nice debian package :
$ make-kpkg --uc --us buildpackage