(Ce post se veut être un petit aide-mémoire «pour la prochaine fois» ainsi qu'une petite explication pour les collègues qui travaillent avec moi dans le labo et pour les étudiants qui ont trouvé que l'installation avait pris pas mal de temps[1])

Les contraintes

Comme nous sommes plusieurs à travailler dans le local[2] et que les cours que nous y donnons ne sont pas tous destinés à cohabiter facilement, il faut s'arranger afin que tout se passe au mieux.

Certains collègues ont besoin d'un OS (au choix), d'autres ont besoin de linux et d'autres de MS Windows. Certains peuvent partager un OS avec d'autres, tandis que d'autres préfèrent attribuer un OS (entier, pas une machine virtuelle) à chaque étudiant ...

Sur cette base, il est décidé que l'on aura une machine multiboot avec

  • une partition linux debian (pour tous les utilisateurs «linux»)
  • une partition MS Windows 7 (pour tous les utilisateur «MS Windows»)
  • et 4 partitions MS Windows pour les étudiants de Pandélis

À ces contraintes, s'ajoutent les contraintes de temps ... qui va se charger de l'installation et quand faire cette installation ? Les examens se terminent, les cours reprennent ... J'installerai les machines linux et Mohammed installe les machines MS Windows.

Essais / erreurs

Avec l'expérience, l'on sait que pour que ça fonctionne, il faut installer les machines MS Windows 7 avant les machines linux afin que le boot loader linux prenne en charge les deux OS.

Mes premiers essais n'ont pas été concluants à ce niveau et j'ai du chercher une autre solution à base de boot loader MS Windows :-( Les (ré)essais suivants ont été plus concluants et je suis revenu au système: «c'est GRUB qui gère le boot».

Deuxième problème rencontré; la table des partitions. L'installateur MS Windows 7 écrit tantôt la table des partitions en MBR table et tantôt en GPT table ... et mon installateur debian (fdisk en fait) ne reconnait pas les GPT tables.

La table de partitionnement du MBR, aujourd'hui très répandue, date du début des années 80. Dès la fin des années 90, les limitations qu'elle impose sont apparues trop contraignantes pour les matériels les plus modernes. Intel a alors développé un nouveau format de table de partitionnement, format qui fait partie de ce qui devint UEFI. La GPT étant un sous-ensemble des spécifications de UEFI.

(...)

Extrait de Wikipédia

Pout résoudre ce problème sur les machines ayant une table GPT, je devrais réécrire le MBR, refaire l'installation MS Windows 7 (en espérant qu'il reste en «MBR table») et refaire l'installation linux debian ...

Ola ! Ça suffit ! Tout ça prend du temps.

Je pensais que ça irait relativement vite d'installer ces 16 machines mais non ... passons à la vitesse supérieure.

Installation finale

Nous allons y aller plus sérieusement et répliquer une machine à grands coups de udpcast. Le principe est simple: j'installe une machine et je la réplique partout. La condition étant que les disques soient identiques. Ce qui est bien le cas.

Installation d'une machine

J'installe la machine 2 (rochefort);

  • le partitionnement convenu;
sda1 - 100MiB - MS Windows 7
sda2 - 97GIB - MS Windows 7
sda3 - 50 GiB - linux [debian| http://debian.org]
sda4 - le reste en partition étendue
sda5 - 1GiB - Swap linux
(le reste pour Pandélis)
  • un p'tit MS Windows 7 avec les mises à jour qui vont bien [3] pour qu'il reconnaisse l'écran et l'installation des softs Cisco pour le cours de TLN,
  • une debian squeeze avec passage au noyau 2.6.38 afin qu'elle reconnaisse la résolution graphique[4]

Cette machine est en état, elle sera répliquée sur le réseau à l'aide d'udpcast. Nous n'allons pas répliquer /dev/sda car 500GiB c'est long ... et inutile de transferer «rien» (même si rien c'est quelque chose). Nous allons répliquer sda1, sda2 et sda3 ... et recopier le MBR.

Si l'on veut répliquer /dev/sda, c'est mieux que celui-ci ne soit pas monté, je dois donc booter ailleurs que sur le disque.

Boot réseau

Les machines supportant le boot reseau, c'est cette voie que nous allons explorer. Pour ce faire, il faut

  • un bios PXE (supportant de booter sur le réseau)
  • une machine offrant le service
    • serveur DHCP pour donner une adresse IP au client
    • serveur TFTP (Wikipedia) pour donner l'OS. Dans notre cas envoyer un noyau linux
    • serveur NFS (Wikipedia) pour donner un disque réseau à mon linux

Puisqu'il faut faire transférer en UDP[5], de l'ordre de, 150GiB, c'est mieux d'avoir un bon switch[6].

Réplication

La réplication proprement dite consiste en

  • booter la machine source (rochefort) sur le réseau et lui demander d'offrir le disque dur (en pratique les 3 partitions principales et une recopie du MBR)
dd if/dev/sda of=/root/mbr bs=512 count=1
upd-sender --file /dev/sda1 --fec 8x8 --full-duplex
upd-sender --file /dev/sda2 --fec 8x8 --full-duplex
upd-sender --file /dev/sda3 --fec 8x8 --full-duplex
  • booter les machines cibles sur le réseau et leur demander de; mettre à jour le MBR et de recevoir les différentes partitions
dd if=/root/mbr of=/dev/sda bs=512 count=1 
sfdisk -R /dev/sda
udp-receiver --file /dev/sda1
udp-receiver --file /dev/sda2
udp-receiver --file /dev/sda3

Tout ça dans un script lancé au boot (par un petit ajout dans /etc/inittab par exemple)

Quelques bières temps plus tard, c'est plié. Il reste à repasser sur toutes les machines pour leur donner leur nom et leur IP.

La prochaine étape sera (probablement peut-être) l'installation d'un serveur DHCP dans le local.

Maintenance du local

Pour la maintenance du local, il me reste à faire une image du disque tant qu'il est propre. Je vais tenter un

dd if=/dev/sdai of=/elsewhere/cpsdai bs=? count=?

... et une réinstallation d'une machine sera assez rapide ...

Et là, je suis normalement tranquille pour 5 ans au vu du turn over du matériel.

Notes

[1] N'est-ce pas mon bon Benjamin ;-)

[2] STC Services Télécom , SER Système d'exploitation temps réel, ICR Interconnexion des réseaux, TLN Solutions LAN - Windows, ...

[3] Faire d'abord les màj Windows sans le graphisme et ensuite les màj «graphiques». Merci Paul

[4] (Re)Merci Paul pour l'info

[5] C'est l'avantage du système c'est que le serveur n'envoie qu'une seule fois l'info pour toutes les machines

[6] Merci Antoine pour le fameux coup de main que tu m'as donné ... et le prêt du switch 1Gb