Bios update

Από Hellug Wiki

Το Linux καλύπτει ανάγκες χρηστών οι οποίοι δεν έχουν εγκατεστημένα Windows ως αποτέλεσμα να μην μπορούν να αναβαθμίσουν το BIOS της μητρικής τους επειδή συχνά οι κατασκευαστές δεν έχουν μεριμνήσει για αυτούς. Κάποιοι όπως η IBM δίνουν bootable cd's σε iso, αλλά κατασκευαστές μητρικών όπως η MSI ή και κατασκευαστές ολοκληρωμένων συστημάτων, όπως η DELL, ζούν στον.. πλανήτη του .exe. Ο παρών οδηγός - αν και σε κάποια σημεία δύσκολος - προσπαθεί να βοηθήσει στην λύση του προβλήματος.

Προσοχή: Οι παρούσες ιδέες και μέθοδοι που περιγράφονται ΔΕΝ εγγυώνται την επιτυχία, τις εφαρμόζετε με δική σας ευθύνη. Μην ξεχάσετε να διαβάσετε τις οδηγίες του κατασκευαστή για το ποια διαδικασία πρέπει να ακολουθήσετε για το flash του BIOS. Μπορεί για παράδειγμα να προτρέπει να σβήσετε password του BIOS.

Θεωρία

Προγράμματα που χρειάζονται για την διανομή σας - αν δεν τα έχετε ήδη - είναι τα εξής: syslinux, cabextract, unshield, wine, biosdisk. Παρακάτω περιγράφεται η χρησιμότητα κάθε προγράμματος.

Γνωρίζω για το Flashrom αλλά δεν υποστηρίζει πολλές μητρικές και σε κάποιες περιπτώσεις κατέστρεψε το BIOS (δηλαδή το BIOS επιδιορθώνεται μόνο από τον κατασκευαστή).

  • Το syslinux, έχει images και λειτουργικό σύστημα ώστε να δημιουργήσουμε bootable δισκέτα ή cd/dvd με ελεύθερη έκδοση DOS.
  • Τα cabextract και wine είναι προγράμματα που μας βοηθούν να αποσυμπιέσουμε ή να ψαρέψουμε το BIOS + το πρόγραμμα που flashάρει το BIOS.
  • Το biosdisk, είναι ένα open source project της Dell και μας διευκολύνει να φτιάξουμε bootable δισκέττα όπως θα δούμε παρακάτω. Ειδικότερα για υπολογιστές dell, δεν μας επιτρέπει μόνο να δημιουργήσουμε bootable δισκέτα (ή image), αλλά "κατεβάζει" το BIOS από το site της Dell.

Η εύκολη περίπτωση: έτοιμη δισκέττα, χωρίς wine

Την παραπάνω περίπτωση συνάντησα πολλές φορές σε IBM φορητούς. Η IBM δίνει έκδοση "δισκέτα" και "χωρίς δισκέτα".

Για δοκιμή (μην το δοκιμάσετε στον υπολογιστή σας) θα κατεβάσουμε το BIOS ενός ibm φορητού. Κατεβάζουμε την έκδοση χωρίς δισκέτα.

wget http://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/spsu1735.exe

Αποσυμπιέζουμε με cabextract (μου έχει τύχη να χρειαστεί το unshield)

cabextract spsu1735.exe
Extracting cabinet: spsu1735.exe
  extracting 17UJ35WW.IMG
  extracting DOSBOOT.COM
  extracting DOBOOT.EXE
  extracting BIOSUPTP.EXE
  extracting DOSBOOT.SYS
  extracting DOSBOOT.VXD

  All done, no errors.

Το αρχείο που μας ενδιαφέρει είναι αυτό που καταλήγει σε .IMG. Είναι στην πράξη τα περιεχόμενα μίας δισκέτας την οποία μπορείτε - αν είστε περίεργοι ή θέλετε να κάνετε αλλαγές - να προσαρτήσετε στο σύτημα με

mount -o loop 17UK35WW.IMG /mnt/my_virtual_floppy/

μπορούμε να δούμε τα περιεχόμενα ή και να γράψουμε σ' αυτή. Επίσης αν έχουμε floppy, μπορούμε με την εντολή

dd if=17UK35WW.IMG of=/dev/fd0

