Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision Les deux révisions suivantes
developpement:productions:sidus [2018/09/10 17:01]
ltaulell [Combien ?]
developpement:productions:sidus [2020/08/17 15:53]
equemene
Ligne 1: Ligne 1:
 +<note warning>​En construction !</​note>​
 +
 ====== SIDUS  ====== ====== SIDUS  ======
  
-{{ :developpement:​productions:​sidus.png?​200 ​|}}+<note warning>​Tous les éléments présents dans cette documentation,​ les morceaux de code, etc entrent dans le cadre de la licence [[http://​www.cecill.info/​index.fr.html|CeCILL]]. Il est donc nécessaire de respecter les 4 libertés fondamentales des logiciels libres pour exploiter SIDUS dans sa propre infrastructure. Si vous comptez utiliser SIDUS dans votre infrastructure,​ faites le savoir à son [[emmanuel.quemener@ens-lyon.fr|auteur]], Centre Blaise Pascal ou citez le !</​note>​
  
 **SIDUS** est l'​acronyme de //Single Instance Distributing Universal System// et se propose de simplifier à l'​extrême l'​administration de machines. ​ **SIDUS** est l'​acronyme de //Single Instance Distributing Universal System// et se propose de simplifier à l'​extrême l'​administration de machines. ​
Ligne 33: Ligne 35:
 La première version de Sidus date de février 2010, elle était à l'​origine sur Debian Etch. Elle a suivi toutes les évolutions de la distribution Debian, socle essentiel (voire exclusif) du Centre Blaise Pascal. La première version de Sidus date de février 2010, elle était à l'​origine sur Debian Etch. Elle a suivi toutes les évolutions de la distribution Debian, socle essentiel (voire exclusif) du Centre Blaise Pascal.
  
-Début 2013, SIDUS sert près de 90 noeuds permanents de cluster au CBP (jusqu'​à 120 simultanés en fonction des prêts), des serveurs de GPGPU, des stations de travail multi-coeurs et des postes //COMOD// (pour //Compute On My Own Device//).+Mi 2015, SIDUS sert 76 noeuds permanents de cluster au CBP (jusqu'​à 120 simultanés en fonction des prêts), des serveurs de GPGPU, des stations de travail multi-coeurs et des postes //COMOD// (pour //Compute On My Own Device//).
  
 ===== Pour Qui ? ===== ===== Pour Qui ? =====
Ligne 48: Ligne 50:
 Le Centre Blaise Pascal, hôtel à projets de l'​ENS-Lyon dans le domaine du calcul et de l'​informatique scientifiques,​ utilise SIDUS pour tous ses équipements dont l'​uniformité doit être conservée le plus possible : un simple redémarrage doit suffire à replacer le système dans son état d'​origine. Le Centre Blaise Pascal, hôtel à projets de l'​ENS-Lyon dans le domaine du calcul et de l'​informatique scientifiques,​ utilise SIDUS pour tous ses équipements dont l'​uniformité doit être conservée le plus possible : un simple redémarrage doit suffire à replacer le système dans son état d'​origine.
  
-Le Pôle Scientifique de Modélisation Numérique (PSMN), centre de calcul de l'​ENS-Lyon,​ utilise maintenant SIDUS sur la totalité ​de ses noeuds de calcul.+Le Pôle Scientifique de Modélisation Numérique (PSMN), centre de calcul de l'​ENS-Lyon,​ utilise maintenant SIDUS sur une centaine ​de noeuds ​et prépare sa généralisation pour la mise en place de Equip@Meso (près de 200 noeuds supplémentaires).
  
 Le laboratoire de Chimie utilise "​COMOD"​ pour quelques postes de travail "à la demande"​. Le laboratoire de Chimie utilise "​COMOD"​ pour quelques postes de travail "à la demande"​.
Ligne 60: Ligne 62:
 De 8 clients légers Neoware gonflés en CPU et mémoire et détournés début 2010 de leur vocation originelle, nous approchons les 120 machines au CBP utilisant ce système. ​ De 8 clients légers Neoware gonflés en CPU et mémoire et détournés début 2010 de leur vocation originelle, nous approchons les 120 machines au CBP utilisant ce système. ​
  
-De quelques machines déployées à des fins expérimentales,​ le Pôle Scientifique de Modélisation Numérique utilise également SIDUS en production ​sur plus de 500 noeuds. L'​équipement informatique Equip@Meso d'​environ ​150 noeuds à lui tout seul, utilise également SIDUS comme socle.+De quelques machines déployées à des fins expérimentales,​ le Pôle Scientifique de Modélisation Numérique utilise également SIDUS en production ​pour 480 noeuds. L'​équipement informatique Equip@Meso d'​environ ​200 noeuds à lui tout seul, utilise également SIDUS comme socle.
  
 Quelques chercheurs du laboratoire de chimie utilisent SIDUS via COMOD : la disponibilité en offrant la possibilité de déployer une machine complète et opérationnelle sur son poste de travail en quelques secondes. Quelques chercheurs du laboratoire de chimie utilisent SIDUS via COMOD : la disponibilité en offrant la possibilité de déployer une machine complète et opérationnelle sur son poste de travail en quelques secondes.
Ligne 66: Ligne 68:
 Lors des école thématiques des Houches sur le calcul scientifique,​ SIDUS était servi à près d'une cinquantaine de machines simultanément. Lors des école thématiques des Houches sur le calcul scientifique,​ SIDUS était servi à près d'une cinquantaine de machines simultanément.
  
-Quant au prix du logiciel (question ​posé au dernier Scipy 2013), tous les composants qu'il utilise étant Open Source, SIDUS l'est aussi, ainsi que toutes les documentations associées ! SIDUS est donc sous licence CeCILL.+Quant au prix du logiciel (question ​posée ​au dernier Scipy 2013), tous les composants qu'il utilise étant Open Source, SIDUS l'est aussi, ainsi que toutes les documentations associées ! SIDUS est donc sous licence CeCILL.
  
 Si vous utilisez SIDUS, informez l'​[[emmanuel.quemener@ens-lyon.fr|auteur]] et faites en la promotion ! Si vous utilisez SIDUS, informez l'​[[emmanuel.quemener@ens-lyon.fr|auteur]] et faites en la promotion !
  
 Si vous voulez déployer SIDUS sur vos installations et vous faire aider, vous pouvez contacter l'​[[emmanuel.quemener@ens-lyon.fr|auteur]]. Si vous voulez déployer SIDUS sur vos installations et vous faire aider, vous pouvez contacter l'​[[emmanuel.quemener@ens-lyon.fr|auteur]].
 +
 ===== Comment ? ===== ===== Comment ? =====
  
Ligne 80: Ligne 83:
  
 ===== Préparation du système ===== ===== Préparation du système =====
-Nous devons préparer un peu notre système pour accueillir SIDUS. Pour cela, nous avons la main sur plusieurs services pour déployer nos clients : serveurs DHCP, TFTP, NFS. Vous entretenez de très bonnes relations avec votre service IT ou vous êtes assez libres pour accéder sans contraintes aux serveurs Ldap et DNS bien définis : 
  
 +Nous devons préparer un peu notre système pour accueillir SIDUS. Pour cela, nous devons avoir la main sur plusieurs services pour déployer nos clients : serveurs DHCP, TFTP, NFS. Vous devez donc entretenir de très bonnes relations avec votre service IT ou vous êtes assez libres pour accéder sans contraintes aux serveurs Ldap et DNS bien définis :
   * le service DHCP fournit à notre client une adresse IP mais diffuse deux informations complémentaires : l'​adresse du serveur TFTP via la variable ''​next-server''​ et le nom du binaire PXE, souvent nommé ''​pxelinux.0''​.   * le service DHCP fournit à notre client une adresse IP mais diffuse deux informations complémentaires : l'​adresse du serveur TFTP via la variable ''​next-server''​ et le nom du binaire PXE, souvent nommé ''​pxelinux.0''​.
   * le service TFTP entre alors en scène. Il offre par TFTP tout le nécessaire permettant le démarrage du système : le binaire ''​pxelinux.0'',​ le noyau et le démarrage du système du client. Si nous avons besoin d'​offrir des paramètres à tel ou tel client, nous contruisons un document spécifique dont le nom sera contruit à partir de son adresse MAC (préfixé de 01 et dont les : sont remplacés par des -).   * le service TFTP entre alors en scène. Il offre par TFTP tout le nécessaire permettant le démarrage du système : le binaire ''​pxelinux.0'',​ le noyau et le démarrage du système du client. Si nous avons besoin d'​offrir des paramètres à tel ou tel client, nous contruisons un document spécifique dont le nom sera contruit à partir de son adresse MAC (préfixé de 01 et dont les : sont remplacés par des -).
   * le serveur NFS s'​invite alors dans la boucle : il va offrir la racine du système par son protocole (donc NFSroot). C'est donc dans cette racine, par exemple ''/​srv/​nfsroot/​sidus''​ que nous allons installer notre système client.   * le serveur NFS s'​invite alors dans la boucle : il va offrir la racine du système par son protocole (donc NFSroot). C'est donc dans cette racine, par exemple ''/​srv/​nfsroot/​sidus''​ que nous allons installer notre système client.
  
-Sur nos configurations nous utilisons ​respectivement **isc-dhcp-server**,​ **tftpd-hpa** et **nfs-kernel-server** ​pour les serveurs DHCP, TFTP et NFS.+Dans l'​éventualité où vous n'avez pas la main sur les services DNS, TFTP, DHCP et NFS, de manière à installer notre première instance SIDUS de manière complètement autonome, nous avons besoin de configurer ces différents services. Dans nos configurations ​suivantes, ​nous exploiterons ​respectivement **isc-dhcp-server**, **bind9**, **tftpd-hpa** et **nfs-kernel-server** ​comme implémentations logicielles des serveurs DHCP, DNS, TFTP et NFS.
  
-Regardons plus en détail la configuration des différents services que nous venons de citer :+Le "​domaine"​ SIDUS dont nous allons présenter l'​installation aura les spécifications suivantes ​: 
 +  * réseau IP SIDUS de domaine '​sidus.zone'​ sur des IP '​10.20.15.0'​ à '​10.20.17.254'​ 
 +  * adresse de passerelle, également serveur DNS, DHCP, TFTP, NFS sur '​10.20.17.254'​ 
 +  * adresse IP externe réglée par DHCP sur '​eth0'​ 
 +  * adresse IP interne sur réseau SIDUS définie statiquement sur l'​interface '​eth1'​ en '​10.20.17.254'​
  
-<note important>​Dans [[http://​www.linuxjournal.com/​content/​november-2013-issue-linux-journal-system-administration|l'​article Linux Journal]], le ''​next-server''​ est défini à l'IP ''​172.16.20.13'',​ c'est préférable ​de l'​avoir dans le même sous-réseau : 10.13.20.13 est un choix plus judicieux.</​note>​ +==== Installation ​de la passerelle ====
-Pour le serveur DHCP, dans le fichier de configuration ''/​etc/​dhcp/​dhcpd.conf''​ :<​code>​ +
-next-server 10.13.20.13;​ +
-filename "​pxelinux.0";​ +
-allow booting;</​code>​+
  
-Pour le serveur TFTP, dans le dossier ''/​srv/​tftp''​, nous avons 3 fichiers ​et un dossier (pxelinux.cfg)Le fichier ​''​pxelinux.0'' ​vient le paquet **syslinux-common**.+De manière à ne pas avoir à trop détailler les fichiers de configuration de chaque service, nous fournissons les fichiers ​définissant les services avec les paramètres ci-dessusCes fichiers seront téléchargés à partir d'une archive HTTP que nous définissons sous forme d'une variable d'environnement ​''​$HTTP''​ :<​code>​export HTTP=http://​www.cbp.ens-lyon.fr/​sidus/​buster</​code>​ 
 + 
 +Paramétrage des interfaces réseau
 <​code>​ <​code>​
-./pxelinux. +mv /etc/​network/​interfaces /​etc/​network/​interfaces.orig 
-./vmlinuz-Sidus +wget -O /​etc/​network/​interfaces ${HTTP}/​interfaces 
-./initrd.img-Sidus +mv /etc/sysctl.conf /etc/sysctl.conf.orig 
-./pxelinux.cfg+wget -O /etc/sysctl.conf ${HTTP}/sysctl.conf
 </​code>​ </​code>​
  
-Dans le dossier pxelinux.cfg,​ nous avons le fichier "​default"​. Voici un exemple ​de fichier de démarrage précisant au client tout ce qu'il faut pour démarrer. Il comprend deux entrées, **tmpfs** et **iscsi**. Nous reviendrons plus loin sur cette seconde entrée **iscsi** : +Montage ​de l'interface interne
-  * le noyau ''​vmlinuz-Sidus''​ +
-  * le système ''​initrd.img-Sidus''​ +
-  * le serveur NFSroot ''​10.13.20.13''​ avec le point de montage ''/​srv/​nfsroot/​sidus'​' +
 <​code>​ <​code>​
-DEFAULT tmpfs+ifup eth1 
 +</​code>​
  
-LABEL tmpfs +==== Installation du serveur DNS ====
-KERNEL vmlinuz-Sidus +
-APPEND console=tty1 root=/dev/nfs initrd=initrd.img-Sidus nfsroot=10.13.20.13:/​srv/​nfsroot/​sidus,​rsize=8192,wsize=8192,tcp ip=dhcp aufs=tmpfs+
  
-LABEL iscsi +Installation du serveur DNS Bind9 : 
-KERNEL vmlinuz-Sidus +<​code>​ 
-APPEND console=tty1 root=/​dev/​nfs initrd=initrd.img-Sidus nfsroot=10.13.20.13:/​srv/​nfsroot/​sidus,​rsize=8192,​wsize=8192,​tcp ip=dhcp aufs=iscsi ISCSI_TARGET_IP=10.13.20.13 ISCSI_INITIATOR=iqn.2013-04.zone.sidus.target:​default root=LABEL=ISCSI ​+apt-get install bind9
 </​code>​ </​code>​
  
-Pour le serveur ​NFS, sa configuration ​prend un ligne dans le fichier ​/etc/exportsIci, nous ouvrons un accès en lecture seule pour les machines dont l'IP est comprise entre 10.13.20.128 et 10.13.20.254 :<​code>​ +Configuration du serveur ​DNS : 
-/srv/nfsroot/sidus 10.13.20.128/255.255.255.0(ro,​no_subtree_check,​async,​no_root_squash)+<​code>​ 
 +# Sauvegarde de la configuration ​initiale (reflexe g33k) 
 +cp -a /​etc/​bind ​/etc/bind.orig 
 +# Copie des descriptions de resolutions directes et inverses ​pour les zones 
 +wget -O /​etc/​bind/​db.sidus.zone ${HTTP}/​db.sidus.zone 
 +wget -O /​etc/​bind/​db.17.20.10 ​${HTTP}/db.17.20.10 
 +# Renommage des fichiers de configuration initiaux 
 +mv /etc/bind/named.conf.local /​etc/​bind/​named.conf.local.orig 
 +mv /etc/bind/named.conf.options /​etc/​bind/​named.conf.options.orig 
 +# Telechargement des fichiers de configurations 
 +wget -O /​etc/​bind/​named.conf.local ${HTTP}/​named.conf.local 
 +wget -O /​etc/​bind/​named.conf.options ${HTTP}/​named.conf.options 
 +# Relance du serveur 
 +systemctl restart bind9.service ​
 </​code>​ </​code>​
  
-Une fois ces 3 services DHCP, TFTP et NFS configurés,​ nous pouvons installer un Sidus complet.+Paramétrage des interfaces réseau 
 +<​code>​ 
 +mv /etc/resolv.conf /​etc/​resolv.conf.orig 
 +wget -O /​etc/​resolv.conf ${HTTP}/​resolv.conf.server 
 +</​code>​
  
-Attention cependant ! Il faudra également prévoir une racine contenant les comptes des utilisateurs (par NFS version 4) et un processus permettant leur identification/​authentification (par Ldap ou Kerberos)Nous avons ainsi déployé Sidus dans des environnements où ces services étaient fournis par des serveurs tierces tout comme des environnements complètement autonomesL'installation d'un serveur ​OpenLDAP avec SSL ou d'un serveur Kerberos sortant de ce sujet, nous nous contenterons de préciser les fichiers de configurations clients qu'il nous conviendra d'adapter à notre infrastructure de site : ici, du Ldap pour identification/​authentification et du NFS version 4 pour les dossiers utilisateurs.+Vérification du serveur DNS 
 +  * A la commande ''​host filer.sidus.zone localhost'' ​le serveur ​doit répondre 
 +<​code>​filer.sidus.zone is an alias for gateway.sidus.zone.  
 +gateway.sidus.zone has address 10.20.17.254</​code>​ 
 +  * A la commande ​''​host 10.20.17.254 127.0.0.1'
 +<​code>​254.17.20.10.in-addr.arpa domain name pointer gateway.sidus.zone.</​code>​
  
-===== Deboostrap =====+Le serveur DNS effectue les résolutions de noms en direct ou en inverse pour toutes les machines de la classe IP ''​10.20.17.0/​24''​ ou zone ''​sidus.zone''​. La machine ''​dhcp-35''​ aura comme IP ''​10.20.15.37''​.
  
-Debootstrap permet l'​installation d'un système dans une racine. Il exige plusieurs paramètres comme la racine d'​installation,​ l'​architecture matérielle,​ la distribution et l'​archive FTP ou HTTP Debian à solliciter pour le téléchargement.+==== Installation du serveur DHCP ====
  
-Warning : là commence la "​spécialisation"​ de notre installation,​ à l'​origine construite autour d'une distribution Debian. Cet outil est familier de toutes les distributions Debian-like : il sera donc disponible chez les dérivées ​du système à la spirale (à commencer par Ubuntu). Il sera cependant assez facile de réaliser cela sur les Redhat-like, Fedora intégrant par exemple un clone, [[http://​people.redhat.com/​~rjones/​supermin/|Febootstrap]],​ mais que nous n'​avons pas testé.+Installation ​du serveur DHCP 
 +<​code>​ 
 +apt-get install isc-dhcp-server 
 +</code>
  
-Debootstrap accepte aussi en entrée une liste d'​archives (vous savez que Debian est très tatillon sur les licences en séparant les archives en main, contrib et non-free), une liste de paquets à inclure et une liste de paquets à exclureNous aurions été ravi de pouvoir, icipréciser la liste complète des paquets à inclure ou exclure, mais, malheureusement,​ cette approche est une voie sans issue : nous installerons donc, dès cette commande ​''​debootstrap''​, un ensemble d'​outils qu'​il ​nous semble indispensable d'​inclure dès le début (par exemple le noyau, des firmwares ​pour un support étendu de tous les matériels ​et un ensemble d'​outils d'​audit).+Configuration du serveur DHCP 
 +<​code>​ 
 +cp -a /​etc/​default/​isc-dhcp-server /​etc/​default/​isc-dhcp-server.orig 
 +cp -a /etc/dhcp /​etc/​dhcp.orig 
 +cp -a /​etc/​dhcp/​dhclient.conf /​etc/​dhclient.conf.orig 
 +cp -a /​etc/​dhcp/​dhcpd.conf /​etc/​dhcpd.conf.orig 
 +# Telechargement des fichiers ​de configurations 
 +wget -O /​etc/​default/​isc-dhcp-server ${HTTP}/​isc-dhcp-server 
 +wget -O /​etc/​dhcp/​dhclient.conf ${HTTP}/​dhclient.conf 
 +wget -O /​etc/​dhcp/​dhcpd.conf ${HTTP}/​dhcpd.conf 
 +# Redemarrage du serveur DHCP 
 +systemctl restart isc-dhcp-server.service 
 +</​code>​ 
 +  
 +Pour le serveur DHCPdans le fichier de configuration ​''​/​etc/​dhcp/​dhcpd.conf''​ nous avons : 
 +  * le pointage vers pxelinux.0 ​pour toutes ​les versions de démarrage : BIOS, UEFI 32 bits et UEFI 64 bits : <​code>​ 
 +if option architecture-type = 00:00 { 
 + ​filename "​pxelinux.0";​ 
 + } elsif option architecture-type = 00:09 { 
 + ​filename "​efi64/​syslinux.efi";​ 
 + } elsif option architecture-type = 00:07 { 
 + ​filename "​efi64/​syslinux.efi";​ 
 + } elsif option architecture-type = 00:06 { 
 + ​filename "​efi32/​syslinux.efi";​ 
 + } else { 
 + ​filename "​pxelinux.0";​  
 +}</​code>​ 
 +  * la definition sur serveur TFTP à pointer :<​code>​ 
 +next-server 10.20.17.254; 
 +allow booting; 
 +</​code>​
  
-Nous avons par commodité défini des variables d'​environnement correspondant à la racine de notre système ''​$SIDUS''​ et une commande permettant l'​exécution d'une commande par ''​chroot''​ avec une option particulière d'​installation de paquet. La variable ''​$MyInclude''​ intègre la liste des paquets souhaités (séparés d'une virgule) et ''​$MyExclude''​ la liste des paquets rejetés dont :+==== Installation du serveur TFTP ==== 
 + 
 +• Installation du paquet ​serveur TFTP
 <​code>​ <​code>​
-export SIDUS=/​srv/​nfsroot/​sidus +apt-get install tftpd-hpa
-alias sidus="​DEBIAN_FRONTEND=noninteractive chroot ${SIDUS} $@"+
 </​code>​ </​code>​
  
-Nous avons définis les ''​$MyInclude''​ et ''​$MyExclude''​ suivants pour une architecture 64 bits AMD64 : 
 <​code>​ <​code>​
-export MyInclude="​adduser,​apt,​apt-utils,​aptitude,​aptitude-common,​aspell,​aspell-en,​aufs-tools,​bsdmainutils,​btrfs-tools,​busybox,​ca-certificates,​clusterssh,​console-setup,​cpio,​cron,​cups-pdf,​debian-archive-keyring,​dmidecode,​dselect,​emacs,​environment-modules,​ethtool,​firmware-bnx2,​firmware-linux,​firmware-linux-nonfree,​gnupg,​gpgv,​groff-base,​htop,​hwinfo,​hwloc,​iftop,​ifupdown,​info,​initramfs-tools,​install-info,​iotop,​iperf,​ipmitool,​iproute,​iptables,​iputils-ping,​isc-dhcp-client,​isc-dhcp-common,kmod,ldap-utils,​less,​libapt-inst1.5,​libapt-pkg4.12,​libboost-iostreams1.49.0,​libcwidget3,​libept1.4.12,​libgcrypt11,​libgdbm3,​libgnutls26,​libgpg-error0,​libidn11,​libkmod2,​libncursesw5,​libnet-ldap-perl,​libnewt0.52,​libnfnetlink0,​libnss-ldap,​libp11-kit0,​libpam-ldap,​libpipeline1,​libpopt0,​libprocps0,​libreadline6,​libsigc++-2.0-0c2a,​libsqlite3-0,​libssl1.0.0,​libstdc++6,​libtasn1-3,​libudev0,​libusb-0.1-4,​libxapian22,​linux-headers-3.2.0-4-amd64,​linux-image-3.2.0-4-amd64,​locales,​logrotate,​lsof,​man-db,​manpages,​mbw,​mtr,​mutt,​nano,​net-tools,​netbase,​netcat-traditional,​nfs-common,​nscd,​ntpdate,​open-iscsi,​openssh-server,​pciutils,​procps,​python-ldap,​readline-common,​rsyslog,​screen,​scsitools,​sdparm,​ssh,​ssmtp,​sudo,​tasksel,​tasksel-data,​tmux,​traceroute,​tshark,​udev,​usbutils,​vim,​wget,​whiptail,​xinit,​python-html2text"​+apt-get install ​pxelinux syslinux-common ​syslinux-efi memtest86 memtest86+ 
 +</​code>​
  
-export MyExclude="​nano,​exim,​mysql-server,​mysql-server-5.5,​mysql-server-core-5.5,​network-manager,​apache2,​apache2-mpm-worker,​apache2-utils,​apache2.2-bin,apache2.2-common,​libapache2-mod-dnssd,​libapache2-mod-php5,​r-cran-fecofin,​libmpich1.0gf,​gerris,​gspiceui,​qucs,​ktimetrace,​kseg,​ghdl,​earth3d,​libopenigtlink1,​qtdmm,​scilab-overload,​gmsh,​klogic,​g++-doc,​openturns-wrapper,​xorsa,​r-cran-rpvm,​labplot,​zygrib,​libteem1,​magnus,​libcomplearn-dev,​libtorque2,​torque-common,​torque-server,​gridengine-client,​gridengine-exec,​gridengine-master,​gridengine-qmon,​gnuplot,​gnuplot-nox,​rtai,​rtai-doc,​libhdf5-dev,​libhdf5-1.8,libgd2-xpm"+• Installation des arborescences et des menus 
 +<​code>​ 
 +mkdir /​srv/​tftp/​pxelinux.cfg /​srv/​tftp/​efi32 /​srv/​tftp/​efi64 
 +# Importation des composants pour le boot BIOS 
 +cd /​usr/​lib/​syslinux/​modules/​bios 
 +cp ldlinux.c32 libcom32.c32 libutil.c32 vesamenu.c32 /​srv/​tftp/​ 
 +cp /​usr/​lib/​PXELINUX/​pxelinux.0 /srv/tftp 
 +cd /srv/tftp 
 +wget -O /​srv/​tftp/​Sidus_Landscape.png ${HTTP}/​Sidus_Landscape.png 
 +cp /​boot/​memtest86.bin memtest86 
 +cp /​boot/​memtest86+.bin memtest86+ 
 +# Importation des composants pour le boot EFI 32 bits 
 +cd /​usr/​lib/​syslinux/​modules/​efi32 
 +cp ldlinux.e32 libcom32.c32 libutil.c32 vesamenu.c32 /​srv/​tftp/​efi32 
 +cd /​srv/​tftp/​efi32 
 +ln -s ../​Sidus_Landscape.png Sidus_Landscape.png 
 +ln -s ../​pxelinux.cfg pxelinux.cfg 
 +ln -../memtest86 memtest86 
 +ln -s ../​memtest86memtest86+ 
 +# Importation des composants pour le boot EFI 64 bits 
 +cd /​usr/​lib/​syslinux/​modules/​efi64 
 +cp ldlinux.e64 libcom32.c32 libutil.c32 vesamenu.c32 /​srv/​tftp/​efi64 
 +cd /​srv/​tftp/​efi64 
 +ln -s ../​Sidus_Landscape.png Sidus_Landscape.png 
 +ln -s ../​pxelinux.cfg pxelinux.cfg 
 +ln -../memtest86 memtest86 
 +ln -s ../​memtest86+ memtest86+
 </​code>​ </​code>​
  
-Dans le ''​$MyInclude'',​ nous avons tous nos outils "de base"Il est IMPERATIF ​de placer au moins le noyau ''​linux-image-3.2.0-4-amd64''​ dans cette liste !+• Paramétrage du serveur 
 +<​code>​cp -a /​etc/​default/​tftpd-hpa /​etc/​default/​tftpd-hpa.orig 
 +# Telechargement des fichiers ​de configurations 
 +wget -O /​etc/​default/​tftpd-hpa ${HTTP}/​tftpd-hpa 
 +</​code>​
  
-Par défaut, la commande suivante installe une version **wheezy** dans **/​srv/​nfsroot/​sidus** pour une architecture **amd64** à partir du miroir Debian **http://​ftp.debian.org/​debian** :+==== Configuration menu de démarrage ==== 
 +▶ Paramétrage des menu des démarrages possibles ◀
 <​code>​ <​code>​
-debootstrap ​--arch amd64 --components='​main,​contrib,​non-free'​ --include=$MyInclude --exclude=$MyExclude wheezy $SIDUS http://ftp.debian.org/debian+wget -/srv/tftp/​pxelinux.cfg/default ${HTTP}/default
 </​code>​ </​code>​
  
-A la suite de cette commande, nous devons prendre quelques précautions : + 
-  * normalement,​ si le paquet Debian ​est un service, ce dernier démarre après son installationNous devons donc inhiber ​le lancement ​de ce service ​par la définition d'un hook (''​/​usr/​sbin/​policy-rc.d'') :+Il est déjà possible de démarrer une machine par le réseau pour tester le serveurDans le menu présenté, il est possible ​de choisir les memtest86 pour, par exemple, tester sa mémoire. 
 + 
 +Dans le dossier **pxelinux.cfg**,​ nous avons le fichier ​''​default''​. ​Voici un exemple de fichier de démarrage précisant au client tout ce qu'il faut pour démarrer.  
 <code bash> <code bash>
-#!/bin/sh +PROMPT 0 
-exit 101+TIMEOUT 30 
 +DEFAULT menu.c32 
 + 
 +LABEL buster64overlay 
 +      MENU LABEL SIDUS based on Debian buster on x86_64 : OverlayFS mode 
 +      MENU default 
 +      KERNEL vmlinuz-4.9.0-4-amd64@buster64nfs 
 +      APPEND console=tty1 initrd=initrd.img-4.9.0-4-amd64@buster64nfs rd.shell sidus=overlay ip=dhcp root=nfs:​10.20.17.254:​/srv/nfsroot/​buster64nfs:​vers=3,​rsize=1048576,​wsize=1048576,​tcp,​nolock,​noatime,​nocto,​actimeo=1,​intr,​hard net.ifnames=0 modprobe.blacklist=nouveau ipv6.disable=1 sky2.disable_msi=1 bnx2.disable_msi=1 intel_pstate=disable kernel.dmesg_restrict=0 
 + 
 +LABEL buster64aufs 
 +      MENU LABEL SIDUS based on Debian buster on x86_64 : AUFS mode 
 +      #MENU default 
 +      KERNEL vmlinuz-4.9.0-4-amd64@buster64nfs 
 +      APPEND console=tty1 initrd=initrd.img-4.9.0-4-amd64@buster64nfs rd.shell sidus=aufs ip=dhcp root=nfs:​10.20.17.254:/​srv/​nfsroot/​buster64nfs:​vers=3,​rsize=1048576,​wsize=1048576,​tcp,​nolock,​noatime,​nocto,​actimeo=1,​intr,​hard net.ifnames=0 modprobe.blacklist=nouveau ipv6.disable=1 sky2.disable_msi=1 bnx2.disable_msi=1 intel_pstate=disable kernel.dmesg_restrict=0
 </​code>​ </​code>​
-Ou sous forme de commande ​:+ 
 +==== Installation du serveur NFS ==== 
 + 
 +Le serveur NFS va servir à offrir deux partages ​: 
 +  * le partage de SIDUS 
 +  * le partage des comptes utilisateurs 
 <​code>​ <​code>​
-printf '#​!/​bin/​sh\nexit 101\n' > ${SIDUS}/​usr/​sbin/​policy-rc.d +apt-get install nfs-common nfs-kernel-server
-chmod +x ${SIDUS}/​usr/​sbin/​policy-rc.d+
 </​code>​ </​code>​
  
 +<​code>​
 +cp -a /​etc/​default/​nfs-common /​etc/​default/​nfs-common.orig
 +cp -a /​etc/​default/​nfs-kernel-server /​etc/​default/​nfs-kernel-server.orig
 +cp -a /​etc/​idmapd.conf /​etc/​default/​idmapd.conf.orig
 +cp -a /​etc/​exports /​etc/​exports.orig
 +cp -a /etc/fstab /​etc/​fstab.orig
 +# Telechargement des fichiers de configurations
 +wget -O /​etc/​default/​nfs-common ${HTTP}/​nfs-common
 +wget -O /​etc/​default/​nfs-kernel-server ${HTTP}/​nfs-kernel-server
 +wget -O /​etc/​idmapd.conf ${HTTP}/​idmapd.conf
 +wget -O /​etc/​exports ${HTTP}/​exports
 +</​code>​
  
-  * des paquets exigent l'​accès à la liste des processus, ​du système, ​des périphériques,​ de la mémoire virtuelle, des pointeurs de périphériques. Nous devons donc "​binder"​ le montage de ces dossiers du système hôte au système SIDUS :<​code>​ +Paramétrage ​du dossier ​des comptes utilisateurs 
-sidus mount -t proc none /proc +<​code>​ 
-sidus mount -t sysfs sys /sys +mkdir -/export/home 
-mount --bind ​/run/shm ${SIDUS}/run/shm +echo "/home /export/home none bind 0 0" >> /etc/fstab 
-mount --bind /dev/pts ${SIDUS}/​dev/​pts+mount -a
 </​code>​ </​code>​
-===== Paquets spécifiques ===== 
  
-De manière à simplifier l'​installation de paquets appartenant à la même famille, Debian a créé de nombreux meta-paquetspréfixés ​de "​science"​ : **science-chemistry** désigne par exemple tous les paquets de chimie. La commande d'​installation de tous paquets scientifiques se fait par une seule commande. Comme nous sommes épris de complétude,​ nous allons "​aussi"​ rajouter les paquets "​suggérés"​ (attention, l'​option ''​--install-suggests''​ n'est présente qu'à partir de la distribution Wheezy) ​+Création des racines des instances SIDUS 
-<​code>​sidus apt-get install --install-suggests -f -m -y --force-yes science-*</​code>​+<​code>​ 
 +mkdir -p /​srv/​nfsroot/​buster64nfs /​srv/​nfsroot/​buster32nfs 
 +</​code>​ 
 +Si le volume racine est en BTRFSil peut être judicieux ​de créer un sous-volume pour chaque instance ​
 +<​code>​ 
 +btrfs subvolume create /​srv/​nfsroot/​buster64nfs 
 +btrfs subvolume create /​srv/​nfsroot/​buster32nfs 
 +</​code>​
  
-Durant l'​installation,​ les phases les plus longues sont le téléchargement des paquets qui représente plusieurs Go (et dépend donc de la connectivité à Internet et aux miroirs officiels) et la configuration initiale de certains paquets (comme Perl et LaTeX).+<​code>​ 
 +/etc/init.d/​nfs-common restart 
 +/​etc/​init.d/​nfs-kernel-server restart 
 +</​code>​
  
-Dans le meilleur des scénariicela prend 45 minutes ​pour un arbre complet de 32 Go.+La configuration proposée dans le ''/​etc/​exports''​ 
 +  * les deux lignes permettant l'​offre de la partition utilisateur ''/​home''​ 
 +    * ''/​export 10.20.17.0/​255.255.255.0(rw,fsid=0,​async,​no_subtree_check)''​ 
 +    * ''/​export/​home 10.20.17.0/​255.255.255.0(rw,​async,​nohide,​insecure,​no_subtree_check)''​ 
 +  * deux lignes correspondant à l'​offre de deux instances SIDUS : 
 +    * Instance ​pour système 64 bits : un partage en lecture pour les clients, un partage en lecture/​écriture pour le précurseur 
 +      * ''/​srv/​nfsroot/​buster64nfs 10.20.17.0/​255.255.255.0(ro,​no_subtree_check,​async,​no_root_squash)''​ 
 +      * ''/​srv/​nfsroot/​buster64nfs 10.20.17.253/​255.255.255.255(rw,​no_subtree_check,​async,​no_root_squash)''​ 
 +    * Instance pour système ​32 bits : un partage en lecture pour les clients, un partage en lecture/​écriture pour le précurseur 
 +      * ''/​srv/​nfsroot/​buster32nfs 10.20.17.0/​255.255.255.0(ro,​no_subtree_check,​async,​no_root_squash)''​ 
 +      * ''/​srv/​nfsroot/​buster32nfs 10.20.17.253/​255.255.255.255(rw,​no_subtree_check,​async,​no_root_squash)''​
  
-===== Purge =====+Les machines du réseau ''​10.20.17.0/​24''​ auront un accès en lecture seule, la machine ''​10.20.17.253''​ un accès en lecture/​écriture,​ laquelle sera très utile pour l'​administration de l'​instance.
  
-Malheureusementcette boulimie d'​installation n'est pas sans effet. Des paquets s'​installent encore un peu "​mal" ​et une purge de quelques uns, notamment un installeur Matlab, nous hérisse le poil ! +Une fois ces 4 services DNSDHCP, TFTP et NFS configurés, nous pouvons installer notre Sidus complet.
-<​code>​sidus apt-get purge -y -f --force-yes matlab-*</​code>​+
  
-===== Environnement local =====+===== Debootstrap ​=====
  
-L'environnement local a une importance et, par défaut, rien n'est définiLe défaut étant l'américainnous paramétrons : +Debootstrap permet l'installation d'un système dans une racineIl exige plusieurs paramètres comme la racine d'installation, l'architecture matérielle, ​la distribution et l'​archive FTP ou HTTP Debian à solliciter pour le téléchargement.
-  * l'environnement local : ${SIDUS}/​etc/​locale.gen +
-  * la zone : ${SIDUS}/​etc/​timezone +
-  * le clavier : ${SIDUS}/​etc/​default/​keyboard+
  
-===== Serveurs tiers NFS et Ldap =====+Warning : là commence la "​spécialisation"​ de notre installation,​ à l'​origine construite autour d'une distribution Debian. Cet outil est familier de toutes les distributions Debian-like : il sera donc disponible chez les dérivées du système à la spirale (à commencer par Ubuntu). Il sera cependant assez facile de réaliser cela sur les Redhat-like,​ Fedora intégrant par exemple un clone, [[http://​people.redhat.com/​~rjones/​supermin/​|Febootstrap]],​ mais que nous n'​avons pas testé.
  
-Les services NFS et Ldap exigent ​une petite configurationL'​importation ​des fichiers directement configurés ​est préférable.+Debootstrap accepte aussi en entrée une liste d'​archives (vous savez que Debian est très tatillon sur les licences en séparant les archives en main, contrib ​et non-free), ​une liste de paquets à inclure et une liste de paquets à exclureNous aurions été ravi de pouvoir, ici, préciser la liste complète ​des paquets à inclure ou exclure, mais, malheureusement,​ cette approche ​est une voie sans issue : nous installerons donc, dès cette commande ''​debootstrap'',​ un ensemble d'​outils qu'il nous semble indispensable d'​inclure dès le début (par exemple le noyau, des firmwares pour un support étendu de tous les matériels et un ensemble d'​outils d'​audit).
  
-Dans notre cas, nous avons choisi ​de les mettre tous sur un serveur Web **http://​MyServeur.MySite/​sidus**. Un ''​wget'' ​permet directement de les récupérer ​et les placer au bon endroit avec l'option ​''​-O''​. Par exemple, pour le fichier ​''​nsswitch.conf'':​ +Nous avons par commodité défini des variables d'​environnement correspondant à la racine ​de notre système ​''​$SIDUS''​ et une commande permettant ​l'exécution d'une commande par ''​chroot'' ​avec une option particulière d'installation de paquet. 
-<​code>​ + 
-wget -O  ${SIDUS}/​etc/​nsswitch.conf ​http://MyServeur.MySIte/sidus/nsswitch.conf+Configuration de la variable ''​HTTP'':​ 
 +<​code ​bash
 +export HTTP=http://www.cbp.ens-lyon.fr/sidus/buster
 </​code>​ </​code>​
  
-Ainsi, voici les fichiers à télécharger :+Installation de ''​debootstrap''​ 
 +<code bash> 
 +apt-get install debootstrap 
 +</​code>​
  
-  * l'​authentification Ldap :  +Pour une architecture x84_64 ou AMD64 
-    * ''​${SIDUS}/​etc/​nsswitch.conf'', ​ +<code bash> 
-    * ''​${SIDUS}/etc/libpam_ldap.conf'',​  +export ​SIDUS=/srv/nfsroot/buster64nfs 
-    * ''​${SIDUS}/etc/​libnss-ldap.conf'', ​ +alias sidus="​DEBIAN_FRONTEND=noninteractive chroot ​${SIDUS} $@" 
-    * ''​${SIDUS}/​etc/​ldap/​ldap.conf''​ +ARCH=amd64 
-  * le montage des dossiers NFS utilisateurs : +</code>
-    * pour NFSv4 :  +
-      * ''​${SIDUS}/​etc/​default/​nfs-common'', ​ +
-      * ''​${SIDUS}/​etc/​default/​idmapd.conf'', ​ +
-      * ''​${SIDUS}/​etc/​fstab''​ +
-    * pour NFSv3 :  +
-      * ''​${SIDUS}/​etc/fstab''​+
  
-===== Séquence de démarrage =====+Pour une architecture i386 
 +<code bash> 
 +export SIDUS=/​srv/​nfsroot/​buster32nfs 
 +alias sidus="​DEBIAN_FRONTEND=noninteractive setarch i686 chroot ${SIDUS} $@" 
 +ARCH=i386 
 +</​code>​
  
-Comment partager SIDUS sans le dupliquer ? Nous allons nous inspirer de mécanisme utilisé dans certains LiveCD : le montage de la racine du système consiste en la superposition de deux couches, l'une lecture seule (le système NFSroot) et l'​autre en lecture/​écriture (un TMPFS dans le cas le plus simple). Les deux couches sont liées par la glue AUFS, le projet successeur de UnionFS. 
  
-Tout réside dans un seul et unique "​hook"​ au démarrage : rootaufs, placé très tôt dans le démarrage initrd. Son principe repose sur cinq étapes :  +• Lancement ​de l'installation
-  - création ​de dossiers temporaires ​''/​ro'',​ ''/​rw''​ et ''/​aufs''​ +
-  - déplacement de la racine NFSroot du point de montage originel vers dans ''/​ro'',​  +
-  - montage d'un partage distant, d'une partition locale ou distante, ou d'un volume TMPFS dans un autre point de montage ''/​rw''​ +
-  - superposition des deux dossiers ''/​ro''​ et ''/​rw''​ dans le dossier ''/​aufs''​ +
-  - déplacement de ''/​aufs''​ vers le point de montage originel+
  
-Ce script, ''​rootaufs''​ se place dans ''​${SIDUS}/etc/initramfs-tools/scripts/init-bottom''​+<code bash> 
 +debootstrap --arch $ARCH --components='​main,contrib,​non-free' ​buster ​$SIDUS ​http://ftp.de.debian.org/debian 
 +</code>
  
-<note important>​Dans ​le  ​[[http://​www.linuxjournal.com/​content/​november-2013-issue-linux-journal-system-administration|numéro ​de novembre 2013 de Linux Journal]], ​''​rootaufs'' manque dans la définition du fichier destination.<​/note> +A la suite de cette commande, nous devons prendre quelques précautions : 
-Le script originel a été inspiré par le projet **rootaufs** de Nicholas A. Schembri (http://code.google.com/​p/​rootaufs/​). Il a été profondément modifié pour l'​adapter à notre infrastructure : une version est disponible sur http://www.cbp.ens-lyon.fr/sidus/​rootaufs ​:<​code>​ +* normalement,​ si le paquet Debian est un service, ce dernier démarre après son installationNous devons donc inhiber le lancement ​de ce service par la définition d'un hook (''/​usr/sbin/policy-rc.d''​) : 
-wget -O ${SIDUS}/etc/initramfs-tools/scripts/​init-bottom/​rootaufs http://www.cbp.ens-lyon.fr/​sidus/​rootaufs +<code bash> 
-chmod 755 ${SIDUS}/etc/initramfs-tools/scripts/​init-bottom/​rootaufs+#!/bin/sh 
 +exit 101 
 +</code> 
 +Ou sous forme de commande ​: 
 +<​code ​bash
 +printf '#​!/​bin/​sh\nexit 101\n' > ${SIDUS}/usr/sbin/policy-rc.d 
 +chmod +x ${SIDUS}/usr/sbin/policy-rc.d
 </​code>​ </​code>​
  
-Nous n'en avons pas encore fini pour disposer d'​un ​système ​fonctionnel : nous allons créer un ''​initrd''​ spécifique pour notre boot NFS+* des paquets exigent l'accès à la liste des processus, du système, des périphériques,​ de la mémoire virtuelle, des pointeurs de périphériques. Nous devons donc "​binder"​ le montage de ces dossiers du système hôte au système SIDUS 
-  * ''​aufs''​ dans ''​${SIDUS}/etc/initramfs-tools/modules''​ +<​code>​ 
-  * ''​eth0''​ comme DEVICE dans ''​${SIDUS}/etc/initramfs-tools/initramfs.conf''​+sidus mount -t proc none /proc 
 +sidus mount -t sysfs sys /sys 
 +mount --bind /dev/​pts ​${SIDUS}/dev/pts 
 +</code>
  
-<​code>​sidus ​update-initramfs -k all -u</​code>​+• Définition du mot de passe ''​root''​ (à changer ensuite)... 
 +<​code ​bash> 
 +echo "​root:​MyStrongPassword"​ | sidus chpasswd 
 +</​code>​
  
-<note important>​Dans [[http://​www.linuxjournal.com/​content/​november-2013-issue-linux-journal-system-administration|numéro ​de novembre 2013 de Linux Journal]], ​''​vmlinux-Sidus'' ​est mentionné en lieu et place de ''​vmlinuz-Sidus'' ​comme noyau servi par le serveur TFTP.</​note>​ + 
-Il suffit ensuite de copier les noyau et boot loader dans la définition :<​code>​ +• Installation ​de paquets jugés nécessaires 
-cp ${SIDUS}/​boot/​vmlinuz-3.2.0-4-amd64 /​srv/​tftp/​vmlinuz-Sidus + 
-cp ${SIDUS}/​boot/​initrd.img-3.2.0-4-amd64 /​srv/​tftp/​initrd.img-Sidus+(les 2 principaux à ne surtout pas oublier étant ​''​dracut''​ et ''​aufs-dkms'' ​! ) 
 +<​code ​bash
 +sidus apt-get update 
 +sidus apt-get -y install aptitude dselect dracut dracut-core dracut-network isc-dhcp-common isc-dhcp-client openssh-server locales aufs-dkms aufs-tools firmware-linux-nonfree bridge-utils firmware-linux firmware-bnx2 dstat sysstat iftop htop iotop emacs lsof tshark mbw strace memtest86 dbench iozone3 psmisc console-setup less vim nscd nfs-common stressapptest mlocate net-tools hwloc time ssh 
 +sidus apt-get -y install linux-image-${ARCHlinux-headers-${ARCH} 
 +# pour architectures 32 bits Intel 
 +sidus apt-get -y install linux-image-686-pae linux-headers-686-pae linux-image-586 linux-headers-586
 </​code>​ </​code>​
  
-A l'​originenous avons exploré la possibilité d'​offrir un second partage NFS en lecture/​écriture pour la persistance des modifications associées aux clients d'un redémarrage ​à l'​autre. Cette version, bien que fonctionnelle,​ exigeait l'​ouverture d'un partir NFS atomique pour chaque client avec ce qu'on imagine comme charge pour leur serveur ! +Sous architectures 32 bits2 noyaux sont à intégrer
  
-Nous avons donc préféré une autre approche ​de persistance,​ sous la forme d'un disque réseau de technologie iSCSIdont nous avons vu la définition dans notre fichier ''​/srv/tftp/pxelinux.cfg/default'',​ avec la définition de ''​LABEL=iscsi''​Avec cela, pour assurer la persistance,​ nous créons un partage iSCSI par clientLes paramètres de montage du disque iSCSI sont définis dans la commande en ligne.+• Paramétrage ​de la localisation, la langue, le fuseau horaire à partir du serveur lui même : 
 +<code bash> 
 +mv ${SIDUS}/etc/locale.gen ${SIDUS}/​etc/locale.gen.orig 
 +mv ${SIDUS}/​etc/​timezone ${SIDUS}/​etc/​timezone.orig 
 +mv ${SIDUS}/​etc/default/keyboard ${SIDUS}/​etc/​default/​keyboard.orig 
 +cp /etc/locale.gen ${SIDUS}/​etc/​locale.gen 
 +cp /​etc/​timezone ${SIDUS}/​etc/​timezone 
 +cp /​etc/​default/​keyboard ${SIDUS}/​etc/​default/​keyboard 
 +sidus locale-gen 
 +sidus dpkg-reconfigure tzdata 
 +sidus dpkg-reconfigure locales 
 +</​code>​
  
-Pour des raisons ​de simplicité,​ le volume offert porte l'IP du client et nous ne fournissons que le serveur ​de volume iSCSI. Des login et mot de passe d'accès par défaut sont dans le fichier ''​rootaufs''​.+• Installation ​de l'environnement graphique ​de poste de travail ​et d'un environnement plus léger 
 +<code bash> 
 +sidus tasksel install desktop  
 +sidus tasksel install xfce-desktop 
 +</​code>​
  
-===== Quelques ruses (à appliquer) =====+• Purge des paquets qui foutent le bronx pour une utilisation dans XFCE 
 +<code bash> 
 +sidus apt-get purge -y network-manager modemmanager gdm3 gnome-session gnome-terminal nano vim-tiny 
 +sidus apt-get clean 
 +</​code>​
  
-  * pour le paramétrage du nom par DHCP (hostname), effacer ''/​etc/​hostname''​ 
-  * paramétrer le ''/​etc/​resolv.conf''​ avec une définition persistente 
-  * dans ''/​etc/​network/​interfaces''​ : définir un loopback 
-  * modifier le démarrage de GDM3 pour ne le démarrer qu'​après le lancement du NSCD 
-  * paramétrer le ''/​etc/​security/​limits.conf''​ (indispensable dans un environnement HPC) 
-  * paramétrer du ''/​etc/​fstab''​ avec l'​entrée du serveur NFS des comptes utilisateurs 
-  * faire pour le montage NFS : ''​echo ASYNCMOUNTNFS=no %%>>​%% ${SIDUS}/​etc/​default/​rcS''​ 
  
-==== Pour les systèmes virtuels à base de VirtualBox : ==== 
  
-  * Installer VBoxLinuxAdditions.run dans le système Sidus 
  
-==== Pour les systèmes avec une carte InfiniBand : ====+• Paramétrage d'un boot par NFS utilisant Dracut 
 +<code bash> 
 +mkdir ${SIDUS}/​usr/​lib/​dracut/​modules.d/​90sidus 
 +wget -O ${SIDUS}/​usr/​lib/​dracut/​modules.d/​90sidus/​module-setup.sh ${HTTP}/​module-setup.sh 
 +wget -O ${SIDUS}/​usr/​lib/​dracut/​modules.d/​90sidus/​sidus-mount.sh ${HTTP}/​sidus-mount.sh 
 +chmod 755 ${SIDUS}/​usr/​lib/​dracut/​modules.d/​90sidus/​*.sh 
 +</​code>​
  
-  * Forcer le chargement des modules dans ''/etc/modules''​ et regénérer le ''​initrd''​ +• Modification du bail DHCP (sinon ça coupe l'accès au client au bout de quelques minutes)...  
-  * Exécuter dans ''​/etc/rc.local''​ un script ​permettant de récupérer l'​adresse IP Ethernet et construire une adresse IP pour la carte Infiniband.+<code bash> 
 +sed -i "s/=\$new_dhcp_lease_time/​=forever/"​ ${SIDUS}/​usr/​lib/​dracut/modules.d/40network/dhclient-script.sh 
 +</​code>​
  
-==== Pour les systèmes avec une carte Nvidia : ====+• Création du démarreur à partir de Dracut
  
-Pour la majorité des cartes Nvidia, ​les paquets proposés dans la Debian Wheezy permettent une installation complète des pilotes propriétaires,​ des libraries OpenGL, Cuda et OpenCL+<WRAP center round important 80%> 
 +Attention : il faut générer l'''​initrd''​ en chroot uniquement ! 
 +Sinon il ne prend pas en compte ​les modules ''​overlay'' ​et ''​aufs'',​ même lorsque que l'on charge les modules à l'aide de ''​modprobe''​... 
 +</​WRAP>​
  
-Attention cependant si vous désirez utiliser simultanément l'ICD (Installable Client Loader) OpenCL d'AMD pour exploiter vos processeurs ET votre carte graphique : nous avons dû installer toute l'​infrastructure pilote, Cuda et OpenCL pour le permettre.+<code bash> 
 +sidus dpkg-reconfigure dracut 
 +</​code>​
  
-Pour les cartes Quadro 2000M de portable, il semble ​que la dernière bouture "qui fonctionne"​ soit la version 319.60. +• Vérification ​que le démarreur comprend bien les composants demandés
-Pour les cartes plus récentes, dont les GTX Titan, un pilote supérieur à la 319 est indispensable.+
  
-Dans tous les cas, le rétroportage des paquets Nvidia de Sid ou Experimental pour Wheezy fonctionne plutôt bien.+<​code>​ 
 +ls ${SIDUS}/​boot/​initrd.img-*-$(echo ${ARCH} | sed '​s/​i386/​686/​g'​) | xargs -I '​{}'​ ${SIDUS}/​usr/​bin/​lsinitrd '​{}'​ | egrep '​(overlay.ko|aufs.ko|sidus)'​ 
 +</​code>​
  
-==== Pour les systèmes avec une carte AMD ATI ====+Normalement apparaissent au moins les sorties : 
 +<​​code>​​  
 +-rwxr-xr-x ​ 1 root ​root ​ 1695 Oct 3 11:46 lib/​​dracut/​​hooks/​​pre-pivot/​​10-sidus-mount.sh 
 +-rw-r--r-- ​ 1 root ​root ​ 60300 Nov 28 16:22 lib/​​modules/​​4.9.0-4-686/​​kernel/​​fs/​​overlayfs/​​overlay.ko  
 +-rw-r--r-- ​ 1 root ​root ​ ​449800 Nov 28 16:22 lib/​​modules/​​4.9.0-4-686/​​updates/​​dkms/​​aufs.ko 
 +</​​code>​​ ​
  
-Pour la majorité de cartes ATI, les paquets proposés dans la Debian Wheezy permettent une installation complète des pilotes propriétaires,​ des libraries OpenGL, Cuda et OpenCL.+• Suppression du hostname pour le paramétrage automatique du HOST 
 +<code bash> 
 +sidus rm /​etc/​hostname 
 +</​code>​
  
 +• Définition de l'​interface de loopback
 +<code bash>
 +tee ${SIDUS}/​etc/​network/​interfaces <<EOF
 +auto lo
 +iface lo inet loopback
 +EOF
 +</​code>​
  
-===== Démontage binding "​système"​ =====+Pour la résolution DNS 
 +<code bash> 
 +wget -O ${SIDUS}/​etc/​resolv.conf $HTTP/​resolv.conf.sidus 
 +</​code>​
  
-De manière à installer correctement SIDUS, nous avons été contraint de lier étroitement système hôte et chroot. Il est donc nécessaire de réaliser les opérations opposées du début d'​installation de SIDUS. 
  
-<​code>​ +• Pour le tuning système associé aux interfaces réseau 
-umount ​${SIDUS}/run/shm +<​code ​bash
-umount ​${SIDUS}/​dev/​pts +wget -O ${SIDUS}/etc/sysctl.d/​gc.conf ​$HTTP/gc.conf
-sidus umount /​proc/​sys/​fs/​binfmt_misc +
-sidus umount /proc +
-sidus umount ​/sys+
 </​code>​ </​code>​
  
-===== Configuration du démarrage de services =====+• Pour dépasser les limitations d'​exploitation : 
 +<code bash> 
 +mv ${SIDUS}/​etc/​security/​limits.conf ${SIDUS}/​etc/​security/​limits.conf.orig 
 +wget -O ${SIDUS}/​etc/​security/​limits.conf $HTTP/​limits.conf 
 +</​code>​
  
-<​code>​ +<​code ​bash> 
-cp /sbin/start-stop-daemon ​${SIDUS}/sbin/start-stop-daemon+sidus apt-get install nfs-common 
 +mv ${SIDUS}/​etc/​default/​nfs-common ${SIDUS}/​etc/​default/​nfs-common.orig 
 +mv ${SIDUS}/​etc/​idmapd.conf ${SIDUS}/​etc/​idmapd.conf.orig 
 +cp /etc/default/nfs-common ${SIDUS}/​etc/​default/​nfs-common 
 +cp /​etc/​idmapd.conf ​${SIDUS}/etc/idmapd.conf 
 +wget -O ${SIDUS}/​etc/​fstab $HTTP/​fstab 
 +echo -e '#​!/​bin/​bash\n\n#​ Mount /home folder\nmount /​home\n\nexit 0' > ${SIDUS}/​etc/​rc.local 
 +chmod 755 ${SIDUS}/​etc/​rc.local
 </​code>​ </​code>​
  
-Si vous souhaitez que votre SIDUS chrooté démarre ses services (mauvaise idée), vous devez supprimer ​le hook correspondant. +• Démontage du cordon ombilical avec le système 
-<​code>​ +<​code ​bash
-rm -f ${SIDUS}/usr/bin/policy-rc.d+sidus umount ​-/proc 
 +sidus umount -l /sys 
 +sidus umount -l /dev/pts 
 +sidus dpkg-reconfigure dracut
 </​code>​ </​code>​
  
-===== Effacement des dossiers temporaires =====+• Rajout de AUFS dans /​etc/​updatedb.conf 
 +<code bash> 
 +sidus mv /​etc/​updatedb.conf /​etc/​updatedb.conf.orig 
 +wget -O ${SIDUS}/​etc/​updatedb.conf $HTTP/​updatedb.conf 
 +</​code>​
  
-<​code>​ +• Rajout dans /​etc/​security/​group.conf 
-rm -r ${SIDUS}/run/${SIDUS}/tmp/* +<​code ​bash
 +cp ${SIDUS}/etc/security/​group.conf ​${SIDUS}/etc/security/​group.conf.orig 
 +sed -i "s/\#\ End/\*;​\*;​\*;​Al0000-2400;​plugdev,​fuse,​scanner,​dialout,​video,​audio,​floppy,​cdrom\n\#​\ End/g" ${SIDUS}/​etc/​security/​group.conf
 </​code>​ </​code>​
  
-===== Purge des processus liés à Sidus =====+• Copier l'​initrd et le vmlinuz sur votre serveur tftp  
 +   * Pour une architecture amd64 
 +<code bash> 
 +ls ${SIDUS}/​boot/​initrd* | while read INITRD; do EXTENSION=$(echo ${SIDUS} | awk -F'/'​ '{ print $NF }'); NEWINITRD=$(echo $INITRD | awk -F'/'​ '{ print $NF}'​)@$EXTENSION; ​ cp $INITRD /​srv/​tftp/​$NEWINITRD ;  chmod 644 /​srv/​tftp/​$NEWINITRD ;  cd /​srv/​tftp/​efi64 ;  ln -s ../​$NEWINITRD $NEWINITRD ; done 
 +ls ${SIDUS}/​boot/​vmlinuz* | while read KERNEL; do EXTENSION=$(echo ${SIDUS} | awk -F'/'​ '{ print $NF }'); NEWKERNEL=$(echo $KERNEL | awk -F'/'​ '{ print $NF}'​)@$EXTENSION; ​ cp $KERNEL /​srv/​tftp/​$NEWKERNEL ; chmod 755 /​srv/​tftp/​$NEWKERNEL ;  cd /​srv/​tftp/​efi64 ;  ln -s ../​$NEWKERNEL $NEWKERNEL ; done 
 +</​code>​ 
 + 
 +   * Pour une architecture i386 
 +<code bash> 
 +ls ${SIDUS}/​boot/​initrd* | while read INITRD; do EXTENSION=$(echo ${SIDUS} | awk -F'/'​ '{ print $NF }'); NEWINITRD=$(echo $INITRD | awk -F'/'​ '{ print $NF}'​)@$EXTENSION; ​ cp $INITRD /​srv/​tftp/​$NEWINITRD ;  chmod 644 /​srv/​tftp/​$NEWINITRD ;  cd /​srv/​tftp/​efi32 ;  ln -s ../​$NEWINITRD $NEWINITRD ; done 
 +ls ${SIDUS}/​boot/​vmlinuz* | while read KERNEL; do EXTENSION=$(echo ${SIDUS} | awk -F'/'​ '{ print $NF }'); NEWKERNEL=$(echo $KERNEL | awk -F'/'​ '{ print $NF}'​)@$EXTENSION; ​ cp $KERNEL /​srv/​tftp/​$NEWKERNEL ; chmod 755 /​srv/​tftp/​$NEWKERNEL ;  cd /​srv/​tftp/​efi32 ;  ln -s ../​$NEWKERNEL $NEWKERNEL ; done 
 +</​code>​ 
 + 
 +\\ 
 + 
 +• Vérifiez que vous avez bien créé votre menu de démarrage sur le serveur PXE pour pouvoir démarrer votre image sidus, sinon veuillez exécuter l'​étape décrite [[developpement:​productions:​sidus4buster#​Configuration menu de démarrage|ici]].  
  
 +• Création (optionnelle) des comptes utilisateurs : les comptes créés sont les 24 lettres grecques, et les UID créés le sont des UID 1001 à 1024 :
 <​code>​ <​code>​
-lsof | grep ${SIDUS} ​ | awk '{ print $2 }' | sort -u | xargs -I '{}' kill '{}'+mkdir /​etc/​scripts 
 +wget -O ${SIDUS}/​etc/​scripts/​CreateUsers.sh $HTTP/​CreateUsers.sh 
 +chmod 755 ${SIDUS}/​etc/​scripts/​CreateUsers.sh 
 +/​etc/​scripts/​CreateUsers.sh ${SIDUS}
 </​code>​ </​code>​
  
  
-====== Administration ====== 
  
-L'​administration ​d'​une ​instance Sidus s'​administre comme tout système chrooté : il y a cependant des précautions à prendre, toutes les fonctions d'​administration n'​exigeant pas les mêmes contraintes les unes des autres.+====== Administration ​d'​une ​session ======
  
-===== Mise à jour Debian =====+Il y a 3 approches pour maintenir une instance SIDUS : 
 +  - utiliser un chroot sur la racine directement 
 +  - utiliser un chroot avec mise en place du cordon ombilical 
 +  - utiliser une machine (virtuelle ou pas) comme "​maître"​ de configuration
  
-C'est certainement la fonction la plus courante. Le problème de la mise-à-jour est double : +Pour une architecture x84_64 ou AMD64<​code>​ 
-  * des paquets peuvent remplacer des services démarrant par ''​/etc/init.d''​ : une séquence va donc tenter d'​arrêter et redémarrer le service +export SIDUS=/srv/nfsroot/​jessie64nfs 
-  * des paquets exigent la présence d'un ''​/proc''​ monté+alias sidus="​DEBIAN_FRONTEND=noninteractive chroot ${SIDUS} $@" 
 +ARCH=amd64<​/code>
  
-Pour réaliser ​une mise-à-jour d'une instance ​SIDUS installée dans ''​${SIDUS}''​ en toute tranquillité,​ il suffit d'​enchaîner les commandes suivantes :+Pour une architecture i386<​code>​ 
 +export ​SIDUS=/​srv/​nfsroot/​jessie32nfs 
 +alias sidus="​DEBIAN_FRONTEND=noninteractive setarch i686 chroot ​${SIDUS} ​$@" 
 +ARCH=i386</​code>​ 
 +===== Approche chroot simple =====
  
-  * En amont des commandes de mise-à-jour ​:<​code>​ +Il suffit d'​exploiter la commande ''​sidus''​:<​code>​sidus <MaCommandeAMoi>
-mount --bind /dev/shm ${SIDUS}/​dev/​shm  +
-mount --bind /dev/pts ${SIDUS}/​dev/​pts  +
-chroot ${SIDUS} mount -t proc none /proc +
-</code> +
-  * Commandes de mise-à-jour :<​code>​ +
-chroot ${SIDUS} aptitude update +
-chroot ${SIDUS} aptitude -y full-upgrade +
-chroot ${SIDUS} aptitude clean</​code>​ +
-  * En aval des commandes de mise-à-jour :<​code>​ +
-umount -l /proc +
-umount -l ${SIDUS}/​dev/​shm +
-umount -l ${SIDUS}/​dev/​pts +
-lsof | grep ${SIDUS} ​ | awk '{ print $2 }' | sort -u | xargs -I '​{}'​ kill '​{}'  ​+
 </​code>​ </​code>​
  
-La dernière ligne des commandes aval est une précaution pour éviter que des processus lancés ​dans l'instance tourne sur l'​hôte.+L'​alias utilisé ​dans l'installation peut-être défini réglée dans son shell.
  
 +===== Approche chroot élaborée =====
  
-====== Démonstration Scipy 2013 ======+  * établissement du cordon ombilical : <​code>​sidus mount -t proc none /proc 
 +sidus mount -t sysfs sys /sys 
 +mount --bind /dev/pts ${SIDUS}/​dev/​pts</​code>​ 
 +  * opérations de maintenance : <​code>​sidus <​MaCommandeAMoi></​code>​ 
 +  * coupure du cordon ombilical : <​code>​sidus umount -l /proc 
 +sidus umount -l /sys 
 +sidus umount -l /​dev/​pts</​code>​
  
-Les images suivantes [[http://​www.cbp.ens-lyon.fr/​sidus/​sidus4scipy2013.ova|Sidus4Scipy2013]] et [[http://​www.cbp.ens-lyon.fr/​sidus/​sidus4client.ova|Sidus4Client]] permettent de juger de l'​efficacité de Sidus à offrir un environnement complet sur un poste de travail unique. 
  
-Ces deux images nécessitent toutes les deux l'outil de virtualisation Open Source [[http://​www.virtualbox.org|VirtualBox]] disponibles sur les plates-formes Linux, MacOS X, Windows et Solaris. ​+===== Approche ​''​master''​ =====
  
-L'instance SIDUS est intégrée dans la machine virtuelle **sidus4scipy** issue de l'importation ​de la machine ​[[http://www.cbp.ens-lyon.fr/sidus/sidus4scipy2013.ova|Sidus4Scipy]]Elle offre un bureau Gnome complet avec des outils Python présentés lors de Scipy 2013+Le ''/​etc/​exports''​ comprend ​l'adresse ''​10.20.15.253''​ laquelle permet le montage ​de la racine en Read/Write. Il faut donc permettre le montage d'​un ​machine ​et une seule en Read/Write. 
 +<​code>​ 
 +/srv/​nfsroot/​buster64nfs 10.20.15.253/255.255.255.255(rw,​no_subtree_check,​async,​no_root_squash) 10.20.15.0/255.255.255.0(ro,​no_subtree_check,​async,​no_root_squash) 
 +/​srv/​nfsroot/​buster32nfs 10.20.15.253/​255.255.255.255(rw,​no_subtree_check,​async,​no_root_squash) 10.20.15.0/​255.255.255.0(ro,​no_subtree_check,​async,​no_root_squash) 
 +</​code>​
  
-La machine ​virtuelle ​**sidus4client** intègre la machine virtuelle minimale permettant de démarrer un client utilisant l'​instance SIDUSAprès quelques secondes, un bureau Gnome s'​ouvre.+Le fichier ''/​etc/​dhcp/​dhcpd.conf''​ comprend la définition de cette machine **master** 
 +<​code>​ 
 +host master { 
 +     ​fixed-address 10.20.15.253; 
 +     ​hardware ethernet 08:​00:​aa:​bb:​cc:​dd;​ 
 +     } 
 +</​code>​
  
-Quelques éléments : +Il faut maintenant associer cette adresse ​MAC dans la configuration du serveur TFTP à un menu de démarrage ​spécifique. 
-  * l'​espace nécessaire pour installer l'​image complète est de 8 Go +<​code>​ 
-  * à l'​importation : +wget -O /​srv/​tftp/​pxelinux.cfg/​master ${HTTP}/​master 
-    * demander la réinitialisation de l'adresse ​Mac (dans le cas contraire, toutes les personnes sur le même réseau local auront ​la même adresse IP : des difficultés de communication sont à prévoir :) +cd /​srv/​tftp/​pxelinux.cfg 
-  * avant le démarrage de la machine virtuelle : +ln -s master 01-08-00-aa-bb-cc-dd 
-    * ouvrir les paramétrages +</​code>​
-    * aller dans le paramétrage réseau et vérifier l'​interface réseau : c'est **eth0** sous Linux, **en0** sous MacOS +
-    * aller dans le paramétrage de partage et créer ​un dossier **MyHost** +
-  * il est préférable ​de disposer d'au moins 3 Go sur la machine créant ces deux machines virtuelles +
-  * lors du démarrage, les claviers sont en QWERTY américains +
-  * les identifiants et mots de passe du root et de 4 comptes génériques créés +
-    * **root** et **Sidus2013** +
-    * **alpha** et **Alpha13** +
-    * **beta** et **Beta13** +
-    * **gamma** et **Gamma13** +
-    * **delta** et **Delta13** +
-    * (voir pour toutes les autres lettres grecques dans un dico !) +
-    * **omega** et **Omega13**+
  
-<note warning>​Attention ! Dans un souci d'​internationalisation (Scipy 2013) +En regardant dans le menunous avons ''/​srv/​tftp/​pxelinux.cfg/​master'', ​pour le lancement en  
-  * le clavier par défaut est un américain Qwerty +<​code>​ 
-  * la langue par défaut est l'anglais +LABEL master64 
-  * le fuseau horaire celui de Austin +      MENU LABEL SIDUS based on Debian Jessie on x86_64 : Read/Write mode 
-Il est très facile de repasser dans un mode "​français" ​pour le clavier et le fuseau via les commandes +      ​KERNEL vmlinuz-3.16.0-4-amd64.sidus 
-  * Pour le serveur ​SIDUS +      MENU default 
-    * ''​dpkg-reconfigure keyboard-configuration''​ +      APPEND console=tty1 initrd=initrd.img-3.16.0-4-amd64.sidus rd.shell ip=dhcp root=nfs:​10.20.15.254:/​srv/​nfsroot/​jessie64nfs:​vers=3,​rw,​rsize=32768,​wsize=32768,​tcp,​nolock,​noatime,​actimeo=1,​nocto,​hard,​intr bridge=sidus:​eth0 ipv6.disable=1 bnx2.disable_msi=1 intel_pstate=disable 
-    * ''​dpkg-reconfigure tzdata''​ +</​code>​ 
-  * Pour le client SIDUS + 
-    * ''​sidus dpkg-reconfigure keyboard-configuration''​ +Les seules différences avec le démarrage par défaut sont : 
-    * ''​sidus dpkg-reconfigure tzdata''​ +  suppression de ''​aufs'' ​dans les options 
-</​note>​+  présence de ''​rw'' ​dans les options de montage du NFSROOT
  
 ===== Démarrage sur une machine tierce ===== ===== Démarrage sur une machine tierce =====
Ligne 411: Ligne 640:
 Dans les deux cas, le //​forwarding//​ doit être activé : ''/​proc/​sys/​net/​ipv4/​ip_forward''​ mis à ''​1''​. Dans les deux cas, le //​forwarding//​ doit être activé : ''/​proc/​sys/​net/​ipv4/​ip_forward''​ mis à ''​1''​.
  
-====== Communications autour de SIDUS ====== 
- 
-  * **Année 2014** 
-    * Présentation à l'ISA : SIDUS outil de reproductibilité 
-    * Présentation à [[http://​lyoncalcul.univ-lyon1.fr/​spip.php?​article3|Lyon Calcul]] : [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​LyonCalcul2014.pdf|SIDUS outil de reproductibilité]],​ [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​PiMPI.avi|exemple vidéo]] 
-    * Poster à Compas 2014 sur [[developpement:​productions:​sidus|SIDUS]] : [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​Compas2014_SIDUS.pdf|article Compas]], [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​Realis2014_SIDUS.pdf|article Realis]], [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​Compas2014_Poster.pdf|poster]] 
-    * Présentation au LIP sur [[developpement:​productions:​sidus|SIDUS]] : [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​LIP-20140127-EQ.pdf|presentation]],​ janvier 2014 
- 
-  * **Année 2013** 
-    * Poster JRES 2013 sur [[developpement:​productions:​sidus|SIDUS]] : [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​JRes2013-SIDUS-1121.pdf|article]],​ [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​JRes-Poster-SIDUS.pdf|poster]],​ décembre 2013 
-    * Présentation [[http://​succes2013.sciencesconf.org/​|Succes 2013]] sur [[developpement:​productions:​sidus|SIDUS]] avec [[http://​succes2013.sciencesconf.org/​24312/​document|article]],​ [[http://​succes2013.sciencesconf.org/​conference/​succes2013/​Succes_20131114_EQ.pdf|présentation]] et [[http://​webcast.in2p3.fr/​videos-JSFG2013_sidius|video]] : novembre 2013 
-    * Article [[http://​www.linuxjournal.com/​content/​november-2013-issue-linux-journal-system-administration|Linux Journal]] sur [[developpement:​productions:​sidus|SIDUS]] : novembre 2013 
-    * Présentation [[http://​conference.scipy.org/​scipy2013/​presentation_detail.php?​id=199|SciPy 2013]] sur [[http://​www.youtube.com/​watch?​v=J5myH0y_bks|SIDUS]] 
- 
-  * **Année 2012** 
-    * Présentation [[http://​aramis.resinfo.org/​wiki/​doku.php?​id=pleniaires:​pleniaire14juin2012|Aramis]] : [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​ARAMIS-20120614_EQ.pdf|Virtualisation de ressources dans un contexte Open Source]] 
-    * Présentation Séminaire Chimie Théorique ENS-Lyon : [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​ChimieTheo2012.pdf|SIDUS & Loi d'​Amdahl]] 
-    * Présentation [[http://​www.esrf.eu/​events/​conferences/​debian-for-scientific-facilities-days-1/​debian-for-scientific-facilities-days|Debian Facilitaties Days ]] : [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​DSFD2012_4.pdf|From Workstations to HPC with Debian]]. 
  
- --- //​[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] 2015/03/20 09:27// 
developpement/productions/sidus.txt · Dernière modification: 2022/03/16 14:45 par equemene