Opwaarderen van de BIOS m.b.v. FreeDOS

Het kan wenselijk of nodig zijn om de BIOS van je PC te updaten, bijv. als de producent van het moederbord verbeterde BIOS software levert. De installer is meestal een programma dat in MS-DOS-modus werkt van een diskette.

Hieronder staat een manier om de BIOS update via USB of memory-cards mogelijk te maken in Linux. Het werkt met USB keys, USB sticks en met micro/mini/SD cards (met een passende adapter).

Als eerste moet je BIOS in staat zijn om van USB op te kunnen starten - en compatibel zijn met USB harddisks. Sommige BIOSes accepteren USB Floppies, CD-ROMs of ZIP drives, alhoewel deze bruikbaar lijken te zijn, kan het moeilijker zijn om de upgrade door te voeren. Maar het zou kunnen zijn dat je geen andere keuze hebt (netbooks in het algemeen).

Je hebt drie dingen nodig:

  1. een USB stick, bij voorkeur van <2 GB (FAT16 kan niet meer dan 2 GB aan), en een base FreeDOS (fdbasecd.iso), deze gebruikt maar 5.8 MB. FAT16 is het aanbevolen formaat want FAT32 wordt niet door elke BIOS als opstartbaar beschouwd.
  2. een FreeDOS installatie medium fdbasecd.iso (8MB).
  3. qemu (apt-get install qemu), qemu is nodig voor de installer, feitelijk wordt de geemuleerde qemu BIOS op he USB Stick in FreeDos gezien als een gewone harddisk. Hierdoor kan je het installeren zonder dat je de FreeDOS CD moet branden.
Dit is absoluut kritisch: koppel de USB stick bij GEEN enkele actie aan! Wees voorzichtig met het selecteren van de correcte device node, anders wordt alle data op de verkeerde disk gewist, zonder herstelmogelijkheid!

Sluit je USB stick aan, onthou dat je hem niet aankoppeld. Controleer dmesg (het laaste bericht als je de USB stick net hebt aangesloten), welke device node je USB stick toegewezen heeft gekregen, laten we aannemen dat dit /dev/sdb is.

Schoon je USB stick op (alle data gaat verloren). Je kunt ook alles wissen ipv de eerste 16 MB zoals in onderstaand voorbeeld.

$ 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

Partitioneren van de USB stick

Het correct partitioneren en formatteren van je USB stick is waarschijnlijk het moeilijkste gedeelte.

Zet de partitie label naar FAT16, voor <2 GB sticks (het levert betere compatibiliteit op).

via fdisk naar partitioneren:

# 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)

Creeer nu een partitie:

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

Bevestig dat de partitie wordt aangemaakt op de aangegeven plaats voor de partitietabel:

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

zet de correcte partitie label, '6' voor 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)

Activeer de nieuwe en enige partitie:

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

De nieuwe partitietabel wordt nogmaals geschreven en er moet weer bevestigd worden dat de partitie geactiveerd wordt:

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

Schrijf de nieuwe partitietabel naar je USB stick en sluit fdisk af:

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

Formateer je nieuw gecreeerde USB stick:

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

De voorbereidingsfase is nu compleet. Je hebt nu je USB stick gepartitioneerd en geformateerd, verder hoef je niets te doen en kun je direct doorgaan naar het installatie proces.

FreeDOS met qemu opstarten

Aangezien DOS geen idee heeft wat een USB stick is , moet je een manier vinden om de FreeDOS installer de USB stick als een gewone "harddisk" te laten herkennen, met live boot, doet de systeem BIOS dit voor ons - maar hier moet je vindingrijk worden met qemu:

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

ctrl-alt switchs de muis en toetsenbord, en staat het je toe om van desktops te switchen, zodat je de instructies opnieuw kan benaderen.

QEMU FreeDOS

Dit zorgt ervoor dat de FreeDOS CD opstart en de USB stick mapped als een raw device en wel als de primary master HD (hier zorgt qemu's BIOS emulatie ervoor dat je USB stick door DOS gezien wordt als een gewone harddisk). Selecteer de installer van het start menu van de virtuele FreeDOS boot:

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

Kies de standaard waarde 1 en/of bevestig dat Yes wanneer dit gevraagd wordt.

freedos-inst1
freedos-inst2
freedos-inst3

De installatie vraagt om een reboot- doe dit nu nog NIET. Eerst moeten nog twee fouten in de FreeDOS installer voor de mbr en bootmenu gecorrigeerd worden. Type de letter n.

freedos-do not reboot type n

Het schrijven van de bootsector naar je USB stick

Eerst wordt de mbr-fout gerepareerd door:

fdisk /mbr 1

De tweede fout die gecorrigeerd dient te worden is het bootmenu in je nieuwe fdconfig.sys, start:

cd \
edit fdconfig.sys

en verander de regel beginnend met command.com naar:

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?
fdconfig.sys

Verander verder niets, aangezien de regel afhankelijk is van je installatie setup.

Sla het op en stop "edit":

[alt]+[f]

Wanneer je terug bent in de command prompt, dan kun je qemu verlaten.

Test of het mogelijk is om op te starten van de USB stick middels qemu.

qemu -hda /dev/sdb -boot c

JE USB stick is opstartbaar en bevat een volledige FreeDOS install van 5.4 MB, voor het flashen. Je moet echt opstarten zonder drivers (menu optie 4). Laden van himem.sys en emm386 bestanden kan je flashing programma's beinvloeden!:

Updaten van de BIOS

Er vanuit gaande dat je PC aanstaat en draait, sluit en koppel de FreeDOS USB stick aan en download de BIOS bestanden die nodig zijn, zoals aanbevolen door de fabrikant van je moederbord/BIOS, naar de FreeDOS USB stick, ontkoppel (umount) dan de stick.

Zet je PC uit, sluit de FreeDOS USB stick aan en start de PC opnieuw op zodat er vanaf de FreeDOS USB stick opgestart wordt en volg dan de procedures van de fabrikant van je moederbord/BIOS.

Inhoud het laatst gewijzgid op 14/08/2010 0100 UTC