να μεταφέρουμε το image σε δισκέτα. Εκκίνηση με δισκέτα λοιπόν και τελειώσαμε. Σε περίπτωση που δεν έχουμε floppy, μας έμεινε το τελευταίο βήμα. \\Στον bootloader μας (lilo ή grub),

  1. στο πεδίο kernel (αν έχουμε lilo όπου kernel διάβαζε image) γράφουμε kernel = /boot/memdisk (απαιτεί να αντιγράψαμε το memdisk από τον φάκελλο /usr/lib/syslinux/) και
  2. στο initrd γράφουμε initrd=/boot/17UK35WW.IMG (στο boot πάλι έχουμε αντιγράψει το image που αποσυμπιέσαμε προηγουμένως). Συμπληρώνουμε και το label, στο lilo εκτελούμε lilo ως root.

Παράδειγμα με grub (/boot/grub/menu.lst)

title IBM BIOS update
    root (hd0,0)
    kernel /boot/memdisk
    initrd /boot/1RUJ37US.IMG

Παράδειγμα με lilo (/etc/lilo.conf)

title = IBM BIOS update
    image = /boot/memdisk
    initrd = /boot/1RUJ37US.IMG

Στο lilo χρειάζεται εκτέλεση (ως root εκτελούμε lilo) για να ισχύσουν οι αλλαγές

Μία δύσκολη περίπτωση: χωρίς εικονική δισκέττα, χωρίς wine

Για δοκιμή και πάλι (μην το δοκιμάσετε στην μητρική σας) θα κατεβάσουμε το BIOS της μητρικής msi k7t266 pro2

wget http://download1.msi.com/files/downloads/bos_exe/6380v37.exe 

Αποσυμπιέζουμε με unzip αυτή την φορά (για να βρείτε ποιό πρόγραμμα χρειάζεται, θα πρέπει απλά να δοκιμάσετε!), αν δεν τα καταφέρετε υπάρχει και η λύση του wine.

unzip 6380v37.exe
Archive:  6380v37.exe
  inflating: amifl827.EXE
  inflating: 6380v3X.txt
  inflating: A6380VMS.370
  inflating: How to flash the BIOS.doc

Εδώ έχουμε το BIOS καθ' αυτό (A6380VMS.370) και το πρόγραμμα amifl827.EXE που θα flashάρει το BIOS. Για να δημιουργήσουμε bootable δισκέτα, αφού εγκαταστήσουμε το biosdisk εκτελούμε biosdisk mkimage amifl826.EXE. Η παραπάνω εντολή θα δημιουργήσει ένα αρχείο bootable δισκέτας στον φάκελλο /tmp με όνομα amifl827.img. Μας λείπει όμως το αρχείο A6380VMS.370, που είναι το BIOS.

Για να περάσουμε το αρχείο στην εικονική δισκέτα δίνουμε:

mount -o loop /tmp/amifl827.img /mnt/floppy
cp A6380VMS.370 /mnt/floppy/

Συνεχίζουμε όπως παραπάνω είτε με lilo είτε με grub.

Bonus track: bootable CD/DVD από image floppy

Η παραπάνω μέθοδος βολεύει σε "administrators" που βαριούνται να στήσουν tftpboot server. Δημιουργεί ένα .iso για bootable cd με τα αρχεία της δισκέττας. Δημιουργούμε έναν φάκελλο και αντιγράφουμε το image της δισκέτας.

mkdir bootablecd
cp /tmp/amifl827.img bootablecd/

Τώρα δημιουργούμε το bootable cd.

mkisofs -b amifl827.img -o bootcd.iso bootablecd/ 

Success stories

Έως τώρα με τις παραπάνω μεθόδους έχω αναβαθμίσει BIOS στους εξής υπολογιστές / μητρικές.

  1. Dell GX260
  2. MSI k7t266 pro2
  3. ThinkPad iSeries 1200 (model 1161)
  4. ThinkPad T20, T21, T22
  5. ThinkPad T30
  6. ThinkPad X40

Πηγές

  1. http://korgman.is-a-geek.net/htm/tut/nix/bios_update_with_linux.php
  2. man biosdisk
  3. ThinkWiki.org
  4. wiki.osdev.org