Aggiornare il BIOS con FreeDOS
Si potrebbe avere intenzione o necessità di aggiornare il BIOS del PC quando il costruttore della scheda madre annuncia alcuni miglioramenti al BIOS. Il programma che viene fornito per l'aggiornamento del BIOS generalmente funziona in ambiente MS-DOS.
Questo che segue è un modo per aggiornare il BIOS tramite USB da linux. Funziona sia con chiavette USB che con schede micro/mini/SD (mediante un adattatore).
Per prima cosa, il BIOS deve permettere l'avvio da USB e deve essere compatibile con gli hard disk USB. Alcuni BIOS accettano come periferiche USB soltanto Floppy, CD-ROM oppure drive ZIP e sebbene questi possono essere utilizzabili, potrebbe essere più difficile fare l'aggiornamento, del resto si potrebbe non avere altra scelta (in particolare per i netbook).
C'è bisogno di tre cose:
- Una chiavetta USB, preferibilmente <2 GB (FAT16 non permette più di 2 GB), e l'installazione base di FreeDOS (fdbasecd.iso) che occupa soltanto 5.8 MB. FAT16 è il formato raccomandato dal momento che FAT32 non è riconosciuto come avviabile da tutti i BIOS;
- Una installazione FreeDOS: fdbasecd.iso (8MB);
- qemu (apt-get install qemu), qemu è necessario per il programma di installazione, in poche parole il BIOS emulato di qemu fa sembrare la chiavetta USB a FreeDOS come un normale hard disk, in questo modo si può installare come sempre (e questo evita di masterizzare il CD di FreeDOS).
Questo è di importanza fondamentale: in nessun modo la chiavetta USB deve essere montata. Fare attenzione a selezionare la periferica corretta, altrimenti tutti i dati nel disco selezionato sbagliato saranno cancellati senza avviso, as es. l'hard disk principale.
Inserire la chiavetta USB, ricordarsi di non montarla. Controllare con dmesg (tra gli ultimi messaggi se si è appena inserita) quale nome di periferica è stato assegnato alla chiavetta USB, per esempio: /dev/sdb .
Ripulire la chiavetta USB, tutti i dati saranno persi, si può ripulire tutta invece che soltanto i primi 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
Partizionare la chiavetta USB
Partizionare e formattare correttamente la chiavetta USB è probabilmente la parte più difficile.
Selezionare la partizione su FAT16, su chiavette <2 GB (offre maggiore compatibilità).
Eseguire fdisk sulla partizione:
# 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)
Adesso creare una partizione:
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
Confermare la creazione della partizione stampando la tabella delle partizioni:
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
Selezionare il tipo corretto per la partizione, '6' per 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)
Attivare la nuova ed unica partizione:
Command (m for help): a Partition number (1-4): 1
Visualizzare di nuovo la tabella delle partizioni, controllare che la partizione è stata veramente attivata:
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
Scrivere la nuova tabella delle partizioni nella chiavetta USB ed uscire da 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
Formattare la chiavetta USB:
mkfs -t vfat -n FreeDOS /dev/sdb1 exit
La fase di preparazione adesso è completa. La chiavetta USB è stata partizionata e formattata, non c'è rimasto altro da fare e si può procedere con il processo di installazione.
Avviare FreeDOS con qemu
Dal momento che il DOS non ha idea di cosa sia una chiavetta USB, bisogna trovare un sistema per ingannare il programma di installazione di FreeDOS e fargli riconoscere la periferica USB come un normale hard disk, nell'avvio live, il BIOS di sistema lo fa per noi ma qui bisogna essere fantasiosi con qemu:
come utente ($): qemu -hda /dev/sdb -cdrom /path/to/fdbasecd.iso -boot d
ctrl-alt libera il mouse e la tastiera e permette di cambiare desktop per rileggere le istruzioni ad ogni passo.
Questo avvia il CD di FreeDOS e collega la chiavetta USB come primario master HD (qui la capacità dell'emulazione BIOS di qemu permette alla chiavetta USB di apparire al DOS come un normale hard disk). Selezionare l'installatore dal menu di avvio virtualizzato di FreeDOS:
1) Continue to boot FreeDOS from CD-ROM
1
enter
Mantenere la scelta di default, 1, e/o scegliere Yes quando richiesto.
Il programma di installazione chiede di riavviare, non va fatto ancora, dal momento che è necessario correggere due errori dell'installatore FreeDOS per l'MBR ed il menù di avvio. Premere la lettera n .
Scrivere un settore d'avvio nella chiavetta USB
Il primo errore da correggere è l'MBR con:
fdisk /mbr 1
Il secondo errore che deve essere corretto è il menù d'avvio in fdconfig.sys, eseguire:
cd \ edit fdconfig.sys
e cambiare la linea che avvia command.com in:
1234?SHELLHIGH=C:\FDOS\command.com C:\FDOS /D /P=C:\fdauto.bat /K set
(non va cambiato questo comando, basta aggiungere "1234?" all'inizio della linea (prima di SHELLHIGH==C:\FDOS\command.com .....
NOTA è da leggere: 1234?
Non cambiare altro dal momento che la linea dipende dal setup dell'installazione.
Salvare ed uscire da "edit":
[alt]+[f]
Una volta che si è di nuovo al prompt dei comandi si può uscire da qemu.
Provare se qemu avvia la chiavetta USB.
qemu -hda /dev/sdb -boot c
La chiavetta adesso è avviabile e contiene una installazione completa di FreeDOS di 5.4 MB, pronta per l'aggiornamento. Bisogna avviare senza nessun driver (opzione menu: 4), caricare himem.sys e emm386 può interferire con il programma che scrive il BIOS! :
Aggiornare il BIOS
Assumendo che il PC sia acceso, inserire la chiavetta USB con FreeDOS, montarla e scaricare i file del BIOS necessari, come raccomandato dal produttore della scheda madre, nella chiavetta USB, quindi smontarla.
Spegnere il PC, inserire la chiavetta USB con FreeDOS, accendere, avviare dalla chiavetta USB e seguire le procedure del produttore della scheda madre/BIOS.