PXE - VirtualBox - Debian 5.0.4
Préambule
Notre projet est basé sur deux machines virtuelles installées sur VirtualBox:
- Un Serveur Debian 5.0.4 ayant comme interface: eth0 pointant sur Internet et eth1 avec IP fixe 172.16.1.1/24 pour notre LAN.
- Un Client sur le LAN 172.16.1.0/24 recevant une IP dynamiquement.
Notre Serveur permettra d'installer, via le réseau, et selon le choix du Client:
- Une distribution Debian automatiser par le fichier "preseed".
- Une distribution CentOS automatiser par le fichier "kickstart".
Nota Bene: Certains paramètres de fichier de configuration, n'étant pas nécessaire, n'ont pas été affiché volontairement.
1. Description PXE
PXE (Preboot eXecution Environnement) est un protocole propriétaire d' Intel.
Ce protocole permet de se passer de tout support de boot local sur les machines clientes afin de démarrer directement sur le réseau.
Via un serveur PXE, un client distant, peut donc installer un système d'exploitation, ainsi que des utilitaires (tel que HirenBootCd - MemTest+) à des fin de dépannage ou autres.
Un serveur PXE est nécessaire dans un grand réseau. Une de ses caractéristiques fondamentales est l'installation à distance de systèmes sans utiliser de cd ou de lecteur cd. Ceci sur autant de machines que vous voulez.
Ainsi, il est très facile de procéder aux mises à jour sans devoir passer par le processus de gravure.
Enfin, il est un gain de temps et d'argent car il ne faut acheter aucun cd ou lecteur de cd.
Côté CLIENT
Il est indispensable que le BIOS soit paramétré afin que l'on puisse démarrer la machine depuis la carte réseau.
Cette fonction, est de plus en plus présente dans les nouvelles cartes mères.
Si ce n'est pas la cas:
- soit on flash le BIOS.
- soit on boot via une disquette, sur laquelle on copiera une image que l'on peut trouver à cette adresse: http://rom-o-matic.net/.
Côté SERVEUR
Les outils nécessaires, pour la bonne réalisation de notre projet, sont les suivants :
- un serveur DHCP
- un serveur TFTP
- un Serveur PXE
- un serveur Apache, NFS ou FTP (notons que nous utiliserons le serveur Web Apache)
- le paquet Syslinux (contenant les fichiers "pxelinux.0" et "menu.c32")
- le fichier "preseed.cfg" et "ks.cfg"
2. Fonctionnement de base
Nous partons du principe que la configuration PXE fonctionne correctement :
1. Le CLIENT démarre via la PROM de la carte réseau. Cette PROM contient les premières instructions pour effectuer une requête DHCP.
2. Le SERVEUR DHCP répond en envoyant: une configuration IP, une IP du serveur TFTP, une IP du serveur PXE, ainsi que le fichier "pxelinux.0".
3. Le CLIENT possédant, maintenant, une configuration IP, peut procéder à l'exécution de "pxelinux.0" afin de récupérer, via le protocole TFTP, un menu de choix d'installation qui s'affichera à l'écran.
4. Le SERVEUR TFTP envoi ce menu et le CLIENT fait son choix d'installation parmi les options proposées.
5. Le SERVEUR TFTP répond en envoyant un noyau (kernel) et initrd (contenant des archives s'ajoutant au kernel).
6. Le CLIENT chargera ces derniers en RAM afin d'obtenir un système minimal qui permettra par la suite d'installer le système de fichier afin d'y stocker des informations et de les organiser dans des fichiers.
3. Réalisation du Projet
3.1 Au niveau CLIENT
Paramétrer le BIOS pour activer le démarrage en réseau. Cette option peut avoir des dénominations différentes selon la version du BIOS mais devrait se rapprocher de ceux-ci:
- onboard Lan [enable]
- Lan option Rom [enable]
Ensuite, à la mise sous tension de la machine, on utilisera la touche F12 pour un démarrage en réseau pour recevoir une IP dynamique.
3.2 Au niveau SERVEUR
3.2.1 Configuration du réseau interne
Configurer les interfaces: /etc/network/interfaces
Vérifier que la table de routage soit cohérente à l'aide de la commande: route -n
3.2.2 Installation des paquets
aptitude install dhcp3-server
aptitude install tftpd-hpa
aptitude install pxe
aptitude install syslinux
aptitude install apache2
3.2.3 Configuration du Serveur DHCP
—-> debian:/# vim /etc/dhcp3/dhcpd.conf
# This is a very basic subnet declaration.
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.20 172.16.1.40;
option routers 172.16.1.1;
server-name "172.16.1.1";
next-server 172.16.1.1;
filename "pxelinux.0";
}
"range" pour donner au client une IP dynamiquement comprise dans une fourchette 172.16.1.[20 à 40].
"option routers" indique au Client l'IP de la passerelle par défaut.
"server-name" indique au Client l'IP du serveur PXE.
"next-server" indique au Client l'IP du serveur TFTP.
"filename" indique au Client le
Path du fichier qui sera envoyé au client PXE. En réalité, le
Path est:
/tftpboot/pxelinux.0 même si
/tftpboot n'est pas mentionné.
3.2.4 Configuration du Serveur TFTP
—-> debian:/# vim /etc/inetd.conf
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /tftpboot
Vérifier que cette ligne est bien dé-commentée.
—-> debian:/# vim /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /tftpboot"
Le répertoire du serveur TFTP est /tftpboot, créé à la racine, afin d'y stocker tous les fichiers qui seront envoyés sur demande via le protocole TFTP.
3.2.5 Configuration du Serveur PXE
—-> debian:/# vim /etc/pxe.conf
# which interface to use
interface=eth1
default_address=172.16.1.1
# the multicast ip address to listen on
multicast_address=224.0.1.2
# mtftp info
mtftp_address=224.1.5.1
mtftp_client_port=1758
mtftp_server_port=1759
# the port to listen on
listen_port=4011
# enable multicast?
use_multicast=1
# enable broadcast?
use_broadcast=0
# user prompt
prompt=Press F8 to view menu ...
prompt_timeout=10
# what services to provide, priority in ordering
# CSA = Client System Architecture
# service=<CSA>,<min layer>,<max layer>,<basename>,<menu entry>
service=X86PC,0,0,local,Local boot
service=X86PC,0,0,pxelinux,PXELinux
# tftpd base dir
tftpdbase=/tftpboot
# domain name
domain=bla.com
Nous avons assigné une IP au serveur PXE,
"172.16.1.1", qui utilisera l'interface réseau
"eth1" pour communiquer avec ses clients.
Nous spécifions, aussi, qu'il doit utiliser le répertoire
"/tftpboot".
3.2.6 Configuration du Serveur Apache
Apache est un serveur web qui va nous permettre de mettre à disposition certains fichiers ou images d'OS.
—-> debian:/# vim /etc/apache2/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost 172.16.1.1:80
Listen 80
<IfModule mod_ssl.c>
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443
</IfModule>
Ce fichier indique l'IP du serveur web , ainsi les ports à écouter.
—-> vim /etc/apache2/site-enable/000-default
<VirtualHost 172.16.1.1:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/pxe
<Directory />
Options None
AllowOverride None
</Directory>
<Directory /var/www/pxe>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Ce serveur sera contacté en local via l'url
http://172.16.1.1 . Cette IP nous redirigera automatiquement vers le répertoire
"/var/www/pxe", comme indiqué.
Ainsi, on pourra accéder au contenu du serveur Web: tel que le fichier
"preseed.cfg"",
"ks.cfg", l'image de CentOS.
—-> debian:/# vim /var/www/pxe/preseed.cfg
#### PRESEED : Automatisation de l'installation
# On ne peut pas préconfigurer la langue, le pays ou le clavier. Vous devez
# à la place utiliser les paramètres du noyau. Par exemple :
# languagechooser/language-name=French
# countrychooser/shortlist=fr_FR
# console-keymaps-at/keymap=fr-latin9
#### Configuration du réseau.
# Bien sûr, si vous récupérez le fichier de préconfiguration sur le réseau,
# cela ne marchera pas ! Mais c'est parfait si vous amorcez à partir d'un
# cédérom ou d'une clé USB. Vous pouvez aussi ajouter des paramètres réseau
# aux paramètres du noyau si vous récupérez le fichier de préconfiguration
# sur le réseau.
# Netcfg choisira une interface connectée si possible. Cela empêchera d'afficher
# une liste s'il y a plusieurs interfaces.
d-i netcfg/choose_interface select auto
# Quand le serveur dhcp est lent et que l'installateur s'arrête pour l'attendre,
# ceci peut être utile.
#d-i netcfg/dhcp_timeout string 60
# Si vous préférez configurer vous-même le réseau, voici comment faire :
#d-i netcfg/disable_dhcp boolean true
#d-i netcfg/get_nameservers string 192.168.1.1
#d-i netcfg/get_ipaddress string 192.168.1.42
#d-i netcfg/get_netmask string 255.255.255.0
#d-i netcfg/get_gateway string 192.168.1.1
#d-i netcfg/confirm_static boolean true
# Remarquez que les valeurs données par dhcp, nom de domaine ou nom de
# machine, prennent le pas sur les valeurs déclarées ici. Cependant,
# cette déclaration empêche que les questions ne soient posées même si les
# valeurs viennent de dhcp.
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
# Supprimer le dialogue irritant sur la clé WEP.
d-i netcfg/wireless_wep string
# Et l'étonnant nom de machine dhcp que certains FAI utilisent comme mot de
# passe.
#d-i netcfg/dhcp_hostname string radish
#### Valeurs pour les miroirs
d-i mirror/country string enter information manually
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/suite string testing
d-i mirror/http/proxy string
### Partitionnement.
# Si le système possède un espace libre, vous pouvez ne partitionner que cet
# espace.
#d-i partman-auto/init_automatically_partition \
# select Use the largest continuous free space
# Vous pouvez aussi choisir un disque entier. Le format de son nom peut être
# donné selon le format devfs ou le format traditionnel.
# Par exemple, pour utiliser le premier disque connu sous devfs :
d-i partman-auto/disk string /dev/discs/disc0/disc
# Vous pouvez choisir parmi tous les schémas prédefinis...
d-i partman-auto/choose_recipe select \
Tous les fichiers dans une seule partition (recommandé aux débutants)
#d-i partman-auto/choose_recipe select Desktop machine
#d-i partman-auto/choose_recipe select Multi-user workstation
# ...ou donner vous-même votre schéma.
# Le format des schémas est expliqué dans le fichier
# devel/partman-auto-recipe.txt.
# Si vous avez la possibilité d'obtenir un schéma dans l'environnement de
# l'installateur, vous pouvez simplement pointer sur lui.
#d-i partman-auto/expert_recipe_file string /hd-media/recipe
# Sinon, vous pouvez écrire un schéma en une seule ligne. L'exemple suivant
# crée une petite partition /boot, une partition swap convenable, et utilise le
# reste de l'espace libre pour la partition racine :
#d-i partman-auto/expert_recipe string boot-root :: \
# 20 50 100 ext3 $primary{ } $bootable{ } method{ format } format{ } \
# use_filesystem{ } filesystem{ ext3 } mountpoint{ /boot } . \
# 500 10000 1000000000 ext3 method{ format } format{ } \
# use_filesystem{ } filesystem{ ext3 } mountpoint{ / } . \
# 64 512 300% linux-swap method{ swap } format{ } .
# Pour explication, voici le même schéma dans une forme plus lisible :
# boot-root ::
# 40 50 100 ext3
# $primary{ } $bootable{ }
# method{ format } format{ }
# use_filesystem{ } filesystem{ ext3 }
# mountpoint{ /boot }
# .
# 500 10000 1000000000 ext3
# method{ format } format{ }
# use_filesystem{ } filesystem{ ext3 }
# mountpoint{ / }
# .
# 64 512 300% linux-swap
# method{ swap } format{ }
# .
# Partman créera automatiquement les partitions sans demander de confirmation.
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select \
Terminer le partitionnement et enregistrer les modifications sur le disque
d-i partman/confirm boolean true
#### Installation du programme d'amorçage.
# Grub est le programme d'amorçage par défaut (pour x86). Si vous préférez
# LILO, décommentez la ligne suivante :
#d-i grub-installer/skip boolean true
# Il n'y a aucun danger à donner ce paramètre : il installe grub sur le
# secteur d'amorçage principal s'il n'existe aucun autre système d'exploitation
# sur la machine.
d-i grub-installer/only_debian boolean true
# Ce paramètre installe grub sur le secteur d'amorçage principal même s'il
# existe un autre système d'exploitation, ce qui est moins sûr car il pourrait
# ne pas savoir amorcer cet autre système.
d-i grub-installer/with_other_os boolean true
# Vous pouvez aussi l'installer ailleurs que dans le secteur d'amorçage
# principal. Décommentez et modifiez les lignes suivantes :
#d-i grub-installer/bootdev string (hd0,0)
#d-i grub-installer/only-debian boolean false
#d-i grub-installer/with_other_os boolean false
#### Terminer la première étape de l'installation.
# Pour éviter le dernier message disant que l'installation est terminée.
d-i prebaseconfig/reboot_in_progress note
#### Les commandes du shell.
# La préconfiguration de l'installation n'est pas sécurisée. Rien dans
# dans l'installateur ne vérifie que des dépassements de tampons ou des
# exploitations quelconques des valeurs données dans ce fichier n'ont pas lieu.
# N'utilisez que les fichiers dont vous connaissez la provenance !
# Pour tout dire, et parce que c'est en général utile, voici un
# moyen d'exécuter automatiquement une commande dans l'installateur.
# La première commande est exécutée aussi tôt que possible, juste après
# la lecture du fichier.
#d-i preseed/early_command string anna-install some-udeb
# Cette commande est exécutée juste avant que l'installation ne se termine,
# mais quand le répertoire /target est encore utilisable.
#d-i preseed/late_command string echo foo > /target/etc/bar
# Cette commande est exécutée au moment où base-config commence.
#base-config base-config/early_command string echo hi mom
# Cette commande est exécutée après base-config, juste avant la connexion.
# C'est un bon moyen d'installer les paquets que vous voulez ou d'affiner la
# la configuration du système.
#base-config base-config/late_command string \
# apt-get install zsh; chsh -s /bin/zsh
###### Preseeding the 2nd stage of the installation.
#### Préconfiguration de base-config.
# Pour éviter le message d'introduction.
base-config base-config/intro note
# Pour éviter le dernier message.
base-config base-config/login note
# Si vous installez un gestionnaire d'affichage et si vous ne voulez pas le
# lancer immédiatemment après base-config :
#base-config base-config/start-display-manager boolean false
# Certaines versions de l'installateur peuvent dire ce que vous avez installé.
# Par défaut, rien n'est signalé. Mais l'envoi de rapport d'installation aide le projet
# à connaître les logiciels populaires.
#popularity-contest popularity-contest/participate boolean false
#### Configuration du fuseau horaire.
# Cette commande règle l'horloge matérielle sur UTC ou non :
#base-config tzconfig/gmt boolean true
# Si vous avez dit à l'installateur que vous habitez aux USA, vous pouvez
# utiliser cette valeur pour déclarer le fuseau horaire.
# (Les choix sont les suivants : Eastern, Central, Mountain, Pacific,
# Alaska, Hawaii, Aleutian, Arizona East-Indiana, Indiana-Starke, Michigan,
# Samoa, autre)
#base-config tzconfig/choose_country_zone/US select Eastern
# Si vous avez dit à l'installateur que vous habitez au Canada.
# (Choix : Newfoundland, Atlantic, Eastern, Central,
# East-Saskatchewan, Saskatchewan, Mountain, Pacific, Yukon, autre)
#base-config tzconfig/choose_country_zone/CA select Eastern
# Si vous avez dit à l'installateur que vous habitez au Brésil. (Choix :
# East, West, Acre, DeNoronha, autre)
#base-config tzconfig/choose_country_zone/BR select East
# Beaucoup de pays n'ont qu'un seul fuseau horaire. Si vous avez dit à
# l'installateur que vous habitez dans l'un de ces pays, vous pouvez le choisir
# avec cette question.
#base-config tzconfig/choose_country_zone_single boolean true
# Cette question est posée pour les pays qui n'appartiennent pas à la liste
# précédente et qui ont plusieurs fuseaux horaires. Vous pouvez préconfigurer
# l'un des fuseaux ou « autre ».
#base-config tzconfig/choose_country_zone_multiple select
#### Configuration des comptes.
# Pour préconfigurer le mot de passe de root, vous devez le mettre en clair
# dans le fichier. Ce n'est pas une très bonne idée, faites attention !
#passwd passwd/root-password password r00tme
#passwd passwd/root-password-again password r00tme
# Si vous voulez ne pas créer d'utilisateur :
#passwd passwd/make-user boolean false
# Vous pouvez aussi présélectionner le nom de l'utilisateur et son identifiant
# de connexion.
#passwd passwd/user-fullname string Debian User
#passwd passwd/username string debian
# Et le mot de passe, mais faites attention !
#passwd passwd/user-password password insecure
#passwd passwd/user-password-again password insecure
#### Configuration d'Apt..
# Cette question contrôle la source des paquets qui sera utilisée dans la
# deuxième étape de l'installation. Les choix sont cdrom, http, ftp,
# filesystem, modifier soi-même le fichier sources list.
base-config apt-setup/uri_type select http
# Si vous choisissez ftp ou http, on vous demandera un pays et un miroir.
base-config apt-setup/country select enter information manually
base-config apt-setup/hostname string http.us.debian.org
base-config apt-setup/directory string /debian
# Ne faire le choix que d'un miroir.
base-config apt-setup/another boolean false
# Vous pouvez choisir d'installer des paquets de non-free et contrib.
#base-config apt-setup/non-free boolean true
#base-config apt-setup/contrib boolean true
# Pour autoriser les mises à jour de sécurité.
base-config apt-setup/security-updates boolean true
#### Sélection des paquets.
# Vous pouvez installer toute combinaison de tâches parmi celles disponibles.
# Pour l'heure, les tâches disponibles sont les suivantes : environnement
# de bureau, serveur Web, serveur d'impression, serveur DNS, serveur de
# fichiers, serveur de courrier, base SQL, portable, système standard, sélection manuelle
# des paquets.
# La dernière utilise aptitude. Vous pouvez aussi de ne pas installer de tâches
# et de forcer l'installation de paquets par un autre moyen.
# Il est recommandé de toujours inclure la tâche Système standard
tasksel tasksel/first multiselect Desktop environment, Standard system
#tasksel tasksel/first multiselect Web server, Standard system
#### Configuration du MTA.
# Pendant une installation normale, exim pose peu de questions. Voici
# comment les éviter. Une préconfiguration plus complexe est possible.
exim4-config exim4/dc_eximconfig_configtype \
select no configuration at this time
exim4-config exim4/no_config boolean true
exim4-config exim4/no_config boolean true
# C'est une bonne idée d'indiquer ici le nom de l'utilisateur que vous avez
# créé. Si vous n'indiquez aucune valeur, le courrier pour postmaster ira dans
# /var/mail/mail.
exim4-config exim4/dc_postmaster string
#### Configuration du serveur X.
# Préconfigurer le serveur X est possible, mais vous devrez sans doute
# connaître les caractéristiques du matériel video de votre machine. Le
# configurateur Debian du serveur X ne configure rien automatiquement.
# X peut détecter le bon pilote pour certaines cartes, mais si vous faites une
# préconfiguration, vous annulez ce qu'il aura choisi. Cependant vesa
# fonctionne la plupart du temps.
#xserver-xfree86 xserver-xfree86/config/device/driver select vesa
# Pour la détection automatique de la souris, il faut savoir que si elle
# échoue, X recommence sans fin le processus. Donc, s'il y a préconfiguration,
# une boucle infinie peut apparaître si la souris n'est pas détectée.
#xserver-xfree86 xserver-xfree86/autodetect_mouse boolean true
# La détection automatique du moniteur est recommandée.
xserver-xfree86 xserver-xfree86/autodetect_monitor boolean true
# Décommentez la ligne suivante si vous posséder un écran LCD.
#xserver-xfree86 xserver-xfree86/config/monitor/lcd boolean true
# X possède trois adresses pour la configuration du moniteur. Voici comment
# présélectionner l'adresse « medium », qui est toujours disponible.
# L'adresse « simple » peut ne pas être disponible et l'adresse
# « advanced » pose trop de questions.
xserver-xfree86 xserver-xfree86/config/monitor/selection-method \
select medium
xserver-xfree86 xserver-xfree86/config/monitor/mode-list \
select 1024x768 @ 60 Hz
#### Les autres questions.
# Selon les logiciels que vous avez installés et s'il y a eu des problèmes
# pendant le processus d'installation, d'autres questions peuvent être posées.
# Vous pouvez bien sûr les préconfigurer ! Pour obtenir la liste de toutes
# les questions possibles, faites une installation, et exécutez ces
# commandes :
# debconf-get-selections --installer > fichier
# debconf-get-selections >> fichier
# Si vous voulez, vous pouvez inclure dans ce fichier d'autres fichiers de
# de préconfiguration. Toutes les valeurs de ces fichiers annuleront les
# valeurs préexistantes. Vous pouvez indiquer plus d'un fichier, en les
# séparant par des espaces ; tous seront chargés. Ces fichiers peuvent
# à leur tour contenir d'autres directives de préconfiguration ou d'inclusion.
# Notez que si les fichiers sont relatifs, ils seront pris dans le répertoire
# où se trouve le fichier qui les inclut.
#d-i preseed/include string x.cfg
# L'installateur peut vérifier la somme de contrôle des fichiers de
# préconfiguration avant de les utiliser. Pour le moment, cette somme doit être
# de type md5sum. Il faut lister les sommes de contrôles dans le même ordre
# que les fichiers à inclure. L'installateur de sarge
# n'accepte pas les sommes de contrôle.
#d-i preseed/include/checksum string 5da499872becccfeda2c4872f9171c3d
# D'une manière plus souple, cela exécute des commandes du shell et si le
# résultat donne les noms de ces fichiers, ils sont inclus. Par exemple,
# pour changer de configuration, selon tel périphérique de stockage USB,
# dans ce cas, un lecteur carte intégré :
#d-i preseed/include_command string \
# if $(grep -q "GUID: 0aec3050aec305000001a003" /proc/scsi/usb-storage-*/*); \
# then echo kraken.cfg; else echo otherusb.cfg; fi
# Pour vérifier le format de votre fichier de préconfiguration avant de
# commencer une installation, vous pouvez utiliser debconf-set-selections :
# debconf-set-selections -c preseed.cfg
le fichier
"preseed.cfg"" permet l'automatisation de l'installation (le choix de la langue, l'heure, la date, le partitionnement, le formatage, les comptes…).
Ce fichier est conçu, particulièrement, pour les distributions
Debian, Ubuntu.
—-> debian:/# vim /var/www/pxe/ks.cfg
# kickckstart file
install
url --url http://172.16.1.1/imagecentos/
lang fr_FR
langsupport --default en_US.UTF-8 en_US.UTF-8 fr_FR.UTF-8 fr_CH.UTF-8
keyboard fr-latin9
mouse
xconfig --resolution 1600x1400 --depth 24 --startxonboot --defaultdesktop gnome
skipx
#network --device eth1 --bootproto static --ip=172.16.1.10 --netmask=255.255.255.0 --gateway=172.16.1.1 --nameserver=172.16.1.1
network --bootproto dhcp
rootpw --iscrypted $1$wuGxwj7m$3fVJtm4LDgSYlA9BkTAvd.
firewall --enabled --port=http:tcp --port=ssh:tcp
selinux --permissive
reboot
authconfig --enableshadow --enablemd5
timezone --utc Europe/Zurich
#---bootloader --location=mbr
bootloader --location=partition
#---zerombr yes
# Attention aux informations critiques au niveau du partitionnement des disques
clearpart --all --drives hda
part /boot --ondisk=hda --fstype ext2 --size=100
part / --ondisk=hda --fstype ext2 --size=2000
part swap --ondisk=hda --size=300
# Raid 1
#raid / --fstype=ext3 --level=RAID1 --device md5 raid.16 raid.26
# packages pour le serveur
%packages
@ mysql
@ xemacs
#@ system-tools
@ web-server
@ development-tools
@ printing
@ text-internet
@ french-support
@ admin-tools
@ server-cfg
@ graphical-internet
php-mysql
mod_auth_mysql
#am-utils
grub
#ethereal-gnome
#subversion
-apmd
-autofs
%post --nochroot
cp -p /mnt/sysimage/boot/grub/grub.conf /mnt/sysimage/boot/grub/grub.conf.DIST
ed /mnt/sysimage/boot/grub/grub.conf <<EOF
g!hiddenmenu!s!!#hiddenmenu!gp
g! rhgb quiet!s!!!gp
g! quiet!s!!!g
wq
EOF
le fichier
"ks.cfg"" permet l'automatisation de l'installation, particulièrement, pour les distributions CentOS, Fedora, Redhat.
Au début de ce fichier, le Path "url —url
http://172.16.1.1/ImageCentOS/" indique où aller trouver l'image de CentOS.
—-> debian:/# mount -o loop /tmp/CentOS-4.7-i386.iso /mnt/ImageCentOS
—-> debian:/# cp -a /mnt/ImageCentOS /var/www/pxe/
debian:/# cd /var/www/pxe/ImageCentOS/
debian:/var/www/pxe/ImageCentOS# ls
CentOS GPL isolinux RPM-GPG-KEY SRPMS
centosdocs-man.css images RELEASE-NOTES-en.html RPM-GPG-KEY-centos4 yumgroups.xml
On monte l'image dans "/mnt/ImageCentOS" et ensuite on copie tout dans notre serveur Web.
la commande "ls", effectuée sur notre serveur Web, nous montre que la copie à bien réussi.
3.2.7 Syslinux
Syslinux est une archive qui, après installation du paquet, se trouve dans le répertoire "/usr/lib/syslinux".
Ce répertoire contient différents exécutables dont 2 seront copiés dans "/tftpboot" :
- Un exécutable "pxelinux.0" particulièrement adapté pour le boot en réseau va permettre de lire un fichier de configuration "/tftpboot/pxelinux.cfg/default" afin d'afficher un menu de choix à l'écran.
- Un exécutable "menu.c32" permet de réaliser un menu graphique avec des fonctions avancées telles que raccourcis clavier et déplacement avec flèche.
3.2.8 Répertoire /tftpboot
Ce répertoire est une charnière importante dans un déploiement par réseau et va contenir des exécutables, fichiers et informations nécessaire pour apporter à un Client une installation d'OS et programmes via le réseau par le protocole TFTP.
—-> debian:/#mkdir /tftpboot
—-> debian:/# cd /tftpboot
—-> debian:/tftpboot/# mkdir menu-screen linuxDebian linuxCentOS pxelinux.cfg //on crée ces 4 sous-dossier dans /tftpboot
—-> debian:/# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/menu-screen
—-> debian:/# cp /usr/lib/syslinux/menu.c32 /tftpboot/menu-screen
—-> debian:/# vim /tftpboot/pxelinux.cfg/default
include /menu-screen/menu.cfg
default /menu-screen/menu.c32
prompt 1
timeout 0
le fichier
"default" sera lu, lors de l'execution de
"pxelinux.0" par le Client, afin d'être redirigé vers le fichier
"menu.cfg" qui contient les paramètres du Menu qui sera affiché graphiquement grâce à
"menu.c32".
l'exemple ci-dessous permet, déjà, d'automatiser le début de l'installation, pour ensuite, appeler le fichier
"preseed" et
"kickstart" afin de la compléter automatiquement selon les besoins.
—-> debian:/# vim /tftpboot/menu-screen/menu.cfg
menu hshift 15
menu width 53
menu vshift 6
menu title PXE Test: Jaouad/Giuseppe
menu tabmsg Choisir une OPTION et Press <ENTER>
prompt 0
label bootlocal
menu label ^Boot sur Disque Local
localboot 0
timeout 200
localtimeout 200
label Debian
menu label ^Installer Debian
kernel linuxDebian/linux
append initrd=linuxDebian/initrd.gz vga=normal ramdisk_size=32768 auto=true priority=critical languagechooser/language-name=French countrychooser/shortlist=fr_FR console-keymaps-at/keymaps=fr-latin9 ip=dhcp interface=eth1 preseed/url=http://172.16.1.1/preseed.cfg --
label CentOS
menu label ^Installer CentOS
kernel CentOS/vmlinuz
append ksdevice=eth1 console=tty0 initrd=linuxCentOS/initrd.img ks=http://172.16.1.1/ks.cfg ramdisk_size=32768vga=normal --
menu end
Le label
bootlocal permet de démarrer sur le disque dur local.
le label
Debian permet d'installer la distibution GNU/Debian.
le label
CentOS permet d'installer la distibution CentOS.
- kernel indique le Path du noyau à charger.
- append indique le Path de ce qui doit être ajouter au noyau.
Pour Debian:
Nous avons télécharger un package, spécialement adapté pour un démarrage en réseau, disponible à l'adresse suivante:
http://ftp.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/netboot.tar.gz
On décompresse l'archive —-> "tar -xvzf netboot.tar.gz" et ensuite on copie "linux" et" initrd.gz" dans "/tftpboot/linuxDebian"
Dans le label Debian, on indique le path du fichier "preseed.cfg".
Pour CentOS:
Nous avons télécharger l'image CentOS-4.7-i387.iso
On copie "vmlinuz" et "initrd.img" dans "/tftpboot/linuxCentOS", ainsi que l'image entière dans "/var/www/pxe/ImageCentOS"
Dans le label CentOS on indique le path du fichier "ks.cfg" qui lui même contiendra le path de l'image CentOS à charger.
3.2.9 Arborescence
Voici notre arborescence Final:
/etc
| -inet.conf
| |
| /dhcp3
| | -dhcpd.conf
| |
| /default
| | -tftpd-hpa
| |
| /pxe
| | -pxe.conf
| |
| /apache2
| | -ports.conf
| | /site-enable
| | -000.default
| |
/tftpboot
| -pxelinux.0
| |
| /menu-screen
| | -menu.c32
| | -menu.cfg
| |
| /pxelinux.cfg
| | -default
| |
| /linuxDebian
| | -linux
| | -initrd.gz
| |
| /linuxCentOS
| | -vmlinuz
| | -initrd.img
| |
/var
| /www
| | /pxe
| | -preseed.cfg
| | -ks.cfg
| | /ImageCentos
| | -CentOS
| | -isolinux
| | -yumgroups.xml
| | -etc.....
3.2.10 Démarrage des Services
- /etc/init.d/networking start
- /etc/init.d/dhcp3-server start
- /etc/init.d/tftpd-hpa start
- /etc/init.d/pxe start
- /etc/init.d/apache2 start
3.2.11 Vérification des Ports en écoute
Notons que nous affichons que les ports qui nous intéresse:
—-> netstat -ano | grep tcp
debian:/# netstat -ano | grep tcp
tcp 0 0 192.168.1.4:53 0.0.0.0:* LISTEN
tcp 0 0 172.16.1.1:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::53 :::* LISTEN
80 = HTTP
53 = DNS (activé par défaut)
—-> netstat -ano | grep udp
debian:/# netstat -ano | grep udp
udp 0 0 0.0.0.0:4011 0.0.0.0:*
udp 0 0 172.16.1.1:4011 0.0.0.0:*
udp 0 0 192.168.1.4:4011 0.0.0.0:*
udp 0 0 127.0.0.1:4011 0.0.0.0:*
udp 0 0 0.0.0.0:67 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp 0 0 0.0.0.0:69 0.0.0.0:*
4011 = PXE
67 et 68 = DHCP
69 = TFTP
4. Bibliographie
http://forum.debian-fr.org/viewtopic.php?f=8&t=23693
http://www.debian.org/releases/sarge/mipsel/apcs01.html.fr
http://www.devloprog.org/admin/2009/10/28/configurer-un-serveur-pxe-de-deploiement-de-debian-et-opensuse/#suse
http://elle.epfl.ch/Installationde-CentOS-4-par
http://linux.epfl.ch/webdav/site/linuxline/shared/import/migration/ks_cfg_rhe_epfl_1.txt
Il y a une incohérence dans votre arborescence. Vous parlez d'une installation CentOS et vous avec un noyeau OPENSUSE … ?
juste…on était parti sur une Opensuse au départ, on a oublier de changer ensuite l'arborescence pour la Centos…..merci..
svp s'il y a une configuration sous mandriva
http://www.restezconnectes.fr/view/2010/06/02/installation-de-linux-par-boot-reseau-pxe.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+RestezConnectes+%28Restez+connect%C3%A9s+!%29
Aperçu du message:
Fermer l'aperçu