LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


expert:bios_flash_freedos

Mise à jour de bios avec Freedos

Quand on vie sans windows sur son ordinateur, on se retrouve parfois dans une impasse lorsqu'il s'agit de faire des mises à jour de bas niveau, bios ou firmware. De nombreux fabricant persistent à n'offrir que des exécutables Windows ou Dos à leurs clients, heureusement il existe une solution libre : FREEDOS.

<note>Un signe $ précède les commandes qui ne nécessitent pas de droits root ; un signe # précède celles qui nécessitent des droits root (ces signes ne font <color red>PAS</color> partie des commandes). Les lignes qui ne commencent pas par un signe $ ou # correspondent au résultat de la commande précédente.
Les touches utilisées sont indiquées entre crochets, exemple [ctrl] pour la touche “contrôle”. Votre répertoire personnel (/home/vous) est symbolisé par un ~ tilde en console.</note>

Vérifier qu'il n'existe pas de solution simple

La première étape consiste à essayer par tous les moyens de ne pas avoir à utiliser ce tutoriel ! ;-) La mise à jour de bios est une opération délicate car une erreur durant son exécution peut entraîner de sérieux problèmes pour récupérer le matériel, voir le transformer en “brique” inutilisable. Cherchez donc bien à fond sur le site du fabriquant de votre ordinateur pour vérifier qu'il ne propose pas un moyen d'effectuer les mises à jour de BIOS en dehors du système d'exploitation. Bien souvent vous trouverez une version CDRom amorçable qui embarquera la mise à jour dans une sous-rubrique bien cachée sur le site comme “expert” ou “OEM”. Chez HP par exemple les images de cdrom amorçables permettant le flashage du bios ne sont souvent disponibles que dans la rubrique concernant Windows XP, sont empaquetée au fin fond d'un exécutable Windows qui nécessitera Wine pour être extrait sous Linux… Un comble. DELL pour sa part a une solution relativement élégante avec le projet "biosdisk" qui permet de créer facilement depuis un système Linux un média amorçable contenant la mise à jour de BIOS.
Comme on néglige parfois le plus simple, vérifiez que votre matériel ne dispose pas d'une fonction de flashage “facile” comme “EzFlash” ou “easybios” chez certains vendeurs. Dans ce cas il suffit de copier la nouvelle image de bios sur une clé usb, de lancer l'assistant de flashage au démarrage suivant et de suivre la procédure.

<note warning>Flasher son bios est une procédure potentiellement dangereuse, on met à jour son bios si on constate un problème important, et qu'après recherche on pense qu'une mise à jour propose un correctif. On peut également mettre à jour si une nouvelle fonctionnalité importante est apparue. On ne flash PAS son bios juste parce qu'une nouvelle version est disponible, la plupart du temps elle ne fournira que des mises à jours de compatibilité pour des nouveaux processeurs qui ne vous apporteront strictement rien. Non le dernier sorti n'est pas forcément le meilleur, et non vous ne constaterez dans la majorité des cas aucune différence de performance après une mise à jour de bios.
Les procédures décrites ici sont techniques, vous devrez ensuite opérer en ligne de commande DOS depuis Freedos, parfois avec un clavier en Qwerty. Vous êtes prévenu, vous pouvez rendre totalement inutilisable votre matériel en suivant ce tutoriel de travers, et parfois malheureusement même en le suivant bien (image bios défectueuse ou inadaptée).</note>

Si vraiment vous ne trouvez rien d'utilisable chez le fabricant de votre matériel il va falloir créer vous même une image de flashage grâce à FREEDOS.

Réunir le nécessaire

