Clef USB de maintenance

Cette documentation est basée sur les articles https://wiki.debian-fr.xyz/Installation_Debian_Stretch_avec_Debootstrap_et_chroot et https://blog.sleeplessbeastie.eu/2015/12/07/how-to-create-bootable-usb-flash-drive/

Procédure validée sur Xubuntu 18.04.

Présentation du projet

Nous souhaitons créer une clef USB de maintenance permettant d'installer un système Xubuntu ou Windows 10 ainsi que de démarrer un système d'exploitation Debian contenant divers utilitaires système.

Nous allons utiliser une clef USB 3 de 32 Go. Nous considérerons qu'elle est connectée sur une machine virtuelle sur le disque /dev/sda. Cette machine virtuelle est démarrée sur un live Xubuntu 18.04.

Partitionnement

La clef USB doit comporter une table de partitions MS-DOS. Nous allons partitionner notre clef USB comme suit avec GParted :

Volume Sys. de fichiers Taille (en Mo) Drapeaux Usage
sda1 ext2 27 392 boot Système de maintenance et ISO
sda2 swap 256 Partition d'échange
sda3 fat32 5 120 Installeur Windows 10

Mise en place de l'installeur Windows 10

Si vous ne souhaitez pas créer un installeur Windows 10 sur votre clef USB de maintenance, ignorez cette partie ainsi que la création du volume sda3.

Nous allons utiliser WoEUSB pour installer l'image disque de Windows 10 sur la clef USB.

Télécharger la dernière ISO de Windows 10 : https://www.microsoft.com/fr-fr/software-download/windows10ISO

Installer WoEUSB depuis les PPA :

add-apt-repository ppa:nilarimogard/webupd8
apt update
apt install woeusb grub2

Installer Windows 10 sur la partition sda3 :

woeusb --partition Windows10.iso /dev/sda3

Création du système de maintenance

Installer les paquets suivants :

apt install extlinux syslinux-common grub2 debootstrap

Le système d'amorçage

Copier le MBR extlinux sur le disque de destination :

dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sda

Monter la partition sda1 sur /mnt et créer le dossier /mnt/boot/extlinux :

mount /dev/sda1 /mnt
cd /mnt
mkdir -p /mnt/boot/extlinux

Installer extlinux :

extlinux --install /mnt/boot/extlinux

Copier les modules nécessaires à l'affichage du menu de démarrage :

cp /usr/lib/syslinux/modules/bios/{menu.c32,vesamenu.c32,reboot.c32,chain.c32,libutil.c32,libcom32.c32} /mnt/boot/extlinux/

Télécharger Memtest86+ :

wget -O /mnt/boot/extlinux/memtest http://www.memtest.org/download/5.01/memtest86+-5.01.bin

Créer le fichier /mnt/boot/extlinux/extlinux.conf :

DEFAULT vesamenu.c32
TIMEOUT 100
ONTIMEOUT LOCALDISK
MENU TITLE Clef USB de maintenance
MENU BACKGROUND splash-pxe.jpg
MENU COLOR TITLE 0 #FFD64937 #00000000 std
MENU COLOR SEL 0 #E0000000 #FFD64937 all
MENU COLOR BORDER 0 #00000000 #00000000 none
MENU VSHIFT 2
ALLOWOPTIONS 0
MENU AUTOBOOT Demarrage automatique du disque local dans # seconde{,s}. 

LABEL LOCALDISK
        MENU LABEL Demarrer le disque local
        KERNEL chain.c32
        APPEND hd0
        TEXT HELP
        Amorcer le disque dur local. 
        ENDTEXT

LABEL REBOOT
        MENU LABEL Redemarrer le systeme
        KERNEL reboot.c32
        TEXT HELP
        Redemarrer l'ordinateur. 
        ENDTEXT

LABEL MEMTEST
        MENU LABEL Memtest86+
        KERNEL memtest
        APPEND -e
        TEXT HELP
        Effectuer un test de memoire. 
        ENDTEXT

MENU SEPARATOR

LABEL NETSYSTEM
        MENU LABEL Systeme de maintenance
        KERNEL /vmlinuz
        APPEND root=UUID= initrd=/initrd.img --- quiet
        TEXT HELP
        Systeme de maintenance contenant des outils d'administration courants. 
        ENDTEXT

LABEL XUBUNTU-1804-64
        MENU LABEL Xubuntu 18.04 64 bits live
        KERNEL /iso/xubuntu-1804-64/vmlinuz
        APPEND boot=casper initrd=/iso/xubuntu-64/initrd.lz 
        iso-scan/filename=/iso/xubuntu-64/xubuntu-1804-64.iso
        TEXT HELP
        Live CD Xubuntu 18.04 64 bits. 
        ENDTEXT
        
LABEL XUBUNTU-1804-32
        MENU LABEL Xubuntu 18.04 32 bits live
        KERNEL /iso/xubuntu-1804-32/vmlinuz
        APPEND boot=casper initrd=/iso/xubuntu-32/initrd.lz 
        iso-scan/filename=/iso/xubuntu-32/xubuntu-1804-32.iso
        TEXT HELP
        Live CD Xubuntu 18.04 32 bits. 
        ENDTEXT

LABEL WIN10-64
        MENU LABEL Windows 10 64 bits
        KERNEL chain.c32
        APPEND boot 3
        TEXT HELP
        Installeur Windows 10 64 bits. 
        Licence : XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
        ENDTEXT

Installation du système Debian de maintenance

