Aktualisierung des BIOS mit FreeDOS
Man möchte - oder sollte manchmal sogar - das BIOS eines Computers aktualisieren, wenn der Hersteller des Motherboards Verbesserungen der BIOS-Software vornimmt. Das Installationsprogramm ist in der Regel eine Anwendung auf MS-DOS-Basis.
Wir stellen nun eine Möglichkeit vor, wie man das BIOS unter Linux von einem USB-Stick oder einer micro/mini/SD-Karte (mit einem geeigneten Adapter) aktualisieren kann.
Als Erstes muss im BIOS das Booten von USB zugelassen werden, und das BIOS muss mit USB-Festplatten umgehen können. Einige BIOS akzeptieren USB-Diskettenlaufwerke, CD-ROMs oder ZIP-Laufwerke. Die meisten davon können geeignet sein, aber eine BIOS-Aktualisierung kann sich schwieriger gestalten. Oft ist das jedoch die einzige Möglichkeit (das betrifft vor allem Netbooks).
Drei Voraussetzungen:
- ein USB stick: bevorzugt sind <2 GB (FAT16 erlaubt nicht mehr als 2 GB, aber eine vollständige FreeDOS-Installation benötigt nur 5.8 MB). FAT16 ist empfohlen, da FAT32 nicht von jedem BIOS als bootfähig erkannt wird.
- ein FreeDOS-Installationsmedium: fdbasecd.iso (8MB).
- qemu (apt-get install qemu): qemu wird für die Installationsroutine benötigt. Das emulierte qemu-BIOS führt dazu, dass FreeDOS den USB-Stick als normale Festplatte erkennt und man auf traditionelle Art installieren kann (man muss keine FreeDOS-CD brennen).
SEHR WICHTIGE, KRITISCHE INFORMATION: zu keinem Zeitpunkt darf der USB-Stick eingebunden, d.h. gemountet werden. Es muss peinlichst darauf geachtet werden, die richtige Gerätedatei (engl. device node) zu wählen, ansonsten werden sämtliche Daten auf dem falschen Datenträger (der Festplatte!) unwiderruflich gelöscht.
Der USB-Stick wird angesteckt und nicht eingebunden. Mit den letzten Ausgaben von dmesg ermittelt man, welche Gerätedatei dem USB-Stick zugewiesen wurde. In unseren Beispielen wird /dev/sdb verwendet.
Der USB-Stick wird gelöscht, wobei alle Daten verloren gehen. Man kann auch den ganzen USB-Stick löschen, nicht nur die ersen 16 MB wie im Beispiel.
$ su Passwort: 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
Partitionieren des USB-Sticks
Die korrekte Partitionierung und Formatierung des USB-Sticks ist vermutlich der schwierigste Teil.
Das Partitions-Label wird auf FAT16 gesetzt, auf Sticks mit <2 GB (dies bietet bessere Kompatibilität).
Danach fdisk auf die Partition ausführen:
# 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)
Anlegen der 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
Bestätigung des Anlegens der Partition, indem die Partitionstabelle geschrieben wird:
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
Setzen des korrekten Partitionslabels , '6' für 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)
Aktivierung der neuen und einzigen Partition:
Command (m for help): a Partition number (1-4): 1
Die neue Partitionstabelle wird nochmals geschrieben, und man bestätigt neuerlich, dass die Partition aktiviert wird:
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
Die neue Partitionstabelle wird auf dem USB-Stick gespeichert und fdisk beendet:
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
Formatieren des neu aufgesetzten USB-Sticks:
mkfs -t vfat -n FreeDOS /dev/sdb1 exit
Die Vorbereitungsphase ist nun abgeschlossen. Der USB-Stick wurde partitioniert und formatiert. Nun kann der Installationsprozess begonnen werden.
FreeDOS mit qemu booten
Da DOS keine USB-Sticks kennt, muss man einen Weg finden, um FreeDOS eine normale "Festplatte" vorzugaukeln. Bei einem "Live-Boot" übernimmt das BIOS diese Funktion, in unserem Fall muss man zu diesem Zweck jedoch qemu verwenden::
Als normaler Nutzer$: qemu -hda /dev/sdb -cdrom /path/to/fdbasecd.iso -boot d
ctrl-alt schaltet Maus und Tastatur zwischen qemu und Hostsystem. Damit kann man Desktops wechseln und jeden Schritt in der Anleitung neu lesen.
Damit wird FreeDOS CD gebootet und der USB-Stick wird als primäre Master-Festplatte erkannt (qemus Fähigkeit zur BIOS-Emulation lässt den USB-Stick für DOS als gewöhnliche Festplatte erscheinen). Nun wird der Installer im Boot-Menü des virtualisierten FreeDOS gewählt:
1) Continue to boot FreeDOS from CD-ROM
1
enter
Man wählt die Grundeinstellung 1 bzw. antwortet Yes, falls angefragt.
Die Installationsroutine fordert nun zu einem Reboot auf - dies wird noch nicht gemacht, da noch zwei Fehler des FreeDOS Installers bezüglich mbr und Bootmenü behoben werden müssen. Man gibt den Buchstaben n ein.
Schreiben eines Bootsektors auf den USB-Stick
Der mbr-Fehler wird behoben durch:
fdisk /mbr 1
Der Bootmenüfehler wird in der neuen fdconfig.sys behoben, indem man ausführt:
cd \ edit fdconfig.sys
und die Zeile beginnend mit command.com so abändert:
1234?SHELLHIGH=C:\FDOS\command.com C:\FDOS /D /P=C:\fdauto.bat /K set
(don't actually change this command, just add "1234?" to the begin of the line (before SHELLHIGH==C:\FDOS\command.com .....
NOTE it is to read : 1234?
Ansonsten darf nichts geändert werden, da die Zeile von dem Installations-Setup abhängt.
Speichern und den Bearbeitungsmodus verlassen:
[alt]+[f]
Zurück beim Befehlszeilen-Prompt kann qemu verlassen werden.
Nun wird getestet, ob qemu den USB-Stick bootet.
qemu -hda /dev/sdb -boot c
Der USB-Stick ist nun bootfähig und enthält eine vollständige FreeDOS-Installation mit 5,4 MB, um flashen zu können. Man sollte booten, ohne Treiber zu laden (Menüoption 4). himem.sys und emm386 könnten in die Flashing-Programme reinpfuschen!
Aktualisierung des BIOS
Der FreeDOS USB-Stick wird in ein laufendes System angesteckt, eingebunden und die benötigten BIOS-Dateien (Herstellerempfehlung) werden auf dem FreeDOS USB-Stick gespeichert. Die Einbindung des USB-Sticks wird danach gelöst.
Der PC wird ausgeschaltet und der FreeDOS USB-Stick angesteckt. Der PC wird eingeschaltet, sodass der FreeDOS USB-Stick bootet, danach wird den Anweisungen des Herstellers des BIOS bzw. Motherboards gefolgt.