24
http://dit.epfl.ch p/a EPFL - Domaine IT - CP 121 - CH 1015 Lausanne 15 - tél. +41 21 69 322 11 23.11.2010 9 tout public public averti expert Actualités Lift11 5 Forum IT d'automne 15 FlashiPhone – Symétrie cristalline I. Orlov, G. Chapuis & S. Burlot 12 Secure-IT votre affaire P. Saladino 24 Analyse Scala G. Dubochet 1 HDL_Draw, outil de conception de circuits numériques intégrés J. Songo Priso 16 À votre service Politique de support des OS GNU/Linux à l’EPFL B. Barras 2 Qui suis-je? L. Venries 8 Le DIT vous forme ! l'équipe des cours 15 Comment faire? Itinérance de profils GNU/Linux à l’EPFL S. Bancal 3 Faites bonne image ! F. Roulet 9 Récupération de données avec un live CD 100% libre P. U. Peña Dall’Orso 20 Mot-croisé: FILTRE M. Ojanguren, M. Ouwehand & E. Rosales 21 Installation de Linux avec PXE et Grub2 V. Rezzonico 22 Prochaines parutions No Délai de rédaction Parution 10 02.12.10 21.12.10 1 06.01.11 25.01.11 2 03.02.11 22.02.11 Analyse Scala is a programming lan- guage developed at EPFL. Today, it is amongst the 50 most popu- lar languages, attracting over 100,000 visitors per month to its website. To explain its success: flawless compatibility with Java and superb scalability — thanks to programming language research. Scala est un langage de program- mation développé à l’EPFL, qui se trouve aujourd’hui parmi les 50 langages les plus populaires. Son site Web reçoit plus de 100’000 vi- sites par mois. Les raisons de son succès? sa parfaite compatibilité avec Java et son extrême polyva- lence — grâce à l’application de la recherche sur les langages. La compétition pour devenir le langage de programmation le plus populaire est intense. Mais l’EPFL est bien placée dans cette course grâce à Scala, développé depuis 2001 au laboratoire des méthodes de programmation du professeur Martin Odersky. Il faut dire que, de tous les préten- dants, Scala est l’un des plus évolués grâce à son ancrage dans la recherche. Toutefois, il a dès le début été conçu comme un lan- Scala Gilles.Dubochet@epfl.ch, EPFL – Faculté IC – Laboratoire des méthodes de programmation, assistant gage pratique, par exemple en assurant une compatibilité parfaite avec l’ensemble des bibliothèques et outils Java existants. Ce choix — à la pointe des connaissances, mais sans rejeter ce qui existe — a permis à Scala de gagner une forte popularité, particuliè- rement depuis deux ans. Ainsi, le langage de l’EPFL est un prétendant crédible pour devenir un langage de premier plan. Au- jourd’hui, il est déjà parmi les 50 langages les plus populaires selon l’index TIOBE 1 ; il est utilisé par de grandes entreprises dans le Web social (Twitter, LinkedIn, FourS- quare), dans l’édition (The Guardian, Na- ture Publishing), dans les jeux ou dans la finance; presque 20 livres de tous niveaux sur Scala sont disponibles ou annoncés; de plus en plus d’universités donnent des cours de Scala à leurs étudiants. Mais qu’est-ce qui explique ce succès? Une question de niche Pour commencer à comprendre cette réus- site, il faut ausculter les tendances actuelles de la programmation. Avec l’avènement de Java, au début des années 2000, on avait pu croire à une fin de l’histoire des lan- gages. À cette époque, Java disposait d’une popularité de presque 30 % (index TIOBE), 10 points au dessus de son plus proche rival. De plus en plus d’universités, dont la .. /.. Suite page 6 1 www.tiobe.com/content/paperinfo/tpci/ Deuxième prix La Souris d'Or 2010 page 12

Flash informatique 2010 - no 9

  • Upload
    epfl

  • View
    213

  • Download
    0

Embed Size (px)

DESCRIPTION

journal informatique de l'Ecole Polytechnique Fédérale de Lausanne du 23 novembre 2010

Citation preview

Page 1: Flash informatique 2010 - no 9

http://dit.epfl.ch

p/a EPFL - Domaine IT - CP 121 - CH 1015 Lausanne 15 - tél. +41 21 69 322 11

23.11.20109

tout public public averti expert

Actualités Lift11 5

Forum IT d'automne 15

FlashiPhone – Symétrie cristalline

I. Orlov, G. Chapuis & S. Burlot 12

Secure-IT votre affaire P. Saladino 24

AnalyseScala G. Dubochet 1

HDL_Draw, outil de conception de

circuits numériques intégrés

J. Songo Priso 16

À votre servicePolitique de support des OS GNU/Linux

à l’EPFL B. Barras 2

Qui suis-je? L. Venries 8

Le DIT vous forme ! l'équipe des cours 15

Comment faire?Itinérance de profils GNU/Linux à

l’EPFL S. Bancal 3

Faites bonne image ! F. Roulet 9

Récupération de données avec un live

CD 100% libre P. U. Peña Dall’Orso 20

Mot-croisé: FILTRE M. Ojanguren,

M. Ouwehand & E. Rosales 21

Installation de Linux avec PXE et

Grub2 V. Rezzonico 22

Prochaines parutions

No Délai de rédaction Parution

10 02.12.10 21.12.10

1 06.01.11 25.01.11

2 03.02.11 22.02.11

Analyse

Scala is a programming lan-guage developed at EPFL. Today, it is amongst the 50 most popu-lar languages, attracting over 100,000 visitors per month to its website. To explain its success: flawless compatibility with Java and superb scalability — thanks to programming language research.

Scala est un langage de program-mation développé à l’EPFL, qui se trouve aujourd’hui parmi les 50 langages les plus populaires. Son site Web reçoit plus de 100’000 vi-sites par mois. Les raisons de son succès? sa parfaite compatibilité avec Java et son extrême polyva-lence — grâce à l’application de la recherche sur les langages.

La compétition pour devenir le langage de programmation le plus populaire est intense. Mais l’EPFL est bien placée dans cette course grâce à Scala, développé depuis 2001 au laboratoire des méthodes de programmation du professeur Martin Odersky. Il faut dire que, de tous les préten-dants, Scala est l’un des plus évolués grâce à son ancrage dans la recherche. Toutefois, il a dès le début été conçu comme un lan-

[email protected], EPFL – Faculté IC – Laboratoire des méthodes de programmation, assistant

gage pratique, par exemple en assurant une compatibilité parfaite avec l’ensemble des bibliothèques et outils Java existants. Ce choix — à la pointe des connaissances, mais sans rejeter ce qui existe — a permis à Scala de gagner une forte popularité, particuliè-rement depuis deux ans. Ainsi, le langage de l’EPFL est un prétendant crédible pour devenir un langage de premier plan. Au-jourd’hui, il est déjà parmi les 50 langages les plus populaires selon l’index TIOBE 1; il est utilisé par de grandes entreprises dans le Web social (Twitter, LinkedIn, FourS-quare), dans l’édition (The Guardian, Na-ture Publishing), dans les jeux ou dans la finance; presque 20 livres de tous niveaux sur Scala sont disponibles ou annoncés; de plus en plus d’universités donnent des cours de Scala à leurs étudiants. Mais qu’est-ce qui explique ce succès?

Une question de niche

Pour commencer à comprendre cette réus-site, il faut ausculter les tendances actuelles de la programmation. Avec l’avènement de Java, au début des années 2000, on avait pu croire à une fin de l’histoire des lan-gages. À cette époque, Java disposait d’une popularité de presque 30 % (index TIOBE), 10 points au dessus de son plus proche rival. De plus en plus d’universités, dont la

.. /.. Suite page 61 www.tiobe.com/content/paperinfo/tpci/

Deuxième prix

La Souris d'Or 2010page 12

Page 2: Flash informatique 2010 - no 9

2 flash informatique

ImpressumLes articles ne reflètent que l’opinion de leurs auteurs. Toute reproduction, même partielle, n’est autorisée qu’avec l’accord de la rédaction et des auteurs. Abonnement à la version électronique du FI en envoyant un courrier à:[email protected]

Rédacteur en chef:Jacqueline Dousson, [email protected] en page & graphisme:Appoline Raposo de BarbosaComité de rédaction:Aristide Boisseau, Paulo de Jesus, Patrice Fumasoli, Jean-Damien Humair, Laurent Kling, Julia Paolini, Vittoria Rezzonico, François Roulet,

Christophe Salzmann, Predrag Viceic & Jacques VirchauxImpression: Atelier de Reprographie EPFLTirage: 4000 exemplairesAdresse Web: dit.epfl.ch/FI-spipAdresse: Domaine IT EPFLCP 121, CH-1015 Lausanne 15Téléphone: +4121 69 32246 & 32247

Politique de support des OS GNU/Linux à l’[email protected], EPFL – Domaine IT , responsable de la plate-forme Linux à l’EPFL

Support GNU/Linux

Le team Unix du DIT-EPFL supporte les systèmes d’exploitation GNU/Linux suivants:❚ Red Hat Enterprise Linux❚ Fedora❚ Ubuntu.Seules les versions qui ne sont pas en fin de vie sont supportées. Cela peut s’étendre jusqu’à 7 ans pour RedHat, pour Ubuntu les versions LTS 1 workstation/serveur seront respectivement de 3 ans/5 ans et de 18 mois pour les versions non LTS, Fedora a un cycle de vie de 13 mois environ. Toutes les distributions citées ci-dessus sont disponibles sur le site Linux de l’EPFL 2.

Principe

Le principe sera toujours le même, les abonnés Red Hat bénéficient du support et des mises à jour pour toutes les versions pendant la durée de vie de leur système d’exploitation.Il n’y a pas d’abonnement pour Fedora, et seule la communauté libre de Fedora peut intervenir en cas de problème sérieux. Étant

donné le prix important par abonnement demandé par Canonical pour le support Ubuntu et le nombre croissant et important de problèmes survenant avec ce système d’exploitation, ces derniers seront signalés au team Unix qui se chargera de les résoudre (avec l’aide de Canonical si besoin). Le support payant de Canonical et RedHat ne garantit pas une solution à un problème posé.

Recommandations

Pour tout ce qui concerne les serveurs, le team Unix recommande RedHat. Pour les stations de travail, Fedora et Ubuntu seront très bien adaptés pour ces besoins.Il n’est pas recommandé de prendre Ubuntu pour des serveurs qui doivent assurer un service critique. Le team Unix, ([email protected]) est à disposition pour toutes vos questions concernant le choix d’une distribution.Pour plus d'informations: linux.epfl.ch. ■

À votre service

1 Long Term Support2 linux.epfl.ch3 Le DIT a acheté un certain nombre de licences avec support4 Not Applicable: Fedora ne fait pas de distinction entre serveur et workstation, il n’y a qu’une seule distribution.5 Attention aux limitations importantes concernant le déployement massif ou automatisé via kickstart: https://help.ubuntu.com/10.04/installation-

guide/i386/automatic-install.html#kickstart/ ou debian-installer: https://help.ubuntu.com/10.04/installation-guide/i386/preseed-intro.html#preseed-li-mitations

Distribution Serveur Workstation Licences Support payant 3

Disponible Recommandé Disponible Recommandé

RedHat Oui Oui Oui Oui Oui Oui

Fedora N/A 4 Non Oui Oui Non Non

Ubuntu Oui Non 5 Oui Oui 5 Non Oui

Page 3: Flash informatique 2010 - no 9

323 NOVEMBRE 2010 - N°9

How to make application and desktop settings roam on the GNU/Linux self-service workstations at EPFL for a selected set of applications . This article de-scribes the tool (named epfl_roaming) developped by both ENAC and I&C which fulfills these needs.

Cet article décrit la technique (dénommée epfl_roa-ming) développée par les facultés ENAC et I&C pour conserver et rendre itinérantes les préférences uti-lisateur d’un ensemble choisi d’applications sur les postes GNU/Linux en libre service.

Préambule

Lorsque l’on considère le déploiement de salles de PC mises à dis-position d’un ensemble d’utilisateurs, plusieurs sujets doivent être abordés. Cela commence par l’identification de l’utilisateur, son authentification, puis son accès à des ressources telles que réseau, stockage, impression... Arrivent ensuite le choix des applications à installer et leur paramétrage. Finalement vient la question qui nous intéresse ici: comment conserver, pour chaque utilisateur, ses préférences d’appli-cations et/ou de bureau ? Ce dernier point pourrait tout à fait être éludé en appliquant lors de chaque nouvelle session des préférences par défaut. L’utilisa-teur se retrouve alors systématiquement dans un environnement neuf.

Les préférences applicatives

Toute application souhaitant conserver une information pour un utilisateur peut le faire en suivant deux standards sur GNU/Linux. ❚ Créer un fichier ou un dossier caché dans le home de l’utilisa-

teur. Exemple pour le client ssh: $HOME/.ssh/ .❚ Dans l’environnement de bureau GNOME, créer une ou plu-

sieurs clefs gconf dans une branche dédiée à cette ap-plication. Exemple pour shotwell: /apps/shotwell/prefe-rences/editing/external_raw_editor .

L’espace de stockage

