Mettre à jour le BIOS avec FreeDOS

Vous pouvez vouloir ou avoir un besoin de mettre à jour le BIOS de votre PC, quand le fabricant de la carte mère annonce une certaine amélioration ou mise à jour du BIOS. Le programme d'installation d'habitude offert est destiné à exécuter MS-DOS.

Voici comment mettre à jour votre BIOS à partir d'une clé USB sous Linux. Cette méthode fonctionne avec avec les clés USB et les cartes micro/mini/SD (avec un adaptateur approprié).

Premièrement, votre BIOS doit permettre de démarrer depuis un disque USB - et être compatible avec les disques durs USB. Quelques BIOS acceptent des Disquettes USB, des CD-ROMs ou lecteurs ZIP. Bien que ceux-ci puissent être utilisables, il peut être plus difficile de mettre en oeuvre la mise à jour. Cependant il arrive que vous n'ayez pas d'autre choix (netbooks en particulier).

Vous avez besoin de trois choses :

  1. Une clé USB, de préférence <2 GB (FAT16 ne permettant pas plus de 2 GB), et l'installation de base FreeDOS (fdbasecd.iso) qui utilise seulement 5.8 MB. FAT16 est le format recommandé étant donné que FAT32 n'est pas détecté comme démarrable par tous les BIOS.
  2. Un outil d'installation pour FreeDOS fdbasecd.iso (8MB).
  3. qemu (apt-get install qemu), qui est requis par l'installeur. Le BIOS de qemu fait apparaître votre clé USB dans FreeDOS comme un disque ordinaire. Ainsi vous pouvez l'installer comme d'habitude (et éviter de graver l'iso de FreeDOS).
C'est une phase très critique: à aucun moment la clé usb ne doit être montée. Soyez très prudent en selectionnant la bonne clé, autrement toutes les données du disque selectionné seront irrémédiablement supprimées, par exemple si vous sélectionnez par erreur votre disque dur principal.

Branchez votre clé USB, souvenez-vous, ne la montez pas. Vérifiez grâce à dmesg (le dernier message, si vous venez juste de la brancher) le nom qui a été assigné à votre clé USB (par exemple /dev/sdb).

Supprimez les fichiers présents sur votre clé USB grâce à la commande suivante, toutes les données seront perdues. La commande suivante ne supprime que les 16 premiers MB, mais vous pouvez, si vous le désirez, supprimer la totalité de son contenu.

$ su
Password:
dd if=/dev/zero of=/dev/sdb bs=1M count=16
16+0 records in
16+0 records out
16777216 bytes (17 MB) copied, 2.35751 s, 7.1 MB/s

Partitionner la clé USB

Partitionner et formater correctement votre clé USB est probablement la partie la plus difficile.

Formater la clé en FAT16 si sa capacité est <2 GB (offre une meilleure compatibilité).

Utilisez ensuite fdisk pour partitionner :

# fdisk /dev/sdb
fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xa8993739.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Créer une partition :

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1018, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1018, default 1018):
Using default value 1018

Confirmer la création de la partition en éditant la table de partition :

Command (m for help): p

Disk /dev/sdb: 2003 MB, 2003828736 bytes
62 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Disk identifier: 0xa8993739

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1018     1956595+  83  Linux

Choisir le bon type de partitionnement, '6' pour FAT16 :

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): l

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX

Hex code (type L to list codes): 6

Changed system type of partition 1 to 6 (FAT16)

Activer l'unique et nouvelle partition :

Command (m for help): a
Partition number (1-4): 1

Afficher à nouveau la table de partition et vérifier que la partition est active :

Command (m for help): p

Disk /dev/sdb: 2003 MB, 2003828736 bytes
62 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Disk identifier: 0xa8993739

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        1018     1956595+   6  FAT16

Écrire la nouvelle table de partition sur la clé USB et quitter fdisk :

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
# exit

Formater la clé USB :

mkfs -t vfat -n FreeDOS /dev/sdb1
exit

La phase préliminaire est terminée. Vous avez partitionné et formaté la clé USB, il n'y a rien d'autre à faire que de lancer directement le processus d'installation.

Lancer FreeDOS avec qemu

Étant donné que DOS ne reconnaît pas les clés USB, il va falloir trouver un moyen pour que l'installeur de FreeDOS reconnaisse la clé USB comme un disque dur ordinaire. Le BIOS du système s'en charge automatiquement lors d'un démarrage ordinaire - cependant dans le cas présent il faut se montrer inventif avec qemu :

as user$:
qemu -hda /dev/sdb -cdrom /path/to/fdbasecd.iso -boot d

La combinaison de touches ctrl-alt vous permettra de libérer le clavier et la souris afin de basculer entre les deux bureaux pour relire les instructions à chaque étape.

QEMU FreeDOS

Ceci démarre le CD FreeDOS et presente la clé USB comme disque dur primaire (là le BIOS de qemu fait apparaître la clé USB dans DOS comme un disque dur ordinaire). Sélectionner l'installateur dans le menu démarrer de la fenêtre virtuelle de démarrage de FreeDOS :

1) Continue to boot FreeDOS from CD-ROM
1
enter

Choisir par défaut 1 et/ou choisir Yes (oui) si demandé.

freedos-inst1
freedos-inst2
freedos-inst3

L'installateur vous demande alors de redémarrer - ne le faites surtout pas maintenant, puisqu'il est nécessaire de corriger deux erreurs de l'installateur pour le secteur de démarrage et le menu de demarrage. Saisissez la lettre n.

freedos-do not reboot type n

Créer un secteur de boot sur la clé USB

La première erreur à résoudre est celle du secteur de démarrage (mbr) :

fdisk /mbr 1

En second lieu celle du menu de démarrage dans le nouveau fichier fdconfig.sys :

cd \
edit fdconfig.sys

et changer la ligne commençant par command.com en :

1234?SHELLHIGH=C:\FDOS\command.com C:\FDOS /D /P=C:\fdauto.bat /K set
(ne changez pas cette commande à proprement parler, ajoutez juste "1234?" au début de la ligne (avant SHELLHIGH==C:\FDOS\command.com .....
IMPORTANT de lire ceci: 1234?
fdconfig.sys

Ne rien changer d'autre, car de cette ligne dépendent des paramètres de l'installation.

Enregistrer et quitter "edit" :

[alt]+[f]

Une fois revenu au prompt vous pouvez quitter qemu.

Tester pour vérifier que qemu démarre votre clé USB.

qemu -hda /dev/sdb -boot c

Votre clé USB est maintenant bootable et contient l'installateur de FreeDOS de 5.4 MB. Vous devriez démarrer sans aucun driver (option 4 du menu), en effet le chargement des fichiers himem.sys et emm386 pourraient interférer avec les programmes de démarrage !.

Mettre à jour le BIOS

L'ordinateur étant allumé, brancher la clé USB contenant FreeDOS, la monter et y télécharger les fichiers nécessaires au BIOS comme requis par le fabricant de la carte mère/du BIOS et démonter la clé USB.

Éteindre l'ordinateur, brancher la clé USB contenant FreeDOS, le remettre en marche de sorte à ce qu'il démarre sur la clé et suivre les instructions du fabricant de la carte mère/du BIOS.

Révisé le 23/09/2010