BIOS FlashL’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.

Dell BIOS A11

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.

UNetbootin FreeDOS

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.