Documentation noyau pour terminaux légers LTSP¶
cd /usr/src wget ftp://ftp.free.fr/mirrors/ftp.kernel.org/linux/kernel/v2.6/linux-2.6.34.1.tar.bz2 tar xfvj linux-2.6.34.1.tar.bz2 cd linux-2.6.34.1/ cp /home/devel/jaunty/build.jaunty/horizon-ltsp-kernels/horizon-ltsp-kernels/2.6.34.1/config .config make oldconfig ou menuconfig make bzImage make modules make modules_install cp arch/x86/boot/bzImage /home/devel/jaunty/build.jaunty/horizon-ltsp-kernels/horizon-ltsp-kernels/2.6.34.1/bzImage-2.6.34.1
Ensuite se placer dans le repertoire de construction horizon-ltsp-kernels, mettre a jour le fichier pxelinux.cfg/default, puis les modules
cp -a /lib/modules/2.6.34.1/* modules/ cd modules sed -i -e s%"kernel/"%"/lib/modules/2.6.34.1/kernel/"%g modules.dep rm *.bin cd ..
Ensuite il faut mettre a jour l'image initrd
gzip -d initramfs.gz mkdir initramfs.tmp cd initramfs.tmp cpio -i < ../initramfs
editer le fichier init et remplacer les appels à l'ancien noyau par le nouveau (insmod pour broadcom par exemple)
emacs init
remplacer les modules & renommer le repertoire -> c'est la qu'il faut une petite dose d'intelligence vu que les drivers a installer sont les drivers reseau !
cd lib/modules
recréer l'image initramfs.gz
find ./ -print | cpio -o -H newc | gzip -9 > ../initramfs.gz cd .. rm -rf initramfs.tmp initramfs
Attention¶
- depuis une serie de kenel > 2.6.28 les modules.dep sont relatifs avec des chemins incomplets et de ce fait les ltsp-tools ne marchent plus :(
sed -i -e s%"kernel/"%"/lib/modules/2.6.32.7/kernel/"%g modules.dep
- penser a supprimer les fichiers *.bin (cache binaire)
firmwares¶
De plus en plus de cartes réseaux ne marchent pas si on ne fournis pas de firmwares ... tests en cours avec un /lib/firmware dans l'initrd
Solution:
- ajouter ceci dans le script "/init" de l'initramfs
#ryxeo add hotplug hook to load firmware echo "/sbin/hotplug" > /proc/sys/kernel/hotplug
- et créer un script "/sbin/hotplug" de l'initramfs
#!/bin/sh load_firmware() { if [ ! -e /lib/firmware/$FIRMWARE ]; then echo $FIRMWARE not found >/dev/console return fi echo Loading $FIRMWARE into $DEVPATH >/dev/console mount -t sysfs sysfs /sys echo 1 > /sys/$DEVPATH/loading cat /lib/firmware/$FIRMWARE > /sys/$DEVPATH/data echo 0 > /sys/$DEVPATH/loading umount /sys } case $ACTION in add) case "$FIRMWARE" in "") ;; *) load_firmware ;; esac ;; esac
- penser à chmod +x "sbin/hotplug"
Debug LTSP¶
Pour tester le boot des TX il faut pousser des paramètres, le plus simple est de modifier le fichier pxelinux.cfg/mac pour ajouter en fin de ligne de kernel:
INITRD_DBG=4