Tout d'abord il vous faudra télécharger la mise en jour que vous désirez effectuer, si plusieurs choix sont disponibles veillez à sélectionner la version “exécutable DOS”. Vous devez normalement disposer de deux fichiers, l'un est l'image de flashage elle même, l'autre sera un exécutable “DOS” (un “.exe”) nécessaire pour écrire l'image ROM sur la puce du BIOS. Prenons un cas concret d'un fabricant “lambda” que nous appellerons “Osrack” (toute ressemblance avec un fabricant existant est le fruit du hasard). Sur le site de “Osrack” on sélectionne le modèle de carte mère (ou ordinateur portable) pour lequel on veut télécharger la mise à jour de BIOS, et on se retrouve à télécharger une archive “.zip”. Une fois décompressée cette archive révèle un exécutable “AFUDOS.exe” (l'exécutable de flashage) et un second au nom ésotérique “ANF7HD1.30”. Ce sont ces deux fichiers que nous allons embarquer sur un media amorçable contenant le système Freedos.

Pour déterminer quelle version du Bios est actuellement installée depuis Linux vous avez l'embarras du choix, voici quelques exemples de commandes qui vous renseigneront :

# biosdecode
# dmidecode --type bios
# hwinfo --bios          <<<<< nécessite le paquet "hwinfo"
# lshw | grep -C5 BIOS

Il nous faut une image du système Freedos, vous avez plusieurs options :

  • Créer une image de CDRom amorçable qui émule une disquette (ou directement une disquette)
  • Créer une clé usb amorçable embarquant Freedos
  • Installer Freedos sur une petite partition dédiée (ou mieux dans une image dans votre partition Linux) et le charger à l'aide de votre chargeur d'amorçage (grub, grub2). Cette méthode ne sera pas présentée ici, elle demande une page dédiée. C'est cependant facilement réalisable pour un utilisateur averti.

La solution la plus souple est sans aucun doute la clé usb amorçable car elle sera réutilisable à chaque nouvelle mise à jour, et surtout le support accessible en écriture vous permet de faire une sauvegarde de l'ancien bios avant l'écriture de la nouvelle version. En seconde position l'installation sur une partition dédiée évitera de ne pas avoir freedos sous la main quand on a besoin. Enfin comme certains ordinateurs ne démarrent pas sur des périphériques usb il est parfois nécessaire de réaliser un CDRom amorçable émulant une disquette Freedos.
Vous n'avez besoin que d'une seule de ces méthodes (clé usb ou CDRom/disquette).

Créer une clé usb Freedos

Vous avez besoin d'une clé usb, même la plus vieille de vos “petites” clés de 128Mo sera suffisante, une installation de base de Freedos demandant environ 55Mo. Si vous voulez choisir une version complète de Freedos il vous faudra un peu plus d'espace, et prévoyez de la marge pour pouvoir copier les utilitaires et images de Bios. Ici j'ai utilisé une clé usb bas de gamme de 2Go (capacité maximale pour le système de fichier FAT16), pas un gros investissement de nos jours.

Téléchargez une image d'installation directement depuis le site de Freedos, il y a de nombreuses versions qui flottent sur l'Internet mais je vous conseil d'être certain de la fiabilité de l'image choisie, une image “retravaillée” par un pirate pouvant faire des dégâts. Sur la page de téléchargement de Freedos vous pourrez choisir entre une image minimale “fdbasecd.iso” (8Mo) et une image complète comprenant de nombreux programmes DOS et même un environnement de bureau graphique (!) “fdfullcd.iso” (153Mo). La version “base” suffit pour notre usage et elle sera bien plus rapide à installer. On suppose que vous téléchargez l'image dans votre répertoire personnel, symbolisé par le signe “~” en ligne de commande, le chemin vers l'image sera donc “~/fdbasecd.iso”.

Maintenant passons à la préparation de la clé usb, vous devez la formater en FAT16, une seule partition. Vous pouvez utiliser différents programmes pour effectuer cette tâche comme “Gparted”, “partitionmanager” (KDE), ou “fdisk” en ligne de commande. Ici j'utilise “CFdisk” en ligne de commande. Vous devez brancher la clé usb SANS LA MONTER, si le montage automatique est activé sur votre distribution (un gestionnaire de fichiers comme “nautilus”, “thunar” ou “dolphin” s'ouvre pour montrer le contenu de la clé) vous devez la démonter avant tout (clic-droit > démonter).
Ensuite vous devez connaître de manière certaine l'adresse de la clé, par exemple “/dev/sdb”. En ligne de commande vous pouvez voir l'ensemble des disques et partitions avec au choix :

# parted -l

# fdisk -l

Une fois l'information notée lancez [c]fdisk ou votre logiciel de partitionnement préféré, :!: rappelons que le formatage d'une clé usb détruit son contenu, si vous avez des fichiers sur la clé c'est votre dernière chance de les récupérer :!:

# cfdisk /dev/sdb

La première étape consiste à “détruire” la (les) partition(s) existante :

Ensuite vous allez créer une “nouvelle” partition de type “primaire”, laissez la taille maximum proposée par défaut, appliquez les modifications en choisissant “écrire”, confirmez en entrant “oui” si nécessaire.

De retour à l'écran principal de cfdisk choisissez “type” pour choisir le système de fichier, et sur l'écran suivant entrée le code “0E” (Zéro E) qui désigne le FAT16(LBA). Validez à nouveau les modifications avec “Écrire”.


Cfdisk vous indiquera sans doute que le marqueur d'amorçage n'est pas présent sur le système de fichier, et donc DOS ne pourra pas démarrer, choisissez donc “amorçable” et écrivez la modification.

C'est fini pour la clé que vous pouvez laisser branchée.

<note>Il est possible de formater la clé directement depuis le programme d'installation de Freedos, cette solution est moins conviviale si vous n'avez pas l'habitude des outils DOS, mais elle fonctionne très bien</note>

Passons à l'installation de Freedos, installez le programme d'émulation “Qemu” avec votre gestionnaire de paquets préféré.

<note tip>“Qemu” existe dans une version accélérée “kvm-qemu” pour les processeurs qui supportent cette extension, cependant j'ai rencontré de nombreux problèmes pour utiliser Freedos avec “kvm-qemu”, en particulier depuis un système 64bit (AMD64). Mieux vaut utiliser l'original Qemu même s'il est un peu plus lent.</note>

(Peut nécessiter des droits root)

$ qemu -hda /dev/sdb -cdrom ~/fdbasecd.iso -boot d

Nous lançons qemu en lui assignant la clé usb (remplacez “/dev/sdb” en fonction de votre cas) comme disque dur principal, et en utilisant comme disque d'amorçage l'image de Freedos que vous avez téléchargé.

L'installation de Freedos est simple, validez les choix par défaut fera l'affaire, par contre prévoyez du temps, et votre présence est requise devant l'ordinateur pour valider les écrans successifs.

Sur le premier écran choisissez l'option “1” “Continue to boot freedos from CDRom”.


“Install to harddisk using Freedos default”.



Utilisez les flèches de votre clavier pour vous déplacer et éventuellement dé-sélectionner certains paquetages, ensuite validez avec le bouton “DONE”.
L'écran d'autoconfiguration qui marque la fin de l'installation.

Pour libérer la souris si vous avez cliqué sur la fenêtre Qemu utilisez la combinaison de touches [ctrl] [alt].

