Compilation ipcop-1.4.18

Forum traitant de la distribution sécurisée montante nommée IP cop et basée sur la distribution Smoothwall. C'est à l'heure actuelle le forum le plus actif du site.

Modérateur: modos Ixus

Messagepar philippe_PMA » 21 Déc 2007 10:24

Gesp a écrit:
./make.sh getothersrc
./make.sh gettoolchain
./make.sh build

C'est ce qui devrait fonctionner dans tous les cas.

Inconsistency detected by ld.so: rtld.c: 1221: dl_main: Assertion `pt_load_num || (void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!

A priori, le problème ne vient pas de la version de gcc.
En debian etch, je suis en 4.1.2 et en gentoo aussi (vu qu'elle date un peu).

Pour compiler la toolchain, j'ai fait des corrections en cvs après 1.4.18.
PATH doit être redéfini avant de commencer à compiler.
Tu peux changer make.sh dans la partie toolchain() par
Code: Tout sélectionner
    echo -ne "`date -u '+%b %e %T'`: Stage1 toolchain build \n" | tee -a $LOGFILE
    ORG_PATH=$PATH
    NATIVEGCC=`gcc -dumpversion`
    export GCCmajor=${NATIVEGCC:0:1}
    export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
    if [ -f $BASEDIR/log/ccache-* ]; then
       echo "Warning : you can't partially rebuild some parts of the toolchain cleanly."
       echo "Preferably before each toolchain build, use:"
       echo "./make.sh clean"
    fi
    lfsmake1 ccache
    # Build sed now, as we use some extensions
    lfsmake1 sed   LFS_PASS=1
    # on very old system, more recent m4, bison, flex are needed to build binutils
    lfsmake1 m4      LFS_PASS=1
    lfsmake1 bison   LFS_PASS=1
    lfsmake1 flex   LFS_PASS=1
    # version build on toolchain depend of installed gcc
    lfsmake1 binutils   LFS_PASS=1


Super, tu es un amour ;-)

Je commençais effectivement à me dire que ça tournait autour d'une histoire de PATH après que le gcc ait compilé le gcc "IpCop / LFS".

J'essaye ça dès ce soir.
philippe_PMA
Major
Major
 
Messages: 73
Inscrit le: 18 Déc 2007 21:01

Messagepar philippe_PMA » 22 Déc 2007 00:35

Bon, ça ne marche pas mieux.

J'ai rajouté set -x dans make.sh.

Ca permet de voir où ça plante sur le ./make.sh build.
Mais bon, je vois pas trop pourquoi ?

Code: Tout sélectionner
...
+ '[' -f /root/ipcop-1.4.18/build/usr/src/lfs/stage2 ']'
++ date -u '+%b %e %T'
+ tee -a /root/ipcop-1.4.18/log/_build.base.log
+ echo 'Dec 21 22:25:13: Building stage2'
Dec 21 22:25:13: Building stage2
+ cd /root/ipcop-1.4.18/lfs
+ make -s -f stage2 LFS_BASEDIR=/root/ipcop-1.4.18 'MESSAGE=stage2\t ' download
+ '[' 0 -ne 0 ']'
+ cd /root/ipcop-1.4.18/lfs
+ make -s -f stage2 LFS_BASEDIR=/root/ipcop-1.4.18 'MESSAGE=stage2\t md5sum' md5
+ '[' 0 -ne 0 ']'
+ chroot /root/ipcop-1.4.18/build /tools/bin/env -i HOME=/root TERM=xterm 'PS1=\u:\w\$ ' PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin VERSION=1.4.18 CONFIG_ROOT=/var/ipcop NAME=IPCop SNAME=ipcop 'SLOGAN=The Bad Packets Stop Here' 'CFLAGS=-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer' 'CXXFLAGS=-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer' CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 KVER=2.4.34 BUILDTARGET=i386-pc-linux-gnu MACHINE=i386 /tools/bin/bash -x -c 'cd /usr/src/lfs &&                  make -f stage2 LFS_BASEDIR=/usr/src install'
+ '[' 127 -ne 0 ']'
+ exiterror 'Building stage2'

...

+ echo 'ERROR: Building stage2'
ERROR: Building stage2
+ echo '       Check /root/ipcop-1.4.18/log/_build.base.log for errors if applicable'
       Check /root/ipcop-1.4.18/log/_build.base.log for errors if applicable
+ exit 1
philippe_PMA
Major
Major
 
Messages: 73
Inscrit le: 18 Déc 2007 21:01

Messagepar philippe_PMA » 22 Déc 2007 02:14

J'ai tenté d'exécuté manuellement ce que fait le script.

J'ai déroulé les commandes ci-dessous :

Code: Tout sélectionner
[root@localhost ipcop-1.4.18]# unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
[root@localhost ipcop-1.4.18]# mount --bind /dev/pts /root/ipcop-1.4.18/build/dev/pts
[root@localhost ipcop-1.4.18]# mount --bind /proc /root/ipcop-1.4.18/build/proc
[root@localhost ipcop-1.4.18]# mount --bind /root/ipcop-1.4.18/cache /root/ipcop-1.4.18/build/usr/src/cache
[root@localhost ipcop-1.4.18]# mount --bind /root/ipcop-1.4.18/ccache /root/ipcop-1.4.18/build/usr/src/ccache
[root@localhost ipcop-1.4.18]# mount --bind /root/ipcop-1.4.18/config /root/ipcop-1.4.18/build/usr/src/config
[root@localhost ipcop-1.4.18]# mount --bind /root/ipcop-1.4.18/doc /root/ipcop-1.4.18/build/usr/src/doc
[root@localhost ipcop-1.4.18]# mount --bind /root/ipcop-1.4.18/html /root/ipcop-1.4.18/build/usr/src/html
[root@localhost ipcop-1.4.18]#  mount --bind /root/ipcop-1.4.18/langs /root/ipcop-1.4.18/build/usr/src/langs
[root@localhost ipcop-1.4.18]# mount --bind /root/ipcop-1.4.18/lfs /root/ipcop-1.4.18/build/usr/src/lfs
[root@localhost ipcop-1.4.18]# mount --bind /root/ipcop-1.4.18/log /root/ipcop-1.4.18/build/usr/src/log
[root@localhost ipcop-1.4.18]# mount --bind /root/ipcop-1.4.18/src /root/ipcop-1.4.18/build/usr/src/src
[root@localhost ipcop-1.4.18]# export CCACHE_DIR=/root/ipcop-1.4.18/ccache
[root@localhost ipcop-1.4.18]# CCACHE_DIR=/root/ipcop-1.4.18/ccache
[root@localhost ipcop-1.4.18]# export CCACHE_HASHDIR=1
[root@localhost ipcop-1.4.18]# CCACHE_HASHDIR=1
[root@localhost ipcop-1.4.18]# cd /root/ipcop-1.4.18/lfs
[root@localhost lfs]# make -s -f stage2 LFS_BASEDIR=/root/ipcop-1.4.18 'MESSAGE=stage2\t ' download
[root@localhost lfs]# echo $?
0
[root@localhost lfs]# cd /root/ipcop-1.4.18/lfs
[root@localhost lfs]# make -s -f stage2 LFS_BASEDIR=/root/ipcop-1.4.18 'MESSAGE=stage2\t md5sum' md5
[root@localhost lfs]#
[root@localhost lfs]# echo $?
0
[root@localhost lfs]# chroot /root/ipcop-1.4.18/build /tools/bin/env -i HOME=/root TERM=xterm 'PS1=\u:\w\$ ' PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin VERSION=1.4.18 CONFIG_ROOT=/var/ipcop NAME=IPCop SNAME=ipcop 'SLOGAN=The Bad Packets Stop Here' 'CFLAGS=-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer' 'CXXFLAGS=-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer' CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 KVER=2.4.34 BUILDTARGET=i386-pc-linux-gnu MACHINE=i386 /tools/bin/bash
Inconsistency detected by ld.so: rtld.c: 1221: dl_main: Assertion `pt_load_num || (void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!


Donc le problème se situ autour du chroot.

J'ai continué en réduisant la commande le plus possible :

Code: Tout sélectionner
chroot /root/ipcop-1.4.18/build /tools/bin/env
Inconsistency detected by ld.so: rtld.c: 1221: dl_main: Assertion `pt_load_num || (void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!



et

Code: Tout sélectionner
chroot /root/ipcop-1.4.18/build
chroot: cannot run command `/bin/bash': No such file or directory



Ce qui tend à prouver que c'est la commande /root/ipcop-1.4.18/build/tools/bin/env sans doute généré via LFS avec le gcc Fedora qui pose problème.

En fait, j'ai testé d'autres commandes dans /root/ipcop-1.4.18/build/tools/bin et elles ont toutes le même problème.

Si quelqu'un à une idée ?
philippe_PMA
Major
Major
 
Messages: 73
Inscrit le: 18 Déc 2007 21:01

Messagepar Gesp » 22 Déc 2007 12:51

J'ai retrouvé la source du problème (mais la documentation de cela a sauté avec des mises à jour du building how-to)

Tu utilises probablement un noyau après 2.6.17 et avant 2.6.20.3 (ou COMPAT_VDSO=y est la valeur par défaut)

Il y a plusieurs manières de contourner le problème :
- soit recompiler le noyau de ta machine en indiquant COMPAT_VDSO=y dans la configuration
'Processor type' , features, Compat VDSO support
-soit passer au noyau vdso=0 à grub ou lilo (ajouter la ligne sur la configuration de grub/lilo et rebooter)
Avatar de l’utilisateur
Gesp
Amiral
Amiral
 
Messages: 4481
Inscrit le: 29 Déc 2002 01:00

Messagepar philippe_PMA » 22 Déc 2007 15:24

Actuellement le noyau que j'utilise est

Code: Tout sélectionner
$ uname -r
2.6.23.9-85.fc8


Et l'option indiquée n'est pas activée

Code: Tout sélectionner
$ grep COMPAT_VDSO /boot/config-`uname -r`
# CONFIG_COMPAT_VDSO is not set


Je vais donc essayer de l'activer et recompiler IpCop.

Suite au prochain épisode :wink:
philippe_PMA
Major
Major
 
Messages: 73
Inscrit le: 18 Déc 2007 21:01

Messagepar philippe_PMA » 22 Déc 2007 15:46

Tiens, je t'ai retrouvé en VO :

Code: Tout sélectionner
Most recent edit on 2007-12-22 03:23:49 by Gesp Add again vdso compatibility workaround

Additions:
Error building v1.4
You may have this error

Inconsistency detected by ld.so: rtld.c: 1221: dl_main:
Assertion `pt_load_num || (void *) ph->p_vaddr ==  _rtld_local._dl_sysinfo_dso' failed!


This is related to the kernel you are running that require a feature not available in the glibc version compiled for IPCop. You could workaround with two different ways:
- recompile your kernel using COMPAT_VDSO=y (in Processor type and features, Compat VDSO support)
- pass an option to the kernel on boot (add vdso=0 to the grub or lilo kernel line)
- disable compat vdso directly with echo 0 > /proc/sys/vm/vdso_enabled
philippe_PMA
Major
Major
 
Messages: 73
Inscrit le: 18 Déc 2007 21:01

Messagepar philippe_PMA » 22 Déc 2007 16:49

Bon, la compilation n'est pas terminée, mais j'ai passé l'étape fatidique ;-)

Un très grand merci à Gesp.

Et aussi à tomtom qui s'y est essayé.

Ma prochaine étape est de recompiler IpCop avec le support "pci frontend".

Ceci pour pouvoir dédier une carte réseau à un DomU IpCop sous Xen ...

Je suis pas encore rendu ;-)
philippe_PMA
Major
Major
 
Messages: 73
Inscrit le: 18 Déc 2007 21:01

Messagepar philippe_PMA » 22 Déc 2007 20:06

La compilation est terminée avec succés.
Et j'ai plusieurs .tgz et un .iso.

Super.
philippe_PMA
Major
Major
 
Messages: 73
Inscrit le: 18 Déc 2007 21:01

Messagepar Gesp » 23 Déc 2007 10:46

- disable compat vdso directly with echo 0 > /proc/sys/vm/vdso_enabled


J'ai testé cela. Cela a planté la machine et j'ai rebooté.
Avatar de l’utilisateur
Gesp
Amiral
Amiral
 
Messages: 4481
Inscrit le: 29 Déc 2002 01:00

Messagepar philippe_PMA » 23 Déc 2007 17:45

Gesp a écrit:
- disable compat vdso directly with echo 0 > /proc/sys/vm/vdso_enabled


J'ai testé cela. Cela a planté la machine et j'ai rebooté.


J'ai ajouté vdso=0 dans le fichier /boot/grub/menu.lst :

Code: Tout sélectionner
title Fedora (2.6.23.9-85.fc8)
        root (hd0,0)
        kernel /vmlinuz-2.6.23.9-85.fc8 ro root=/dev/F8_i386_Internet/LogVol07 rhgb quiet vdso=0
        initrd /initrd-2.6.23.9-85.fc8.img


Ca a marché.
philippe_PMA
Major
Major
 
Messages: 73
Inscrit le: 18 Déc 2007 21:01

Précédent

Retour vers IPCop

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron