Premier billet de ma part! Ça se fête!
Entrons dans le vif du sujet de suite sinon M4T va me frapper ^^
Prenons un exemple banal: vous êtes en voyage très loin de chez vous (comme c’est le cas pour moi en ce moment) ou votre serveur est dans un datacenter loin, très loin…
Et que l’envie de réinstaller une Debian est pressant! Maintenant que le décor est planté, amenons les acteurs.
Prenons le cas des serveurs loué (Kimsufi,…): ils ont souvent un interface de gestion externe qui permet de les redémarrer, de réinstaller le système, etc etc. Cependant, ces systèmes sont souvent customisé de façon étrange par les fournisseurs de l’infrastructure. Et parfois il n’y a pas Debian mais CentOS ou Suse. Et vu que perso, je préfère Debian, ca m’arrange pas.
Dans le cas d’un serveur dans votre cave, sous votre lit, peu importe, si vous n’êtes pas là et que vous voulez chipoter ou faire d’autre choses plus intéressantes, il peut être fastidieux de demander à votre moitié, soeur, frère ou tout autre membre de la famille de faire ça pour vous (Ca devient très cher le téléphone quand on doit expliquer que c’est pas grave si il n’y a pas de souris sur le pc 🙂 )
La solution que je vais vous proposer est une solution pour Debian, mais elle devrait fonctionner avec plusieurs autres distribution (sans compter évidemment les Forks de Debian). Novell à eu la bonne idée de l’implanter de base dans la netinstall de Suse.
Il s’agit simplement de lancer une Netinstall de tout ce qui a de plus classique, à la nuance près que celle-ci active automatiquement le ssh dès le départ, pour pouvoir avoir une installation Interactive (qui est toujours plus sympathique que de se farcir la construction du fichier preseed.cfg complet). Si ça c’est pas la classe 🙂
Donc, commençons notre petite manipulation.
Première chose, c’est sous Linux que notre petit manège doit se faire (avec Windows c’est pas vraiment top, a moins d’avoir une licence Pro de Daemon Tools evidemment) et il faut absolument que le module du kernel iso9660 soit activé (sinon, ca marche pas). Ça peut sembler débile comme remarque ccar ce module est souvent activé de base, mais on kikoololise son kernel pour un netbook en se disant « Yen a pas besoin, ya pas de lecteur cd », on patauge pendant 30 minutes sans comprendre :D. Dernière chose, il faut que ce serveur recoive des données DHCP pour que ça fonctionne.
Donc premièrement, on télécharge une version netinstall de Debian
wget http://mirrors.kernel.org/debian-cd/5.0.3/i386/iso-cd/debian-503-i386-netinst.iso
Ensuite, on monte l’iso dans un dossier, isobak par exemple
mkdir isobak
mount -o loop -t iso9660 debian-503-i386-netinst.iso isobak
Créons ensuite un dossier pour acceuillir notre version et copions le contenu de l’iso dedans (avec Rsync parce que c’est plus classe que cp :p)
mkdir isocustom
rsync -a -H -exclude=TRANS.TBL isobak/ isocustom
Changeons le menu de boot pour le custom et demander d’utiliser pressed.cfg
cd isocustom
nano isolinux/txt.cfg
Modifions un peu tout ça… A la fin ça devrait ressembler à ça (avec clavier belge et tout 🙂 )
default netinstall
label netinstall
menu label ^Install Over SSH
menu default
kernel /install.386/vmlinuz
append auto=true vga=normal file=/cdrom/preseed.cfg initrd=/install.386/initrd.gz locale=fr_FR console-keymaps-at/keymap=be
le dernier bloc est à mettre sur une ligne (foutu wordpress 🙂 )
Ensuite, il faut qu’on change quelque Timeout, sinon c’est pas automatique !
dans les fichiers
isolinux/isolinux.cfg
isolinux/prompt.cfg
changez le timeout et faite le passer de 0 à 5 par exemple. Cela permettra d’activer le timeout et donc de sélectioner « Install Over SSH » par défaut.
Ensuite on s’attaque à gros: le fichier preseed.cfg . Mais ce sera une version light, juste de quoi activer le SSH.
nano preseed.cfg
Ensuite, placez ce texte dedans.
#### Fichier de préconfiguration
### Langue et clavier
# Langue et pays ( Francais, France)
d-i debian-installer/locale select fr_FR
# Clavier Belge
d-i console-keymaps-at/keymap select be
### Configuration réseau
# netcfg va choisir une interface par défaut. Ca passera si il y a # une liste qui s’affiche
d-i netcfg/choose_interface select auto
# Normalement le DHCP fournit toutes les données nécessaires, mais pour être sur, mettons ça pour éviter qu’il demande et bloque le systeme.
d-i netcfg/get_hostname string debian
d-i netcfg/get_domain string local
# Désactive les alerte WEP (si votre serveur à une carte Wifi)
d-i netcfg/wireless_wep string
# A décommenter si l’ISP demande un mot de passe pour son DHCP (bidon mais sait-on jamais)
#d-i netcfg/dhcp_hostname string mdp
#Lance les commande dès l’accès aux fichiers
d-i preseed/early_command string anna-install network-console
# Met le mot de passe ssh (ici « installer »)
d-i network-console/password password installer
d-i network-console/password-again password installer
Voilà, vous pouvez sauver le fichier preseed.cfg 🙂
Une fois que tout cela est fini, refaisons le petit MD5 pour qu’il gueule pas
md5sum `find -follow -type f` > md5sum.txt
Une fois tout ça fini, recréons notre image iso custom 🙂
mkisofs -o ../debian503_ssh_netinstall.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ../isocustom
(Toujours en une fois , foutu wordpress xD)
Et voilà l’image elle est toute jolie. Je vous conseille de la tester sous virtualbox (ou autre) avant de tenter, sait-on jamais, il se peut que quelque chose ait foiré ^^ L’user SSH est « installer » et le mdp est le meme (si vous l’avez pas changé 😉 )
SI vous avez réussi a faire ça, vous devrez être capable de demander à grub de booter sur l’iso 😉 Sinon google est votre pote 🙂
A peluche!
Phoenix