Projet

Général

Profil

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
Redmine Appliance - Powered by TurnKey Linux