L’installation d’un système d’exploitation sur une machine un peu ancienne nécessite parfois de passer par une mise à jour du BIOS pour corriger un bug. La plupart des constructeurs proposent certes des utilitaires divers et variés pour effectuer cette opération, mais ceux-ci sont disponibles uniquement pour Microsoft Windows.
Une alternative libre et gratuite – et bien plus élégante – consiste à confectionner une clé USB FreeDOS, un système d’exploitation libre et gratuit compatible avec DOS (Disk Operating System), un système fourni sur disquettes floppy et que j’utilisais au quotidien sur mon IBM PC XT dans les années 1980 avant la sortie de Windows 3.1.
Notons ici que la mise à jour du BIOS d’une machine fait partie des interventions à risque. Si la procédure se passe mal – notamment en cas d’interruption du flashage – le matériel est bon pour être relégué à la casse.
Identifier la carte mère
Pas la peine de dévisser le boîtier pour identifier la carte mère. Plusieurs solutions s’offrent à nous. La plus simple consiste à démarrer un système Linux Live ou une session de secours. Dans l’exemple ci-dessous, je démarre sur une clé USB d’installation de CentOS 7.7 en mode Rescue
. Une fois que je dispose d’un shell, j’invoque la commande suivante.
# dmidecode -t 2
...
Base Board Information
Manufacturer: Dell Inc.
Product Name: 0KP561
Je note également le numéro de série de ma machine, je me rends sur le site du constructeur et j’effectue une recherche pour la mise à jour du BIOS.
Pour la machine dans l’exemple, la mise à jour du BIOS vient sous forme d’un fichier O330-A11.exe
. Je télécharge ce fichier et je le renomme tout en majuscules parce que DOS ne sait pas faire la distinction.
Installer UNetbootin
UNetbootin (Universal Netboot Installer) est un programme très simple, qui permet entre autres choses de créer des clés USB amorçables. La plupart des distributions proposent cet utilitaire dans leur dépôt. Malheureusement, la version fournie par OpenSUSE semble comporter un bug prohibitif pour notre utilisation. Qu’à cela ne tienne, il suffit de télécharger UNetbootin directement sur le site du projet. Je récupère le binaire 64-bit, je le range dans le répertoire ~/bin
et je le rends exécutable.
$ chmod +x unetbootin-linux64-675.bin
Formater la clé USB
Je dispose d’une clé USB de 4 Go. J’insère et j’identifie la clé.
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 8M 0 part
├─sda2 8:2 0 500M 0 part
...
sdc 8:32 1 3.6G 0 disk
└─sdc1 8:33 1 3.6G 0 part
sr0 11:0 1 1024M 0 rom
Je détruis les tables de partitions existantes pour partir sur des bases saines.
# sgdisk --zap-all /dev/sdc
Je lance fdisk
et je crée une partition amorçable de type W95FAT32
(0B
) sur la clé.
# fdisk -l /dev/sdc Disk /dev/sdc: 3.6 GiB, 3874797568 bytes, 7567964 sectors Disk model: DataTraveler G3 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x5e0eb792 Device Boot Start End Sectors Size Id Type /dev/sdc1 * 2048 7567963 7565916 3.6G b W95 FAT32
Une fois que la clé est correctement partitionnée, je peux la formater en conséquence.
# mkdosfs -v -n FREEDOS /dev/sdc1 mkfs.fat 4.1 (2017-01-24) Auto-selecting FAT32 for large filesystem /dev/sdc1 has 120 heads and 62 sectors per track, hidden sectors 0x0800; logical sector size is 512, using 0xf8 media descriptor, with 7565916 sectors; drive number 0x80; filesystem has 2 32-bit FATs and 8 sectors per cluster. FAT size is 7376 sectors, and provides 943891 clusters. There are 32 reserved sectors. Volume ID is fbb0aacf, volume label FREEDOS.
Installer FreeDOS
Dans un premier temps, je monte la clé USB.
# mount -v /dev/sdc1 /mnt/ mount: /dev/sdc1 mounted on /mnt.
Je lance UNetbootin avec les droits qui vont bien.
# ./unetbootin-linux64-675.bin
Dans le menu principal de UNetbootin, je sélectionne la distribution FreeDOS 1.0
. Les chipoteurs noteront que la version la plus récente de FreeDOS n’est pas disponible. Pour un flashage de BIOS, n’importe quelle version de FreeDOS fera l’affaire.
Une fois qu’on clique sur OK, Unetbootin se charge de télécharger et installer FreeDOS sur la clé. La taille de cet OS est de 1.4 Mo.
Installer l’utilitaire de flashage
La clé est encore montée. Il suffit à présent de copier l’exécutable téléchargé plus haut à la racine de la clé.
# cp -v O330-A11.EXE /mnt/ 'O330-A11.EXE' -> '/mnt/O330-A11.EXE'
Démonter la clé.
# umount /mnt
Lancer FreeDOS
Démarrer sur la clé et choisir l’unique option de démarrage Default
.
On se retrouve alors face à un deuxième menu comportant plusieurs manières de démarrer FreeDOS. Ici, on choisira l’option FreeDOS Safe Mode
.
FreeDOS démarre et affiche une invite.
A:\>
Nous voulons accéder au disque C:
.
A:\> C: C:\>
Vérifier si tout est bien en place.
C:\> DIR
Flasher le BIOS
Lancer l’utilitaire de flashage à l’invite de FreeDOS.
C:\> O330-A11.EXE Flash Bios Update Program Dell System 330
Il ne reste plus qu’à observer la mise à jour du BIOS en croisant les doigts.
Limites de la procédure
La procédure décrite dans cet article ne fonctionne pas sur un portable Dell Latitude E6420. L’exécutable de flashage LAT-6420.EXE
fourni par le constructeur est inopérant sous FreeDOS. J’ai dû passer par l’installation de Windows 7 pour exécuter l’application de flashage du BIOS. Et vu que la batterie du portable en question était morte, j’ai dû lancer LAT-6240.EXE
depuis la ligne de commande DOS avec l’option /forceit
.
Il serait grand temps que quelqu’un explique aux constructeurs que tout le monde n’utilise pas Microsoft Windows.
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.