Avant de régler la question des préférences à sauver, il est néces-saire de résoudre celle plus générale du stockage (qui inclut aussi les données utilisateur). En considérant un espace de stockage centralisé, tel qu’offert par le nouveau service de fichiers EPFL files[0-9].epfl.ch , deux possibilités s’ouvrent à nous:

Stockage centralisé, approche 1 Une première possibilité consiste à monter directement l’espace personnel sur le home directory , concrètement sur le point de montage /home/username . C’est une pratique très courante.

avantages ❚ Facile à mettre en place, avec l’outil autofs par exemple. ❚ Les préférences des applications se trouvent automatique-

ment sur le serveur de fichiers, elles sont donc itinérantes par défaut.

inconvénients ❚ Pas possible de choisir quelles préférences sont conservées,

toutes le sont. ❚ Dans le cas où plusieurs environnements vont accéder à ce

même répertoire comme home directory, les préférences applicatives vont être mélangées. Prenons à titre d’exemple concret deux salles, gérées indépendamment, qui mettent chacune à disposition une version différente de Firefox. Le passage de la version plus ancienne à la plus récente se fera par une migration à chaud des préférences utilisateur, tandis que le passage inverse débouchera sur une incompréhension complète ou partielle des fichiers de préférences.

❚ Dans la version de GNOME d’aujourd’hui, un dossier particu-lier $HOME/.gvfs est utilisé pour effectuer des montages dy-namiques (stockage externe USB/FireWire ou lecteurs réseau), ceci sans être obligé de passer par le fichier classique /etc/fstab et d’utiliser le compte root. Pour que cette fonction-nalité soit active, il est nécessaire que ce dossier soit local (l’explication sort de l’objectif de cet article).

Stockage centralisé, approche 2 Une seconde possibilité consiste à monter l’espace dans un dossier enfant du home directory, concrètement: /home/username est local, et /home/username/myfiles est le point de montage.

avantages/inconvénients ❚ Montage géré par des scripts maison -> davantage de sou-

plesse.❚ Pas de préférences itinérantes par défaut -> mécanisme à

implémenter.

Le choixLes trois inconvénients de la première approche étant bloquants dans notre cas, l’utilisation du stockage centralisé des données utilisateur va s’appuyer sur la seconde.

Itinérance de préférences GNU/Linux à l’[email protected], EPFL - ENAC-IT, concepteur et développeur de epfl _roaming

Comment faire ?

Page 4: Flash informatique 2010 - no 9

flash informatique44 flash informatique

L’itinérance

Des fichiers et dossiers Pour rendre une application itinérante, il suffi t de placer ses fichiers/dossiers de préférence dans l’espace de stockage centra-lisé de l’utilisateur. Ceux-ci sont rendus accessibles à leur empla-cement par défaut grâce à des liens symboliques, tel que présenté par la figure ci-dessus.

cas particulier: la condition initiale Par défaut un utilisateur n’a de préférences que pour les appli-cations qu’il a déjà utilisées. Pour cette raison, lors du login, il se peut que certains fichiers/dossiers itinérants n’existent pas encore. La façon la plus souple est alors de ne rien faire pour ces éléments lors du login. S’ils sont créés durant la session, la procédure de logout les placera pour qu’ils soient retrouvés lors de la prochaine session.

Des clefs gconf Les clefs gconf peuvent être vues comme un ensemble de fichiers placés dans une arborescence dédiée. Il n’est cependant pas pos-sible de les traiter comme de simples fichiers/dossiers. Exemple concret avec la clef la plus connue pour GNOME, /desktop/gnome/background/picture_filename . Sa valeur est stockée dans le fichier %gconf.xml du dossier $HOME/.gconf/desktop/gnome/background/ . Dans le cas où nous souhaitons conserver uniquement cette clef, nous aurons deux problèmes: ❚ Ce fichier %gconf.xml contient l’information d’autres clefs

gconf que l’on ne souhaite pas conserver. ❚ Chaque dossier contenant une partie de la base de données

gconf doit contenir un fichier %gconf.xml . Il ne suffi t donc pas de restaurer le fichier en bout d’arborescence.

La solution consiste alors à traiter les clefs gconf indépendam-ment des fichiers/dossiers de préférences en faisant un export des clefs désirées lors du logout et de les restaurer lors du login.

Itinérant, mais cohérent L’EPFL ayant plusieurs gestionnaires de salles (dans plusieurs facultés), l’emplacement pour stocker les préférences itinérantes

doit être choisi en fonction de l’entité de gestion de ces salles. Par exemple, pour les salle ENAC-SSIE gérées par le groupe ENAC-IT1, nous les placerons dans un dossier créé à cet effet epfl_roa-ming/enacit/it1/ . Dans le cas où un couplage fort se fait entre plusieurs gestion-naires de salles sur la version déployée d’une application et ses paramétrages, il est alors possible d’utiliser un dossier plus global, tel que epfl_roaming/global .

La procédure opérations lors du login❚ Création du home directory $HOME .❚ Montage de $HOME/myfiles .❚ Pour tous les éléments définis et déjà existants: création des

liens symboliques.❚ Restauration des clefs gconf utilisateur précédemment sau-

vées .

opérations lors du logout ❚ Pour tous les éléments définis, inexistants lors du login: copie

des préférences locales vers le stockage centralisé.❚ Export des clefs gconf utilisateur désirées.❚ Démontage de $HOME/myfiles .❚ Suppression de $HOME (il ne reste ainsi plus aucune trace lo-

cale, tout ce qui reste est itinérant).

Le fichier de confi guration epfl _roaming.conf❚ Les lignes 2 et 5 décrivent des instructions de mon-

tage. Les paramètres en majuscules entourés de soulignés (_USERNAME_, _SCIPER_, ...) sont remplacés à la volée par les attributs correspondants de l’utilisateur. Ces 2 exemples couvrent les 2 protocoles les plus probables pour cette appli-cation. En production, il faudra en choisir un seul.

❚ Les lignes 8 à 10 décrivent des liens symboliques. Le premier argument donne la cible du lien, le second l’emplacement où créer ce lien (les 2 relatifs au home directory). Le + de la ligne 8 force la création de la cible dans le cas où celle-ci n’existait pas encore.

/home/username

Desktop

My Documents

myfiles. . ..bashrc

.mozilla/

files[0..9].epfl.ch/data/username

My Documents epfl_roaming

enacit

it1

. . ..bashrc

.mozilla/

Légende:Montage (CIFS / NFS / ...)Lien symbolique

LOCAL CENTRAL

Itinérance de préférences GNU/Linux à l’EPFL

Page 5: Flash informatique 2010 - no 9

5523 NOVEMBRE 2010 - N°9

La surprise de parcours

Les séquences de login et de logout sont les éléments-clefs de ce projet. Durant les phases de tests, il était crucial de vérifier que le transfert des données se faisait entièrement avant que l’accès à certaines ressources ne soit coupé. La plus grande surprise a été de constater qu’une extinction de la machine shutdown se fai-sait sans suivre la procédure d’appels standards de logout. Il s’est avéré que le shutdown et le reboot sont considérés comme des opérations système qui ne déclenchent pas la procédure de dé-connexion du compte utilisateur (à travers les PAM ). C’est un raccourci qui peut passer inaperçu dans la majorité des cas, mais qui est handicapant pour ce projet. La solution a été de définir un service système qui, lors de l’extinction de la machine, fait le tour de tous les utilisateurs encore connectés et initie le travail de logout au sens epfl_roaming.

Un développement générique EPFL

