Opdatering af BIOS med FreeDOS

Opdatering af din maskines BIOS kan enten være et krav eller blot dit personlige valg. Producenten af dit bundkort annoncerer sikkert jævnligt opdateringer til din BIOS, installationsprogrammet til disse tilbydes oftest kun som programmer der kører under MS-DOS.

Det følgende er en metode til at opgrader din BIOS fra USB med linux. Det fungerer med USB nøgler, USB penne og med micro/mini/SD kort (med den tilhørende adapter).

Første opgave er at sikre at din maskines BIOS er indstillet til at tillade opstart fra USB porten, og at den er kompatibel med USB harddiske. Nogle BIOS accepterer USB Floppy drev, CD-ROM drev eller ZIP drev, og selvom disse er brugbare kan det vanskeliggøre implementeringen af opgraderingen. På den anden side kan du jo være tvunget til at gennemføre opgraderingen på denne måde, specielt med bærbare.

Du skal bruge tre ting:

  1. En USB nøgle, fortrinsvis < 2 GB da FAT16 ikke tillader mere end 2 GB og den basale FreeDOS (fdbasecd.iso) installation fylder kun 5.8 MB. FAT16 er den anbefalede format til formålet, da FAT32 ikke detekteres korrekt som bootable af alle BIOS.
  2. Et FreeDOS installations medium fdbasecd.iso (8MB).
  3. qemu (apt-get install qemu), qemu skal bruges til installationsprogrammet; i hurtige træk fungerer det ved at det emulerede qemu BIOS får din USB nøgle til at ligne endnu en almindelig harddisk for FreeDOS, derfor kan du installere som normalt (og uden at skulle brænde FreeDOS CDen).
Dette er kritisk vigtigt: På intet tidspunkt må USB nøglem monteres på nogen måde. Vær overmåde omhyggelig med at vælge den korrekte device node, i modsat fald vil alle data på den forkerte disk blive slettet uden yderligere advarsler, ie din systemdisk!.

Isæt din USB nøgle, husk, du skal ikke montere den. Kontroller dmesg (den sidste meddelelse hvis du lige har sat den i), for at se hvilken device node der blev tildelt din USB nøgle. Lad os antage at det var /dev/sdb .

Ryd din USB nøgle, alt data vil gå tabt, du kan også slette hele nøglen fremfor bare de første 16 MB.

$ 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

Partitionering af USB nøglen

Korrekt partitionering og formattering af din USB nøgle er sandsynligvis den sværeste del.

Sæt partitionslabel til FAT16, på <2 GB nøgler (for bedre kompatibilitet).

Anvend fdisk til partitionering:

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

Opret nu en 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

Konfirmer opprettelsen af partitionen ved at printe partitionstabellen:

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

Sæt den korrekte partitions label, '6' for 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)

Aktiver den nye (og eneste) partition:

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

Print den nye partitionstabel endnu en gang for at sikre dig at alt er som det skal være, og at partitionen virkeligt blev aktiveret:

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

Skriv den nye partitionstabel til din USB nøgle og afslut fdisk:

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

Formater din nyoprettede USB partition:

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

Forberedelsesfasen er nu overstået.Du har partitioneret og formatteret USB nøglen, der er ikke mere at gøre og du kan nu gå til installationsprocessen.

Starte FreeDOS op med qemu

Eftersom DOS ikke har den fjerneste ide om USB nøglen, vi skal finde en måde snyde FreeDOS installationsprogrammet, sådan at det tror USB nøglen er endnu en almindelig harddisk, ved live boot sørger systemets BIOS for dette, men her skal vi anvende qemu:

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

ctrl-alt skifter mus og tastatur grab og tillader dig at skifte skrivebord for at genlæse instruktionerne ved de enkelte trin.

QEMU FreeDOS

Dette booter FreeDOS CDen og mapper USB nøgle enheden som primary master HD (her får qemu's BIOS emulation USB nøglen til at ligne en ordinær harddisk når DOS kigger på den). Vælg installationsprogrammet fra start menuen på den virtualiserede FreeDOS boot:

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

Vælg standard 1 og/eller vælg Yes når du bliver spurgt.

freedos-inst1
freedos-inst2
freedos-inst3

Installationsprogrammet spørger om du vil genstarte - det skal du ikke gøre endnu! da der lige er et par fejl der skal fikses i FreeDOS installationsprogrammet for mbr og bootmenu. Skriv bogstavet n.

freedos-do not reboot type n

Skriv en bootsector til din USB nøgle

Den første fejl er mbr som rettes ved at skrive:

fdisk /mbr 1

Den anden fejl findes i bootmenuen i din nye fdconfig.sys, kør:

cd \
edit fdconfig.sys

og rediger den linie der starter command.com til:

1234?SHELLHIGH=C:\FDOS\command.com C:\FDOS /D /P=C:\fdauto.bat /K set
(du skal ikke ændre denne kommando, men bare tilføje "1234?" til begyndelsen af linien (før SHELLHIGH==C:\FDOS\command.com .....
OBS det skal være: 1234?
fdconfig.sys

Du skal ikke ændre andet herinde.

Gem og afslut "edit":

[alt]+[f]

Når du er tilbage ved kommandoprompten kan du afslutte qemu.

Kontroller om qemu vil boote fra din USB nøgle.

qemu -hda /dev/sdb -boot c

Din USB nøgle er nu bootable og indeholder en fuld FreeDOS installation på 5.4 MB til at flashe. Du bør starte op uden nogen drivere (menu punkt 4), indlæsning af himem.sys og emm386 filerne kunne påvirke det program du bruger til at flashe din BIOS med!:

Opdatering af BIOS

Hvis vi antager at din maskine er oppe og kører, indsæt da din FreeDOS USB nøgle, monter den og hent BIOS filerne du skal bruge (som anbefalet af producenten af dit bundkort) og gem dem på FreeDOS USB nøglen. Afmonter USB nøglen.

Sluk maskinen, sæt FreeDOS USB nøglen i og tænd strømmen sådan at du booter fra FreeDOS USB nøglen. Følg derefter producentens anvisninger for opdatering af dit bundkortstick.

Content last revised 14/08/2010 0100 UTC