Utilisation de Symantec Ghost et/ou autres utilitaires... via un serveur PXE Ubuntu Server Linux 10.04 LTS (adaptable Microsoft Windows Server sauf pour NFS) Débuté le jeudi 7 Mars 2013 Version du vendredi 12 avril 2013 Par MACHINET Vincent AU SOMMAIRE : Prérequis...2 Configuration du service TFTP...3 Configuration du service DHCP...9 Page 1
Prérequis Serveur à base Linux () Il est nécessaire qu'un serveur à base Linux soit déjà en place avec les fonctions de base, muni du service minimum SSH (port TCP 22) et si possible, pour simplifier les procédures, le mini service Webmin. Même si les habitudes «linuxiennes» font que les configurations s'effectuent toujours en lignes de commandes, les novices ont en général beaucoup de mal à s'adapter à ce genre de réglages, c'est la raison pour laquelle cette documentation propose l'utilisation du paquet WebMin (interface Web) permettant une configuration entièrement graphique relativement complète et largement suffisante pour nos besoins. Ce paquet logiciel est directement disponible sur le site http://webmin.com/ (il est mis à jour tous les six mois en moyenne). Attention : le port d'utilisation par défaut de WebMin est le port TCP 10000 avec le protocole HTTPS, cela signifie que pour accéder à la configuration du serveur, il faudra ouvrir votre navigateur préféré et taper l'adresse suivante : https://ip_serveur:10000 ou https://nom_netbios_serveur:10000 Pour cet exemple, il a été utilisé un serveur sur Pentium III cadencé à 800 MHz mais d'autres versions et d'autres distributions peuvent être utilisées, il faudra peut-être adapter les informations suivantes à votre cas. Pour ma part, j'ai modifié le port Webmin en TCP 12500 et le serveur s'appelle FRSAMBA, l'accès à sa configuration donne donc : https://frsamba:12500 Paquet logiciel propre au serveur PXE Le mieux, au préalable, est de choisir un service TFTP (Trivial File Transmit Protocol). Ce service correspond au pointage principal des ressources PXE (Pre execution Environnement) depuis lesquelles des images amorçables seront chargées vers les clients qui, à leur tour, les exécuteront. Service proposé : atftpd Répertoire dans lequel seront placé les images amorçables : /var/lib/tftpboot/disk Fichier de configuration du menu de lancement des images amorçables : /var/lib/tftpboot/pxelinux.cfg/default Paquet logiciel propre au serveur DHCP Ensuite, pour une détection automatique des adresses IP (Internet Protocol), il est fortement conseillé d'associer le service TFTP avec le service DHCP (Dynamic Host Controlled Protocol). Service proposé : dhcp3-server Fichier de configuration du service : /etc/dhcp3/dhcpd.conf Page 2
Configuration du service TFTP Comme il a été dit précédemment, le service TFTP est le cœur du serveur PXE. Il permet le chargement des images amorçables vers les clients qui en font la demande. Bien entendu, dans la mesure où les clients ne contiennent pas d'os (Operating System) chargé au moment de la recherche de serveur PXE, il leur est impossible de s'authentifier autrement que par leur adresse MAC (Medium Access Control) tel que le feraient les commutateurs Ethernet. Il n'existe donc pas de couple identifiant/mot de passe. Arborescence des fichiers qu'utilise le service TFTP : /var/lib/tftpboot pxelinux.cfg pxelinux.0 memdisk vesamenu.c32 msgs default boot.msg Racine du service. Répertoire de configuration principal. Répertoire des messages particuliers. Fichier texte contenant le message particulier. Fichier texte contenant les entrées du menu principal. Fichier de noyau du service PXE (équivalent à un BIOS). Fichier d'émulation de disque-ram sur le client. Fichier de menu graphique à afficher au client. Il est possible de placer directement les images amorçables à la racine du service TFTP mais pour ma part, aimant les choses rangées, mieux vaut créer un répertoire appelé «disk» pour placer les images. Voici la racine du serveur PXE. A noter que le fichier «splash.png» est facultatif mais il permet d'avoir un arrière-plan plus joli pour le menu PXE qui apparaîtra sur le client. Page 3
Pour mettre l'eau à la bouche, voici le menu qui sera obtenu sur le client. Ce menu apparaîtra directement en lançant l'ordinateur via sa carte réseau... Génial, non? Ca en jette! Mais avant de trop saliver sur le clavier, continuons la configuration du serveur PXE, entrons dans le répertoire pxelinux.cfg. Sans entrer dans les détails de sélection de menu de démarrage PXE en fonction de l'adresse MAC du client, le fichier de type texte (ici, unique) appelé «default» contient toutes les informations du menu de démarrage ainsi que les chargements de noyau et d'images amorçables en fonction du choix sélectionné... Page 4
Voici les lignes du fichier «default» utilisé ici, muni de ses explications : # vesamenu.c32 permet l'affichage d'un menu graphique VESA contrairement à menu.c32 # Attention : pour les ordinausores, vesamenu.c32 peut poser problème, dans ce cas, il faudra # utiliser menu.c32 qui se trouve dans les anciennes versions de GRUB. DEFAULT vesamenu.c32 # TIMEOUT 600 (temps maximal avant lancement, donné en secondes) ALLOWOPTIONS 0 PROMPT 0 # --- OPTIONS GRAPHIQUES DU MENU --- # --- Image de fond --- MENU BACKGROUND splash.png # --- Titre du menu principal --- MENU TITLE Menu PXE # --- Décalage vertical du menu par rapport au haut de la page --- MENU VSHIFT 2 # --- Nombre de lignes de menu affichées simultanément --- MENU ROWS 12 # --- Epaisseur de la bordure du menu --- MENU BORDER 0 # --- Largeur du menu --- MENU WIDTH 78 # --- Marge de gauche --- MENU MARGIN 11 # --- CHOIX DES COULEURS DE MENU --- # --- Couleur de bordure --- MENU COLOR BORDER 30;44 #00000000 #00000000 none # --- Couleur de barre de défilement --- MENU COLOR SCROLLBAR 30;44 #00000000 #00000000 none # --- Couleur de titre de menu --- MENU COLOR TITLE 1;36;44 #FF00FFFF #00000000 # --- Couleur de la sélection --- MENU COLOR SEL 7;37;40 #FF000000 #00000000 none # --- Couleur de non sélection --- MENU COLOR UNSEL 7;37;40 #FF00FF00 #00000000 none # --------------------------------------- # --- Le menu proprement parlé --- # --------------------------------------- # Chargement du média habituel de l'ordinateur (Exemple : son propre disque dur) LABEL Lancement normal LOCALBOOT 0 # Chargement de l'image de la disquette de «Partition Magic 8» # Le noyau memdisk est le fameux disque-ram dans lequel va s'enregistrer l'image amorçable «pqmagic.img.gz» se # trouvant dans le répertoire «disk» de la racine du serveur TFTP. # Remarque : les images amorçables peuvent être compressées! LABEL PQ Magic 8 APPEND initrd=disk/pqmagic.img.gz Page 5
# Lancement de FreeDOS (un DOS libre) # Son image amorçable est boot.ima (émulation d'une disquette 1,44 Mo) # et se trouve dans le répertoire disk. LABEL FreeDOS APPEND initrd=disk/boot.ima # Lancement de Gparted, un utilitaire de gestion de partition puissant basé sur la distribution Debian Linux et utilisant # le noyau vmlinuz. Quelques explication sur les paramètres de la commande APPEND : # Mode lecture/écriture (rw) dans la racine cliente qui n'est rien de plus que la RAM (root=/dev/ram) et dont # l'image disque amorçable est initrd.img se trouvant dans le répertoire disk/gparted depuis # la racine du serveur TFTP. # Le mode de lancement est de type live donc aucune installation requise, ceci est propre essentiellement aux # distributions Linux, mais pour ceux qui veulent le faire avec Microsoft Windows, il faut prévoir la version WinPE. # Dans notre exemple, le lancement opère sur un système de fichier aufs sans système d'échange de type SWAP # (partition spécial d'échange sous Linux, cela correspond au fichier «pagefile.sys» de la racine sous les versions # Windows NT). Pas de prompt apparent, le lancement s'effectue en mode VGA 4/3 avec une largeur de 788 pixels. # Le système de fichier de travail filesystem.squashfs étant trop volumineux (environ 130 Mo) pour pouvoir le lancer # avec un simple initrd, le paramètre fetch permet de pouvoir aller le cherche sur un serveur Web, ici, à l'adresse locale # 192.168.1.250 dans le répertoire PXE du site mais ce fichier peut tout à fait appartenir au monde de l'internet # à condition que l'adresse IP du serveur Web soit fixe car PXE ne charge pas de serveur DNS direct à ce stade # d'exécution. LABEL GParted MENU LABEL Partitionnement GParted KERNEL /disk/gparted/vmlinuz APPEND rw root=/dev/ram initrd=/disk/gparted/initrd.img boot=live config union=aufs noswap noprompt vga=788 fetch=http://192.168.1.250/pxe/filesystem.squashfs # Lancement de Ubuntu 12.04 en version réseau à partir du CD habituel basé sur la distribution Debian Linux et # utilisant le noyau vmlinuz. Quelques explication sur les paramètres de la commande APPEND : # root=/dev/nfs : chargement du module de communication NFS (Network FileSystem : Système de Fichier Réseau) # qui est un accès réseau pur propre aux systèmes de type Unix (désolé pour les serveurs Microsoft). # nfsroot : indication du chemin de partage nfs pour la racine du média de chargement de Ubuntu. # lang=fr_fr et kmap=fr-latin1 : chargement de la langue et du clavier français. LABEL Ubuntu 12.04 KERNEL /disk/ubuntu1204/casper/vmlinuz APPEND initrd=/disk/ubuntu1204/casper/initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.1.250:/var/lib/tftpboot/disk/ubuntu1204/ splash=silent lang=fr_fr kmap=fr-latin1 # Idem LABEL Ubuntu 12.10 KERNEL /disk/ubuntu1210/casper/vmlinuz APPEND initrd=/disk/ubuntu1210/casper/initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.1.250:/var/lib/tftpboot/disk/ubuntu1210/ splash=silent lang=fr_fr kmap=fr-latin1 # Idem LABEL XUbuntu 12.04 KERNEL /disk/xubuntu1204/casper/vmlinuz APPEND initrd=/disk/xubuntu1204/casper/initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.1.250:/var/lib/tftpboot/disk/xubuntu1204/ splash=silent lang=fr_fr kmap=fr-latin1 # Idem LABEL XUbuntu 12.10 KERNEL /disk/xubuntu1210/casper/vmlinuz APPEND initrd=/disk/xubuntu1210/casper/initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.1.250:/var/lib/tftpboot/disk/xubuntu1210/ splash=silent lang=fr_fr kmap=fr-latin1 Page 6
# En voilà une partie intéressante! # Chargement du noyau memdisk pour préparer un disque-ram dans lequel l'image amorçable pour Ghost # en réseau sera chargée. Cette image a été compressée avec Gzip et émule une disquette de 2,88 Mo. # Cette image possède un script qui utilise la commande suivante : NET USE Y: \\FRSAMBA\GHOST # Ce script va ensuite chercher Ghost.exe avec les paramètres -Z9 (compression maximale) -auto (découpage # automatique) -split=690 (découpe en morceaux de 690 Mo pour pouvoir les graver un par un. 690 Mo au lieu de # 700 Mo pour pouvoir importer la séquence de démarrage sous DOS dans le CDROM n 1). # Attention : les versions récentes de Samba (protocole SMB, Server Message Block) n'intègrent plus l'authentification # LANMAN par défaut, il faut le signaler explicitement dans son fichier de configuration /etc/samba/smb.conf pour # conserver la pleine compatibilité de tous les Microsoft Windows et MS-DOS : # lanman auth = yes # client plaintext auth = yes # client lanman auth = yes LABEL Session Ghost Network MENU LABEL Session Ghost Network # APPEND keeppxe initrd=disk/netboot.img.gz (keepxe permet de maintenir les drivers de carte réseau dans la # RAM après l'amorçage PXE mais il utilise trop de mémoire conventionnelle et n'en laisse plus assez pour démarrer # Ghost.exe correctement). APPEND initrd=disk/netboot.img.gz # Outils DOS du Windows 98 Seconde Edition de l'époque LABEL Boot Outils DOS MENU LABEL Outil DOS APPEND initrd=disk/boottools.img.gz # En voie de développement (non terminé) LABEL Installation Windows MENU LABEL Installation Microsoft Windows APPEND keeppxe initrd=disk/netbootwin.img.gz # Une distribution light mais bien utile de Linux LABEL Slitaz 4 KERNEL /disk/slitaz4/bzimage APPEND initrd=/disk/slitaz4/rootfs4.gz,/disk/slitaz4/rootfs3.gz,/disk/slitaz4/rootfs2.gz,/disk/slitaz4/rootfs1.gz lang=fr_fr kmap=fr-latin1 rw root=/dev/null vga=normal autologin # Attention : Sous Linux et de manière générale en programmation, NULL et ZERO sont deux vecteurs différents, un # exemple concret va le montrer rapidement : # dd if=/dev/null of=~/test.img bs=512 count=2880 # Cette commande va générer une image disquette vide de 0 octet (inexploitable) dans le répertoire personnel de # l'utilisateur. # dd if=/dev/zero of=~/test.img bs=512 count=2880 # Cette commande va générer une image disquette de 1,44 Mo formée que de «0» logiques (directement formatable et # exploitable) dans le répertoire personnel de l'utilisateur. # Pour résumer, /dev/null correspond au vide alors que /dev/zero correspond au «0» logique. # Pratique si l'on souhaite cacher la résultat d'une commande : # Echo coucou # Il affiche : coucou # Echo coucou >> /dev/null # Il n'affiche rien. # Outils de diagnostique Slitaz, y compris «Kon Boot» pour le «ByPassing Password» LABEL SliTaz (diagnostic rapide) APPEND initrd=disk/floppy-grub4dos.gz Page 7
# Lancement de Windows 3.11 via PXE (avec carte PCNet de qemu et/ou de VirtualBox) LABEL Windows 3.11 - carte PCNet APPEND initrd=/disk/win311-pcnet.img # Lancement de PaCiFiST v0.48 avec disque réseau LABEL Atari ST APPEND initrd=/disk/netboot-atari.img # Installation de Ubuntu via PXE (en guise de passerelle) dont les fichiers d'installation sont sur Internet LABEL Installation Ubuntu (via Internet) MENU LABEL Installation Ubuntu KERNEL ubuntu-installer/i386/linux APPEND initrd=ubuntu-installer/i386/initrd.gz Bien entendu, toutes ces images amorçables peuvent m'être demandée, je les fournis sans problème... Sauf celles sous licence non libre : vincent.machinet@laposte.net Page 8
Configuration du service DHCP L'utilisation de Webmin est vivement conseillé afin de simplifier la configuration du serveur DHCP. Voici à quoi cela ressemble. Les identifiant et mot de passe par défaut sont ceux du super-utilisateur, c'est-à-dire le compte qui a été créé lors de l'installation d'ubuntu Server. Bien entendu, si d'autres super-utilisateurs sont créés, ils pourront directement se connecter à travers cette page. Page 9
Passons aux choses sérieuses : la configuration du serveur DHCP. Page 10
La configuration générale du DHCP : Il est nécessaire de bloquer un masque de sous-réseau conforme au réseau sur lequel le serveur se trouve. De plus, si le routeur principal du réseau n'est pas à l'adresse première, pensez à le lui indiquer (ici : 192.168.1.3). Les durées des bails peuvent être modifiées à volonté... Après, vous pourrez faire mumuse avec les autres options (blocage internet, redirection vers un autre routeur... Attribution automatique pour certains et pas d'autres...). Une chose importante pour activer le serveur PXE : Indiquer le fichier de démarrage, sous entendu pour le client DHCP, au cas où le client serait un client PXE. Ici, il s'agit du fichier pxelinux.0 qui se trouvent à la racine du serveur TFTP, par conséquent, en vue du système d'exploitation, au chemin /var/lib/tftpboot/. Cliquez ensuite sur le bouton sauvegarder pour enregistrer les modifications. Page 11
Cliquez ensuite sur Appliquer tout changement. Il n suffit plus qu'à mettre en place le réseau ou sous-réseau de votre choix (ici : 192.168.1.0) et le tout est opérationnel. Il ne vous reste plus qu'à adapter le fichier de configuration «default» du menu et de placer vos images amorçables et le tour est joué! Alors maintenant, bon amusement! Page 12