Table des matières

Mise à jour du firmware d'un disque dur

Sujet : Mise à jour du firmware d'un disque dur d'un ordinateur portable Dell sous GNU/Linux
Niveau : Difficile
Auteur : waver (2 novembre 2005)

Introduction

Un problème classique quand on est passé complètement à GNU/Linux c’est la mise à jour du bios ou d'un autre composant comme le disque dur car souvent cela nécessite d’exécuter des .exe dans un DOS. Quid quand on est sous GNU/Linux et qu’on n’a plus de partition Windows/DOS ni même de lecteur disquette sur la machine?

La solution que j'ai pu trouver n'est pas tout à fait libre, car j'ai fait appel à un ami sous Windows pour l'extraction du firmware qui est en .exe. Il faut qu'on trouve une image d’un système DOS libre et la graver sur un CD-ROM en y ajoutant les fichiers pour mettre à jour le firmware.

Un petit résumé de ce que fait ce nouveau firmware : (C'est vrai qu'avec cette mise à jour j'ai plus de le bruit clique au niveau du disque dur)

Procédure

  1. On va télécharger une image de FreeDos; on récupère l’image fdos1440.img. J’ai utilisé une version beta9rc5 qui est maintenant disponible dans les archives. Cette version est différente de la version actuelle (beta9sr1) car elle ne propose plus de charger le driver CD-ROM pour ensuite aller en ligne de commande.
  2. On va télécharger le firmware chez Dell. J'ai téléchargé le fichier R107305.EXE et je l'ai envoyé à un ami pour l'extraction puis il m'a renvoyé les fichiers. J'ai crée une archive de ces fichiers et je vous la met à disposition ici son empreinte md5 est : 9b7a7753a817dde2f1df721db30bd37b .
  3. On crée le lieu de travail et on commence:
    23:57 waver@Jupiter ~% mkdir /tmp/hdd && cd /tmp/hdd
    23:57 waver@Jupiter /tmp/hdd% wget fdos1440.img (http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/old/beta9rc5/fdos1440.img)
    23:57 waver@Jupiter /tmp/hdd% wget R107305.tar.bz2 (http://users.linuxbourg.ch/waver/tmp/Software/R107305.tar.bz2)
    23:57 waver@Jupiter /tmp/hdd% md5sum R107305.tar.bz2
    
    9b7a7753a817dde2f1df721db30bd37b R107305.tar.bz2
    
    23:57 waver@Jupiter /tmp/hdd% tar xfj R107305.tar.bz2
    
    23:59 waver@Jupiter /tmp/hdd% ls -l
    total 3,6M
    -rw-------  1 waver waver 8,8K 2005-10-31 00:14 DLGLICE.TXT
    -rw-r--r--  1 waver waver 1,5M 2004-04-20 05:17 fdos1440.img
    -rw-r--r--  1 waver waver 1,1M 2005-10-31 23:48 R107305.tar.bz2
    -rw-------  1 waver waver 1,2M 2005-10-31 00:14 wddel023.exe
    -rw-------  1 waver waver  601 2005-10-31 00:14 wddel023.txt
    
    0:02 waver@Jupiter /tmp/hdd% mkdir firm
    0:02 waver@Jupiter /tmp/hdd% mv DLGLICE.TXT fdos1440.img wddel023.exe wddel023.txt firm
    
    0:02 waver@Jupiter /tmp/hdd% ls -l firm
    total 2,6M
    -rw-------  1 waver waver 8,8K 2005-10-31 00:14 DLGLICE.TXT
    -rw-r--r--  1 waver waver 1,5M 2004-04-20 05:17 fdos1440.img
    -rw-------  1 waver waver 1,2M 2005-10-31 00:14 wddel023.exe
    -rw-------  1 waver waver  601 2005-10-31 00:14 wddel023.txt
  4. Générons une image iso9660 bootable que l’on nommera firmhdd.iso :
    0:05 waver@Jupiter /tmp/hdd% mkisofs -o firmhdd.iso -b fdos1440.img ./firm/* 
    INFO:   ISO-8859-1 character encoding detected by locale settings.
    Assuming ISO-8859-1 encoded filenames on source filesystem,
    use -input-charset to override.
    Size of boot image is 2880 sectors -> Emulating a 1440 kB floppy
    Total translation table size: 2048
    Total rockridge attributes bytes: 0
    Total directory bytes: 0
    Path table size(bytes): 10
    Max brk space used 21000
    1469 extents written (2 MB)
    
    0:06 waver@Jupiter /tmp/hdd% ls -l
    total 4,0M
    drwxr-xr-x  2 waver waver 4,0K 2005-11-01 00:02 firm/
    -rw-r--r--  1 waver waver 2,9M 2005-11-01 00:06 firmhdd.iso
    -rw-r--r--  1 waver waver 1,1M 2005-10-31 23:48 R107305.tar.bz2
  5. Montons l’image pour s’assurer qu’elle soit bien construite et lisible:
    0:06 waver@Jupiter /tmp/hdd% sudo mount -o loop,rw firmhdd.iso ~/tmp/iso 
    0:08 waver@Jupiter /tmp/hdd% ls -l ~/tmp/iso
    total 2,6M
    -r-xr-xr-x  1 root root 2,0K 2005-11-01 00:06 boot.cat*
    -r-xr-xr-x  1 root root 8,8K 2005-10-31 00:14 dlglice.txt*
    -r-xr-xr-x  1 root root 1,5M 2004-04-20 05:17 fdos1440.img*
    -r-xr-xr-x  1 root root 1,2M 2005-10-31 00:14 wddel023.exe*
    -r-xr-xr-x  1 root root  601 2005-10-31 00:14 wddel023.txt*
    
    0:08 waver@Jupiter /tmp/hdd% sudo umount ~/tmp/iso 
  6. Il n’y a plus qu’à graver l’image firmhdd.iso et booter votre ordinateur portable sur le nouveau disque créé en laissant votre secteur AC branché :
     0:11 waver@Jupiter /tmp/hdd% /usr/bin/cdrecord.mmap -v gracetime=2 dev=/dev/hdd speed
    
    =48 -dao driveropts=burnfree -eject -overburn -data /tmp/hdd/firmhdd.iso

    Une fois que j'ai booté sur le cd j'ai dû répondre au question de cette façon:

    • FreeDos (speedup, 386+)
    • 1. Boot without XMS, attempt cdrom loading
    • 3) I give up. please drop me to the commandline.
  7. Une fois en ligne de commande, il ne vous reste plus qu'à lancer wddel023.exe moi j'ai du faire directement:
    X:\> wddel023 /D1 
  8. Le contenu du fichier wddel023.txt:
    Syntax:
     WDDEL023 [/A][/Dn][/S][/?]
    
    
    If no command line options are provided, an interactive user interface will display a list of drives and whether a drive update is available. The user can choose which drive(s) to update.
    
    Optional parameters (usage indicates acceptance of the license agreement):
    
    /A    Automatically update all attached drives.
    /Dn   Update drive number <n>.
    /S    Scan and report attached devices only.
    /?    This help screen.

Liens