BIOS Update
Hardware manufactures often provide updates for their BIOS and firmware. To apply (often referred to as to flash) the updates is sometimes not straight forward and requires some work.
Contents |
Getting BIOS
First you should find the motherboard's manufacturer and the model. Check the user's Manual that comes with your computer, usually there you'll find all needed information.
You can also use sys-apps/dmidecode to retrieve some info.
root # dmidecode -t bios -t baseboardLastly, if you have phyiscal access to the motherboard, you may find the required information directly on the motherboard itself.
After some searching on manufacturer site you can get BIOS update as zip-, exe- or iso-file.
user $ unzip 7235v1A.zip
Archive: 7235v1A.zip
creating: 7235v1A/
inflating: 7235v1A/7235v1x.txt
inflating: 7235v1A/AWFL865.EXE
inflating: 7235v1A/How to flash the BIOS.DOC
inflating: 7235v1A/W7235IMS.1A0
BIOS Option
Many BIOS have an option to read the new binary image from an external memory stick or floppy disk. All you need to do is to go into your BIOS setup and look for the option.
Boot-CD
Often the manufaturer offers a CD-Rom image to download as a boot medium. The file should have the extension .iso, to burn the image to an empty CD-R:
root # cdrecord BOOT-CD.isoNow you can choose in your BIOS to boot from CD and follow the instructions on your manufacturers website.
FreeDOS Environment
You can use FreeDOS to run the DOS-based BIOS utility from your manufacturer. You must first create a custom FreeDOS image which includes the necessary BIOS tools, and then boot this image via one of the methods shown here.
Download FreeDOS and tools:
- FreeDOS - download the fdboot.img file
- FreeDOS bootsector - download the file sys-freedos-linux.zip
- The DOS-Flash program and new BIOS from your manufacturers website
Create Custom FreeDOS Image
First we need to install and download the required software and enable the loopback device in our kernel:
Device Drivers --->
[*] Block devices --->
<M> Loopback device supportIf the module isn't loaded yet:
root # modprobe loopInstall required software:
root # emerge --ask dev-lang/nasm app-arch/unzip sys-fs/dosfstoolsCreate an image file of ~20MB using dd (the name needs to be freedos.img if you will be replacing the one on the SystemRescueCD):
root # dd if=/dev/zero of=freedos.img bs=1024 count=20480Write a file system to the image:
root # mkfs.msdos freedos.imgWrite the bootsector to the image file:
root # unzip sys-freedos-linux.zip && ./sys-freedos.pl --disk=freedos.imgNow we need to copy the FreeDOS files to our new image.
Create the mountpoints:
root # mkdir -p /mnt/freedos /mnt/freedos_newMount the original image:
root # mount -o loop fdboot.img /mnt/freedosMount the new image:
root # mount -o loop freedos.img /mnt/freedos_newCopy the FreeDOS system files to our new image:
root # cp -ar /mnt/freedos/* /mnt/freedos_new/Now you should also copy your flash program and the new BIOS to the image file:
root # cp -ar FLASH-PROGRAM BIOS-UPDATE /mnt/freedos_newUnmount both images:
root # umount /mnt/freedos_new /mnt/freedosUsing SystemRescueCD to boot FreeDOS
The SystemRescueCD comes with a version of FreeDOS, we can replace the original image and create a bootable memory stick which contains the needed programs to flash our BIOS.
Download SystemRescueCD and prepare LiveUSB
- SystemRescueCD - download the normal ISO image
Create Bootable Memory Stick We use the default method to create the SystemRescueCD boot medium, the script usb_inst.sh will guide through the installation.
Create the folder in /mnt:
root # mkdir /mnt/SysRescueCDMount the cd image:
root # mount -o loop systemrescuecd-x86-VERSION.iso /mnt/SysRescueCDStart the installation script:
root # /mnt/SysRescueCD/usb_inst.shUnmount the cd image:
root # umount /mnt/SysRescueCDReplace the FreeDOS image
We are going to replace the original FreeDOS image on the SystemRescueCD memory stick.
Mount the SystemRescueCD memory stick (/dev/sdX1 needs to be replaced by the device name of your memory stick):
root # mount /dev/sdX1 /mnt/SysRescueCDReplace the freedos.img file:
root # cp freedos.img /mnt/SysRescueCD/bootdisk/Unmount the SystemRescueCD memory stick:
root # umount /mnt/SysRescueCDBooting the FreeDOS image from GRUB directly
If you would like to boot FreeDOS without any external media, you can use the "memdisk" tool from syslinux to allow grub (or another bootloader) to boot your FreeDOS image directly.
root # emerge --ask sys-boot/syslinuxMount your /boot partition (if needed):
root # mount /bootCopy the memdisk binary, and your newly built FreeDOS image to /boot:
root # cp /usr/share/syslinux/memdisk /bootroot # cp freedos.img /bootEdit /boot/grub/grub.conf and add an entry for FreeDOS:
title FreeDOS (BIOS update) kernel /boot/memdisk floppy initrd /boot/freedos.img
BIOS Update
Restart and choose to boot from the USB memory stick OR your new grub entry. If using SystemRescueCD, in the GRUB command line type:
freedos
This should boot you into our new FreeDOS image and you are greeted by the DOS prompt:
C:\
Now you can start your BIOS update by following the manufacturers instructions. Some useful commands in DOS:
- cd <dir>
- change to the directory
- dir
- list the files in the current directory
- type
- display the contents of a file
flashrom
Your motherboard can support flashing via sys-apps/flashrom directly from your system. In this case only what you need is BIOS image. Please check first list of supported hardware.
First we check our new BIOS image:
root # flashrom -v W7235IMS.1A0If all OK, let's flash'em:
root # flashrom -vw W7235IMS.1A0