Nous supposons qu’un serveur dhcp fonctionne déjà et est correctement configuré pour fournir les noms de machine.
Par exemple, pour ISC dhcpd :
group {
use-host-decl-names on;
host joe {
hardware ethernet 08:00:2b:4c:29:32;
fixed-address joe.fugue.com;
}
}
Pour forcer Ubuntu a utiliser le hostname fourni (ici joe), nous allons forcer la distribution à ne pas utiliser network-manager. La machine concernée étant un poste de travail ordinaire, ne possédant qu’une seule carte réseau, nous allons tout simplement désinstaller network-manager.
sudo apt-get remove network-manager network-manager-gnome
Nous allons ensuite enlever les références à hostname et networkmanager dans /etc/init :
sudo mv /etc/init/hostname.conf /etc/init/hostname.conf.old
sudo mv /etc/init/network-manager.conf /etc/init/network-manager.conf.old
Nous allons ensuite modifier le fichier /etc/network/interfaces pour y rajouter les définitions concernant eth0 :
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
La machine étant destinée a être déployée sur d’autre machine par clonage, il est nécessaire de modifier l’affectation du nom eth0, ce dernier possédant par défaut une référence à l’adresse MAC :
sudo gedit /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
devient :
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
La couche graphique étant chargée très tôt dans ubuntu 10.04, il est déconseillé de modifier le hostname à la volée une fois cette dernière lancée. Nous allons donc créer un script qui modifiera le /etc/hostname et donc la modification sera prise en compte lors du prochain démarrage de la machine :
sudo gedit /etc/dhcp3/dhclient-exit-hooks.d/sethostname
#!/bin/sh
echo $new_host_name > /etc/hostname
if test -r /var/run/gdm.pid && ps -ef | grep $(cat /var/run/gdm.pid) | grep -q /usr/sbin/gdm ; then
echo "GDM is running, hostname will be updated at the next startup" >> /var/log/sethostname.log ;
else
hostname $new_host_name;
fi
Nous terminons la manip en donnant les droits d’exécution :
sudo chmod +x /etc/dhcp3/dhclient-exit-hooks.d/sethostname