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 [2020/08/17 15:53]
equemene
developpement:productions:sidus [2020/08/17 16:05]
equemene
Ligne 1: Ligne 1:
-<note warning>​En construction !</​note>​ 
- 
 ====== SIDUS  ====== ====== SIDUS  ======
 +
 +
  
 <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>​ <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>​
Ligne 78: Ligne 78:
 SIDUS se base sur une majorité de composants simples et éprouvés, disponible sur la majorité des distributions GNU/Linux. SIDUS se base sur une majorité de composants simples et éprouvés, disponible sur la majorité des distributions GNU/Linux.
  
-Nous allons maintenant détailler comment installer ​le sien !+Dans les pages des années précédentes sous SIDUS, une documentation d'​installation pour Debian était détaillée... Malheureusement, ​le prérequis d'​installation rendait son appropriation inaccessible aux débutants. 
 + 
 +Il a donc été choisi de proposer une machine virtuelle complète sous VirtualBox permettant de démarrer les 3 distributions les plus courantes avec SIDUS : 
 +  * la [[https://​www.debian.org/​releases/​buster/​|Debian 10 "​Buster"​]] 
 +  * la [[https://​releases.ubuntu.com/​20.04/​|Ubuntu 20.04 "Focal Fossa"​]] 
 +  * la [[https://​www.centos.org/​|CentOS version 8]]
  
 ====== Installation ====== ====== Installation ======
- 
-===== Préparation du système ===== 
- 
-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 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. 
- 
-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. 
- 
-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'​ 
- 
-==== Installation de la passerelle ==== 
- 
-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-dessus. Ces 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>​ 
-mv /​etc/​network/​interfaces /​etc/​network/​interfaces.orig 
-wget -O /​etc/​network/​interfaces ${HTTP}/​interfaces 
-mv /​etc/​sysctl.conf /​etc/​sysctl.conf.orig 
-wget -O /​etc/​sysctl.conf ${HTTP}/​sysctl.conf 
-</​code>​ 
- 
-Montage de l'​interface interne 
-<​code>​ 
-ifup eth1 
-</​code>​ 
- 
-==== Installation du serveur DNS ==== 
- 
-Installation du serveur DNS Bind9 : 
-<​code>​ 
-apt-get install bind9 
-</​code>​ 
- 
-Configuration du serveur DNS : 
-<​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>​ 
- 
-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>​ 
- 
-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>​ 
- 
-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''​. 
- 
-==== Installation du serveur DHCP ==== 
- 
-Installation du serveur DHCP 
-<​code>​ 
-apt-get install isc-dhcp-server 
-</​code>​ 
- 
-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 DHCP, dans 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>​ 
- 
-==== Installation du serveur TFTP ==== 
- 
-• Installation du paquet serveur TFTP 
-<​code>​ 
-apt-get install tftpd-hpa 
-</​code>​ 
- 
-<​code>​ 
-apt-get install pxelinux syslinux-common syslinux-efi memtest86 memtest86+ 
-</​code>​ 
- 
-• 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 -s ../​memtest86 memtest86 
-ln -s ../​memtest86+ memtest86+ 
-# 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 -s ../​memtest86 memtest86 
-ln -s ../​memtest86+ memtest86+ 
-</​code>​ 
- 
-• 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>​ 
- 
-==== Configuration menu de démarrage ==== 
-▶ Paramétrage des menu des démarrages possibles ◀ 
-<​code>​ 
-wget -O /​srv/​tftp/​pxelinux.cfg/​default ${HTTP}/​default 
-</​code>​ 
- 
- 
-Il est déjà possible de démarrer une machine par le réseau pour tester le serveur. Dans 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> 
-PROMPT 0 
-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>​ 
- 
-==== Installation du serveur NFS ==== 
- 
-Le serveur NFS va servir à offrir deux partages : 
-  * le partage de SIDUS 
-  * le partage des comptes utilisateurs 
- 
-<​code>​ 
-apt-get install nfs-common nfs-kernel-server 
-</​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>​ 
- 
-Paramétrage du dossier des comptes utilisateurs 
-<​code>​ 
-mkdir -p /​export/​home 
-echo "/home /​export/​home none bind 0 0" >> /etc/fstab 
-mount -a 
-</​code>​ 
- 
-Création des racines des instances SIDUS 
-<​code>​ 
-mkdir -p /​srv/​nfsroot/​buster64nfs /​srv/​nfsroot/​buster32nfs 
-</​code>​ 
-Si le volume racine est en BTRFS, il 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>​ 
- 
-<​code>​ 
-/​etc/​init.d/​nfs-common restart 
-/​etc/​init.d/​nfs-kernel-server restart 
-</​code>​ 
- 
-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)''​ 
- 
-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. 
- 
-Une fois ces 4 services DNS, DHCP, TFTP et NFS configurés,​ nous pouvons installer notre Sidus complet. 
- 
-===== Debootstrap ===== 
- 
-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. 
- 
-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é. 
- 
-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 à exclure. Nous 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). 
- 
-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. 
- 
-Configuration de la variable ''​HTTP'':​ 
-<code bash> 
-export HTTP=http://​www.cbp.ens-lyon.fr/​sidus/​buster 
-</​code>​ 
- 
-Installation de ''​debootstrap''​ 
-<code bash> 
-apt-get install debootstrap 
-</​code>​ 
- 
-Pour une architecture x84_64 ou AMD64 
-<code bash> 
-export SIDUS=/​srv/​nfsroot/​buster64nfs 
-alias sidus="​DEBIAN_FRONTEND=noninteractive chroot ${SIDUS} $@" 
-ARCH=amd64 
-</​code>​ 
- 
-Pour une architecture i386 
-<code bash> 
-export SIDUS=/​srv/​nfsroot/​buster32nfs 
-alias sidus="​DEBIAN_FRONTEND=noninteractive setarch i686 chroot ${SIDUS} $@" 
-ARCH=i386 
-</​code>​ 
- 
- 
-• Lancement de l'​installation 
- 
-<code bash> 
-debootstrap --arch $ARCH --components='​main,​contrib,​non-free'​ buster $SIDUS http://​ftp.de.debian.org/​debian 
-</​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 installation. Nous devons donc inhiber le lancement de ce service par la définition d'un hook (''/​usr/​sbin/​policy-rc.d''​) : 
-<code bash> 
-#!/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>​ 
- 
-* 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>​ 
-sidus mount -t proc none /proc 
-sidus mount -t sysfs sys /sys 
-mount --bind /dev/pts ${SIDUS}/​dev/​pts 
-</​code>​ 
- 
-• Définition du mot de passe ''​root''​ (à changer ensuite)... 
-<code bash> 
-echo "​root:​MyStrongPassword"​ | sidus chpasswd 
-</​code>​ 
- 
- 
-• Installation de paquets jugés nécessaires 
- 
-(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-${ARCH} linux-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>​ 
- 
-Sous architectures 32 bits, 2 noyaux sont à intégrer 
- 
-• 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>​ 
- 
-• 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>​ 
- 
-• 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>​ 
- 
- 
- 
- 
-• 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>​ 
- 
-• Modification du bail DHCP (sinon ça coupe l'​accès au client au bout de quelques minutes)... ​ 
-<code bash> 
-sed -i "​s/​=\$new_dhcp_lease_time/​=forever/"​ ${SIDUS}/​usr/​lib/​dracut/​modules.d/​40network/​dhclient-script.sh 
-</​code>​ 
- 
-• Création du démarreur à partir de Dracut 
- 
-<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>​ 
- 
-<code bash> 
-sidus dpkg-reconfigure dracut 
-</​code>​ 
- 
-• Vérification que le démarreur comprend bien les composants demandés 
- 
-<​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>​ 
- 
-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>​​ ​ 
- 
-• 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>​ 
- 
-Pour la résolution DNS 
-<code bash> 
-wget -O ${SIDUS}/​etc/​resolv.conf $HTTP/​resolv.conf.sidus 
-</​code>​ 
- 
- 
-• Pour le tuning système associé aux interfaces réseau 
-<code bash> 
-wget -O ${SIDUS}/​etc/​sysctl.d/​gc.conf $HTTP/​gc.conf 
-</​code>​ 
- 
-• 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 bash> 
-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>​ 
- 
-• Démontage du cordon ombilical avec le système 
-<code bash> 
-sidus umount -l /proc 
-sidus umount -l /sys 
-sidus umount -l /dev/pts 
-sidus dpkg-reconfigure dracut 
-</​code>​ 
- 
-• 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>​ 
- 
-• Rajout dans /​etc/​security/​group.conf 
-<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>​ 
- 
-• 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>​ 
-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>​ 
- 
- 
- 
-====== Administration d'une session ====== 
- 
-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 
- 
-Pour une architecture x84_64 ou AMD64<​code>​ 
-export SIDUS=/​srv/​nfsroot/​jessie64nfs 
-alias sidus="​DEBIAN_FRONTEND=noninteractive chroot ${SIDUS} $@" 
-ARCH=amd64</​code>​ 
- 
-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 ===== 
- 
-Il suffit d'​exploiter la commande ''​sidus'':<​code>​sidus <​MaCommandeAMoi>​ 
-</​code>​ 
- 
-L'​alias utilisé dans l'​installation peut-être défini réglée dans son shell. 
- 
-===== Approche chroot élaborée ===== 
- 
-  * é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>​ 
- 
- 
-===== Approche ''​master''​ ===== 
- 
-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>​ 
- 
-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>​ 
- 
-Il faut maintenant associer cette adresse MAC dans la configuration du serveur TFTP à un menu de démarrage spécifique. 
-<​code>​ 
-wget -O /​srv/​tftp/​pxelinux.cfg/​master ${HTTP}/​master 
-cd /​srv/​tftp/​pxelinux.cfg 
-ln -s master 01-08-00-aa-bb-cc-dd 
-</​code>​ 
- 
-En regardant dans le menu, nous avons ''/​srv/​tftp/​pxelinux.cfg/​master'',​ pour le lancement en  
-<​code>​ 
-LABEL master64 
-      MENU LABEL SIDUS based on Debian Jessie on x86_64 : Read/Write mode 
-      KERNEL vmlinuz-3.16.0-4-amd64.sidus 
-      MENU default 
-      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 
-</​code>​ 
- 
-Les seules différences avec le démarrage par défaut sont : 
-  * suppression de ''​aufs''​ dans les options 
-  * présence de ''​rw''​ dans les options de montage du NFSROOT 
- 
-===== Démarrage sur une machine tierce ===== 
- 
-Il est aussi possible de démarrer l'​instance sur une autre machine en sélectionnant dans la configuration de la machine virtuelle l'​interface réseau que vous comptez utiliser (généralement ''​eth0''​), ​ 
-  * soit en connectant directement la machine à une autre via le port Ethernet, une condition est nécessaire 
-    * un port RJ45 supportant l'​autoconfiguration en port croisé 
-  * soit en connectant la machine hôte et la machine cliente sur un commutateur externe 
- 
-Dans les deux cas, le //​forwarding//​ doit être activé : ''/​proc/​sys/​net/​ipv4/​ip_forward''​ mis à ''​1''​. 
  
  
developpement/productions/sidus.txt · Dernière modification: 2022/03/16 14:45 par equemene