[installation de base]
1-Installation TCL en mode frugal
Dans une partition dédiée formatée linux (EXT2 OR EXT3 OR EXT4)
/home et /opt persistants ... ça peut aider
INSTALLER un TCL basé sur un noyau de même VERSION que la cible
2-installer "On Boot" toutes les extensions telles que :
(kmaps.tcz pour clavier non QWERTY)
compiletc.tcz
perl5.tcz
ncurses-dev.tcz
bash.tcz
bc.tcz
advcomp.tcz
web browser (opera par ex)
Mon répertoire /tce, par exemple, est monté en /mnt/sda3,
Je le désigne par "sda#" dans le reste de ce texte.
Adaptez en conséquence pour votre partition
3-Créer les répertoires
Le script "0_cmp" crée les répertoires nécessaires.
Lancez le, ou passez ces commandes manuellement :
(en "root "et dans le répertoire racine de la partition dédiée)
-mkdir /mnt/sda#/SRC/KERNEL
-mkdir /mnt/sda#/SRC/RTAI
-mkdir /mnt/sda#/SRC/TINY
-mkdir /mnt/sda#/SRC/SCRIPTS
-mksir /mnt/sda#/RT
[téléchargement]
4-Télécharger le noyau 3.16.6 (par exemple)
https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.6.tar.xz
https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.6.tar.sign
placez le en /mnt/sda#/SRC/KERNEL
(vous pouvez vérifier le téléchargement avec la signature PGP ... peut être.)
5-extraire le noyau vanilla
Dans un terminal, en "root" :
cd /mnt/sda#/SRC/KERNEL
tar -xvf linux-3.16.6.tar.xz
L'arborescence résultante est en /mnt/sda#/SRC/KERNEL/linux-3.16.6
6-Télécharger l'archive RTAI "rtai-4.1.tar.bz2"
https://www.rtai.org/?Homepage&id=34
la placer en /mnt/sda#/SRC/RTAI
7-extraire les sources RTAI
Dans un terminal, en "root" :
cd /mnt/sda#/SRC/RTAI
tar -xvf rtai-4.1.tar.bz2
Les fichiers RTAI résultants sont en /mnt/sda#/SRC/RTAI/rtai-4.1
Le patch dont nous avons besoin est en /mnt/sda#/SRC/RTAI/rtai-4.1/base/arch/x86/patches
8-Télécharger tous les patches Tiny Core
http://distro.ibiblio.org/tinycorelinux/6.x/x86/release/src/kernel/316-patches/advdef.patch
http://distro.ibiblio.org/tinycorelinux/6.x/x86/release/src/kernel/316-patches/efficeon-agp.patch
http://distro.ibiblio.org/tinycorelinux/6.x/x86/release/src/kernel/316-patches/logo.patch
http://distro.ibiblio.org/tinycorelinux/6.x/x86/release/src/kernel/316-patches/sd-warning.patch
http://distro.ibiblio.org/tinycorelinux/6.x/x86/release/src/kernel/316-patches/squashfs-warning.patch
http://distro.ibiblio.org/tinycorelinux/6.x/x86/release/src/kernel/316-patches/ubuntu-isapnp.patch
8.1 -Télécharger
le fichier .config deTinyCore
http://distro.ibiblio.org/tinycorelinux/6.x/x86/release/src/kernel/config-3.16.6-tinycore
http://distro.ibiblio.org/tinycorelinux/6.x/x86/release/src/kernel/Module.symvers-3.16.6-tinycore.gz Placez le en /mnt/sda#/SRC/TINY. Il vous permet de vérifier que toutes vos sources sont correctes :
avec ce fichier de config vous pouvez construire un "Tiny Core Linux" standard.
(Tout cela est également disponile à :
http://ftp.nluug.nl/os/Linux/distr/tinycorelinux/6.x/x86/release/src/kernel/)
[Application des Patches]
9-patchez le noyau avec "hal-linux-3.16-x86-3.patch"
cd /mnt/sda#/SRC/KERNEL/linux-3.16.6
patch -p1 < /mnt/sda#/SRC/RTAI/rtai-4.1/base/arch/x86/patches/hal-linux-3.16-x86-3.patch
Vous aurez des alertes "hunk #"
Supprimez simplement tous les fichiers ".orig" correspondants ou changez leur extension.
"diff" a sans doute été fait avec des source obsolètes qui sait ? ...
9.1-patchez le noyau avec chaque patch Tiny dans le "/SRC/TINY"
voir :
http://wiki.tinycorelinux.net/wiki:custom_kernel
Vous aurez, là aussi, des alertes "hunk #"
vous pouvez décider de supprimer ou renommer les fichiers ".orig" .
ex :
cd /mnt/sda#/SRC/KERNEL/linux-3.16.6
patch -p1 < /mnt/sda#/SRC/TINY/advdef.patch
résultat :
patching file scripts/Makefile.lib
Hunk #1 succeeded at 238 (offset -1 lines)
puis
patch -p1 < /mnt/sda#/SRC/TINY/efficeon-agp.patch
patch -p1 < /mnt/sda#/SRC/TINY/logo.patch
patch -p1 < /mnt/sda#/SRC/TINY/sd-warning.patch
patch -p1 < /mnt/sda#/SRC/TINY/squashfs-warning.patch
patch -p1 < /mnt/sda#/SRC/TINY/ubuntu-isapnp.patch
10-Un peu de ménage (en "root")
cd linux
make mrproper
[Compilation du noyau vanilla patché]
11-modifiez le fichier .config
Il y a deux "types" de fichier .config selonvotre type de processeur : SMPconfig ou MONOconfig
copiez celui qui correspond dans l'arborescence des sources linux et renommez le ".config"
Puis
make menuconfig
effectuez (prudemment) tous les changements que vous souhaitez dans la configuration.
Saines lectures :
Avoid latency killers
tuto. how to install RTAI
Options retenues :
-Loadable module support / Enable loadable module support / (on)
-Loadable module support / Module versioning support / (off)
-Processor type and features / HPET Timer Support (off)
-Processor type and features / Preemptible Kernel (Low-Latency Desktop)
Voluntary Kernel Preemption (Desktop) works too
-Processor type and features / Interrupt pipeline / (on)
-Processor type and features / High Memory Support / (off)
-Processor type and features / Math emulation / (on)
-Power management options (ACPI, APM) / Legacy Power Management API / (off)
-Power management options (ACPI, APM) / Software Suspend / (off)
-Suspend to RAM and standby (off)
-Hibernation (aka 'suspend to disk') (off)
-Run-time PM core functionality (on)
-Cpuidle Driver for Intel Processors (off)
-CPU Frequency scaling / CPU Frequency scaling / (off)
-ACPI (Advanced Configuration and Power Interface) Support / ACPI Support / (off)
MAIS : en tous cas, choisissez le type de processeur corespondant
à l'installation sur laquelle vous développez !
12-make bzImage
A partir d'ici, le script "2_cmp" (interactif) ou "22_cmp" (plus "auto") peut faire le travail pour vous.
Vous pouvez également avancez manuellement :
cd /mnt/sda#/SRC/KERNEL/linux-3.16.6
make bzImage
Validez les choix par défaut
Si tout va bien, le résultat est en /mnt/sda#/SRC/KERNEL/linux-3.16.6/arch/x86/boot/bzImage
12.1 Test :
Vous pouvez tester ce nouveau Tiny core en mode "console".
Il faut copier "bzImage" à un endroit que votre chargeur saura accéder.
ex :
Créez le répertoire "/tst/boot" sur la partition du disque dur où est votre " /tce" ;
Placez-y "bzImage" et une copie de core.gz ; modifiez le menu du chargeur pour qu'il puisse utiliser ce nouveau noyau.
Exemple : entrée de menu.lst pour grub4dos :
title New Tiny Core test
root (hd0,2)
kernel /tst/boot/bzImage
initrd /tst/boot/core.gz
13-make modules
Dans l'arborescence de developpement :
make modules
... et patience ... prenez un café ?
[installation des modules]
14-copiez "core.gz" en /mnt/sda#/RT/core_gz/
/mnt/sda#/tce/boot/core.gz /mnt/sda#/RT/core_gz/core.gz
15-Décompressez core.gz :en "Root")
si le répertoire "/mnt/sda#/RT/core_gz/xtract" n'existe pas créez le:
mkdir /mnt/sda#/RT/core_gz/
et copiez-y le "core.gz" standard
puis ...
mkdir /mnt/sda#/RT/core_gz/xtract
cd /mnt/sda#/RT/core_gz/xtract
zcat ../core.gz | sudo cpio -i -H newc -d
16-installez les modules
make INSTALL_MOD_PATH=/mnt/sda#/RT modules_install firmware_install
les modules sont en /mnt/sda#/RT/lib/modules/3.8.13-tinycore/kernel
les firmware en /mnt/sda#/RT/lib/firmware
Tiny Core n'emploie que quelques uns de ceux-ci... que nous copierons dans core.gz décompressé
Lister les modules recemments créés :
cd /mnt/sda#/RT/lib/modules/3.16.6-tinycore/kernel
find -name *.ko > /mnt/sda#/SRC/modules3.16.6
... les comparer avec ceux danx core.gz :
cd /mnt/sda#/RT/core_gz/xtract/lib/modules/3.8.13-tinycore/kernel
find -name *.ko.gz > /mnt/sda#/SRC/modules.tiny
17-appelez un script pou copierles mêmes modules que dans la distro Tiny
Des scripts sont disponibles pour limiter le nombre de modules.
Nous ne travaillerons qu'avec les plus utiles :
mdl_tiny3.8.13.sh ou mdl_tiny3.16.6.sh (selon votre version de noyau)/mnt/sda#/SRC/SCRIPTS
18-compacter les modules
cd /mnt/sda#/RT/core_gz/xtract/lib
find . -name "*.ko" -exec gzip -9 '{}' \;
!! Si modules.dep a été modifiié, changez tous les
".ko" en ".ko.gz" dans "modules.dep", avec un éditeur !!
19-Recontruisez "core.gz" en "core2.gz"
cd ..
find | cpio -o -H newc | gzip -9 > ../core2.gz
cd ..
advdef -z4 core2.gz
20-copiez "bzImage" et "core2.gz" dans votre répertoire de test final
J'emploie /mnt/sda#/tce, l'entrée dans menu.lst de grub est :
title Tiny Core patched RTAI
root (hd0,2)
kernel /tce/boot/bzImage
initrd /tce/boot/core2.gz
Ici "2_cmp" ne vous aidera plus, ("22_cmp" non plus)
[Compilez la suite RTAI ]
21-Rebootez sur cette image pour compiler RTAI
adaptez votre multiboot pour lancer "bzImage" avec "core2.gz" comme init.rd.
Exemple : mon entrée dans menu.lst pour grub4dos :
title Tiny Core "RTAI" tests
root (hd0,2)
kernel /tce/boot/bzImage
initrd /tce/boot/core2.gz
23-Placez vous dans l'embranchement des sources RTAI (console en "root")
Pour rtai-4.1 :
cd /mnt/sda#/SRC/RTAI/rtai-4.1
n.b.J'ai du plusieurs fois travailler sur un "RTAI" fraîchement décompressé
plutot que de reconfigurer une arborescence déjà employée.
Vous pouvez preserver le ".rtai_config" d'origine (s'il existe) pour, éventuellement, restaurer ...
Exemple :
mv .rtai_config sav.rtai_config
24-Copier "SMP.rtai_config" dans la racine de la branche RTAI et renommez le .rtai_config
... ou MONO.rtai_config si votre processeur n'est pas SMP.
25-make menuconfig
Adaptez selon vos besoins ... Principalement, avec l'arborescence utilisée :
General / Installation directory : /mnt/sda#/RT
General / Linux source tree : /mnt/sda#/SRC/KERNEL/linux-3.8.13
26-make
27-make install
Si tout va bien, les modules RTAI sont en /mnt/sda#/RT/modules
28-tester à l'aide de testsuite
Le script "tstSuite.sh" vous aidera (voir en /mnt/sda#/SRC/SCRIPTS)
Sinon, N'oubliez pas de modifier le path :
export PATH=/mnt/sda#/RT/bin:$PATH
Exemple de test , en "manuel" :
cd /mnt/sda#/RT/testsuite/kern/latency
export PATH=/mnt/sda#/RT/bin:$PATH
./run
Les résultats peuvent montrer de nombreux "overruns": les
interruptions de SMI (System Management Interrupt) en sont la source,
elles introduisent des perturbations critiques por les
systèmes temps réel. Désactivez toute source SMIs
avec EXTREME PRECAUTION !
Assurez vous que votre carte mère ne surchauffe pas et qu'aucun reboot intempestif ne survient.
Vous pouvez les désactiver avec
/mnt/sda#/RT/bin/setsmi
.. et redémarrer le test.
A la fin, restaurez les avec /mnt/sda#/RT/bin/rstsmi.
"tstSuite.sh" devrait faire ça