Saturday, December 15, 2012

How to Create a USB stick to Flash your BIOS for a Linux PC


***WARNING: ATTEMPTING TO FLASH YOUR BIOS CAN PERMANENTLY DAMAGE YOUR PC***


Most vendors do not provide support for Linux, which can be especially difficult when you want to update your BIOS.

I will be providing two methods for upgrading you BIOS.

1. FreeDOS
2. Windows PE


The first option is for DOS utilities and the second is for Windows utilities. I recommend the first unless you are forced to use a Windows executable from your vendor

---------------------------------------------------

FREEDOS


1. Download the FreeDOS live disk.

2. Plug in your USB replace /dev/sdb with /dev/[your USB] (if you do not know where your USB stick is try the command lsblk). Prepare to set up a partition table. (Warning: this will erase everything on your USB stick.)

parted /dev/sdb

mklabel msdos

mkpart primary 0% 100%
set boot on


3. Add a file system:

mkfs.vfat -F32 /dev/sdb1

4. Now install Syslinux to your USB stick: (refer to your distro package manage for downloading the syslinux package):

syslinux -i /dev/sdb

5. Add a configuration file that will boot your FreeDos Image:

sudo mkdir /mnt/usb
sudo mount /dev/sdb1 /mnt/usb

sudo vim /mnt/usb/syslinux.cfg


DEFAULT FreeDOS

LABEL FreeDOS
 LINUX memdisk
 INITRD fdboot.img

6. Copy memdisk to your USB stick. (If you can not find the syslinux library try the command whereis syslinux.)

sudo cp /usr/lib/syslinux/memdisk /mnt/usb


7. Copy the FreeDOS image and your vendor executable image.

sudo cp ~/fdboot.img
sudo cp ~/myBIOSflash.exe /mnt/usb


8. Plug in your USB and boot up your machine. Syslinux should boot into FreeDOS. Type myBIOSflash.exe to upgrade your BIOS.

---------------------------------------------------

WINDOW PE (Windows Portable Edition)


If you've tried to flash your BIOS with FreeDOS and received "incompatible DOS file". This method is for you. Unfortunately, you will require a copy of Windows for this tutorial to work:

1. Download the Installation Kit and burn an ISO and install to Windows.

Download the Windows 7 Automation Installation Kit
Download the Windows Vista/XP/Server 2003 Automated Installation Kit

I have followed this Walkthrough from Microsoft, but have added necessary corrections.
Walkthrough: Create a Bootable Windows PE RAM Disk on UFD


2. Start the "Deployment Tools Command Prompt" from the start menu.

3. Create a Windows PE Image

copype.cmd x86 c:\winpe_x86

4. Mount the Image:

imagex /mountrw WinPE.wim 1 c:\winpe_x86\mount\

5. Add your BIOS flash files:

cp c:\acerBIOSflash.exe c:\winpe_x86\mount


6. Unmount the Image:

imagex /unmount /commit c:\winpe_x86\mount

7. This step [b]must[/b] be added (it is in the other walkthroughs). It will not boot otherwise.

xcopy c:\winpe_x86\winpe.wim c:\winpe_x86\iso\sources\boot.wim /y

8. To partition the disk you must leave the "Deployment Tools Command Prompt". If you stay in the "Deployment Tools Command Prompt" it will not create a proper bootable partition. Start a separate command prompt with administrator privileges. Replace disk 6 with your USB.:

diskpart
list disk
select disk 6
clean
create partition primary size=<size of device>
select partition 1
active
format fs=fat32 quick
exit

9. Copy to your USB. Change "F:\" to the location of your drive:

xcopy c:\winpe_x86\iso\*.* /s /e /f f:\

Once you boot, you get a command prompt in a Windows environment.

Now you can navigate to the location of flash utility and install.

I hope this tutorial helps anyone else. It took a while to compile various walkthroughs and Q&As.

Note:
1. You cannot add the flash utility directly to the ISO. It has to be mounted into the actual boot.wmi.

2. If the disk fails to boot ensure that the active flag (boot) is set in diskpart.

No comments:

Post a Comment