Nous allons utiliser debootstrap pour installer un système Debian de base depuis les dépôts sur Internet :

debootstrap --arch i386 stretch /mnt/ http://deb.debian.org/debian/

Monter les répertoires du nouveau système fraîchement installés :

mount -t sysfs /sys /mnt/sys
mount -t proc /proc /mnt/proc
mount --bind /dev /mnt/dev
mount -t devpts /dev/pts /mnt/dev/pts
mount --bind /tmp /mnt/tmp

Entrer dans le système de la clef de maintenance :

chroot /mnt

Pour la suite de cette documentation, les commandes à exécuter lors du chroot seront précédés par chroot>.

Définir le mot de passe du compte root :

chroot> passwd root

Créer un utilisateur standard :

chroot> adduser antoine

Définir la langue du système en français :

chroot> apt -y install locales
chroot> dpkg-reconfigure locales 

Cocher fr_FR.UTF-8 et choisir cette langue par défaut.

Définir le fuseau horaire de l'horloge :

chroot> dpkg-reconfigure tzdata

Choisir Europe puis Paris.

Modifier le fichier /etc/apt/sources.list comme suit :

deb http://deb.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib non-free
deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
deb http://deb.debian.org/debian/ stretch-proposed-updates main contrib non-free
deb http://ftp.debian.org/debian stretch-backports main contrib non-free

Mettre à jour les dépôts et installer les paquets nécessaires (à personnaliser si vous le souhaitez) :

chroot> apt update
chroot> apt -y install bash-completion nano mc xfce4 lightdm network-manager network-manager-gnome gparted gsmartcontrol xfce4-whiskermenu-plugin linux-image-686 numix-gtk-theme papirus-icon-theme dmz-cursor-theme cheese vlc firefox-esr engrampa mate-calc partclone dcfldd locales console-data sudo
chroot> apt -y upgrade

Lors de l'installation du paquet console-data, vous serez amené à choisir la configuration du clavier. Choisir l'option Choisir un codage clavier dans la liste complète puis pc / azerty / French / Same as X11 (latin9).

Installer les composants standards :

chroot> tasksel install standard

Ajouter l'utilisateur standard dans le groupe sudo (si nécessaire) :

chroot> usermod -a -G sudo antoine

Modifier le fichier /etc/fstab comme suit :

UUID=<UUID de sda1> / ext2  errors=remount-ro 0 1
UUID=<UUID de sda2> none swap sw 0 0
UUID=<UUID de sda3> /media/win10-installer vfat defaults,nofail 0 2
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /var/log tmpfs defaults 0 0

Configurer la connexion automatique pour l'utilisateur standard à l'environnement graphique en décommentant et modifiant les lignes suivantes dans /etc/lightdm/lightdm.conf :

autologin-user=antoine
autologin-user-timeout=0

Quitter le chroot :

chroot> exit

Démonter les répertoires du système de fichiers chrooté :

umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt/dev/pts
umount /mnt/tmp

Ajouter le système d'amorçage de l'installeur Windows 10

Si vous ne souhaitez pas créer un installeur Windows 10 sur votre clef USB de maintenance, ignorez cette partie.

Suite à l'installation d'extlinux, le système d'amorçage fourni par WoEUSB a été écrasé. Nous allons le réinstaller. Monter la partition sur un répertoire :

mkdir /media/windows
mount /dev/sda3 /media/windows

Installer Grub2 :

grub-install --root-install=/media/windows /dev/sda3

Créer le fichier boot/grub/grub.cfg avec le contenu suivant :

ntldr /bootmgr
boot

Créer le point de montage sur le système de maintenance :

mkdir /mnt/media/win10-installer

Installation des ISO Xubuntu

Télécharger la derniere version LTS des ISO Xubuntu 32 et 64 bits depuis un miroir Xubuntu :

mkdir -p /mnt/iso/xubuntu-32 /mnt/iso/xubuntu-64
wget -O /mnt/iso/xubuntu-32/xubuntu-1804-32.iso http://cdimages.ubuntu.com/xubuntu/releases/18.04/release/xubuntu-18.04-desktop-i386.iso
wget -O /mnt/iso/xubuntu-64/xubuntu-1804-64.iso http://cdimages.ubuntu.com/xubuntu/releases/18.04/release/xubuntu-18.04-desktop-amd64.iso

Monter les ISO sur un répertoire :

mkdir /media/xubuntu-iso-32 /media/xubuntu-iso-64
mount -o loop /mnt/iso/xubuntu-32/xubuntu-1804-32.iso /media/xubuntu-iso-32
mount -o loop /mnt/iso/xubuntu-64/xubuntu-1804-64.iso /media/xubuntu-iso-64

Copier les fichiers casper/vmlinuz et casper/initrd.lz des ISO montés vers les dossiers accueillant les ISO :

cp /media/xubuntu-iso-32/casper/vmlinuz /mnt/iso/xubuntu-32/
cp /media/xubuntu-iso-32/casper/initrd.lz /mnt/iso/xubuntu-32/
cp /media/xubuntu-iso-64/casper/vmlinuz /mnt/iso/xubuntu-64/
cp /media/xubuntu-iso-64/casper/initrd.lz /mnt/iso/xubuntu-64/

Démonter les ISO :

umount /media/xubuntu-iso-32 && rmdir /media/xubuntu-iso-32
umount /media/xubuntu-iso-64 && rmdir /media/xubuntu-iso-64

Démarrer le système de maintenance et le personnaliser à votre guise.