<note tip>Si quelque chose se passe mal pendant l'installation, ce sera sans doute au moment de la configuration finale des paquets installés. J'ai eu parfois des blocages du processus au moment de l'installation du “packet driver” où l'autodétection d'un périphérique pci part en boucle (version “fdfullcd”). Pas de panique dans ce cas là, fermez la fenêtre Qemu, relancez le processus de la même façon que précédemment, mais cette fois désélectionnez tous les paquets dans la dernière fenêtre du programme d'installation avant de valider avec “DONE”. Vous vous retrouverez ainsi à nouveau au même point (configuration finale de l'installation) et vous pourrez répondre “No” (N) au moment de l'installation du pilote qui bloque.</note>

Lorsque l'auto-configuration est terminée, ne redémarrez pas tout de suite (choisissez “N” (No) à la question “do you want to reboot now”, il reste une étape à effectuer. Si vous loupez l'écran de reboot rien n'est perdu, démarrer sur votre système Freedos avec Qemu (voir plus bas) pour effectuer la modification.

J'ai rencontré un bogue étrange sur les deux versions de Freedos testées (fdbasecd et fdfullcd) qui empêche de charger le mode 4 “no driver” dans le menu de démarrage. C'est gênant vu que c'est le mode recommandé pour flasher son Bios en évitant que des pilotes (driver) n'interfèrent avec l'opération. Pour corriger ce problème, une fois devant le prompt de Freedos (C:\>), tapez :

edit fdconfig.sys

Vous allez vous retrouver dans un éditeur de texte ouvert sur le fichier “C:\fdconfig.sys”, naviguez avec les flèches du clavier, localisez la ligne qui ressemble à ceci :

SHELLHIGH=C:\FDOS\bin\command.com C:\FDOS\bin /E:1024 /P=C:\FDOS\fdauto.bat

et ajoutez en début de ligne <color red>1234?</color> de manière à ce que la ligne ressemble à :

1234?SHELLHIGH=C:\FDOS\bin\command.com C:\FDOS\bin /E:1024 /P=C:\FDOS\fdauto.bat

Pour sauvegarder ouvrez le menu principal avec les touches [alt] [F] et validez “SAVE”. Renouvelez l'opération pour choisir “EXIT”.



Ça y est, votre clé est prête, fermez la fenêtre de Qemu, et testez votre clé toute chaude avec Qemu (peut nécessiter des droits root) :

$ Qemu -hda /dev/sdb

Si tout va bien vous verrez ça :

Testez avec n'importe quel mode, celui qui vous donnera les meilleurs performances pour tester Freedos est le 3, mais le mode recommandé pour flasher son bios est le 4 “Load Freedos without drivers”.
Pour tester le bon fonctionnement tapez les commandes “dir” (lister le contenu du répertoire courant, “ls” en bash) puis “cls” (équivalent de “clear” en bash).


Reste à vous pencher sur le manuel de votre ordinateur pour savoir comment démarrer sur la clé usb, et tester grandeur nature. Pour copier les utilitaires de flashage et image de bios il suffit de monter votre clé usb depuis votre navigateur de fichier (nautilus, dolphin, thunar etc…) et de glisser-déposer les fichiers sur la clé, comme vous le feriez pour n'importe quelle clé usb. Une fois l'ordinateur redémarré sur la clé Freedos les fichiers seront prêt à être utilisés.

Créer un CDRom amorçable (ou une disquette) Freedos

Nous allons utiliser une image initialement prévue pour des disquettes de 2.88Mo, pour avoir suffisamment d'espace pour copier sur le média les fichiers nécessaires au flashage il est important de choisir une image d'installation de Freedos qui soit minimale. Le grand favori que vous trouverez dans tous les tutoriels est “FDOEM.144”, sauf que cette image est devenu dure à trouver sur une source sûre, même si elle flotte encore en de nombreux endroits de l'Internet, et qu'elle ne fait que 1.44Mo.
Pour ma part je préfère utiliser une image provenant du projet “BIOSdisk” de DELL, vous la trouverez dans l'archive de la dernière version de "BIOSdisk" au format “.tar.gz”, actuellement “biosdisk-git-06112010.tar.gz”.
Décompressez l'archive, et parmi les nombreux fichiers localisez l'image disque “dosdisk288.img”. La plus petite image pourrait convenir également (“dosdisk” 1.44Mo) mais autant prendre la plus grande pour disposer de plus d'espace pour les utilitaires de flashage du bios.

Copiez cette image disque dans un coin propre de votre système (je la suppose dans ~), nous allons la monter pour examiner son contenu et y copier les utilitaires de flashage :

$ mkdir ~/dosdisk

# mount -o loop -t vfat ~/dosdisk288.img ~/dosdisk/

$ ls -l ~/dosdisk
-rwxr-xr-x 1 root root 66090 2009-06-19 18:19 command.com
-rwxr-xr-x 1 root root    52 2009-06-19 18:19 config.sys
-rwxr-xr-x 1 root root 45680 2009-06-19 18:19 kernel.sys
-rwxr-xr-x 1 root root  1486 2009-06-19 18:19 readme
-rwxr-xr-x 1 root root  9221 2009-06-19 18:19 sys.com

Ici j'imagine que tout se passe dans votre répertoire personnel (symbolisé par “~” en bash). On crée un répertoire “dosdisk” qui va servir de point de montage, et on monte l'image dans ce répertoire. Ensuite on liste le contenu du point de montage, les habitués reconnaîtront les composants de base d'un système Freedos.

Il reste à incorporer l'utilitaire de flashage et l'image ROM de mise à jour (nous les avons téléchargé depuis le site fictif de “osrack”, je suppose qu'ils se trouvent dans un répertoire “~/Osrack”) dans l'image de disquette “dosdisk288.img”. Bien évidemment vous devez remplacer par les chemins et noms de fichier des programme de flashage et image de bios que vous aurez téléchargé chez le véritable fabricant de votre matériel :

# cp ~/Osrack/AFUDOS.exe ~/dosdisk
# cp ~/Osrack/ANF7HD1.30 ~/dosdisk
# umount ~/dosdisk

Voilà, l'image “dosdisk288.img” contient maintenant tout le nécessaire pour mettre à jour le bios, vous pouvez créer une disquette avec ou une image “.iso” prête à graver sur un CDRom avec :

$ genisoimage -o flashcd.iso -b dosdisk288.img ~/dosdisk288.img

“genisoimage” va créer une image au format iso9660 (cdrom) nommée “flashcd.iso” prête à graver, nous pouvons la tester dans Qemu :

$ qemu -fda ~/flashcd.iso

Une fois devant le prompt Freedos “A:\>” vous pouvez taper “dir” pour lister le contenu du répertoire, vous devriez voir apparaître les fichiers que vous y avez copié. Vous pouvez tester l'utilitaire de flashage, c'est sans risque vu qu'il n'y a pas grand chose à flasher dans le bios virtuel de Qemu.

Cette méthode a l'inconvénient majeur de ne pas vous permettre de sauvegarder l'ancien bios (le cdrom est un support en lecture seule). Si le flashage se passe mal vous vous retrouverez avec un bios inutilisable, et rien pour le reflasher avec l'ancienne version fonctionnelle… Autant vous dire que c'est une situation inconfortable car une fois l'ordinateur éteint, il n'y aura plus de moyen de le rallumer à part racheter une puce avec un bios en état de marche. Quant on vous dit que le flashage de bios est un sport à risque.

Trucs en vrac

  • Pour graver une image “.iso” vous pouvez utiliser des logiciels comme "Brasero", "GnomeBaker", "K3B" qui disposent tous d'un menu “graver une image disque/ISO”. En ligne de commande se sera encore plus simple, et disponible quel que soit votre environnement de bureau, la commande utilisée pourra être “cdrecord” ou “wodim”, cette dernière ayant remplacé la première qui n'est plus qu'un lien symbolique sur de nombreuses distributions.
wodim speed=8 -dao -v flashcd.iso

Vous remplacerez “flashcd.iso” par le chemin vers et le nom de l'image que vous voulez graver. L'option “speed=” fixe la vitesse de gravure, elle est facultative mais en règle générale il vaut mieux graver les images iso lentement pour éviter d'obtenir un disque corrompu. L'option “-v” indique à wodim d'utiliser le mode “verbeux”, il détaillera à l'écran toutes les étapes de l'opération, ceci est surtout pratique en cas d'échec pour comprendre à quel niveau se situe l'erreur. L'option “-dao” signifie “Disk At Once” (interchangeable avec “-sao” “Session At Once”) et indique que la gravure doit être réalisée en une seule fois, c'est indispensable pour la gravure d'une image .iso amorçable.

  • Sur certaines cartes mère un “jumper” (cavalier) doit être changé de position pour permettre la mise à jour du bios. Sur des portables il y a parfois une option de sécurité dans le bios qui a le même effet. Pensez à consulter la documentation de votre matériel si la procédure de flashage échoue, ou de préférence avant de la tenter : “rtfm” les amis ;-).
  • Le logiciel “flashrom” du projet “coreboot” permet de flasher un bios depuis Linux, n'ayant pas de matériel compatible je n'ai jamais pu le tester avec succès (mais sans succès oui…). Consultez la liste du matériel compatible, au besoin demandez conseil aux développeurs. Si cette solution fonctionne pour vous c'est sans doute la meilleur. l'usage de Flashrom est découragé pour la grande majorité des ordinateurs portables.
  • Les utilitaires de flashage ne sont PAS interchangeables, ils sont fait pour un type de puce et ne fonctionneront souvent pas avec un autre, encore moins avec une autre marque.
  • Il est possible de partitionner la clé usb une fois Freedos installé pour récupérer de la place utilisable dessus, cependant ça peut bloquer le démarrage sur certains ordinateurs. Au lancement Freedos vous demandera sur quel disque vous désirez amorcer, les partitions seront identifiées “C”, “D”, …etc.
  • FAT16 est limité à une partition de 2Go. Les noms de fichiers longs seront tronqués dans Freedos, utilisez “dir” pour lister le contenu de la clé et voir le nom exact du fichier que vous cherchez.

Liens

expert/bios_flash_freedos.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1