BIOS-Update ohne optisches Laufwerk unter Linux

Aus ThinkPad-Wiki

Einleitung

Dieser Artikel beschreibt das Ausführen eines BIOS-Update für Linux-Benutzer. Dazu kommt entweder GRUB4DOS auf einem USB-Stick oder der Bootloader des installierten Linux-Systems zum Einsatz.

GRUB4DOS mit USB-Stick

Voraussetzungen

  • Ein frisch mit FAT formatierter, leerer USB Stick
  • ISO-Image des BIOS-Updates als Download von der Lenovo Website

Falls kein ISO zum Download angeboten wird, lädt man das "Non-Diskette"-BIOS herunter. Anschließend kann aus diesem ein ISO extrahiert werden. Dazu wird das Paket "cabextract" benötigt. Mit dem folgenden Befehl wird die EXE-Datei entpackt:

cabextract 70uj29ud.exe -d ./BIOS

Wobei '70uj29ud.exe' auf den entsprechenden Dateinamen angepasst werden muss. './BIOS' ist ein Unterordner im aktuellen Ordner der von 'cabextract' erstellt wird, um die entpackten Dateien abzulegen. Der Name kann frei editiert, bzw. die Option '-d' komplett weggelassen werden um die Dateien an anderer Stelle zu entpacken. Im Anschluß wechselt man in das oben eingetragene Verzeichnis und erstellt mit folgendem Befehl aus dem entpacktem IMG ein ISO:

genisoimage -b 70uj29ud.img -c boot.catalog -o 70uj29ud.iso .

Hiermit wir im aktuellen Verzeichnis (.) die Datei '70uj29ud.iso' erzeugt, die dann nachfolgend weiter verwertet werden kann.

Erstellen des bootfähigen USB-Sticks

ISO-Image auf den Stick kopieren

cp /pfad/zur/iso-datei /media/name-des-sticks/thinkpadbios.iso
sync

GRUB4DOS herunterladen, auspacken und installieren

wget http://download.gna.org/grub4dos/grub4dos-0.4.4.zip
unzip grub4dos-0.4.4.zip
cd grub4dos-0.4.4
cp grldr /media/name-des-sticks/

Für den nächsten Schritt wird das korrekte Device sdX des Sticks benötigt.

Vorsicht: eine falsche Angabe des Device kann katastrophale Auswirkungen auf das installierte System haben, so ist z.B. sda in der Regel die Systemplatte.

dmesg: unmittelbar nach dem Anstecken führt man folgendes Kommando aus

dmesg | grep "Attached SCSI removable disk" | tail -1

In der Ausgabe ist das gesuchte Device sdX zu sehen:

[ 1234.567890] sd 0:0:0:0: [sdX] Attached SCSI removable disk

lsblk: Bei den aktuellsten Linux-Distributionen kann man das Gerät auch per

lsblk

herausfinden.

Das Device sdX setzt man nun in folgendes Kommando ein und führt es aus:

sudo ./bootlace.com /dev/sdX

Ausgabe:

Disk geometry calculated according to the partition table:
       Sectors per track = xx, Number of heads = yyy
Success.

GRUB4DOS konfigurieren

Zuletzt erstellt man die Datei menu.lst auf dem Stick:

gedit /media/name-des-sticks/menu.lst

Inhalt:

color blue/green yellow/red white/magenta white/magenta
timeout 30
default /default

title ThinkPad BIOS Update
map (hd0,0)/thinkpadbios.iso (hd32)
map --hook
chainloader (hd32)
boot

Ausführen

Die Ausführung des Updates ist am Ende dieses Artikels zusammengefaßt.

System-Bootloader mit Syslinux

Hinweis: dieser Abschnitt funktioniert sinngemäß auch unter anderen Distributionen mit GRUB 1/2, nur das Paket syslinux heißt eventuell anders oder fehlt.

