Ce tuto sera très bientôt mis à jour avec des nouveautés
Ce tutoriel vous aidera à concevoir un CD/DVD/Bluray ou tout autre media bootable vous permettant d’installer de manière automatisée ou simplifié à peut prêt n’importe quel système d’exploitation. Attention ce tutoriel ne permet pas de faire bêtement du copier/coller, vous devrez comprendre ce que vous faites !
Nous ne pouvons que vous recommander de bien tester votre système avant d’utiliser ce DVD en production. Nous ne pouvons être responsable de ce que vous faites, les ressources et les scripts de ce tuto vous sont fournis gratuitement, et ne sont probablement pas exempt de bug. Donc testez et contrôlez à deux fois ce que vous faites.
Vous souhaitez vous lancer? Il vous faudra quand même au minimum les éléments suivants :
Depuis votre ordinateur Debian, installez tout d’abord ce qu’il faut pour générer un ISO grâce à live-build, installez également git qui vous servira a récupérer les fichiers de configuration :
apt install live-build git
Clonez maintenant le dépôt public depuis Github :
git clone https://github.com/olivierb2/universal-live-deploy.git
Entrez dans le dossier cloné, puis tapez la commande pour générer votre live CD :
lb build
Cette opération peut un peu de temps, donc il faudra un peu de patience. En cas d’échec, il faudra tout recommencer, tapez les commandes suivantes :
lb clean
lb build
A la fin de cette étape, vous aurez un ISO tout prêt. Ne graver pas cet ISO pour le moment car nous devront intégrer ensuite notre image.
Vous devez maintenant choisir quelle technologie vous allez utiliser en fonction de votre besoin. Ce live CD vous permet de choisir parmis 4 systèmes :
fsarchiver | partimage | wimlib | |
---|---|---|---|
Installation de Windows 7/Vista/8/10 | N/A | N/A | Oui |
Installation de Debian Jessie | N/A | N/A | Non |
Clonage de Windows / Linux / Mac | Oui | Oui | Oui |
Support des partitions linux standard (ext2, ext3, reiserfs, xfs, jfs) | Oui | Oui | N/A |
Support des partitions linux nouvelles générations (exz4, reiser4, btrfs) | Oui | Non | N/A |
Sauvegarde/restauration des partitions ntfs | Oui | Oui | Oui |
Restaurer une image dans une partition plus grande que l’originale. | Oui | Oui | Oui |
Restaurer une image dans une partition plus petite que l’originale | Oui | Non | Oui |
Utilisation de checksum pour vérifier l’intégrité de l’image | Oui | Non | Oui |
Compression de l’image utile les processeurs multi coeurs | Oui | Non | Oui |
Informations utilisées pour sauvegarder la partition | Fichiers | Blocks | Fichiers |
Interface avec progression | Non | Oui | Oui |
Avant toute chose, vous devez savoir que Wimlib permet d’utiliser l’image fournie dans un DVD d’installation officiel de Windows. Si vous prenez cette option, vous pourrez donc déployer Windows sans créer d’image. Reportez vous directement à la section Wimlib pour plus d’information.
Pour les autres cas, vous devrez créer un ordinateur master qui servira de référence. Si vous choisissez cette option, je vous conseille alors de graver l’ISO généré précédemment ou bien de vous créer un media de démarrage par USB.
Connectez une clé USB vierge sur votre PC Debian et effectuez les étapes suivantes :
# Permet de répérer le chemin du périphérique de votre clé
fdisk -l
# Partitionnement de votre clef (remplacer le x par la lettre de votre clef)
cfdisk /dev/sdx
Créez une partition au format de votre choix (évitez FAT afin de contourner la limite des fichier de 2Go), et indiquez le drapeau Amorçage. Vous devrez ensuite installer syslinux et rendre la clef amorçable. (Les commandes sont relatives au dossier git récupéré précédemment).
# Installation de syslinux
apt install syslinux
# Installation d'un mbr sur la clé (remplacer x par la lettre et le numéro de partition de votre clef USB)
cat /usr/lib/SYSLINUX/mbr.bin > /dev/sdx
# Montage de votre clé USB
mount /dev/sdxx /mnt
# Configurer syslinux sur la clef USB
extlinux --install /mnt
# Copie de la structure du live CD
cp -a binary/* /mnt
# Renommage du dossier isolinux pour extlinux
mv /mnt/isolinux /mnt/syslinux
Gravez cette image sur un CD (inutile d’utiliser un DVD). Je ne décrirais pas comment graver un ISO sur un CD bien que je suis sur que certains vont graver l’ISO sur le CD au lieu de graver l’image disque. Allez je vous donne un lien dans le cas ou vous avez un doute sur comment faire :
http://www.tutoriels-animes.com/graver-cd-dvd-donnees-infrarecorder.html
Une fois que votre CD est gravé, mettez le dans votre ordinateur “master” puis démarrez votre ordinateur en prenant soin de bien configurer votre BIOS pour démarrer dessus. Aille, vous ne savez pas non plus, je crois qu’on est mal parti, dans le doute, demandez à un amis par téléphone, ou tentez d’appuyer sur les touches F12, F9, ou bien ECHAP. Si vous n’avez pas un menu qui apparaît, essayez de mettre un commentaire, on verra ce qu’on peut faire pour vous.
Lorsque le menu apparaît, appuyez sur la touche TAB puis ajouter le mot debug à la fin de la commande (ajoutez un espace !). Appuyez sur entrée pour démarrer sur la clef.
Vous avez la possibilité de stocker l’image système sur la clef elle même (si elle contient assez de place), sur un autre media ou bien encore sur un partage Windows. Pour rentrer en mode terminal, appuyez sur ALT+F2, puis authentifiez vous avec le compte user et le mot de passe live, puis passez en super utilisateur avec sudo -s
.
Remontez la clef usb en écriture puis accédez au dossier images :
mount -o remount,rw /lib/live/mount/medium/
cd /lib/live/mount/medium/images/
Branchez maintenant votre disque dur et tapez
dmesg
Si vous voyez quelque chose comme :
[ 3.325090] sdb: sdb1
C’est sans doute ce que vous venez de connecter. Il va falloir maintenant monter votre disque dur dans un répertoire. En effet, Linux impose de “monter” un disque dur, c’est à dire indiquer le chemin avec lequel on va accéder aux données.
Tapez la commande suivante :
mount /dev/sdb1 /mnt
Attention : adaptez votre commande en fonction de ce que vous avez vu avec la commande dmesg. Vous pourriez très bien avoir sdc1 à la place. Si vous avez plusieurs partitions, ça peut également être sdc2 ou sdb2, mais si vous avez des partitions sur votre disque dur externe, c’est que je n’ai pas besoin de plus détailler.
Si votre disque dur est en ntfs, tapez la commande suivante :
mount -t ntfs-3g /dev/sdb1 /mnt
Enfin accédez au dossier :
cd /mnt
Tapez la commande suivante :
mount -t cifs //ip/partage /mnt -o username=login
Remplacez “ip” par l’adresse IP de votre ordinateur configuré pour le partage, “partage” par le nom du partage que vous avez créé, “login” par votre compte utilisateur Windows, enfin il vous demandera sans doute un mot de passe, tapez le mot de passe de votre compte.
Si vous n’y arrivez pas, difficile à dire comme ça, mais peut-être devriez vous mettre un petit commentaire dans cet article.
Afin de pouvoir compléter une installation, vous devrez indiquer au système comment partitionner le disque dur cible. Vous avez deux possibilités :
Cette méthode est la plus simple mais aussi la moins souple puisque vous devrez avoir des disques dur identiques sur toutes vos machines :
dd if=/dev/sda of=image.mbr bs=512 count=1
Cette méthode est plus compliquée en fonction du type de partition à faire. Sachez par contre que si vous souhaitez installer Windows, vous avez à disposition quelques fonctions. Donc dans le cas ou vous souhaitez simplement installer Windows Vista/7/8/10, décommentez les commandes suivantes dans le fichier scripts/a-restore-pre :
initialize_disk $dev
create_win_partitions $dev
install_win_mbr $dev
Notez que dans le cas d’une restauration Windows, le système peut également créer automatiquement le contenu de la partition boot. Pour ce faire, décommentez les lignes suivantes dans le fichier scripts/a-restore-post :
mkfs.ntfs -f /dev/sda1 # Format the Windows boot partition
mkdir -p /mnt/boot /mnt/system # Create temp folder
mount /dev/sda1 /mnt/boot # Mount the Windows boot partition
mount /dev/sda2 /mnt/system # Mount the Windows system partition
mkdir /mnt/boot/Boot/ # Create the folder structure
cp -a /mnt/system/Windows/Boot/PCAT/bootmgr /mnt/boot/ # Copy the needed files from
cp -a /mnt/system/Windows/Boot/PCAT/??-?? /mnt/boot/Boot/ # the Windows system
cp -a /mnt/system/Windows/Boot/PCAT/memtest.exe /mnt/boot/Boot/ # partition and get the generic
cp ${IMAGES_STORE}/BCD-generic /mnt/boot/Boot/BCD # BCD file from the medium
Enfin on y est, on va pouvoir lancer les commandes magiques qui vont vous permettre de sauvegarder votre ou vos partitions.
Pour rappel, si vous souhaitez lister toutes les partitions de tous vos disques dur, tapez :
fdisk -l
Pour créer une image de votre première partition, tapez :
fsarchiver savefs image-1.fsa /dev/sdx1
Si vous avez plusieurs partitions a sauvegarder (c’est le cas lorsque vous sauvegardez Windows 7), tapez autant de fois la commande que de partition. Si vous souhaitez par exemple sauvegarder la seconde partition de votre disque, tapez :
fsarchiver savefs image-2.fsa /dev/sdx2
Pensez à bien remplacer sdx par votre disque (sdb, sdc) le cas échéant.
Dans le même principe que fsarchiver, sauvegarder votre partition à l’aide de la commande suivante :
partimage -bd save /dev/sdx1 image-1
Wimlib est aussi très performant pour effectuer une image :
wimcapture /dev/sdx1 image-1.wim
Notez qu’un fichier wim de référence est disponible pour l’installation de Windows dans le dossier sources et nommé install.wim. Vous pouvez récupérer ce fichier et le placer dans le dossier image de la clef USB. Renommez le en image-2.wim.
Vous avez maintenant tout ce qu’il faut pour vous créer un DVD de restauration (oui, je suppose que l’image fait plusieurs giga), tapez halt dans votre terminal afin de pouvoir éteindre l’ordinateur maître.
Même si ce guide vous propose de créer un Live DVD de restauration automatique, vous avez peut-être envie de restaurer manuellement votre image. Ce cas est souvent utile lorsque vous avez créer une image juste pour sauvegarder votre PC ou bien lorsque vous souhaitez changer de disque dur.
Pour ce faire, je ne vais pas tout ré-expliquer, dans le principe, il faut suivre les mêmes étapes que lors que de la création de l’image à l’exception bien sur des commandes de création de l’image. En gros, suivez le tuto jusqu’à l’étape Création de l’image. C’est bon, vous y êtes ? OK, nous supposons donc que vous êtes dans le dossier là ou vous avez stocké vos images, on va vérifier la présence de ces dernières :
ls -l
Vous devriez donc retrouver le fichier image.mbr qui est la sauvegarde de votre secteur de démarrage, ainsi que image-x.fsa ou image-x.000 en fonction du logiciel que vous avez utilisé pour faire l’image.
Il est nécessaire d’abord de restaurer le mbr. Si vous partitionnez votre disque dur sans restaurer le mbr, vous risquez d’avoir un problème de démarrage voir d’alignement des partitions.
dd if=image.mbr of=/dev/sdx
Remplacez bien sur sda par la valeur de votre disque dur. Encore un doute? Tapez donc de nouveau la commande fdisk -l pour vérifier la présence de vos partitions et disques dur.
Attention : la commande dd va détruire les partitions existantes de votre disque dur. Soyez donc prudent, et surtout, évitez de vous tromper de disque dur !
Afin que les partitions soient prisent en compte sans devoir redémarrer l’ordinateur, il est nécessaire de dire au système qu’on souhaite actualiser la table présente en mémoire.
blockdev --rereadpt /dev/sdx
Avant de passer à la phase de restauration, il est sans doute nécessaire de revoir un peu le schéma de partitionnement de votre disque dur, car ce dernier n’a sans doute pas la même taille que celui d’origine.
fdisk -uc /dev/sdx
Ensuite, utilisez les commandes suivantes en fonction de ce que vous voulez faire :
En cas d’erreur donc, tapez juste q sans w pour ne pas sauvegarder les changements.
Voilà, j’espère que ça n’était pas trop dur ! Bon petite astuce, si vous trouvez ce logiciel trop difficile, utilisez cfdisk, mais sachez simplement qu’il ne fonctionne pas dans tous les cas (notamment si votre disque dur de destination est plus petit que le disque d’origine).
cfdisk /dev/sda
Maintenant que la partie la plus compliquée est terminée, nous pouvons enfin nous attaquer à la restauration des partitions.
Pour fsarchiver (vous avez des fichiers image-x.fsa).
fsarchiver restfs image-x.fsa id=0,dest=/dev/sdxx
Pour partimage (vous avez des fichiers image-x.000).
partimage restore /dev/sdxx image-x.000 -b
Remplacez les x par les numéros de partitions. Remplacez y par le numéro de volume de votre fichier wim si applicable.
wimapply image-x-wim y /dev/sdxx
Dans le cas ou vous avez placé votre image sur une Clef USB, vous aurez peut-être besoin de regénérer votre fichier ISO pour pouvoir le graver sur un DVD ou sur un Bluray. Placez vous dans la racine de votre dossier récupéré de GitHub :
genisoimage -J -R -f -b isolinux/isolinux.bin -c isolinux/boot.cat -nobak -no-emul-boot -boot-load-size 4 -boot-info-table -o live-deploy.iso binary/
Une fois générez, vous devriez avoir un fichier live-deploy.iso, si c’est le cas, bravo, vous avez créez votre iso, qui est bootable. Testez le avec Virtualbox ou Vmware !!
Vous avez désormais un ISO gravable et utilisable, vous pouvez le garder tel quel ou bien personnaliser les scripts de restauration.
L’utilisation des scripts nécessite un minimum de connaissances en programmation. Vous pouvez bien sur vous baser sur les exemples ci-dessous et regarder comment fonctionne ceux déjà présent. Après, tout dépendra du niveau de complexité que vous souhaitez.
Pour vous donner une idée de ce qu’on peut utiliser, nous utilisons couramment cette structure pour faire les tâches suivantes :
Etc… et tout ça depuis la ligne de commande. Voyons donc quelques exemples.
Avant d’aller plus loin, je vous propose de regarder ce qui est présent dans ce fameux dossier iso. Vous trouverez les dossiers suivants :
Nom du dossier | Rôle |
---|---|
*images* | Utilisez ce dossier pour stocker les images, et des créer des sous-dossiers pour les personnalisations. |
*isolinux* | Contient tout ce qu'il faut pour rendre le CD/DVD bootable, n'y touchez pas. |
*live* | Contient une image du système linux utilisé, n'y touchez pas. |
*scripts* | Contient les scripts de restauration du système. |
Nom du fichier | Rôle |
---|---|
*image.mbr* | Fichier image du mbr à installer, contenant également la table de partitions. |
*image-x.000* | Fichier image d'une partition. Le *x* représente le numéro de la partition dans laquelle l'image sera restaurée. Les fichiers avec l'extension .000 seront automatiquement restaurés avec partimage. |
*image-x.fsa* | Fichier image d'une partition. Le *x* représente le numéro de la partition dans laquelle l'image sera restaurée. Les fichiers avec l'extension .fsa seront automatiquement restaurés avec fsarchiver. |
Nom du fichier | Rôle |
---|---|
*a-restore* | Script principal, c'est lui le chef d'orchestre, mais vous n'êtes pas obligé de le changer. |
*a-restore.conf* | Fichier de configuration, en principe, inutile d'y toucher. |
*a-restore-pre* | Script lancé avant la restauration du système. Il peut être pratique de poser des questions ou des confirmations avant d'écraser le contenu d'un disque dur. |
*a-restore-post* | Script lancé après la restauration du système. Il peut être pratique de lancer des commandes à effectuer sur la partition fraîchement restaurée, comme le redimensionnement de cette dernière ou bien la copie de fichiers personnalisés. |
*lib-restore* | Fichier de librairie contenant toutes les fonctions, n'y touchez pas a moins de vouloir essayer de comprendre comment tout ça fonctionne en arrière plan. |
Ouvrez donc le fichier iso/scripts/a-restore-pre dans l’éditeur de texte de votre choix. Vous remarquerez qu’il existe déjà un petit assistant vous évitant ainsi d’effacer votre disque dur par mégarde si vous oubliez le CD dans votre ordinateur.
basez vous sur ces exemples si vous voulez changer les phrases. Voici une liste des commandes possibles :
Cette commande affiche simplement un message à l’écran dans une couleur donnée. A mettre avant une question par exemple.
Syntaxe : | echo_color %{color:red}COULEUR% %{color:green}"MESSAGE"% |
%{color:red}COULEUR% | Indique la couleur souhaitée. Valeurs possibles : *RED*, *GREEN*, *NORMAL*, *PINK*, *BLUE*, *WHITE*, *WHITELIGHT*, *YELLOW*, *CYAN*. |
%{color:green}"MESSAGE"% | Message au choix, mettre impérativement des guillemets autour. |
Exemple :
echo_color RED "Un petit message en rouge."
####. +Effacer tous les messages à l’écran :+
Cette commande nettoie l’écran de tout message pouvant parasiter l’utilisateur. Pratique si on ne veut afficher à l’écran qu’une seule information à la fois.
Syntaxe : | clear_screen |
Exemple :
clear_screen
####. Afficher une erreur fatale :
Affiche un message d’indiquant que le script ne peut pas continuer car quelque chose est manquant. Une fois que l’utilisateur valide, l’ordinateur s’éteint automatiquement.
Syntaxe : | fatal %{color:green}"MESSAGE"% |
%{color:green}"MESSAGE"% | Message au choix, mettre impérativement des guillemets autour. |
Exemple :
fatal "Vous n'avez pas de fichier image à restaurer, l'ordinateur va s'arrêter."
Affiche un message avec une pause si VERBOSE est mis à YES dans le fichier de configuration. Utile pour voir les messages avant de passer à l’étape suivante pendant la fabrication du DVD.
Syntaxe : | debug %{color:green}"MESSAGE"% |
%{color:green}"MESSAGE"% | Message au choix, mettre impérativement des guillemets autour. |
Exemple :
debug "La variable dev contient $dev."
Redimensionne la partition spécifiée à sa taille maximum. Attention, ne fonctionne pour le moment que avec la première partition.
Syntaxe : | resize_part_ntfs %{color:green}"PARTITION"% |
%{color:green}"PARTITION"% | Indiquer le numéro de partition à redimensionner (ne fonctionne que avec les partitions primaires). |
Exemple :
resize_part_ntfs 1
Pour le reste, il s’agit de programmation bash, n’hésitez pas à utiliser des conditions ou des boucles ou bien encore la commande dialog qui permet de créer des belles boites de dialogues en mode texte. Je peux également vous conseiller l’adresse suivante pour une petite initiation “http://www.haypocalc.com/wiki/Bash#Langage_Bash”:http://www.haypocalc.com/wiki/Bash#Langage_Bash
Avant de lancer votre image, je vous conseille de tester que la restauration se passe bien, soit sur un disque dur vierge, soit dans une machine virtuelle (mais votre système risque de ne pas démarrer a cause du changement de matériel).
Nous ne pouvons que vous recommander de bien tester votre système avant d’utiliser ce DVD en production.