Dans le but que la solution soit utilisable dans d’autres contextes que celui de leurs auteurs, elle est ajustable grâce au fichier de configuration (tel que l'exemple). Ainsi avec le même outil, deux salles distinctes peuvent avoir un comportement qui leur est propre. La solution présentée ici est en production depuis le semestre d’automne 2010 dans les salles GNU/Linux en ENAC-SSIE et I&C, excepté pour la partie gérant les clefs gconf qui devrait le deve-nir tout prochainement. Les distributions utilisées sont Ubuntu 10.04LTS et Ubuntu 10.10. Tout administrateur intéressé par ce mécanisme est encouragé à contacter l’auteur. ■

1. # Montage possible en NFSv4: 2. mount -t nfs4 files_SCIPER_.epfl.ch:/dit-files_SCIPER_-t1/data/_USERNAME_ /home/_USERNAME_/myfiles -o proto=tcp,sec=krb5,port=2049 3. 4. # Montage possible en CIFS: 5. mount -t cifs //files_SCIPER_.epfl.ch/data/_USERNAME_ /home/_USERNAME_/myfiles -o user=_USERNAME_,uid=_USERNAME_,gid=_GROUP_,file_mode=0770,dir_mode=0770, rw,nobrl,noserverino,iocharset=utf8 6. 7. # Liens symboliques: 8. link "+myfiles/My Documents/" "Desktop/My Documents/" 9. link "myfiles/epfl_roaming/enacit/it1/.bashrc" ".bashrc" 10. link "myfiles/epfl_roaming/enacit/it1/.mozilla/" ".mozilla/"

GLOSSAIRE

autofs: outil open-source permettant de faire des montages automatiques lorsque les ressources sont accédées. (plus d’info: help.ubuntu.com/community/Autofs)

gconf: base de données GNOME utilisée pour stocker/appliquer des paramètres d’applications. Les informations sont classées dans une arborescence et enregistrées sous forme de clef-valeur.

Chaque clef possède en outre des attributs tels que son propriétaire et sa description (plus d’info: en.wikipedia.org/wiki/GConf).

Home directory: répertoire dédié à l’utili-sateur, noté généralement $HOME ou /home/username. Tout ce qui s’y trouve est sensé lui appartenir. L’utilisa-teur par défaut ne devrait pas travailler hors de ce répertoire. Les applications y déposent aussi les préférences utili-sateur.

Monter: action qui consiste à faire corres-pondre à un emplacement local choisi le contenu d’un autre (local ou distant). Dans le monde Windows l’équivalent est Connecter un lecteur réseau.

PAM: Pluggable Authentication Modules, mécanismes gérant toutes les étapes du login et du logout d’un utilisateur. (plus d’info: en.wikipedia.org/wiki/Plug-gable_Authentication_ Modules).

2-4 février 2011 Conférence Lift à Genève

Lift11 is a three-day conference about current and emerging usage of digital technologies such as online communities, so-cial media and casual games. Participants come to better un-derstand the challenges and opportunities presented by digital technologies, and meet the people who drive these innovations.

20 tickets offerts à des étudiantsEnvoyez avant le 30 novembre 2010 un mail à [email protected] avec vos coordonnées (nom, université, copie de votre carte d'étudiant), et un court texte précisant ce que vous pouvez faire pendant la conférence, éventuellement un lien vers ce que vous avez déjà écrit.En échange d'un ticket gratuit, les étudiants joueront les mini-reporters (blogs, sites Web,…).

Toutes les infos sur liftconference.com/lift11.

Itinérance de préférences GNU/Linux à l’EPFL

Page 6: Flash informatique 2010 - no 9

flash informatique66 flash informatique

section I&C de l’EPFL, focalisaient leur cursus de programmation sur Java. Il était naturel d’imaginer que ce langage deviendrait à terme hégémonique. Il n’en est rien !Au contraire, on observe aujourd’hui un écosystème de langages très varié. En particulier des langages dits agiles — par exemple PHP, Python ou Ruby —, dotés de systèmes de types dynamiques, sont en pleine progression depuis quelques années. Ces langages compensent une faible performance par un style de programma-tion décontracté, que les programmeurs apprécient et qui accé-lère l’écriture des logiciels.Le langage Java, statiquement typé, est plus rigide que les lan-gages agiles. Quoique disposant depuis quelques années de types génériques, la forme de programmation orientée objet qu’il pro-pose reste relativement simple. Mais Java est une plate-forme autant qu’un langage, et cette plate-forme est remarquable. Au centre, la machine virtuelle (JVM) permet d’exécuter le même code binaire sur toutes sortes d’ordinateurs. Elle prend également en charge la gestion de la mémoire, une tâche difficile que les langages comme C++ délèguent au programmeur lui-même. Si la JVM originale souffrait d’une certaine lenteur, celle de 2010 est une bête de course qui, dans de bonnes conditions, interprète les programmes plus rapidement que l’ordinateur ne le ferait direc-tement – en optimisant le code en fonction des performances mesurées. Quant à la bibliothèque standard, il s’agit d’une boite à outils extrêmement pratique pour le programmeur, complétée par une multitude de bibliothèques tierces, dont la compatibilité apportée par la JVM facilite le partage. Finalement, la rigidité du langage est en partie contournée en supportant le code par des logiciels d’intégration. Par exemple, la norme Java EE ne modifie pas le langage Java, mais exécute les programmes dans un conte-neur qui fournit une série de services facilitant, entre autres, la programmation Web et la communication entre composants.On peut donc observer dans la situation actuelle une double tendance: D’un côté, une grande valeur d’usage dans les plates-formes (Java et .Net de Microsoft, en particulier) du fait de la concentration de bibliothèques et d’outils autour des machines virtuelles. De l’autre côté, un très grand attrait des programmeurs

et des entreprises pour les langages agiles, plus décontractés, moins normatifs et généralement considérés comme plus produc-tifs. Malheureusement, les deux tendances semblaient contradic-toires, car les machines virtuelles imposent de fortes contraintes sur le code binaire qu’elles exécutent, ce qui est contraire aux besoins des langages agiles. D’ailleurs, les langages qui ont essayé avant Scala de résoudre cette contradiction l’ont fait au détriment de la performance ou de la compatibilité.Scala prend acte de cette situation et tente de trouver le bon équilibre entre ces besoins contradictoires par un design et un compilateur à la pointe de la technologie. Pour commencer, la syntaxe de Scala est beaucoup plus flexible et tolérante que celle de Java — un exemple anecdotique, mais fort apprécié, est qu’elle rend les points-virgules optionnels. Mais plus fondamentalement, c’est le système de types qui offre la solution (voir encart page 8). Scala est en effet doté d’un système de types statiques, nécessaire pour satisfaire les exigences de la machine virtuelle. De l’autre côté, pour avoir un langage agile, le compilateur infère automa-tiquement la plupart des types, laissant ainsi le programmeur se concentrer sur ses algorithmes. Pour les utilisateurs plus avancés, Scala offre des types extrêmement polyvalents et expressifs qui permettent, suivant les besoins, soit une grande liberté de concep-tion proche des langages dynamiquement typés soit au contraire une vérification rigoureuse des propriétés du programme.

.. /.. Suite de la première page

Scala

Apprendre Scala

Le point de départ pour apprendre Scala est le site Web du lan-gage: www.scala-lang.org/. La page learning Scala contient une multitude de liens vers diverses ressources d’apprentissage sur le site et sur le Web.❚ Si vous êtes un professionnel de la programmation, la so-

ciété Scala Solutions propose des cours d’introduction ou des cours avancés de Scala.

❚ Si vous êtes étudiants, inscrivez-vous au cours CS-205 de programmation avancée qui est donné en Scala par le laboratoire des méthodes de programmation.

Il existe plusieurs livres sur Scala (en anglais). Pour n’en citer que deux, dont celui de Martin Odersky:❚ M. Odersky, L. Spoon,et B. Venners: Programming in Scala;

Artima.❚ A. Payne et D. Wampler:Programming Scala; O’Reilly.

Un langage de l’EPFL

Le compilateur Scala et sa bibliothèque standard sont des projets libres, portés par le laboratoire des méthodes de programmation de l’EP-FL. Si le cœur du projet, et la majorité des développeurs se trouvent à Lausanne, la communauté Scala fait au-jourd’hui le tour du monde. On trouve des contributeurs en Europe, bien sûr, mais également aux États-Unis, au Japon, ou encore au Bré-sil. En avril de cette année, plus de 150 personnes, chercheurs et utilisateurs de toutes nationalités se sont rendus aux premières journées Scala organisées au Polydôme de l’EPFL.Quant à l’avenir industriel de Scala, il est assuré par Scala So-lutions, une jeune pousse enracinée depuis quelques semaines au parc scientifique de l’EPFL, à quelques dizaines de mètres du laboratoire des méthodes de programmation. Cette entreprise, composée en partie d’anciens membres du laboratoire, fourni du conseil et des services autour de Scala, afin de transférer au mieux sa technologie vers les utilisateurs industriels.Le lien du langage avec l’école est même présent dans le logo, directement inspiré du site de l’EPFL. Scala, qui veut dire es-calier en italien, se devait de mettre en valeur l’architecture locale. Ce sont les escaliers en colimaçon du bâtiment BC qui ont servi de modèle pour le logo.

Page 7: Flash informatique 2010 - no 9

7723 NOVEMBRE 2010 - N°9

Un exemple de programme Scala

On passe à ce programme une série de couleurs, en toutes lettres. Le programme retourne le code hexadécimal corres-pondant à chaque couleur qu’il connaît.object ColorCode {

val colors = Map ( "rouge" -> 0xFF0000, "turquoise" -> 0x00FFFF, "noir" -> 0x000000, "orange" -> 0xFF8040, "brun" -> 0x804000 )

def main(args: Array[String]) { for (name <- args) println ( (colors get name) match { case Some(code) => name + " est encodé par: " + code case None => "couleur inconnue: " + name } ) } }

maines qui évoluaient jusque-là dans une relative ignorance mu-tuelle, a permis un langage unique capable de résoudre un large spectre de problèmes. La programmation orientée objet avancée, utilisée par Scala, introduit des idées telles que les membres abstraits de types, les annotations de type individuel et la composition par mixin. Ensemble, ces techniques permettent de structurer un programme sous forme de services abstraits et modulaires, configurés librement selon les besoins spécifiques du programme. Cette modularité participe à l’extensibilité de Scala, d’autant plus que ces techniques remplissent leur rôle aussi bien pour de simples méthodes que pour des composants considé-rables. Quant à la programmation fonctionnelle, elle apporte en particulier les fonctions de première classe qui font du code une valeur qui peut se déplacer dans le programme. Cela favo-rise l’extensibilité en permettant de contrôler l’exécution du code suivant les besoins. Par ailleurs, les fonctions ouvrent la voie au filtrage de motifs (pattern matching) qui enrichit l’accès aux objets, abordés du point de vue des structures complexes qu’ils forment au lieu de les observer individuellement.La contribution de Scala à la recherche dans les langages vient de la mise en commun de concepts et de techniques jusque-là séparés. Il parvient à unifier des éléments similaires, et à recon-naître ceux qui diffèrent et leur rôle dans l’ensemble. Le résultat de cette recherche est ce que l’on pourrait appeler un langage universel. Ce n’est plus un simple langage d’usage général, comme Java, car il permet par son extensibilité de séparer les tâches et les domaines, et de les résoudre de la façon qui leur convient le mieux. En d’autres termes, la capacité du langage à entourer inti-mement le code avec des librairies est telle que chaque tâche peut être menée à bien dans un milieu qui lui convient spécialement. Certains langages agiles comme Python sont également presque universels, mais Scala crée cette capacité dans le cadre beaucoup plus exigeant d’un système de types statique et de la JVM.

2 Le principal auteur de la bibliothèque d’acteurs est Philippe Haller.

La programmation extensible

Si le positionnement de Scala dans une niche particulièrement compétitive explique sans doute une partie de son succès, il faut également considérer ses qualités propres. Elles sont multiples, mais à la racine se trouve la polyvalence de Scala, sa capacité intrinsèque à s’adapter à de multiples tâches. Cette volonté de polyvalence a été présente dès le début de la conception de Scala. Le rapport technique de 2004 qui présente pour la première fois le langage, mentionne dans son introduction l’idée d’un langage ex-tensible (scalable), où les mêmes concepts peuvent décrire des petits éléments aussi bien que des grands. Pour comprendre ce que cela signifie, revenons encore une fois aux tendances de la programmation actuelle.

L’Histoire nous dit que la construction de la tour de Babel s’arrêta le jour où les hommes cessèrent de parler la même langue. Il se pourrait bien que l’on observe le même effet dans la construction de logiciels. Prenons l’exemple d’une application Web moderne: le nombre de langages utilisé est énorme. On peut y trouver du Ja-vaScript pour le client, du Python pour scripter le serveur, du Java pour la logique métier, du SQL pour l’accès à la base de données, le tout maintenu par du XML. Chaque langage est choisi pour son efficacité dans une tâche spécifique, mais, pour communiquer, ces langages dépendent d’un plus petit dénominateur commun, souvent du XML, ou pire, de simples chaînes de caractères sans réelle structure. Cela complique le déploiement, rend les systèmes fragiles et est une grande source d’erreurs.La conception extensible de Scala ne cherche pas à optimiser son utilisation dans un domaine, mais à le rendre aussi universel que possible. Par exemple, une application Web utilisant la technologie Lift — un logiciel d’intégration Web en Scala — peut être entière-ment définie à l’aide d’un seul langage. En effet, les bibliothèques de Lift fournissent au programmeur des boites à outils spécifiques à chacune des tâches requises, qui sont toutes manipulées avec le même langage: Scala. Ainsi, l’obstacle de la communication dispa-raît, pour ainsi dire, car tous les éléments de l’application parlent la même langue.La prise en compte simultanée de la recherche en programmation fonctionnelle et celle en programmation orientée objet, deux do-

Scala

Page 8: Flash informatique 2010 - no 9

flash informatique88 flash informatique

Chaque utilisateur d'une boîte aux lettres au DIT a désormais la possibilité de changer le nom affiché lors de l’envoi d’un e-mail (jusqu’à présent la modification de ce champ n’était pas possible…).Le Display Name ou Nom Affiché est le champ de l’annuaire Active Directory pour renseigner le champ from des personnes qui envoient un e-mail (en quelque sorte ce Display Name cache ou précède l’adresse e-mail pour plus de lisibilité), il est utilisé par:❚ MS Outlook (uniquement avec le protocole MAPI),❚ le webmail ewa.epfl.ch,❚ Apple Mail (en mode Exchange),❚ Entourage.

Dans le cas de l’utilisation des protocoles POP ou IMAP, les pro-grammes de messagerie (y compris MS Outlook) laissent le choix à l'utilisateur de choisir le nom affiché. Le Display Name est renseigné automatiquement lors de la créa-tion d’un compte au format: Nom Prénom.

C’est également ce champ qui est affiché lors d’une recherche dans la GAL (Global Address List) qui est l’annuaire LPAD interne à MS Exchange et qui référence toutes les adresses e-mail de l’EPFL.Marche à suivre pour changer le nom affiché:❚ se connecter au webmail ewa.epfl.ch;❚ aller sous options (bouton en haut à droite de la fenêtre) puis

Voir toutes les options…;❚ dans les informations sur le compte choisir modifier;❚ Editer le champ nom d’affichage puis enregistrer.Le fait que des Display Name soient modifiés entraînera une désorganisation de la GAL. La recherche par ordre alphabétique deviendra alors problématique puisqu’une partie des utilisateurs sera classée par leur nom, alors qu’une autre le sera par leur pré-nom. C’est pourquoi nous conseillons aux utilisateurs qui utilisent la GAL d’effectuer une recherche en tapant quelques caractères du nom et/ou du prénom de la personne recherchée (sous Out-look, dans la boîte de la recherche de contacts, sélectionner le critère autres colonnes plutôt que Nom uniquement). ■

Qui suis-je ? [email protected] - Domaine IT, responsable du service Exchange

À votre service

Scala Qu’est-ce qu’un système de types ?

Un système de types statique est un composant du compila-teur qui vérifie que les programmes sont cohérents. Cela per-met d’éviter un grand nombre d’erreurs avant même que le programme ne soit exécuté. Pour cela, le compilateur donne à chaque élément du programme un type, qui est une approxi-mation de sa valeur réelle. Par exemple, Fleurette aura le type vache, ce qui permettra au compilateur d’éviter qu’on ne tente de la tondre, mais permettra qu’on la traie.Les types peuvent être plus ou moins puissants dans leur capa-cité descriptive, c’est-à-dire dans la façon dont ils approximent les vraies valeurs. Par exemple, avant les types génériques en Java, il n’était pas possible de différencier une liste de poules d’une liste de vaches, car les deux étaient simplement considé-rées comme des listes sans autres qualifications.Par ailleurs, le système de types peut disposer d’opérateurs plus ou moins puissants pour agir sur les types. Par exemple, en Scala, il est possible de joindre plusieurs types dans un mixin, ce type composé disposant de toutes les propriétés des types originaux. En joignant les types d’un cheval, d’une carriole et d’un cocher, on peut obtenir un type représentant un attelage qui permettra de hennir (du cheval) aussi bien que de fouetter (du cocher).

Un langage pour la programmation distri-buée

Un des exemples les plus convaincants de l’extensibilité du lan-gage a été l’implantation d’une infrastructure de programmation distribuée de premier plan pour Scala 2. En effet, avec la multipli-cation des cœurs dans les processeurs, la programmation dans le nuage et les fermes de serveurs, il n’est aujourd’hui plus possible de programmer sans prendre en compte la distribution des calculs. Plusieurs modèles de programmation distribuée existent, l’un des plus prometteurs étant la programmation par acteurs. Dans ce modèle, certains objets deviennent des acteurs qui disposent de leur propre fil d’exécution (thread) et qui communiquent entre eux à l’aide de messages.Traditionnellement, l’implantation d’un nouveau modèle de pro-grammation aussi fondamental que les acteurs aurait requis le développement d’un nouveau langage afin de ne pas en compro-mettre l’ergonomie ou la performance. Pas en Scala: quoique son système d’acteurs soit largement considéré comme le standard actuel, tant du point de vue des performances que de celui de l’ergonomie, il a été entièrement défini à l’aide d’une bibliothèque. Le langage n’a pas été modifié. Sa capacité d’usage universel a permis au concepteur de la bibliothèque de contrôler l’exécution de façon à en assurer la performance, et de maîtriser le milieu de programmation de façon à en assurer le confort.Aujourd’hui, d’autres implantations d’acteurs, comme Akka ou Lift, sont disponibles pour Scala. Lift fournit des acteurs simplifiés aux performances plus élevées. Akka est un environnement plus

large dont les acteurs ne sont qu’une partie. Cette diversité dé-montre la flexibilité d’un langage universel qui ne force pas l’uti-lisation de certains modèles de programmation, mais permet au contraire d’étendre ceux-ci en fonction des besoins, sans changer le langage. ■

Page 9: Flash informatique 2010 - no 9

923 NOVEMBRE 2010 - N°9

Faites bonne image [email protected], EPFL – Domaine IT, responsable Apple EPFL

Comment faire ?

Best practices in image format choice for the Web and press edition.

Bonnes pratiques dans le choix des formats d'enco-dage pour la publication presse et Web.

Préambule

Cet article s'intéresse à nos habitudes quotidiennes pour la mani-pulation d'illustrations, essentiellement en vue de publication sur le Web, mais aussi sur papier. En observant nombre de publications, notamment les modes d'emploi illustrés par des extraits d'écran, on déplore trop fréquemment la mauvaise qualité des images. S'il s'agit comme souvent de copies d'écran, cela est impardonnable.Avant de comprendre l'origine de ces dégradations picturales, dressons rapidement un catalogue des principales familles de formats d'enregistrement d'images et illustrations, en les classant succinctement en 3 catégories principales (liste non-exhaustive):1 les encodages/compresseurs sans perte (lossless compressor):

FAX , GIF , PNG , TIFF ;2 les encodages/compresseurs avec perte (lossy compressor):

JPEG ;3 les encodages vectoriels: SVG , EPS .

Les lossless

Un des premiers formats répandus d'encodage d'image numé-rique est celui du FAX, contraction de FaCSimilé, ou télécopieur en français, dont la large diffusion remonte aux années 80.L'image est échantillonnée par balayage de ligne, comme la télé-vision analogique, mais en noir et blanc (1 seul bit) avec une réso-lution de 100 points par pouce (dpi).L'importante proportion de surface blanche contenue dans les pages de texte à télécopier a incité à en réduire la quantité d'in-formations transmises, en supprimant les redondances par com-pression entropique.Par exemple, lorsqu'une ligne, ou un fragment de ligne, est consti-tué d'une succession de pixels blancs, on comptabilise alors les octets identiques afin de n'en transmettre qu'un seul, que l'on répétera lors de la restitution jusqu'à reconstituer la ligne origi-nale, ne transmettant ainsi que le nombre d'octets récurrents et

non les octets eux-mêmes. Cette simple méthode s'applique aussi à tout motif répétitif, tel que surfaces noires, ou lignes verticales en peigne.Cette manière de procéder garantit une reproduction intacte de l'image échantillonnée, chaque pixel étant fidèlement restitué, mais ne serait pas applicable à une image couleur de résolution actuelle, car le taux de compression demeure beaucoup trop faible. Néanmoins, ce type d'encodage était adopté en 1984 par logiciel de dessin MacPaint, pour enregistrer des images en noir et blanc, sans niveaux de gris toujours, à une taille fixe de 576x720 pixels.Le cousin du FAX dans le monde informatique, le format GIF (Graphic Interchange Format), proposé en 1987 par l'opéra-teur CompuServe, supporte la couleur indexée et limitée à 256 nuances (8 bits). C'est pourquoi, 9 ans plus tard, un successeur, le format PNG (Portable Network Graphics) est apparu, offrant l'entière palette de 16 millions de couleurs (24 bits) et la transpa-rence (couche Alpha), aujourd'hui indispensable. Il présente aussi l'avantage d'être libre de droits d'auteur, alors que le format GIF est tributaire d'un brevet de Unisys s'appliquant sur la compres-sion LZW. En revanche, le nouveau format PNG ne gère pas les images animées (groupe d'images séquentielles).

Les encodages sans perte sont parfaitement adéquats pour les copies de boites de dialogue à l'écran, dont le fond est qua-siment toujours uni, ainsi que plusieurs éléments les consti-tuant.

Les lossy

Le déferlement d'images photographiques numérisées a nécessité de leur trouver un format d'enregistrement plus adéquat, c'est à dire les comprimant beaucoup plus efficacement.Le format le plus répandu est incontestablement le JPEG appa-ru en 1992, basé sur la transformée cosinus bi-dimensionnelle discrète (DCT) de pavés de 8x8 pixels, afin d'en extraire les fré-quences spatiales. Ensuite, chaque terme de cette matrice car-rée est quantifié différemment en fonction de sa fréquence, afin d'écarter les fréquences spatiales élevées (filtre passe-bas), imper-ceptibles à l'oeil humain à partir d'une certaine distance, rédui-sant ainsi drastiquement la taille du document numérique. Lors de la lecture du document, on applique la transformée cosinus bi-dimensionnelle inverse, afin de reconstruire l'image originale, malheureusement dépourvue de ses composantes de fréquence spatiale élevée, définitivement perdues durant sa compression.Inconvénient majeur de cette méthode, les régions frontière fortement contrastées laisseront malheureusement apparaître des artéfacts caractéristiques et aisément reconnaissables, sorte d'échos visuels, typiquement au contour d'un objet sur fond uni, tel que du ciel bleu.

Page 10: Flash informatique 2010 - no 9

flash informatique1010 flash informatique

Faites bonne image !

Lenna.tiff Lenna.jpg Lenna_diff.png

poids du document 787 KB poids du document 16 KB

Qualité initiale Dégradation imperceptible Différences de luminosité avec l'image reconstruite

Photo

Comparaison des 3 familles d'encodages par domaine d'application

copie.png copie.jpg

poids du document 27 KB poids du document 25 KB

Restitution parfaite Dégradation inacceptable

Copie d'écran

GLOSSAIRE

EPS: Encapsulated PostScript, format créé par Adobe Systems en 1992, en langage PostScript pour décrire des images et des objets vectoriels.

FAX: format d'image pour la transmission de FaCSimilé via ligne téléphonique, normalisé par l'ITU.

GIF: Graphic Interchange Format, introduit en 1987 par CompuServe, premier service commercial sur le réseau télé-phonique.

JPEG: Joint Photographic Experts Group, compresseur à perte et proposé en 1992 par le comité du même nom.

PNG: Portable Network Graphics, spécifi é par le consortium W3 en 1996.

SVG: Scalable Vector Graphics, proposé en 2001 par le consortium W3.

TIFF: Tagged Image File Format, spécifi é en 1986 par Aldus, créateur de PageMaker.

À l'aide des tableaux comparatifs ci-dessous, vous pourrez aisé-ment déterminer le format d'enregistrement le mieux appro-prié à chacun de vos documents. Relevons quelques éléments significatifs: en comprimant la photo avec un taux respectable de

50:1, on ne remarque que peu d'altérations, alors qu'en compri-mant la copie d'écran avec un taux insignifiant, voisin de 1.5:1, l'illustration apparaît déjà excessivement dégradée.

Page 11: Flash informatique 2010 - no 9

111123 NOVEMBRE 2010 - N°9

logo.svg logo.png logo.jpg

poids du doc. 4 KB poids du doc. 50 KB poids du doc. 50 KB

Restitution parfaite même agrandie Apparition d'escaliers Dégradation inacceptable

GraphiqueLe logo EPFL a été préféré à un dessin technique, en raison de sa pureté, mettant mieux en évidence les dégradations caractéristiques propres aux encodages non-vectoriels.

C'est pourquoi ce format n'est résolument pas adapté à l'enregis-trement de texte ou de graphiques, dont les contours déteindront inévitablement comme de l'encre fraîche, dégradant sévèrement le document original.

Les compresseurs avec perte sont parfaitement adaptés à l'enregistrement d'images photographiques, de par leur très fort taux de compression (jusqu'à 100:1), et parce que les artéfacts qu'ils engendrent demeurent imperceptibles sur des images naturelles, à condition de respecter des taux de com-pression acceptables.

Spectre de fréquences d'une DCT bi-dimensionnelle de pavé de 8x8 pixels

Les vectoriels

Les formats vectoriels, sont parfaits pour les graphiques, les sché-mas mécaniques, électriques et logiques, ainsi que les cartogra-phies, car non seulement ils préservent intégralement la qualité du dessin, mais surtout, autorisent de l'agrandir indéfiniment

(zoom), sans jamais laisser apparaître le moindre artéfact, typi-quement de tracés en escalier (aliasing) dus à une résolution finie.La presse recourt fréquemment au format EPS (pour les logos et les textes, mais nous ne l'abordons pas ici, car cet encodage n'est supporté par aucun navigateur Web, seul le format SVG, pro-posé par le consortium W3, étant accepté et affiché.Heureusement, les principaux navigateurs Web, tels que Safari, Chrome, Opera et Firefox, sont désormais capables d'afficher le format SVG. En revanche, seul Internet Explorer de Microsoft ne peut encore l'afficher, sinon au travers de plug-ins supplémen-taires.

Les formats vectoriels confèrent au document graphique la possibilité de l'agrandir infiniment, mais par nature, ne s'ap-pliquent qu'à des dessins synthétiques.

Pour l'histoire, mentionnons que la photo utilisée ici pour illustrer les compressions JPEG est devenue la référence universelle pour tester les algorithmes de traitement d'images depuis 1972, année de sa parution dans le feuillet central de l'édition de novembre du magazine PlayBoy™, son plus grand tirage jamais égalé. Par la suite, cette Playmate Lenna Sjööblom fût même conviée à la conférence du 50e anniversaire de la Society for Imaging Science and Technology (www.lenna.org).

Conclusion

À chaque fois que vous souhaiterez publier une copie d'écran, tant sur papier que sur le Web, préférez le format PNG, et réservez le format JPG exclusivement aux images photographiques.

Référence

en.wikipedia.org/wiki/Comparison_of_graphics_file_formats ■

Faites bonne image !

fréquence spatiale croissante

fréq

uenc

e sp

atia

le c

rois

sant

e

0

Page 12: Flash informatique 2010 - no 9

flash informatique

The fi rst EPFL iPhone application has been selected among the best for online training. It presents crys-tallography in a playful way.

La première application sur iPhone de l'EPFL a été sélectionnée parmi les meilleures pour la formation en ligne. La cristallographie y est présentée de façon ludique.

Pour ceux qui ne sont pas familiers avec le monde de l’éducation en ligne, la Souris d’Or est une distinction qui récompense une innovation suisse en informatique. En 2010, elle a été attribuée à la meilleure application publique pour téléphone mobile destinée à la formation ou à la formation continue et qui fait référence. Le 28 octobre lors de l’exposition WorldDidac à Bâle, le jury a sélec-tionné trois applications, l’une d’entre elles provenant de l'EPFL est destinée aux étudiants en physique et sciences des matériaux.La popularité des téléphones portables représente une opportu-nité pour améliorer l’éducation scientifique tout en utilisant des activités ludiques. Par le biais du jeu, il est possible de développer de nombreux talents et par là de fournir la motivation et l’inté-rêt indispensables à l’acquisition de nouvelles connaissances. Afin d’améliorer l’image de marque des sciences naturelles et de contrecarrer la diminution du nombre d’étudiants dans les cursus scientifiques, nous proposons d’utiliser les téléphones portables dans le but d’illustrer des concepts qui sont souvent perçus comme ennuyeux ou difficiles. Ceci concerne en particulier la physique et la chimie qui se basent sur des théories et des données numé-riques qui peuvent facilement être représentées graphiquement.Dans le but d’illustrer ce nouveau concept, une première applica-tion pour l’étude de la symétrie cristalline sur iPhone - Escher

Mobile - est disponible à l’adresse escher.epfl.ch/iphone/ ou sur l’AppStore. Cette application illustre le concept de symétrie d’ob-jets périodiques à deux dimensions c’est-à-dire les 17 groupes de symétrie planaire . La connaissance de ces concepts constitue un préalable nécessaire à la compréhension de la symétrie des espaces de plus hautes dimensions.Afin d’exercer sa propre créativité, on choisit tout d’abord un des groupes de symétrie. L’aide donne tous les détails sur les carac-téristiques du groupe et les opérations de symétrie. La maille est ensuite indiquée sur l’écran. Il suffit de choisir l’outil de dessin (un point, un atome, une fleur, une coccinelle) pour créer un motif. Chaque déplacement de l’outil sélectionné modifie instantané-ment le motif permettant ainsi d’étudier les différents modes de symétrie, le nombre de points équivalents par symétrie et toute autre propriété associée au groupe sélectionné.Une fois que le motif est terminé, il est possible de l’envoyer à des amis ou de l’inclure dans la collection virtuelle des œuvres.

Concept

L’apprentissage à vie (Lifelong Learning), concept communément admis en Europe ou apprentissage continu, implique une éduca-tion volontaire et motivée par le biais d’une variété de plates-formes différentes. En termes de motivation, une activité ludique, par opposition aux manuels scolaires, est l’outil d’apprentissage le plus efficace. Il est évident qu’une personne ne peut s’asseoir en face de livres durant la vie entière. Par contre, on peut créer un environnement où l’apprentissage a lieu volontairement et de façon continue.Notre principal défi n’était pas de développer un logiciel, mais de transformer une tâche éducationnelle en une fonction agréable de la vie quotidienne au point où elle n’est plus perçue comme éducative. Et sans oublier bien sûr les avantages offerts par la plate-forme iPhone, comme l’écran tactile et l’accéléromètre.

FlashiPhoneSymétrie cristallineIvan.Orlov@epfl .ch, EPFL – SB – Laboratoire de cristallographie et Scientifi c Visual, Gervais.Chapuis@epfl .ch, EPFL – SB – Laboratoire de cristallographie et Stephan Burlot, développeur Coriolis Technologies, www.coriolis.ch

Actualités

Page 13: Flash informatique 2010 - no 9

131323 NOVEMBRE 2010 - N°9

Interface

L’application génère des motifs à l’instar du kaléidoscope où l’uti-lisateur peut déplacer un objet à l’aide d’un outil et le reproduire en temps réel suivant les lois de symétrie sélectionnées. L’utili-sateur dispose au choix de 8 objets et 17 groupes de symétrie et de plus certains objets sont disponibles en plusieurs couleurs. Une fois que l’utilisateur a fait son choix, l’objet qui clignote à l’intérieur de l’unité de répétition (la maille) délimitée par deux paires de lignes parallèles peut être déplacé sur l’écran tactile ce qui entraîne un déplacement de tous les autres objets générés par les règles de symétrie. L’utilisateur peut ainsi observer les effets de symétrie en reproduisant l’objet.Mais comment voir un objet de 24 pixels si vous le masquez par votre doigt ? La solution est que l’objet clignotant est toujours attaché à votre doigt, indépendamment de son emplacement. En d’autres termes, on peut placer son doigt assez loin pour voir l’objet confortablement et l’objet va reproduire en parallèle le mouvement esquissé sur l’écran par le doigt. En appuyant sur le bouton de changement de mode, l’objet laisse une trace. Ainsi vous pouvez créer votre propre modèle selon votre imagination.Un des défis fut de trouver une sélection appropriée d’objets. Pour illustrer le rôle de la symétrie dans son ensemble, quelques-uns des objets doivent posséder une symétrie propre et d’autres pas (objet avec chiralité, par exemple une main gauche vs une main droite). En plus, chaque objet d’une taille de 24x24 pixels doit être facilement reconnaissable, être apprécié par les enfants et libre de tout droit. Certains ont été créés de toutes pièces et d’autres ont été extraits de bibliothèques publiques.Outre le mode de dessin classique, nous avons ajouté deux modes de dessin nouveaux liés à l’accéléromètre de l’iPhone. En mode gravité (Gravity Mode), l’objet principal est mu par la force de gravité et glisse vers le bas lorsque l’iPhone est incliné. Dans un autre mode, l’iPhone génère un nouveau modèle composé de trois objets choisis au hasard et répliqué par les lois de symétrie présélectionnées, chaque fois que vous secouez l’appareil (Shake Mode).Une autre partie importante concerne l’ouvrage de référence rapide expliquant le fonctionnement des règles de la symétrie et comment combiner jeu et apprentissage. Il contient également des illustrations pour toutes les opérations de symétrie et des commentaires aussi adaptés aux enfants.

Codage

Ce logiciel a été écrit en Objective-C, avec l’environnement de développement Xcode qui est distribué gratuitement par Apple.Les principales difficultés rencontrées lors du développement ont été d’une part l’adaptation des règles de symétrie qui ont dû être modifiées afin de respecter la position du point d’origine (0,0) en haut à droite de l’écran, au lieu du coin inférieur droit qui est la norme en trigonométrie.De plus, lors de la sélection de certains groupes de symétrie, il peut y avoir plus de 100 objets (ou sprites) à animer en même temps à l’écran ce qui, compte tenu de la vitesse relativement faible du processeur de l’iPhone 3G (qui utilise un processeur ARM cadencé à 400MHz) a rendu l’écriture de cette partie relativement com-plexe. En effet, l’animation de nombreux objets simultanément à l’écran s’apparente aux difficultés rencontrées lors de l’écriture de jeux vidéos.L’arrivée de l’iPhone 3GS avec son processeur à 600MHz et assisté par un processeur graphique plus puissant a rendu les animations plus fluides.La méthode actuellement utilisée est de pré-calculer les varia-tions de chaque objet (en termes de rotation et réfl exions) et des les afficher dans des calques (CALayer) qui sont affichés à l’écran aussi rapidement que possible.Malheureusement, lors de la sortie de la version 4 de l’OS de l’iPhone, la modification par Apple de certaines des API font que l’animation est extrêmement lente avec cette version de l’OS de l’iPhone. En particulier, le moteur actuel d’animation fait une uti-lisation intensive de la méthode CGContextDrawImage qui, pour une raison non communiquée par Apple, est 25x plus lente avec l’OS 4.0.Une réécriture du moteur de dessin est envisagé pour la pro-chaine version d’Escher Mobile v.2 (prévue janvier 2011), d’une part à cause des modifications apportées par Apple dans l’iOS 4.0 et suivants, et d’autre part afin de tirer partie des écrans plus grands de l’iPhone 4 (écran de 960x640 pixels) et de l’iPad (1024 x 768 pixels).

FlashiPhone – Symétrie cristalline

Page 14: Flash informatique 2010 - no 9

flash informatique1414 flash informatique

Soumission

Pour développer et soumettre l’application à l’AppStore, il a fallu souscrire au programme de développement universitaire pour iPhone (actuellement Programme Universitaire iOS). Contraire-ment aux programmes de développement standards et pour en-treprise d’Apple, celui-ci est gratuit et permet jusqu’à 200 déve-loppeurs de travailler en équipe, de partager des ressources de développement et de travailler avec un certificat commun.On distingue deux rôles principaux pour l’équipe de développeur:a L’agent (l’auteur qui a été accepté dans le programme Apple

pour développeur) est la personne de contact pour l’équipe. Il est responsable pour la gestion des membres de l’équipe, pour l’engagement de nouveaux membres et pour assigner les tâches de chacun. C’est aussi la seule personne qui peut créer et supprimer les identificateurs - certificats digitaux per-mettant aux membres de l’équipe de tester l’application en développement sur leur iPhone. Dès que le développement de l’application est terminé, l’agent la soumet à l’AppStore.

b L’équipe de développement a accès au SDK, aux pré-release des logiciels, forums, vidéos pour tutoriels et peut signaler les problèmes éventuels au support d’Apple.

L’inscription s’est déroulée sans problème jusqu’à la réception du message suivant de la part d’Apple: «We are currently in the process of reviewing your iPhone Developer Program enrollment information. Please fax the Certificate from the Commercial Re-gister (Handelsregisterauszug) of identity for EPFL based on your company form. The fax number for submission of this informa-tion is …».

Quel type de document pourrait faire l’affaire? L’EPFL n’est pas en-registrée dans le registre du commerce et une lettre avec en-tête de laboratoire ne peut pas être acceptée puisqu’elle ne comporte aucun numéro de série et est trop facile à imiter. Après quelques jours et plusieurs tentatives de recherche d’un compromis mu-tuellement acceptable pour prouver l’existence de l’EPFL, il a fallu se rendre à l’évidence et abandonner cette voie. Finalement nous avons abdiqué et opté pour un programme standard de dévelop-pement en payant les 99 USD pour continuer le développement, tout autre détail demeurant inchangé.Pour l’instant tout fonctionne pour le mieux, excepté qu’une adresse e-mail une fois enregistrée dans une base de données d’Apple ne peut être utilisée pour une autre inscription même si la précédente inscription n’est plus ou n’a jamais été valable. Ainsi une adresse e-mail de l‘EPFL a été dégradée et il est surprenant d’apprendre que même le support d’Apple n’est pas en mesure d’éliminer cette adresse de sa base de données. Il a fallu recréer une nouvelle boîte aux lettres!Ce problème mis à part, le processus de soumission s’est déroulé normalement. Voici quelques repères sur la durée de la soumission de notre application pour la première fois:❚ application pour le programme de développement universi-

taire: attente de 2 semaines. Demande d’extrait du registre de commerce. Abandon;

❚ application pour le programme de développement standard: 99 USD. Attente de 2 jours pour approbation;

❚ installation du certificat pour les tests (provisioning profile for Ad Hoc distribution): 2 heures;

❚ création de l’icône pour l’application Escher et descriptif pour l’AppStore: 4 heures;

❚ préparation des fichiers pour soumission, copies d’écran in-cluses, support pour site web et correspondance: 1 jour;

Les images suivantes sont requises:a icône png 57X57, arrondi et effet sont ajoutés automati-

quement,b image tiff/jpeg 512x512,c jusqu’à 4 copies d’écran de l’application (on l’obtient en

pressant simulta-nément le bouton de démarrage et le bouton d’accueil de l’appareil);

❚ soumission de l’applica-tion: attente de 3 jours pour approbation.

Escher mobile a été publié le 9 mars 2010 et à fi n octobre il a déjà été téléchargé plus de 2500 fois.La copie d'écran indique les pays en tête de liste des téléchargements pour les 26 dernières semaines.

Notes historiques

Dès 1987, de nombreux cristallographes et autres spécialistes ont apprécié le logiciel Escher Sketch écrit pour Macintosh par Terry Flaherty de l’Université Loyola à la Nouvelle Orléans. Ce logiciel attractif avait pour but de concevoir des décorations périodiques. Cette application s’est vite avérée comme un excellent outil d’enseignement pour illustrer le cours de base de cristallographie. Il était facile de sélectionner l’une des 17 possibilités de symétrie dans l’espace à deux dimensions (les 17 groupes d’espace à deux dimensions ou groupes planaires) et d’utiliser les opérations de symétrie pour générer automati-quement des motifs périodiques à deux dimensions. Avec les différents outils disponibles, il était donc facile de générer tous les motifs périodiques possibles de papiers peints.Afin de rendre un tel programme facilement accessible aux étu-diants et enseignants de la cristallographie ainsi que d’autres personnes intéressées dans l’art de décorations périodiques, le professeur Gervais Chapuis, alors directeur de l’Institut de cristallographie de l’UNIL et Wes Hardaker ont crée un nou-veau logiciel, Escher Web sketch, dans le langage Java afin d’être directement accessible sur le Web. Ce logiciel permettait d’exploiter la couleur et d’autres outils ont été ajoutés pour fa-ciliter la création de structures cristallines à deux dimensions.En 2006, G. Chapuis et ses deux collaborateurs - I. Orlov et N. Schoeni - ont publié la première version d’ Escher Web sketch pour téléphones mobiles compatibles Java 2.0, Escher Mobile (escher.epfl.ch/mobile/). Cette application est référencée sur de nombreux sites dédiés à la formation par mobile interposé et dans de nombreuses publications scientifiques. Escher Mobile permet de soumettre les nouvelles créations à la galerie Web sur le site Web de l’EPFL. Cette application fait partie des outils recommandés au cours de cristallographie.

FlashiPhone – Symétrie cristalline

Page 15: Flash informatique 2010 - no 9

151523 NOVEMBRE 2010 - N°9

GLOSSAIRE

Cristallographie: science qui se consacre à l’étude de la matière condensée à l’échelle atomique. Une grande partie de cette matière existe sous forme cristalline: minéraux et minerais, métaux et alliages, céramiques et dents, os, pra-tiquement tous les produits chimiques inorganiques et organiques, vitamines, protéines, virus… Pour cette raison, la cristallographie est une branche essen-tiellement interdisciplinaire qui empiète sur la physique, la chimie, les sciences de la vie et des matériaux ainsi que les géosciences. E

Opérations de symétrie: La symétrie est une caractéristique des figures géométriques, des équations et d’autres objets. On dit qu’un tel objet est symétrique par rapport à une opération donnée, si cette opération appliquée à l’objet, le laisse inchangé ou invariant. Deux objets sont symétriquement équivalents par rapport à un groupe donné d’opérations de symétrie si l’un est obtenu à partir de l’autre par l’une des opérations. Dans l’espace à deux dimensions, les opérations de symétrie sont essentiellement les translations, les rotations, les réflexions et les glisse-ments (p. ex. traces régulières de pas dans la neige). E

Groupes de symétrie cristallogra-phiques planaires: un groupe planaire (ou papier peint) est un concept mathématique permettant de classer tout type de décoration répétitive (pério-dique) dans le plan. De telles décora-tions se trouvent fréquemment dans l’architecture et dans les arts décoratifs. L’étude mathématique des décorations révèle qu’il n’existe que 17 types ou groupes différents. Ces groupes sont liés aux groupes cristallographiques plus complexes en trois dimensions, aussi appelés groupes d’espace. E

E = extrait d’Escher Mobile

Version future

Avec son grand écran et un processeur bien plus puissant, l’iPad est une excellente plate-forme pour la formation en ligne. Des jeux mathématiques au visualisateur d’anatomie, il peut être utilisé pour une variété de sujets et de niveaux d’instruction- de l’école enfantine à l’éducation supérieure.Cela est particulièrement vrai pour la physique, la chimie et la science des matériaux où la connaissance peut être représentée graphiquement. La cristallographie empiète sur ces trois disci-plines et s’adapte bien aux outils de la formation en ligne.Nous préparons une nouvelle version d’Escher Mobile qui est pré-vue pour janvier 2011. Outre l’utilisation des nouveaux outils -

comme le dessin vectoriel - nous prévoyons un mode test où l’étu-diant pourra tester ses connaissances en identifiant la symétrie de certains motifs. Il est également prévu une intégration avec Face-book, par l’intermédiaire duquel les nouvelles créations de motifs pourraient être soumises dans le but de promouvoir la science.Nous considérons que ces développements représentent une avancée pour un environnement d’apprentissage plus attrayant, ce qui aura pour conséquence d’améliorer la performance dans le domaine de l’éducation scientifique.En conclusion nous encourageons vivement les enseignants de l’EPFL à considérer les avantages des outils mobiles dans leurs domaines respectifs. ■

Le DIT vous forme !EPFL – Domaine IT, l’équipe des cours

Profitez des dernières formations de cette année, il reste des places dans plusieurs cours:❚ iPhone: pour développer votre propre application,❚ Indesign: pour l’édition et la mise en page de grands docu-

ments, plaquettes ou flyers,❚ Inform: pour créer des formulaires vite fait-bien fait,❚ Outlook et Mail: pour gérer sa messagerie et son temps,❚ PowerPoint: pour faire un beau diaporama pour Noël,❚ LabVIEW: pour l’acquisition et le traitement de données,

À votre service

❚ Excel: pour faire vos tableaux et accessoirement… vos comptes,

❚ Et bien sûr toujours des cours Jahia 6 pour vous aider dans cette nouvelle interface.

Vous trouvez tous les détails sur notre site dit.epfl.ch/cours, vous pouvez réservez votre place par mail à [email protected] et nous vous répondons volontiers tous les matins au 021.69.322.44. ■

FlashiPhone – Symétrie cristalline

N'oubliez pas la réunion du 25 novembre 2010 à 14h15 en salle SG0211 ! Les sujets à l'ordre du jour: la gouvernance du système d'information de l'EPFL; IT@EPFL: survol des six dernier mois; Web 2010: l'envers du décor; retour sur l'opéra-

tion de migration à Exchange 2010; puis les questions/réponses et les discussions/échanges autour d'un verre.

ernannnnnnnnnnnce du péra-

Page 16: Flash informatique 2010 - no 9

flash informatique1616 flash informatique

How to build ASIC’s and FPGA using XSLT language.

Comment exploiter les modèles XSLT dans la concep-tion des ASIC et FPGA .

Introduction

Pensé et initié par le professeur Claude Magliocco, le projet HDL_Draw a été développé à l’Ecole d’ingénieurs et d’architectes de Fribourg par M. Jean Priso Songo, ingénieur ETS, avec la collabora-tion de M. Philippe Crausaz ingénieur EPFL pour les tests unitaires et fonctionnels.Le premier objectif du projet est la conception d’un compilateur simple et accessible des points de vue fonctionnel et financier, capable de générer du code HDL à partir d’un schéma électro-nique. Le produit à réaliser devra donc éviter la complexité des outils de développement classique, afin de focaliser l’attention de l’utilisateur sur son travail de conception.Le second objectif est la définition d’une méthodologie simple et efficace, qui permettra aux professeurs de disposer d’un outil didactique capable de les assister dans l’enseignement des circuits numériques intégrés.

Mais qu’est donc le VHDL?

Le VHDL a été développé dans les années 80 par le départe-ment américain de la défense, en vue de normaliser les langages de description matériel destinés à représenter le comportement ainsi que l’architecture d’un système électronique numérique.Les unités de conception primaires du langage correspondent à la vue externe des composants.

ARCHITECTURE DESCRIPTION

ENTITE

Définition ducomposant

Vue externedu composant

La spécification d’entité, très proche de la représentation symbo-lique du composant en schématique, définit les signaux d’entrées-sorties, leur type, ainsi que leur mode input, output, in-output, et les procédures qui y sont éventuellement associées. La généricité permet de paramétrer ces définitions.Ses unités de conception secondaires correspondent aux algo-rithmes des modèles et des sous-programmes. L’architecture est

relative à une entité. Elle contient les fonctionnalités et éventuel-lement les relations temporelles du modèle, dans une description en vue de la synthèse. Cette définition est liée à la technologie. La description est une unité de conception primaire qui permet de créer un couple entité-architecture. Plusieurs architectures pou-vant être associées à une entité.

Modéliser avant de réaliser, là est la ré-ponse

Actuellement, tout concepteur de système électronique de puissance doit répondre à des contraintes industrielles et éco-nomiques très sévères. Afin de garantir le succès ou, dans une moindre mesure, réduire le risque d’erreurs dans des systèmes de plus en plus complexes, l’ingénieur doit faire appel aux méthodes de modélisation et de simulations.La modélisation permet de vérifier par simulation que le système en conception répondra au cahier des charges, mais elle permet aussi d’en optimiser les performances.Les langages de modélisation numériques sont des langages de description matérielle de haut niveau, communément appelés HDL. Le HDL prend en charge la description formelle d’un circuit logique, dans le but de concevoir des ASIC et FPGA .Une modélisation efficace repose sur des outils performants, au mieux graphiques pour en faciliter l’usage, et peut se résumer en cinq étapes (voir tableau de la page suivante).

Pourquoi HDL-Draw?

À la lumière des moyens à disposition de l’ingénieur pour assumer les contraintes techniques de ses projets, force est de constater que la mise en œuvre de ces moyens serait vaine si leur exploita-tion industrielle s’avère non rentable.Parmi les outils de rentabilité d’un projet industriel, on peut citer:❚ la capitalisation des connaissances,❚ la réutilisation des modèles,❚ la modularité des systèmes,❚ l’automatisation ou l’industrialisation des processus répétitifs.Tous ces moyens ont deux objectifs en commun: la réduction du temps de réalisation, c’est-à-dire le temps entre le cahier des charges et la fabrication du produit, et l’optimisation des res-sources humaines et de sa formation. Ces deux objectifs restent de mise, quel que soit le milieu professionnel académique, ou industriel.Puisqu’il faut assurer la rentabilité et optimiser le temps de for-mation, on peut imaginer qu’un outil qui prend en charge tout ou partie du travail à réaliser est d’un apport appréciable, tant pour l’ingénieur que pour le chef de projet.

HDL_Draw, outil de conception de circuits numériques intégré[email protected], Collaborateur scientifique à l'École d'ingénieurs et d'architectes Fribourg

Analyse

Page 17: Flash informatique 2010 - no 9

171723 NOVEMBRE 2010 - N°9

Réalisation

L’éditeur de schématiqueDès les premières analyses du projet, il était clair qu’il ne serait pas possible de développer un éditeur de schéma dédié, et encore moins de s’appuyer sur un éditeur payant. Le projet s’est donc naturellement orienté vers les produits open source.Plusieurs applications potentiellement aptes à satisfaire les exi-gences ont été testées: Inkscape, Dia, Sodipodi, toutes avec des avantages certains dont notamment le SVG qui est une des-cription d’images vectorielles, codées en XML.Le choix s’est finalement porté sur OpenOffice et plus précisé-ment sur OpenDraw qui proposait de meilleurs atouts. En plus d’être libre, gratuit et multi-plateformes, l’application bénéficie d’un excellent support. Elle est facile à utiliser et jouit d’une bonne réputation dans la communauté estudiantine. Mais son meilleur atout est sa compatibilité ODF. On verra plus loin comment cet avantage a orienté la suite du projet. ODF est l’acronyme de OpenDocumentFileformat, un dérivé du XML-Projet dont est issu le langage XML. Concrète-ment, cela signifie qu’un document OpenOffice, comme tout fichier compatible ODF, est transformable ou exportable en fichier XML.

Le modèle de données XML - HDLXML est un langage qui sert essentiellement à stocker et à transfé-rer des données de type texte structurées en champs arborescents.Le modèle de données étant défini, la prochaine étape fut de typer chaque nœud XML et ses attributs à un objet HDL.Par exemple, chaque objet rectangle dans XML, représentera une entité HDL. Les attributs Nom, Titre et Description du nœud se-ront respectivement associés au nom, à l’architecture et au label de l’entité.

De XML à HDLLes choix de l’éditeur et le modèle des données effectués, il reste encore à déterminer comment transformer les informations contenues dans le fichier XML en code VHDL. Une feuille de style

C’est ce que va proposer HDL-Draw: générer automatiquement du code pour faire gagner du temps à l’ingénieur et à l’étudiant.HDL-Draw est donc conçu pour assister le concepteur là où il en a le plus besoin, à savoir les éditions de la schématique et du code VHDL résultant. Contrairement aux outils de référence dans le design des circuits intégrés, l’interface graphique de HDL-Draw est sobre et intuitive. On est loin de la complexité des produits propriétaires, certes plus élaborés, mais coûteux et peu adaptés à l’enseignement.

Le mode opératoire est simple. Un bouton permet à l’utilisateur de sélectionner le schéma électronique de son projet. Ensuite on transforme le schéma en un équivalent XML à l’aide du bouton Générer le XML.Le code VHDL est produit et affiché sur le navigateur Web par défaut de l’ordinateur en cliquant sur le bouton Générer le HDL.Même si la portabilité vers d’autres plates-formes n’a pas été spécifiée, HDL_Draw pourrait aisément s’adapter pour fonction-ner sous Linux. Pour cela, il suffira de coder l’interface en Java par exemple. La maintenance et l’intégration des futures options sont assurées en modifiant directement le modèle XSLT .

Etapes Outils Commentaires

1. Description symbolique du cir-cuit logique.

Editeur graphique de schéma électronique

Cette étape n’est pas indispensable, mais facilite considérable-ment la compréhension du système et la lecture des modèles.

2. Description comportementale du circuit logique en langage VHDL.

Editeur de texte Cette étape est l’une des plus consommatrice de ressources. Ici l’ingénieur écrit ligne après ligne, le comportement de son modèle.

3. Traduction de la description VHDL en fonctions logiques.

Outil de synthèse Le synthétiseur génère en sortie une liste d’interconnexion de composants logiques de base en fonction de la technologie choisie.

4. Routage. Routeur Le placeur-routeur crée à partir du fichier généré par le syn-thétiseur, un fichier spécifique à la technologie cible qui décrit les connexions entre les composants élémentaires à disposition dans le circuit programmable.

5. L’intégration physique de la des-cription.

L’intégrateur L’intégration physique de la description est effectuée à partir de ce fichier spécifique dans le circuit programmable.

HDL_Draw, outil de conception de circuits numériques intégrés

les cinq étapes pour une modélisation efficace

Page 18: Flash informatique 2010 - no 9

flash informatique1818 flash informatique

Exemple d’une machine d’états réalisée avec HDL_Draw, schéma électronique (le code VHDL correspondant est visible dans la version Web de cet article ditwww.epfl.ch/SIC/SA/SPIP/Publications/spip.php?article2218)

HDL_Draw, outil de conception de circuits numériques intégrés

Idle_State0Enable_Cnt_o <= '0';Up_o <= '0'; Down_o <= '0'; if Enable_i='1' then if A_i='1' and B_i='0' then Up_o <= '1'; Down_o <= '0'; Enable_Cnt_o <= '1'; elsif A_i='0' and B_i='1' then Up_o <= '0'; Down_o <= '1'; Enable_Cnt_o <= '1'; end if;end if;

Idle_State1Enable_Cnt_o <= '0';Up_o <= '0'; Down_o <= '0'; if Enable_i='1' then if A_i='1' and B_i='1' then Up_o <= '1'; Down_o <= '0'; Enable_Cnt_o <= '1'; elsif A_i='0' and B_i='0' then Up_o <= '0'; Down_o <= '1'; Enable_Cnt_o <= '1'; end if;end if;

Idle_State3Enable_Cnt_o <= '0';Up_o <= '0'; Down_o <= '0'; if Enable_i='1' then if A_i='0' and B_i='1' then Up_o <= '1'; Down_o <= '0'; Enable_Cnt_o <= '1'; elsif A_i='1' and B_i='0' then Up_o <= '0'; Down_o <= '1'; Enable_Cnt_o <= '1'; end if;end if;

Idle_State2Enable_Cnt_o <= '0';Up_o <= '0'; Down_o <= '0'; if Enable_i='1' then if A_i='0' and B_i='0' then Up_o <= '1'; Down_o <= '0'; Enable_Cnt_o <= '1'; elsif A_i='1' and B_i='1' then Up_o <= '0'; Down_o <= '1'; Enable_Cnt_o <= '1'; end if;end if;

Liste sensibilité sorties:enable_i,A_i,B_i,

Liste sensibilité etat_futur:enable_i,A_i,B_i,

Enable_i='1' and A_i='0' and B_i='1'

Enable_i='1' andA_i='0' and B_i='0'

Enable_i='1' andA_i='1' and B_i='0'

Enable_i='1' and A_i='1' and B_i='1'

Enable_i='1' and A_i='1' and B_i='0'

Enable_i='1' andA_i='0' and B_i='1'

Enable_i='1' andA_i='1' and B_i='1'

Enable_i='1' andA_i='0' and B_i='0'

Enable_i='0'

Enable_i='0'

Enable_i='0'

Reset_i='1'

InitialisationUp_o <= '0';Down_o <= '0';Enable_Cnt_o <= '0';

Enable_i='1' and A_i='1' and B_i='0'

Enable_i='1' and A_i='0' and B_i='0'

Enable_i='1' and A_i='1' and B_i='1' Enable_i='1' and

A_i='1' and B_i='0'

Enable_Cnt_o|Enable_Cnt_s

Down_o|Down_s

Up_o|Up_s

reset_i/h|reset_i/h

A_sy_i|A_i

start_sy_s|Enable_i

B_sy_i|B_i

clk_i/r|clk_i/r

QEI_M_etat

Nœuds

Attribut

Modèle XML des objets HDL_Draw

Code XML résultant du Registre. On peut aisément identifier les valeurs saisies dans le schéma.

<draw:rect draw:name="Registre" draw:layer="layout" svg:width="5.226cm" svg:height="7.023cm" svg:x="11.274cm" svg:y="3.477cm">

<svg:title>behave</svg:title> <svg:desc>reg1</svg:desc> <text:p text:style-name="P1"/> <text:p text:style-name="P1"/> <text:p text:style-name="P1">Registre</text:p></draw:rect>

Représentation d’un Registre dans OpenDraw

Page 19: Flash informatique 2010 - no 9

191923 NOVEMBRE 2010 - N°9

scriptée en XSLT assurera cette fonctionnalité, tandis qu’un navi-gateur Web se chargera de compiler et d’afficher le résultat.

Schéma de principe

-------------------------------------------------------------- Registre FOR Cmd_Pont------------------------------------------------------------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.numeric_std.all;ENTITY Registre IS PORT( );END ENTITY Registre;ARCHITECTURE behave OF Registre ISBEGINReg1: process( )END behave;

Code VHDL résultant du schéma du registre

Sur le principe du registre présenté, s’en est suivi l’intégration des différents processus du VHDL, associés aux objets XML pré-typés.Ainsi, objet après objet, nous avons construit des machines d’états, intégré la notion de couche de schématique, traité les signaux in-ternes, les entités génériques, le mapping des ports, etc. Il est aussi prévu des champs de saisie permettant au concepteur d’injecter directement du code HDL de description ou de déclaration dans l’entité de son choix. Cette fonctionnalité augmente considéra-blement la souplesse de l’outil dans des cas de conception actuel-lement non couverts par l’application. Les enseignants pourront aussi s’appuyer sur ce binôme objet symbolique/code résultant pour expliquer facilement lors des travaux pratiques la conception de divers composants et systèmes numériques.

Conclusion

À la fin de ce projet, force est de constater que tous les objectifs ont été atteints dans les délais. Certes il y a eu quelques doutes liés aux limites du langage XSLT et à l’usage des versions d’Inter-

net Explorer inférieures à 6. Les deux problèmes ont été résolus en consultant un grand nombre d’ouvrages et en privilégiant le navigateur Opera. Pour information, il existe un plugin Microsoft qui permet aux anciennes versions d’Internet Explorer d’interpré-ter le XSL.Il est à rappeler que la technologie privilégiée dans le développe-ment de ce projet est une parmi d’autres aboutissant aux mêmes résultats, mais sans doute avec plus de complexité. On aurait pu par exemple imaginer l’usage d’une base de données pour stocker les nœuds XSL ou développer des librairies de composants dans le choix d’une programmation objet.Un workshop regroupant une douzaine de professeurs et collabo-rateurs de l’EIA-FR ainsi que des invités des autres HES-SO a été organisé au mois d’août. D’un point de vue général le produit a séduit par sa simplicité, son efficacité et son originalité. Cepen-dant, quelques remarques portant à éprouver la saisie des sché-matiques ont été émises. Ces idées ainsi que quelques autres en cours de spécification seront intégrées dans la prochaine version de HDL_Draw.Notre souhait est de créer une communauté autour de cet outil et, si possible, le promouvoir comme outil didactique de choix dans l’enseignement et la conception des circuits numériques intégrés.D’ores et déjà, quelques projets de l’Ecole, développés avec des produits commerciaux ont positivement migrés sous HDL_Draw.

Mes remerciements vont en premier au professeur Claude Ma-gliocco ([email protected]) et à l’EIA-FR qui ont porté et partiellement financé ce projet pendant plus de six mois; à Phi-lippe Crausaz ([email protected]) qui a activement partici-pé à la réalisation des tests unitaires et fonctionnels; et au profes-seur Omar Abou Khaled ([email protected]) responsable des échanges internationaux à l’EIA-FR, pour la relecture et la publication de ce projet.

Bibliographie

1. Claude Magliocco - EIA Fribourg, 2004. VHDL Synthétisable pour circuits numériques intégrés.

2. Patrice Nouel – ENSEIRB Bordeaux, Langage VHDL et concep-tion des circuits

3. Etienne Messerli – HEIG Vaud, 2007. Manuel VHDL Synthèse et simulation

4. Yannis Haralambous - ENST Bretagne, Maitriser XML et XSLT.5. Victor Stinner – 2005, Programmation avec XSLT ■

HDL_Draw, outil de conception de circuits numériques intégrés

GLOSSAIRE

ASIC (Application Specifi c Integrated Cir-cuits): circuit intégré (micro-électronique) spécialisé. W

FPGA (Field Programmable Gate Array): réseau de portes programmables in situ. W

HDL (Hardware Description Language): langage informatique permettant la des-cription d'un circuit électronique. W

SVG (Scalable Vector Graphic): format de données conçu pour décrire des ensembles de graphiques vectoriels et basé sur XML. W

VHDL (Very high speed integrated circuit Hardware Description Language): lan-gage de description matériel destiné à représenter le comportement ainsi que l'architecture d’un système électronique numérique. W

XML (eXtensible Markup Language): langage informatique de balisage

générique. Il sert essentiellement à stocker/transférer des données de type texte Unicode structurées en champs arborescents. W

XSLT (eXtensible Stylesheet Language Transformations): langage de transfor-mation XML de type fonctionnel. W

W = tiré de Wikipédia

Page 20: Flash informatique 2010 - no 9

flash informatique

Récupération de données avec un live CD 100% libre Pablo Ulises Peña Dall’Orso, pablo.pena@epfl .ch, EPFL, membre de GNU Generation

Comment faire ?

Read this article to learn how to use a Live CD in an easy and rapid way to recover data from a per-sonal computer running MS Windows that does not start anymore. gNewSense the operating system to record on the CD, distributed under the GNU GPL, is available for immediate download at no charge. No authorization request or registration needed.

Apprenez comment retrouver et sauver vos fichiers depuis un ordinateur sous MS Windows qui ne dé-marre plus. gNewSense, le système d'exploitation pour graver le CD, distribué sous la licence GNU GPL, est disponible sans coût pour le téléchargement immédiat. Pas besoin de demande d'autorisation ou d'inscription.

Avec la transmission fréquente de fichiers de tout type depuis Internet, le réseau ou depuis une clé USB, il peut arriver que notre ordinateur soit infecté par un virus informatique ou un ver infor-matique (worm). Si vous utilisez un système d’exploitation tel que MS Windows vous êtes spécialement vulnérable. Même avec un logiciel antivirus commercial installé, un virus peut infecter votre machine. Dans certains cas, une fois le virus activé, il se peut que les fichiers du système d’exploitation soient tellement endomma-gés qu'il ne soit plus possible de démarrer une session Windows.Dans pareille situation, vous pouvez paniquer si vous avez gar-dé tous vos documents de travail seulement sur le disque de la machine infectée. Si votre ordinateur est un ordinateur de travail à l’EPFL, vous pourrez demander l’aide du service informatique de votre faculté. Mais que faire si c’est votre machine privée où vous gardez vos fichiers audio, photo, vidéo personnels qui est infectée? Vous pourriez chercher une entreprise de services infor-matiques externes, mais elle risque d'être chère.Nous verrons dans cet article comment vous pourrez démarrer votre ordinateur, accéder au disque dur et faire une copie des dos-siers où vous gardez vos documents sur un disque externe.Dans mon article du FI 8 du 10 octobre 2010 (ditwww.epfl.ch/SIC/SA/SPIP/Publications/spip.php?article2201), j’avais mention-né l’utilisation d'un LIVE CD qui est un CD contenant un sys-tème d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Le système d’exploitation choisi était gNewSense, la raison principale étant que ce système est 100% libre et recommandé pour cette raison par la Free Software Foun-dation, institution qui est à la tête du mouvement du logiciel libre et qui est le seul détenteur du copyright sur la licence GNU GPL sous laquelle est distribué le noyau Linux et la majorité des logi-ciels libres.

Procédure

1 Téléchargez la distribution gNewSense du système d’exploita-tion GNU/Linux: www.gnewsense.org/Main.fr/HomePage.

2 Gravez le fichier sur un disque avec l’option graver une image.3 Une fois que vous avez gravé l’image, insérez le CD dans le

lecteur de l’ordinateur où se trouvent les données à récupérer.4 Redémarrez l’ordinateur. Vous devez modifier l’ordre de dé-

marrage pour faire que la machine démarre depuis le CD. 5 Après le démarrage la langue par défaut des menus est l'an-

glais. Il faut choisir la langue du clavier: System --> Prefe-rences --> Keyboard, ouvrir la fenêtre Keyboard prefe-rences, onglet Layouts, cliquez sur Add; puis, option Layouts, choisissez Switzerland; Variants , choisissez French et enfi n Add.

6 Une fois l’ordinateur démarré et la langue du clavier choisie, branchez un disque dur externe, avec suffisamment d’espace disponible, vers lequel vous allez transférer vos données.

7 Pour accéder au disque dur de l’ordinateur dans la barre des tâches sélectionnez Places. Vous verrez au milieu de la liste les disques ou partitions disponibles avec leur taille.

Si vous cliquez sur la partition qui contient vos fichiers un raccourci s’affichera sur le bureau. Allez vers cette partition ou disque et vous verrez tous vos dossiers gérés depuis Windows, spécialement le dossier Documents and Settings où vous trouverez les dossiers pour tous les utilisateurs de l’ordinateur.

8 Copiez et collez votre dossier dans le disque dur externe. Pa-tientez quelques minutes pendant la copie.

Une fois la copie finie, arrêtez l’ordinateur. Débranchez le disque dur externe et vérifiez depuis un autre ordinateur que toutes les données sont bien sur ce disque. Amenez votre ordinateur en panne chez un technicien ou si vous savez le faire, vous pouvez maintenant réinstaller le système d’exploitation.Pour installer gNewSense, lisez mon article précédent dans FI8/2010. ■

Page 21: Flash informatique 2010 - no 9

212123 NOVEMBRE 2010 - N°9

Un mot: filtre — trois regards: mathématique, informatique et illustrateur.

Filtre – MOJ

À part ceux des cigarettes, du café et de l'huile à frire, il y a aussi les filtres des mathématiciens. Ils ont été inventés (et baptisés Kränze) par Leopold Vietoris en 1921, puis, comme tout le monde avait ignoré Vietoris, réinventés en français par Henri Cartan en 1937. Leur but était de mettre à disposition des analystes une notion de limite plus générale et plus souple que celle – basée sur les suites – qu'on apprend dans les cours de première année. La notion de filtre fut adoptée et diffusée par Nicolas Bourbaki, célèbre mathé-maticien imaginaire, sous le nom duquel un groupe de jeunes mathé-maticiens francophones, en 1939, commença à publier un immense traité qui finit par changer le visage des mathématiques. Au début, tou-tefois, Bourbaki voulait seulement écrire un traité d'analyse plus ri-goureux que ceux de Goursat et de Valiron, à l'époque très en vogue. Un bourbakiste (Pierre Samuel) compo-sa à ce propos le sonnet que voici, qui nous laisse dans l'obscurité quant à la définition de filtre, mais nous éclaire sur l'enthousiasme des bourbakistes.

LE FILTREÔ puissant, ô formel, ô toi clair Bourbaki,Vas-tu nous déchirer dans un accès de criseLe Goursat filandreux, miroir de l’Analyse,Défenseur attardé d’un passé qui a fui?

La suite d’autrefois se croyait l’infini,Inutile, et que sans la comprendre utiliseLe maladroit conscrit, lui que Valiron griseDe son cours ténébreux qui distille l’ennui.

Ignorant les secrets de la TopologieÀ l’espace infligée, et toi qui l’étudies,Il nage dans l’erreur où son langage est pris.

Il contemple étonné, comme enivré d’un philtre,L’adhérence, un manteau qu’il n’a jamais compris,Que vêt, sur un compact, immobile, le FILTRE.

[email protected], EPFL – SB, professeur [email protected], EPFL - Domaine IT, Responsable sécurité [email protected], géologue et illustrateur

Analyse

Filtre – MO

Les boucles, while ( ... ) ..., et les tests, if ( ... ) then ... else ..., font partie des éléments de base de l'informa-tique, c'est pourquoi ils se retrouvent dans tous les langages de programmation et qu'ils sont implémentés par des instructions de bas niveau dans les processeurs de tous les ordinateurs. En les combinant, en plaçant un test à l'intérieur d'une boucle, on obtient un filtre rudimentaire qui, selon le résultat du test, ac-cepte, rejette ou peut-être transforme chaque élément traité par la boucle. Autant dire que tout ou presque en informatique peut

être abordé à travers cet aspect du filtrage. Par exemple en in-fographie, on traitera chaque pixel d'une image en abaissant l'intensité du rouge si elle dé-passe un certain niveau, obte-nant ainsi un filtre atténuateur. Ou bien encore – puisque je suis la risée de certains de mes col-lègues pour mon attachement suranné, parait-il, à la ligne de commande – je me dois de mentionner cette magnifique invention d'Unix qu'est le tuyau (pipe en jargon anglo-informa-tique), permettant de joindre par le symbole | une série de

filtres, le résultat de chacun étant fourni en entrée au suivant: grep toto * | cut -d: -f1 | uniq -c | sort -nme donne, triés par nombre d'occurrences, les fichiers du réper-toire courant contenant la chaîne toto (le premier filtre trouve les occurrences, le second retient les noms des fichiers, le troisième compte les occurrences et le dernier les classe par nombres).Enfin, pour prendre un exemple plus proche du sens étymolo-gique de filtre (un bout de feutre utilisé par les alchimistes pour retenir les scories solides mélangées à leurs élixirs) consi-dérons l'antispam MailCleaner: dans ma quarantaine, je ne vois même pas les messages refusés par le filtre SpamHaus (une base de données d'adresses IP d'ordinateurs n'envoyant que du spam), mais je retrouve des messages retenus par les filtres bayésiens (répertoriant les mots figurant souvent dans les messages qui ont par ailleurs été classés comme spam), les filtres sur les liens (le message pointe vers un site Web publicitaire) ou enfin les filtres comportementaux (le formatage, le thème, la falsification des en-têtes démasquent le spammer). ■

Page 22: Flash informatique 2010 - no 9

flash informatique

Comment faire ?

Anybody managing a farm of Linux machines dreams of an automatic installation method, and any user willing to install Linux on his computer would be pleased to have an assisted method of installation, or at least, to avoid burning CDs.

Toute personne qui gère un parc de machines Linux rêve d’une méthode d’installation automatique, et chaque utilisateur désireux d’installer Linux sur son poste au travail serait ravi d’avoir une méthode d’installation assistée ou, au moins, d’éviter de gra-ver des CD.

Installation (semi-)automatique de postes de travail Linux avec PXE et Grub2

PrérequisUn serveur DHCP doit être présent dans votre subnet. Ce serveur nécessitera les ajouts suivants:

next-server <VOTRE_SERVEUR_DE_BOOT>@filename "grub2pxe"@

Il faut également un serveur de démarrage, c’est-à-dire un ser-veur avec le service tftp. Le serveur de démarrage et le serveur DHCP ne sont pas forcément sur la même machine.

Grub2Dans cet exemple pratique, nous utiliserons Grub2 comme Network Bootstrap Program, il n’y a pas besoin de pxelinux.Mais pourquoi Grub2 et non pas le plus standard pxelinux? D’abord, tout simplement parce que c’est possible, et cela sans trop de difficultés (contrairement à pxegrub avec grub-legacy). Deuxièmement, Grub2 a des fonctionnalités qui nous rendent bien service:❚ la possibilité de bloquer des rubriques du menu par un mot de

passe, avec en plus la gestion des utilisateurs;❚ la possibilité d’empêcher le démarrage depuis tout autre péri-

phérique que le réseau dans le BIOS et arriver quand même à charger un OS depuis le disque dur ou même une clef USB;

❚ un mini-environnement interactif depuis lequel on peut char-ger un système de secours (rescue);

❚ un excellent support PXE via le device (pxe) qui accède au ser-veur tftp;

❚ la possibilité de monter des images ISO.Enfin, n’oublions pas le côté end-user. Le Grub2 est un bon choix aussi pour les raisons suivantes:❚ les utilisateurs finaux ne sont pas perturbés par un écran de

démarrage non familier;

Installation de Linux avec PXE et [email protected], EPFL - SB-IT, spécialiste HPC et responsable de la salle serveur de la Faculté des Sciences de base

❚ lors du chargement du noyau et de l’initrd, on peut admirer un écran avec des annonces importantes ou des règles d’utilisa-tion.

En conclusion, le Grub2 est un bon choix par sa facilité d’instal-lation et ses possibilités de configuration pour l’administrateur système, ainsi que pour sa transparence pour l’utilisateur final.

Installation de grub2pxeContrairement au cas de Grub Legacy, il n’est pas nécessaire de recompiler Grub2 pour faire du PXE, il faut par contre en avoir une installation. Ensuite, faites

grub-mkimage --output=core.img --prefix="(pxe)/boot/grub" pxe pxecmd@cat pxeboot.img core.img > grub2pxe@

Le fichier pxeboot.img se trouve dans notre cas dans /usr/lib/grub/i386-pc. Il faudra ensuite copier grub2pxe ainsi que le ré-pertoire /boot/grub dans la racine du serveur tftp. Votre répertoire racine tftp doit avoir l’aspect suivant:

/tftpboot/ boot/grub/ 915resolution.mod acpi.mod ... zfs.mod locale/ en_AU.mod en_GB.mod grub2pxe

Maintenant, il faut choisir la configuration du menu de démar-rage. Voici deux cas de figure.

Serveur d’installation générique memtest, Ubuntu, Fedora

Ce cas est utile pour déployer un serveur d’installation de sta-tions de travail. Vous configurez le bios des stations de travail pour démarrer uniquement du disque dur et lorsque vous souhaitez les réinstaller, vous appuyez sur F12 au démarrage (ou similaire). Il s’agit ici d’une installation semi-automatique (ou pas du tout automatique).Commencez par préparer les fichiers nécessaires au démarrage:memtest – copiez un memtest dans le serveur tftp. Par exemple

sous /tftpboot/boot/.ubuntu – copiez l’iso ubuntu mini dans /tftpboot/isos.fedora – copiez les fichiers initrd.img et vmlinuz qui se trouvent

dans le répertoire images/pxeboot/ sur le CD de Fedora dans /tftpboot/fedora/. Vous pouvez aussi placer un fichier kicks-tart quelque part sur un serveur http pour assister l’installa-tion.

ubuntu live – copiez le contenu du cdrom ubuntu-10.04-des-ktop-i386.iso dans /srv/ubuntu-10.04-desktop-i386 (n’oubliez pas le répertoire caché .disk) et exportez ce réper-toire par NFS. Ensuite copiez les fichiers vmlinuz et initrd.lz qui

Page 23: Flash informatique 2010 - no 9

232323 NOVEMBRE 2010 - N°9

se trouvent dans /srv/ubuntu-10.04-desktop-i386/casper dans /tftpboot/ubuntu-10.04.

Sur votre serveur d’installation, vous aviez copié le répertoire /boot/grub. Allez chercher le fichier grub.cfg et modifiez-le comme suit:❚ enlevez les avertissements menaçants au début du fichier.

Vous allez devoir le modifier à la main. Ré-écrire des scripts qui vont le générer à votre place est une tâche bien trop longue et sans assez de valeur ajoutée pour ce cas particulier.

❚ cherchez où commencent les rubriques des menus. Enlevez-les toutes et remplacez-les par celles-ci.

menuentry "Memory test (memtest86+)" {@ insmod pxe@ set root='(pxe)'@ linux16 /boot/memtest86@}@

menuentry 'Ubuntu Lucid installer' --class ubuntu --class gnu-linux --class gnu --class os {@ insmod iso9660@ insmod loopback@ loopback loop (pxe)/iso/ubuntu-lucid-i386-mini.iso@ linux (loop)/linux@ initrd (loop)/initrd.gz@}@

menuentry 'Fedora Core 13 installer' --class fedora --class gnu-linux --class gnu --class os {@ insmod pxe@ set root='(pxe)'@ linux /fedora13/vmlinuz ramdisk_size=9216 network ks=http://128.178.131.120/ks.ks@ initrd /fedora13/initrd.img@}@

menuentry 'Ubuntu Lucid Live' --class ubuntu --class gnu-linux --class gnu --class os { insmod pxe@ set root='(pxe)'@ linux /ubuntu-10.04/vmlinuz boot=casper netboot=nfs nfsroot=128.178.131.120:/srv/ubuntu-10.04-desktop-i386@ initrd /ubuntu-10.04/initrd.lz@}@

Installation d’une salle Linux

Dans ce cas nous considérons l’installation d’une salle de stations pour les étudiants. Les contraintes suivantes s’appliquent:❚ les étudiants ne doivent pas avoir accès aux fonctions admin;❚ l’écran de démarrage ne doit pas être trop perturbant pour

l’utilisateur final, c’est-à-dire, il est préférable que l’utilisateur final ne remarque rien par rapport à un démarrage local stan-dard.

La première question est facilement résolue avec l’introduction d’un mot de passe dans Grub2. Le mot de passe bloquera le mode ligne de commande et toutes les entrées du menu Grub2 sauf le démarrage en local. Pour définir un mot de passe, ajoutez le suivant a votre grub.cfg:

set superusers="user1"@password_pbkdf2 user1 MOT_DE_PASSE@

Le mot de passe sera généré avec la commande grub-mkpasswd_pbkdf2 .

Pour ne pas perturber les utilisateurs, nous allons nous restreindre pour l’instant à cacher le menu (comme cela est fait par défaut dans la plupart des distributions avec Grub Legacy). Insérez les lignes suivantes après la définition du mot de passe:

echo -n "Press ESC to enter the menu... "@if sleep --verbose --interruptible 10 ; then@ set timeout=0@else@ set timeout=1@fi@

Maintenant, nous pouvons nous attaquer à notre système d’ins-tallation. Nous allons utiliser la méthode plus simple possible: installer une machine modèle (master) et ensuite la cloner sur les autres avec partimage. Nous avons donc besoin d’un noyau, d’un initrd et d’un système minimal qui est juste capable de lancer partimage. La création d’un tel système n’est pas traitée ici. Ce que le mini-système doit être capable de faire est:❚ démarrer;❚ lancer partimage et sfdisk;❚ exécuter quelques commandes pour par exemple copier des

clefs ssh;❚ redémarrer.Notre menu aura trois rubriques:1 Boot local: c’est la rubrique par défaut, et la seule non ver-

rouillée par mot de passe:

menuentry 'Red Hat 6.0 Beta Desktop' --class redhat --class gnu-linux --class gnu --class os {@ insmod biosdisk@ insmod part_msdos@ insmod ext2@ set root='(hd0,1)'@ linux /boot/vmlinuz-2.6.32-19.el6.i686 ro root=/dev/sda1 ro rhgb quiet@ initrd /boot/initramfs-2.6.32-19.el6.i686.img@}@

2 memtest, verrouillée par mot de passe:

menuentry "Memory test (memtest86+)" --users user1 {@ insmod pxe@ set root='(pxe)'@ linux16 /boot/memtest86@}@

3 réinstallation de la machine, verrouillée par mot de passe:

menuentry 'PXE install' --class gnu-linux --class gnu --class os --users user1 {@ insmod pxe@ set root='(pxe)'@ linux /boot/vmlinuz-2.6.24 ip=dhcp root=/dev/ram0 init=/linuxrc ramdisk_size=130000 SERVER=192.168.2.13 insttype=ma@ initrd /boot/initrd.gz@}@

À vous de testerLe serveur sbitsrv13 est à votre disposition pour des tests. Pour l’utiliser comme serveur d’installation, il faut que vous ayez un serveur DHCP dans votre subnet avec les paramètres:

next-server 128.178.131.120@filename "grub2pxe"@

Installation de Linux avec PXE et Grub2

Page 24: Flash informatique 2010 - no 9

ISSN 1420-7192

Un client qui démarre par PXE se verra proposer le menu Grub2:

Depuis ce serveur vous pouvez installer une Ubuntu Lucid en mode interactif, une Fedora 13 en mode semi-automatisé et une Ubuntu Lucid depuis le LiveCD. Pour plus de renseignements, vous pouvez visiter la page Web du serveur: sbitsrv13.epfl.ch.

Installation de Linux avec PXE et Grub2

Actualités

https://secure-it.epfl.chneuvième épisode

Vous n'avez pas su prévenir,sachez rétablir

How to mendwhat you didn't prevent

Quand c’est trop tardWhen it’s too late

GLOSSAIRE

PXE (Preboot eXecution Environment, ap-pelé aussi Pre-Execution Environment): environnement qui permet aux clients de démarrer en utilisant uniquement leur interface réseau, indépendamment des autres périphériques ou systèmes d'exploitation installés sur la machine.

Le protocole PXE est une combinaison de DHCP et TFTP avec des petits ajouts.

Le DHCP est utilisé (en outre que pour assigner des paramètres réseau) pour localiser le serveur de démarrage avec TFTP, qui est utilisé pour charger le

network boot program (NBP) et éven-tuellement d'autres fi chiers.

En résumé, le démarrage par le réseau se passe ainsi: ❚ le fi rmware PXE du client envoie un

paquet DHCPDISCOVER étendu avec des options PXE;

❚ le serveur DHCP répondra le cas échéant par un paquet DHCPOFFER étendu avec des options spécifi ques PXE;

❚ si le serveur DHCP ne comprend pas le PXE, il va ignorer les options PXE;

❚ le DHCPOFFER étendu contient en particulier l'adresse du serveur TFTP et le chemin vers le NBP;

❚ le client envoie un DHCPREQUEST;❚ le serveur envoye un DHCPACK;❚ le client ouvre une connexion TFTP

avec le serveur indiqué dans le DHC-POFFER étendu et télécharge le NBP indiqué.

Dans notre cas, le NBP est grub2pxe. D'habitude, sous Linux, on utilise pxelinux;

❚ le NBP prend contrôle du client et se charge de la suite.

Voir aussi: Séminaires Logiciels Libres -- PXE (elle.epfl.ch/wiki/index.php/PXE).

RessourcesUbuntu: l’image mini.iso se trouve à l’URL: go.epfl.ch/grub2pxe-1.Fedora: le noyau et l’initrd se trouvent sur go.epfl.ch/grub2pxe-2.Ubuntu Live: l’image ubuntu-10.04-desktop-i386.iso se trouve

sur go.epfl.ch/grub2pxe-3.

Références❚ Netbooting Ubuntu Live Cds: https://wiki.ubuntu.com/LiveCD-

Netboot ■