Voraussetzungen

  • Ubuntu 12.04 oder höher auf Festplatte installiert (kein Livesystem!)
  • GRUB 2 (ist bei einem neu installierten Ubuntu automatisch der Fall)
  • ISO-Image des BIOS-Updates als Download von der Lenovo Website Lenovo Website].

Hinweis: die hier beschriebene Vorgehensweise funktioniert nicht mit einer EFI-Installation (im Paket grub-efi-amd64 fehlt das Modul linux16).

Installation

ISO-Image kopieren

Den Download kopiert man nach /boot:

sudo cp /pfad/zur/iso-datei /boot/thinkpadbios.iso

Syslinux einrichten

Ubuntu 12.04 und höher

Zu installieren ist das Paket

  • syslinux
sudo apt-get install syslinux

Anschließend ist das enthaltene Werkzeug memdisk nach /boot zu kopieren

sudo cp /usr/lib/syslinux/memdisk /boot/

GRUB 2 konfigurieren

Mit einem Editor mit Root-Rechten bearbeitet man die Datei /etc/grub.d/40_custom und fügt folgende Zeilen am Ende hinzu:

menuentry "ThinkPad BIOS Update" {
      set root='(hd0,1)' # diese Zeile analog den vorhandenen Einträgen in /boot/grub/grub.cfg anpassen!
      linux16 /boot/memdisk iso
      initrd16 /boot/thinkpadbios.iso
}

Hat man für /boot eine separate Partition eingerichtet, lauten die Einträge so:

menuentry "ThinkPad BIOS Update" {
      set root='(hd0,1)' # diese Zeile analog den vorhandenen Einträgen in /boot/grub/grub.cfg anpassen!
      linux16 /memdisk iso
      initrd16 /thinkpadbios.iso
}

Um beim Systemstart das GRUB-Bootmenü anzuzeigen, sind in der Datei /etc/default/grub die beiden folgenden Zeilen wie gezeigt mit '#' auszukommentieren:

#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true

Zuletzt werden alle Änderungen an GRUB aktiviert mit

sudo update-grub

GRUB 1 / GRUB Legacy

Falls man noch eine Distribution mit GRUB 1 (GRUB Legacy) verwendet (z.B. Archlinux), dann kann man das ISO ebenfalls einbinden. Dazu fügt man in /boot/grub/menu.lst folgendes hinzu:

# BiosUpdate
title ThinkPad BIOS Update
root (hd0,0) # Analog den anderen Einträgen anpassen
kernel /boot/memdisk iso
initrd /boot/thinkpadbios.iso

Man muss wie bei GRUB 2 syslinux installieren und memdisk sowie das thinkpadbios.iso nach /boot kopieren.

BIOS Update ausführen

Wichtig: das BIOS-Update unbedingt mit geladenem Akku und angeschlossenen Netzteil durchführen!

System neu starten, ggf. per [F12] den USB-Stick auswählen und im GRUB-Bootmenü den Eintrag

  • "ThinkPad BIOS Update"

auswählen.

Hinweis: bei einem UEFI-fähigen ThinkPad ist zu bedenken, dass der GRUB4DOS-USB-Stick nur im BIOS- d.h. Legacy-Modus gestartet werden kann. Dies ist im BIOS unter "Startup" entsprechend einzustellen: "Both", "Legacy first".

Nun den Anweisungen des Programms folgen.

Nach dem Update empfiehlt es sich, die BIOS-Einstellungen auf Defaults (Werkseinstellungen) zurückzusetzen:

  • Beim Systemstart mit [F1] ins BIOS
  • [F9] (Setup Defaults) [Enter] (Yes)
  • eigene Anpassungen (z.B. SATA-Modus) wieder einpflegen
  • [F10] (Save and Exit) [Enter] (Yes)
  • sobald das ThinkPad-Logo erscheint, Gerät kurz ausschalten

Quellen und Links

  • 1, 2, 3 – Anleitungen auf thinkwiki.org
  • GRUB 2 – Konfiguration des Bootloaders

Alternative Windows-basierte Methoden

  • [1] – mit GRUB4DOS, UltraISO oder Phlash16-Kommandos