Comment flasher le BIOS du serveur en utilisant une clé USB DOS bootable sur Linux
Mettre à jour le BIOS d’un serveur depuis Linux est simple lorsque le fournisseur fournit un utilitaire Linux fonctionnel, mais cela est rarement le cas sur les systèmes modernes. De nombreux fournisseurs de serveurs, y compris Lenovo, Dell, HP et Supermicro, proposent des packages de mise à jour du BIOS basés sur DOS comme méthode de flashage la plus fiable. Leurs utilitaires de flash Linux reposent souvent sur des interfaces noyau obsolètes qui ne compilent plus avec les noyaux modernes, faisant de la méthode DOS la seule option pratique. Ce guide montre comment créer une clé USB bootable DOS entièrement depuis Linux, en utilisant GRUB et FreeDOS, et comment l’utiliser pour exécuter directement l’utilitaire de flash DOS du fournisseur.
Nous utilisons un exemple réel tout au long du texte : mettre à jour le BIOS d'un Lenovo ThinkServer TS140 de la version FBKT99A (septembre 2014) à FBKTC7A (juin 2016) en préparation d'une mise à niveau du processeur. Le modèle de serveur spécifique, les URL des fichiers BIOS et les chaînes de version sont tous propres à cette machine et ne sont utilisés qu'à titre de référence concrète. La méthode sous-jacente est totalement indépendante du fournisseur et s'applique également aux serveurs Dell, HP, Supermicro, ASRock Rack et à tout autre serveur livré avec un package de mise à jour du BIOS basé sur DOS.
IMPORTANT
Ce guide utilise un Lenovo ThinkServer TS140 uniquement comme exemple pratique. La méthode USB amorçable sous DOS décrite ici fonctionne avec tout fournisseur de serveur qui propose un utilitaire de mise à jour du BIOS sous DOS, ce qui couvre la grande majorité des matériels serveurs actuellement utilisés. Une fois l’USB préparée, elle peut être réutilisée pour de futures mises à jour du BIOS sur différents serveurs en remplaçant simplement le contenu du dossier BIOS du fournisseur. L’infrastructure de démarrage GRUB et FreeDOS reste la même.
Dans ce tutoriel, vous apprendrez :
- Comment identifier la version actuelle de votre BIOS depuis l'interface en ligne de commande Linux
- Comment trouver et vérifier le package BIOS du fournisseur correct
- Comment partitionner et formater une clé USB DOS bootable depuis Linux
- Comment configurer GRUB et le memdisk de FreeDOS pour démarrer un environnement DOS
- Comment exécuter un utilitaire de mise à jour DOS du fournisseur et confirmer la mise à jour
Résumé de l'article : Formatez une clé USB en FAT32, installez GRUB, chargez FreeDOS via memdisk, copiez le fichier zip du BIOS du fournisseur sur l'USB, puis démarrez le serveur et exécutez Flash.bat.
| Étape | Commande/Action |
|---|---|
| 1. Vérifier la version actuelle du BIOS | |
| 2. Partitionnez et formatez l'USB | |
| 3. Installer GRUB + memdisk FreeDOS | |
| 4. Démarrez le serveur, exécutez l'utilitaire de flash | |
Quand vous avez besoin de cette approche
Le déclencheur le plus courant est un utilitaire de flash BIOS Linux fourni par le fournisseur qui ne se compile plus. Le flasheur Linux de Lenovo pour la série TS140, par exemple, repose sur un module kernel qui utilise des interfaces ioctl obsolètes supprimées du noyau Linux il y a des années. Tenter de le compiler sur une distribution moderne produit des erreurs telles que :
error: 'struct file_operations' has no member named 'ioctl'Ceci est un problème répandu. Les outils du fournisseur de serveurs sont souvent écrits pour des versions spécifiques du noyau et ne sont jamais mis à jour pour suivre les changements de l'API en amont. Par conséquent, plutôt que de chercher des versions corrigées ou de rétrograder votre noyau, l'utilitaire de flash DOS est l'alternative la plus robuste, il fonctionne dans un environnement entièrement isolé en dessous du système d'exploitation et n'est donc pas affecté par une version quelconque du noyau Linux.
De plus, vous voudrez adopter cette approche lorsque :
- Préparation à une mise à niveau du CPU : Une mise à jour du BIOS est souvent requise avant d'installer un processeur plus récent. Dans notre cas, passer d'un Intel Core i3-4330 à un Xeon E3-1281 v3 nécessitait une version du BIOS incluant un microcode CPU mis à jour et un support explicite pour le nouveau CPU.
- Application des correctifs de sécurité : Les mises à jour du microcode du processeur traitant des vulnérabilités telles que Spectre et Meltdown sont souvent fournies via des mises à jour du BIOS sur le matériel serveur.
- Serveurs sans interface graphique : Serveurs sans environnement de bureau où les outils basés sur l’interface graphique ne sont pas une option.
- Pas de Windows disponible : Lorsque la seule méthode simple de flash du fournisseur nécessite un exécutable Windows.
Prérequis
Vous aurez besoin d'une station de travail ou d'un ordinateur portable Linux pour préparer le lecteur USB, il n'est pas nécessaire que ce soit le serveur cible lui-même. Installez tous les paquets requis sur la machine de préparation avant de continuer :
$ sudo apt install syslinux syslinux-common grub-pc-bin grub2-common dosfstools unzip wgetIMPORTANT
Vous devez également avoir dmidecode installé sur le serveur pour vérifier les versions du BIOS. Il est inclus par défaut sur la plupart des distributions, mais peut être installé avec sudo apt install dmidecode s'il manque.
Trouver et vérifier le fichier BIOS correct
Avant de télécharger quoi que ce soit, vérifiez la version actuelle du BIOS sur le serveur afin de pouvoir confirmer que la mise à jour est réellement plus récente :
# dmidecode -t bios | grep -E "Version|Release Date"Sur notre Lenovo ThinkServer TS140, cela a renvoyé :
Version: FBKT99AUS
Release Date: 09/19/2014Ensuite, localisez le paquet de mise à jour DOS sur le site de support de votre fournisseur. Pour les produits Lenovo ThinkServer, les fichiers sont hébergés directement sur download.lenovo.com. Comme les pages de téléchargement des fournisseurs changent parfois, il vaut la peine de vérifier l'URL directe du fichier avant de lancer le téléchargement :
$ wget --spider "https://download.lenovo.com/pccbbs/thinkservers/bios_me_ts140-240-440-540_fbktc7a_dos.zip" 2>&1 | grep "HTTP"Une réponse 200 OK confirme que le fichier est accessible. De nombreux fournisseurs publient également un journal des modifications en texte clair en même temps que le zip. Le lire permet de confirmer la date de la version et si votre scénario spécifique, tel que le support d’un nouveau processeur, est pris en compte :
$ wget -qO- https://download.lenovo.com/pccbbs/thinkservers/bios_me_ts140-240-440-540_fbktc7a_dos.txt | grep -E "Version|Issue date"
Version C7A
Issue date Jun 24, 2016Le journal des modifications pour C7A comprenait l'entrée “Mise à jour pour supporter le nouveau CPU ”, confirmant que c'était la version correcte pour notre mise à niveau prévue vers le Xeon E3-1281 v3. Une fois vérifié, téléchargez le fichier :
$ wget https://download.lenovo.com/pccbbs/thinkservers/bios_me_ts140-240-440-540_fbktc7a_dos.zip -O /tmp/ts140_bios_c7a.zipALERTE DE SÉCURITÉ
Téléchargez toujours les packages BIOS directement depuis le CDN officiel du fournisseur. Pour Lenovo, il s'agit de download.lenovo.com. Les sites tiers de pilotes reconditionnent fréquemment les fichiers de microprogramme et ne peuvent pas être fiables pour quelque chose d'aussi sensible qu'une mise à jour du BIOS.
Préparation de la clé USB DOS amorçable
Cette section couvre le partitionnement du lecteur USB, l'installation de GRUB comme chargeur d'amorçage, le téléchargement d'une image minimale de FreeDOS, et la configuration de GRUB pour la démarrer via memdisk. Le résultat est une clé USB qui démarre directement dans un environnement DOS avec vos fichiers BIOS de fournisseur accessibles.
Étape 1, Identifier le lecteur USB
Insérez votre clé USB et identifiez son nom de périphérique :
$ lsblk -o NAME,SIZE,VENDOR,MODELConfirmez le bon appareil avant de continuer, toutes les données qu'il contient seront effacées.
Étape 2, Partitionner et Formater
Démontez toutes les partitions existantes sur l'USB :
# umount /dev/sda1 2>/dev/null; umount /dev/sda2 2>/dev/nullEffacer la table de partitions existante et créer une nouvelle disposition MBR :
# wipefs -a /dev/sda # parted /dev/sda --script mklabel msdos mkpart primary fat32 1MiB 100% set 1 boot onFormatez la partition en FAT32 :
# mkfs.vfat -F 32 -n BIOSDOS /dev/sda1
Étape 3, Installer GRUB et le MBR de syslinux
# syslinux --install /dev/sda1
# dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sda bs=440 count=1 conv=notrunc
# mkdir -p /mnt/usbdos
# mount /dev/sda1 /mnt/usbdos
# grub-install --target=i386-pc --boot-directory=/mnt/usbdos/boot /dev/sdaIMPORTANT
La commande syslinux peut afficher des avertissements concernant des secteurs cachés. Ils sont inoffensifs, l'installation se poursuit avec succès malgré tout.
Étape 4, Copier les fichiers BIOS sur l'USB
# unzip /tmp/ts140_bios_c7a.zip -d /mnt/usbdos/Cela crée un répertoire BIOSDOS/ sur l'USB contenant Flash.bat, IMAGEFB.ROM et les utilitaires de support.
Étape 5, Télécharger FreeDOS et Configurer GRUB
Un noyau DOS minimal est nécessaire pour démarrer. FreeDOS 1.3 fournit une image pour disquette adaptée à cet usage. Téléchargez-la depuis le miroir FreeDOS 1.3 de l'Internet Archive :
$ wget "https://archive.org/download/freedos-1.3/FD13-FloppyEdition.zip" -O /tmp/freedos.zip
$ unzip /tmp/freedos.zip -d /tmp/freedos/Copiez l'image de démarrage de 1,44 Mo sur l'USB, puis copiez le binaire memdisk de syslinux. Memdisk est ce qui permet à GRUB de charger directement une image de disquette depuis l'USB en mémoire et de la démarrer :
# cp /tmp/freedos/144m/x86BOOT.img /mnt/usbdos/
# mkdir -p /mnt/usbdos/boot/grub
# cp /usr/lib/syslinux/memdisk /mnt/usbdos/boot/grub/Créez le fichier de configuration GRUB :
# cat <<'EOF' > /mnt/usbdos/boot/grub/grub.cfg
set default=0
set timeout=5
menuentry "FreeDOS - Flash BIOS" {
linux16 /boot/grub/memdisk
initrd16 /x86BOOT.img
}
EOFÉtape 6, démonter l'USB
# umount /mnt/usbdosL'USB est maintenant prêt à être utilisé.
Mettre à jour le BIOS
Avec l'USB préparé, rendez-vous sur le serveur et suivez ces étapes :
- Insérez la clé USB dans le serveur.
- Allumez et appuyez sur F12 à l'écran de démarrage du fournisseur pour ouvrir le menu de démarrage. La touche varie selon le fournisseur, les alternatives courantes sont F11, Échap ou Suppr.
- Sélectionnez le périphérique USB dans le menu de démarrage.
- Au menu GRUB, sélectionnez « FreeDOS – Flash BIOS » et appuyez sur Entrée. FreeDOS démarrera depuis l'image de disquette chargée en mémoire par memdisk.
AVERTISSEMENT CRITIQUE
FreeDOS démarrera et vous présentera une question O/N vous demandant si vous souhaitez installer FreeDOS. Tapez N et appuyez sur Entrée. FreeDOS vous mènera alors à l’invite A:\> où vous pourrez poursuivre avec la mise à jour du BIOS. Ne tapez pas O, continuer avec l’installation de FreeDOS écrasera le système d’exploitation et les données existantes de votre serveur.
À l'invite FreeDOS C:\>, naviguez jusqu'au répertoire BIOS et lancez l'utilitaire de flashage :
C: cd BIOSDOS Flash.batL'utilitaire de flash affichera la progression et redémarrera automatiquement le serveur une fois terminé.
AVERTISSEMENT CRITIQUE
Après la fin du flash et le redémarrage du serveur, il est probable qu'il entre automatiquement dans l'écran de configuration du BIOS. Le clavier peut sembler ne pas répondre à ce moment-là, c'est un comportement normal après une mise à jour du BIOS. Ne coupez pas l'alimentation du serveur. Attendez que l'écran du BIOS se charge complètement, puis utilisez le clavier pour accéder à l'option de sortie et sélectionnez « Enregistrer et Quitter » ou « Quitter sans enregistrer » afin de permettre au serveur de démarrer normalement dans le système d'exploitation. Couper l'alimentation à ce stade risque de corrompre le BIOS nouvellement flashé.
ALERTE DE SÉCURITÉ
Ne pas éteindre ou redémarrer le serveur pendant le processus de flash. Le processus prend environ 2 minutes. Le serveur redémarrera automatiquement une fois terminé. Interrompre l'alimentation pendant le flash peut nécessiter une procédure de récupération du BIOS.
Vérification de la mise à jour
Une fois que le serveur est de nouveau opérationnel avec votre système d'exploitation, confirmez la version du BIOS mise à jour avec dmidecode :
# dmidecode -t bios | grep -E "Version|Release Date"Notre sortie après la mise à jour réussie :
Version: FBKTC7AUS
Release Date: 06/24/2016Le tableau suivant résume l'état avant et après sur le ThinkServer TS140 utilisé dans ce guide :
COMPLÉTÉ
Mise à jour du BIOS confirmée. Le serveur est maintenant prêt pour tous les changements matériels nécessitant le firmware mis à jour, comme un échange de CPU.
Applicabilité à d'autres matériels
L'approche GRUB + memdisk + FreeDOS est indépendante du fournisseur. La seule exigence est que votre fournisseur fournisse un package flash basé sur DOS, ce qui est vrai pour la grande majorité du matériel serveur actuellement utilisé :
IMPORTANT
Une fois l'USB préparé, il peut être réutilisé pour de futures mises à jour du BIOS en remplaçant simplement le contenu du dossier BIOS du fabricant. L'infrastructure de démarrage GRUB et FreeDOS reste la même.
Conclusion
Mettre à jour le BIOS du serveur depuis Linux ne nécessite pas un utilitaire Linux fonctionnel fourni par le fournisseur. L'approche GRUB + FreeDOS memdisk offre une méthode propre, indépendante du noyau, qui fonctionne avec tous les fournisseurs et toutes les distributions Linux. De plus, en exécutant l'utilitaire DOS du fournisseur dans un véritable environnement DOS plutôt que dans une émulation de compatibilité Linux, vous obtenez exactement le comportement que le fournisseur a testé et supporte.
Dans l'exemple traité ici, la mise à jour a permis de passer un Lenovo ThinkServer TS140 d'un BIOS de 2014 à une version de 2016, ajoutant des mises à jour du microcode du processeur, des correctifs de sécurité et un support explicite pour les processeurs Xeon E3-1200 v3 plus récents. Le temps total depuis le téléchargement du fichier BIOS jusqu'à la confirmation de la mise à jour dans dmidecode était inférieur à 20 minutes.
Questions Fréquemment Posées
- Puis-je rendre le serveur inutilisable avec un flash BIOS raté ? Sur la plupart des cartes serveurs modernes, y compris le Lenovo ThinkServer TS140, le bootblock, le code minimal nécessaire pour démarrer et initier une récupération, est protégé en écriture matériellement. Un flash raté ou interrompu ne rend donc pas la carte définitivement inutilisable. À la place, le serveur entre en mode de récupération à partir duquel vous pouvez re-flasher en utilisant un USB de récupération. La principale risque à éviter est une perte de courant pendant la fenêtre de flash d’environ 2 minutes.
- Pourquoi ne pas utiliser l'utilitaire de flash Linux du fournisseur à la place ? De nombreux utilitaires de flash Linux des fournisseurs dépendent de modules du noyau qui utilisent des API obsolètes supprimées du noyau Linux ces dernières années. Tenter de les compiler sur des distributions livrant un noyau 5.x ou ultérieur échoue généralement. La méthode DOS n'est pas affectée par la version du noyau et est exactement ce que le processus de QA du fournisseur a testé.
- Cela fonctionne-t-il sur les serveurs basés sur UEFI ? La méthode décrite ici cible le mode de démarrage BIOS hérité/CSM, que la plupart des serveurs prennent encore en charge en parallèle avec l'UEFI. Si votre serveur a complètement désactivé le démarrage hérité, vous devrez réactiver CSM (Module de compatibilité) dans les paramètres UEFI avant que l’USB ne démarre.
- Puis-je réutiliser la clé USB pour d'autres serveurs ? Oui. L'infrastructure GRUB et FreeDOS sur l'USB est générique. Pour flasher un serveur différent, il suffit de remplacer le contenu du dossier BIOS du fournisseur par le package du nouveau fournisseur. La chaîne de démarrage reste identique.
- Comment puis-je savoir quelle est la dernière version du BIOS pour mon serveur ? Vérifiez la page de support officiel ou de téléchargement du fournisseur pour votre modèle spécifique. Vous pouvez également vérifier les URL de téléchargement direct de manière programmatique en utilisant
wget --spiderpour tester les chaînes de version candidates, comme démontré dans ce guide.
Sources
- Support Lenovo, Téléchargements ThinkServer TS140
- Journal des modifications du BIOS Lenovo C7A, ThinkServer TS140/240/440/540
- FreeDOS 1.3, Internet Archive
- Lenovo Press, Guide du produit ThinkServer TS140
- Projet Syslinux, Documentation MEMDISK






