Installation 4.13d sur RaspBerry Pi

Accueil Forums Gestion d’un serveur WIMS Installation d’un serveur WIMS Installation 4.13d sur RaspBerry Pi

Ce sujet a 9 réponses, 3 participants et a été mis à jour par Jean-Baptiste Lagrange Jean-Baptiste Lagrange, il y a 3 mois et 2 semaines.

  • Auteur
    Messages
  • #3729

    Bonjour,
    je teste l’installation de WIMS-4.13d sur raspberry pi pour un projet africain.
    Ca ne se passe pas trop mal, sauf que je n’ai pas l’accès aux classes ouvertes. Je les vois, mais quand je veux entrer en anonyme ou inscrit, j’ai une erreur (internal server error). De même pour la plupart des ressources.
    Je suppose qu’elles ne sont pas à leur place ou une histoire de chmode, mais je ne vois pas où elles-sont ni où elles devraient être.
    Merci
    JB Lagrange

  • #3730

    Encore moi,
    j’ai trouvé le fichier de log de Apache
    Accès via le raspberry
    [Sat Mar 04 09:22:48.085114 2017] [cgid:error] [pid 721:tid 1802499120] [client 127.0.0.1:47254] Premature end of script headers: wims.cgi, referer: http://127.0.0.1/wims/wims.cgi?session=AM2DE692B0.7&+lang=fr&+module=adm%2Fclass%2Fclasses&+type=example
    Accès via un ordi sur le réseu
    [Sat Mar 04 09:31:47.429069 2017] [cgid:error] [pid 720:tid 1869607984] [client 192.168.1.22:56848] Premature end of script headers: wims.cgi, referer: http://192.168.1.23/wims/wims.cgi?session=WN215F9C3E.1&+lang=fr&+module=adm%2Fclass%2Fclasses&+type=example
    Apparemment un pb dans WIMS lui-même.

  • #3732

    Olivier
    Admin bbPress

    Bonjour,
    Je me suis moi-même cassé les dents sur les 2 premières versions des raspberry Pi. (je n’ai pas réessayé depuis)
    De ce que je me rappelle, il y a un problème de transfert d’informations en virgule flottante.
    Le Rasperry utilise un processeur ARM, différents des processeurs de type « Intel » classiques, d’où l’incompatibilité.
    En fait, WIMS plante sur ARM dès qu’on tente d’accéder aux notes, c’est à dire :

    • Dès la connexion à une classe pour un participant
    • ou lors de l’affichage des notes pour un enseignant.

    Je pense qu’il est préférable de se tourner vers d’autres solutions, comme « Knowims » : un serveur WIMS sur une clé USB : http://wimsedu.info/?p=3196

    Olivier Bado - Université Nice Sophia Antipolis

  • #3733

    Bonjour et merci,
    pourtant il y a des choses qui marchent dans les outils.
    Peut-être quelqu’un a-t-il une idée. Bizarre que Wims soit aussi dépendant du processeur.

    J’ai essayé de restaurer une classe que j’avais en tgz, j’ai une erreur noyear !!!
    Dans un épisode précédent du projet PReNuM-AC nous avons distribué des clés WIMS au congo et au Cameroun.
    C’est utile pour une prise de contact, mais les collègues hésitent à modifier le bios pour booter sur la clé et ne savent pas configurer une machine en point d’accès.
    L’idée ici était de distribuer des serveurs « clé en main ».
    Si ça ne marche vraiment pas avec le raspberry, je vais me tourner vers des tablettes Windows bas de gamme.
    Quelqu’un a-t-il une expérience en la matière ?

  • #3736

    bernadette
    Admin bbPress

    Quel modèle de raspberry pi a-t-il été utilisé ?
    quel système d’exploitation ?
    Comment a été installé wims ?

    Merci de donner le plus de détail possible.

    Bernadette

    • #3738

      Olivier
      Admin bbPress

      Je n’ai plus la possibilité de tester cela, mais au cas ou un spécialiste du C serait prêt à creuser la question, je vais essayer de donner quelques infos supplémentaires, mais ma mémoire n’est pas très bonne, et ca commence vraiment à dater…

      • QuelS modèleS de raspberry pi ont-il été utilisé ?==> Raspberry Pi A et 2B
      • quel système d’exploitation ? Il me semble que c’etait un raspbian
      • Comment a été installé wims ? ==> installé automatiquement, manuellement, compilé, recompilé plusieurs fois… avec des options du genre « softfloat » et « hardfloat »

      Olivier Bado - Université Nice Sophia Antipolis

  • #3739

    Olivier
    Admin bbPress

    Je viens de remettre la main sur la dernière commande de compilation qu’on avait utilisée sur Raspberry (en vain) :

    gcc -g -O2 -Wall -DGNU_SOURCE [...] -march=armv6 -mfpu=vfp -mfloat-abi=hard

    Olivier Bado - Université Nice Sophia Antipolis

  • #3740

    Olivier
    Admin bbPress

    Pour donner plus de précisions sur ce que j’appelais assez simplement plus haut un « probleme avec les floats » :
    Il s’agit en fait d’un souci de transmission d’informations entre 2 programmes (wims et wimslogd)
    L’un « envoie » à l’autre un ensemble de variable, dont des floats.
    Et le problème survient sur ARM lorsque le second programme lit le float recu : cela déclenche un Bus error.

    On peut tout à fait simuler ce comportement au sein d’un seul et même programme pour faire plus simple. voici un code C qui simule cela :

    /* Test program, simulating communication between wims <-> Wimslogd*/
    
    // Compilation :
    //gcc -g -O2 -Wall   -DGNU_SOURCE -DVERSION_DATE=\"2014-05-22\" raspberry_wims.c -L../lib -lwims -lm -o raspberry_wims
    
    // Compilation Raspberry :
    //gcc -g -O2 -Wall -DGNU_SOURCE raspberry_wims-test.c -L../lib -lwims -lm -o raspberry_wims-test -march=armv6 -mfpu=vfp -mfloat-abi=hard
    
    #include <stdio.h>
    #include <memory.h>
    
    typedef struct scoreresult {
        float require, weight, score, mean, last, try, best, level;
    } scoreresult;
    
    #define MAX_CLASSEXOS 256
    
    #define exocnt 2
    struct scoreresult tscore[MAX_CLASSEXOS];
    struct scoreresult *rscore;
    //int answerlen;
    
    /* Simule l'écriture des données dans le fichier d'échange */
    void writeBuffer(void)
    {
        printf("écriture des données...\n");
        tscore[0].require = 1.23456;
    }
    
    /* Simule la lecture des données à partir du fichier d'échange */
    void readBuffer(void)
    {
      char *pp;
    
      printf("Lecture des données...\n");
    
      pp = tscore;
      rscore=(struct scoreresult *) pp;
    }
    
    /* Programme principal */
    int main(void)
    {
        printf("Début de la simulation...\n");
    
        writeBuffer();
        readBuffer();
    
        printf("Données envoyées : \n");
        printf("tscore[0].require = %f \n", tscore[0].require);
        printf("[HEX] tscore[0].require is %x\n", *(unsigned int*)&tscore[0].require);
    
        printf("Données Recues : \n");
        printf("[HEX] rscore[0] is %x\n", *(unsigned int*)&rscore[0]);
        /** C'est ici, à la lecture de "rscore[0].require" qu'on obtient un "BUS ERROR" sur un Raspberry Pi **/
        printf("[HEX] rscore[0].require is %x\n", *(unsigned int*)&rscore[0].require);
        printf("rscore[0].require = %f \n", rscore[0].require);
    
        return 0;
    }

    Olivier Bado - Université Nice Sophia Antipolis

  • #3752

    Bonjour Bernadette,
    excuses, je n’avais pas vu ton message.
    C’est un raspberry 3 https://www.raspberrypi.org/products/raspberry-pi-3-model-b/
    Jessie installé à partir de NOOBS sur une sdcard de 16 Go
    J’ai fait deux installations de WIMS
    1. en compilant les sources de la version 4.13d
    2. à partir de sources compilées pour ARM
    https://packages.debian.org/fr/jessie/armhf/wims/download

    le blocage se situe aux mêmes endroits dans les deux cas.

    J’ai fait le tour des autres possibilités avec processeur Intel
    1. lot de notebooks de récup. sans disque dur
    2. carte PC style raspberry
    3. microPC ou tablette

    Je m’oriente vers Gigabyte Brix GB-BXBT-2807 avec 2Go de RAM et clé USB 3.0 16Go

    Jean-baptiste

Vous devez être connecté pour répondre à ce sujet.