DellBIOS
|
Size: 6695
Comment:
|
← Revision 38 as of 2015-02-04 01:52:30 ⇥
Size: 9310
Comment: Added support note on PowerEdge as I just went through upgrading a slew of them and Ubuntu didn't quite work out as well as desired.
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| = Updating the BIOS on Dell systems = BIOS update utilities and files are often provided as Windows executable files. This guide provides information for Dell users to use such files without using Windows or any emulation software. |
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<TableOfContents>>|| |
| Line 4: | Line 3: |
| == Using Dell packages == There '''firmware-tools''' deb packages, and the latest system BIOS images for 223 Dell system types are available in a repository on linux.dell.com. Please see [[http://linux.dell.com/wiki/index.php/Repository/firmware|the instructions]] on how to use them. In a nutshell, for Ubuntu systems with Feisty, Gutsy, or Hardy, be sure the Universe section is enabled in /etc/apt/sources.list, then run: {{{ sudo -s wget -q -O - http://linux.dell.com/repo/firmware/bootstrap.cgi | bash aptitude install firmware-addon-dell firmware-tools aptitude install $(bootstrap_firmware -a) update_firmware |
= Introduction = BIOS update utilities and files are often provided as .exe files. The BIOS updates work by booting the machine into DOS using a USB or floppy (FreeDOS or MS-DOS) and then running an executable to reflash the BIOS. This guide provides information for Dell users to use such files without using Windows. = Checking your current BIOS version = The current BIOS version can be checked by this command from Ubuntu: {{{ sudo dmidecode -s bios-version }}} The current BIOS release date can be obtained by invoking: {{{ sudo dmidecode -s bios-release-date |
| Line 14: | Line 17: |
| The bootstrap command downloads an OpenPGP key for use in validating the linux.dell.com repository, and sets up the '''dell-firmware''' and '''dell-software''' sections for use by apt. | = Upgrading the BIOS and hardware firmware for PowerEdge servers = |
| Line 16: | Line 19: |
| If the system does not need to be updated, a message similar to this will be shown: | == CentOS == One of the easiest methods requiring no server configuration is to upgrade PowerEdge servers via booting into a CentOS 7.0 x64 live environment (USB is faster but one may want to use CD/DVD due to a limited number of USB ports), load the firmware BIN files onto a FAT32 USB drive, execute the following in a terminal to find the path to the USB drive, and launch the .BIN extension firmware file: {{{ df -h sudo bash FILENAME.BIN }}} This is how the files were developed assuming one is using Red Hat. As well, while one of the files tested worked by default in Ubuntu (ex. firmware update for Broadcom BCM5720 NetXtreme Gigabit Ethernet Adapter), running the .BIN file for the iDRAC firmware initially complained of missing packages (ex. rpm, stty, gzip, among others) despite gzip being confirmed installed. Installed rpm, executed the .BIN file and this caused the server to start to reboot and then hang, which after a hard shutdown, and booting into the Lifecycle Controller the firmware was not upgraded. However, the same .BIN file worked flawlessly in CentOS. == Dell OpenManage Ubuntu Repository == For more on this, please see [[http://linux.dell.com/repo/community/ubuntu/]]. = Upgrading with a FreeDOS USB drive = Follow the directions here to create a FreeDOS USB drive: http://chtaube.eu/computers/freedos/bootable-usb/ After you've done that: 1. Eject the USB drive, then re-insert it so you can see the new FreeDOS file system. 2. Copy your BIOS update file to the drive. 3. Reboot, press F12 for the one-time boot menu, and boot from the USB Storage Device. 4. Choose "fdos". 5. Choose "4 - Load FreeDOS without drivers." 6. Execute the BIOS update. = Using WINE to extract the BIOS image for a Dell Inspiron 1525 = |
| Line 18: | Line 52: |
| root@bachue:~# update_firmware | sudo apt-get install firmware-addon-dell libsmbios-bin wine update_firmware sudo modprobe dell_rbu }}} Check your BIOS version number: {{{ sudo dmidecode -s bios-version }}} |
| Line 20: | Line 59: |
| Searching storage directory for available BIOS updates... Checking System BIOS for Precision WorkStation 360 - a08 Available: system_bios(ven_0x1028_dev_0x0156) - a08 Did not find a newer package to install that meets all installation checks. This system does not appear to have any updates available. No action necessary. |
Download the BIOS update .exe from Dell's support site, then run: {{{ wine 1525_A17.EXE -writehdrfile -nopause |
| Line 31: | Line 63: |
| A reboot is required for the flash to actually happen. | Check it outputs a .hdr file: {{{ ls *.hdr }}} Then use this file: {{{ sudo dellBiosUpdate -u -f 1525_A17.hdr }}} Reboot:{{{ sudo reboot now }}} One should see a BIOS update screen. Please ensure you do not restart, or lose power during this process. Once it reboots automatically, one may see if it took via:{{{ sudo smbios-sys-info }}} |
| Line 33: | Line 73: |
| The two packages needed for this are currently under review by the MOTU team. They can be found at: * http://revu.tauware.de/details.py?package=firmware-tools * http://revu.tauware.de/details.py?package=firmware-addon-dell |
= Updating the BIOS by booting into firmware directly = |
| Line 37: | Line 75: |
| Dell has had this service available for quite a while for several RPM-based distributions. They are now bringing this to the dpkg-based distributions now as well. | 1. Obtain the appropriate BIOS .EXE file for your computer from [[http://support.dell.com]] (search under "drivers & downloads"). Download it to your hard drive. In this example we'll use the filename `I545-A12.EXE` but it will be different for you if you have a different Dell model (or a newer BIOS revision). |
| Line 39: | Line 77: |
| == Using biosdisk == ''Note'': this section is kept for reference purposes. The preferred method for updating your Dell BIOS should be the on described in the above section. |
2. We need to create a 2.88MB "floppy" disk image (1.44MB is too small for the uncompressed BIOS code) and mount it. Note that FreeDOS doesn't provide an 'empty' 2.88MB boot disk so we need to delete the "fdos" utility folder to get space. We'll need to obtain a FreeDOS disk image and mount it: {{{ wget http://www.fdos.org/bootdisks/autogen/FDSTD.288.gz gunzip FDOEM.288.gz mkdir /tmp/floppy sudo mount -t vfat -o loop,quiet,umask=000 FDSTD.288 /tmp/floppy rm -rf /tmp/floppy/fdos }}} Note that that last step is crucial to free up sufficient space on the "floppy". |
| Line 42: | Line 85: |
| '''biosdisk''' is a utility maintained by John Hull at Dell. There isn't an official Ubuntu package yet but the provided downloadable archive has an installer which can be used to upgrade your BIOS from Ubuntu. | 3. Next we need to install dosemu (a DOS emulator) so we can extract the BIOS files from the Dell installer but with unlimited diskspace: {{{ sudo apt-get install dosemu dosemu }}} You should get a window pop up that looks like DOS with the C drive active. What you are actually seeing is a dosemu 'virtual' drive, who's actual location on your Ubuntu system is ~/.dosemu/drive_c |
| Line 44: | Line 90: |
| '''biosdisk''' simplifies the process of flashing your system BIOS under Linux on Dell desktops and laptops. The purpose of this utility is to create a bootable BIOS flash image using the raw BIOS flash executable images (e.g. WS360A05.exe) available from support.dell.com. An RPM, SRPM, and tarball for this project are available at http://linux.dell.com/biosdisk. The project consists of a shell script that, when executed, creates a FreeDOS floppy image at a location of your choosing. This project is intended for Dell desktop and laptop customers and not PowerEdge customers, since Linux BIOS flash packages are already available for PowerEdge systems, and raw executable BIOS flash images are not. To use the biosdisk utility to create a BIOS flash image, first download the latest raw BIOS image for your system from support.dell.com or ftp://ftp.dell.com/bios. You then have one of several options: create a floppy, create a dd floppy image, create a user-installable distribution-specific package (e.g. RPM), or actually install the image for your bootloader. |
4. Copy the .exe file to your '''dosemu''' "C" drive: {{{ cp I545-A12.EXE ~/.dosemu/drive_c }}} |
| Line 50: | Line 94: |
| === Installing biosdisk for Ubuntu === | 5. Back in the '''dosemu''' window, type: {{{ dir }}} and confirm that the BIOS update's .EXE file is there. |
| Line 52: | Line 98: |
| 1. Download the latest tarball (.tar.gz archive) version of biosdisk from http://linux.dell.com/biosdisk to your home directory. Version 0.65 was released in 2004 and is the latest as of September 2007. 1. Open a terminal window by going to Applications | Accessories | Terminal 1. Extract the archive: {{{ tar -zxvf biosdisk-0.65.tar.gz }}} 1. Edit the first line of the '''install.sh''' script to use bash instead of sh: {{{ gedit install.sh }}} 1. The line should look like this once edited: {{{ #!/bin/bash}}} 1. In the same file, comment out the line where templates for rpm systems are copied. The last few lines of the file should then look like this: {{{ #install -m 644 biosdisk-mkrpm-redhat-template.spec /usr/share/biosdisk #install -m 644 biosdisk-mkrpm-generic-template.spec /usr/share/biosdisk install -m 644 biosdisk.8.gz /usr/share/man/man8 }}} 1. Two packages are needed for biosdisk to work. They are both part of the main repository. The following command will install them: {{{ sudo apt-get install tofrodos syslinux }}} 1. Edit the first line of the '''biosdisk''' file to use bash instead of sh: {{{ gedit biosdisk }}} 1. The line should look like this once edited: {{{ #!/bin/bash}}} 1. Now the install script can be invoked: {{{ sudo ./install.sh }}} 1. If you don't get any output, the install should have completed succesfully. To verify your installation is complete, invoke biosdisk without any parameters, as root: {{{ sudo biosdisk }}} |
6. Type the name of the BIOS file (e.g. `I545-A12`) and hit return to start it up. You should see a '`Copyright (c) Foxconn LTD 2001-2007...`' message and importantly messages '`Decompress the exe file`' and '`Decompress the bin file`'. Unfortunately, you'll also notice that it ends with an error message and '`ALL Files removed!`' at the bottom. So this is where you need to get quick with your fingers, because we need to get those files before they disappear! |
| Line 69: | Line 100: |
| === Creating a bootable floppy disk === | Run the BIOS upgrade file again in the DOS box, and wait until it says '`Begin to check the bin file`'. Immediately press Ctrl-C on the keyboard to cancel and exit the program before it fails and erases the files we need. Make sure the files you need are there by typing: {{{ dir }}} If you don't see files named something like `AFU877.EXE` (probably the same for everyone) and `8A1D1P34.BIN` (probably different for everyone), you hit Ctrl-C a moment too late. Just re-run the original .EXE file and try to kill it at the right moment. The .BIN file should be around 1-2MB in size, depending on the BIOS. |
| Line 71: | Line 104: |
| The '''mkfloppy''' action will create the biosdisk image and write it directly to a floppy disk. Usage is the following: {{{ biosdisk mkfloppy [-o option] [-d device] [-k baseimage] /path/to/.exe }}} |
7. Copy the files to your "floppy" drive image: {{{ cp ~/.dosemu/drive_c/afu877.exe /tmp/floppy cp ~/.dosemu/drive_c/8a1d1p34.bin /tmp/floppy }}} |
| Line 74: | Line 109: |
| If you are using an external USB floppy drive, make sure you use the -d option to refer to it, for example: | 8. That's it for the DOS stuff so you can close the DOS box down. Now to tidy up and prepare to run the update: {{{ sudo umount /tmp/floppy sudo mv FDSTD.288 /boot/biosupdate.img sudo apt-get install syslinux sudo cp /usr/lib/syslinux/memdisk /boot/ }}} |
| Line 76: | Line 116: |
| === Creating a floppy disk image file === The '''mkimage''' action will create a floppy image on the user's hard drive. Usage is the following: {{{ biosdisk mkimage [-o option] [-i destination] [-k baseimage] /path/to/.exe }}} |
9. You now need to add the biosupdate boot image to your grub (system boot) menu. You can do this from the command line like this: {{{ sudo cat >> /etc/grub.d/40_custom menuentry 'Dell BIOS Flash Updater' { set root='(hd0,msdos1)' linux16 /boot/memdisk initrd16 /boot/biosupdate.img } }}} 10. Press '''Ctrl-D''' to save your changes to that file. |
| Line 80: | Line 126: |
| === Creating a RedHat / Fedora package === The '''mkpkg''' action will create the floppy image, and use it to create a user-installable package specific to the distribution (example: RPM). When the package is installed, it will use the distribution's built-in tools to update the system's bootloader so that the user can boot to the image from the hard drive to flash the BIOS, without needing a floppy drive. Currently only Red Hat/Fedora RPM packages are supported. '''This method will not work in Ubuntu'''. Usage is as follows: {{{ biosdisk mkpkg [-o option] [--install] [--distro=] [--name=] [--version=] [--release=] /path/to/{.exe | .img} }}} |
11. Restart your computer. As soon as it starts to boot from the hard drive, hold down the '''Shift''' key to make the Grub menu appear. |
| Line 84: | Line 128: |
| === Installing an image in the bootloader === The '''install''' action will create the biosdisk image, copy the image file to /boot, and then update the bootloader with an entry for the image. Then all the user has to do is boot the system and select the image to flash the BIOS; this will load the biosdisk image directly from the hard drive and flash the BIOS. Usage: {{{ biosdisk install [-o option] [--name=] /path/to/{.exe | .img} }}} |
12. At the Grub menu select the final entry (the one you just added; it should say "Dell BIOS Flash Updater") and press Enter. 13. FreeDOS should now start up. If you get prompts for the date and time just press Enter until you get to the '''A:>''' prompt. 14. Start the BIOS update by typing the following (substitute the name of the .EXE and .BIN files you extracted from the Dell download, as appropriate): {{{ afu877 8a1d1p34.bin }}} 15. Follow the prompts, reboot, and confirm that your BIOS was updated. = Obtaining and using an image from the WinPhlash utility = Firstly, you need WINE to obtain the image from the archive: {{{ wine /path/to/biosupdater.exe }}} Then extract and attempt to run the updater, which will fail, but place a file named '''BIOS.ROM''' in {{{C:\Windows\Temp\WINPHLASH\}}}. Now download the '''phlash16.exe''' utility, which will actually perform the flash using BIOS.ROM. If this method doesn't work, you may have downloaded a newer installer. You can then try: {{{ wine /path/to/biosupdater.exe /WriteRomFile }}} which will extract the ROM file in the same directory: {{{ /path/to/biosupdater.ROM }}} Assuming the image from biosdisk is called bios.img, next mount the image somewhere and modify it (as root): {{{ mount -t vfat -o loop,rw /path/to/bios.img /mnt/somewhere rm -f /mnt/somewhere/{xxxx.exe} cp ~/.wine/drive_c/windows/temp/WINPHLASH/BIOS.ROM /mnt/somewhere cp /path/to/phlash16.exe /mnt/somewhere umount /mnt/somewhere }}} Now write the image to a floppy or boot it with GRUB as before, but once you get a command prompt and autoexec.bat has failed, type: {{{ phlash16.exe BIOS.ROM }}} = Obtaining the phlash16.exe Utility = One way of getting phlash16.exe has been described [[http://www.ruzee.com/blog/2010/01/dell-studio-15-bios-update-with-linux|previously]]. The relevant directions from there are reproduced in what follows. [[ftp://ftp.dell.com/bios/1747A04_DOS.exe|1747A04_DOS.exe]] has been successfully used before, though [[ftp://ftp.dell.com/bios/|other archives from Dell]] may also work. After downloading the suitable file, use DosBox to extract it: {{{ sudo apt-get install dosbox }}} In the directory where you just downloaded the file: {{{ dosbox . }}} In the DosBox window, type the name of the executable. It will give an error, but upon closing it, and inspecting your directory, you should see that the archive was extracted and phlash16.exe should now be present. ---- CategoryLaptop |
Introduction
BIOS update utilities and files are often provided as .exe files. The BIOS updates work by booting the machine into DOS using a USB or floppy (FreeDOS or MS-DOS) and then running an executable to reflash the BIOS.
This guide provides information for Dell users to use such files without using Windows.
Checking your current BIOS version
The current BIOS version can be checked by this command from Ubuntu:
sudo dmidecode -s bios-version
The current BIOS release date can be obtained by invoking:
sudo dmidecode -s bios-release-date
Upgrading the BIOS and hardware firmware for PowerEdge servers
CentOS
One of the easiest methods requiring no server configuration is to upgrade PowerEdge servers via booting into a CentOS 7.0 x64 live environment (USB is faster but one may want to use CD/DVD due to a limited number of USB ports), load the firmware BIN files onto a FAT32 USB drive, execute the following in a terminal to find the path to the USB drive, and launch the .BIN extension firmware file:
df -h sudo bash FILENAME.BIN
This is how the files were developed assuming one is using Red Hat. As well, while one of the files tested worked by default in Ubuntu (ex. firmware update for Broadcom BCM5720 NetXtreme Gigabit Ethernet Adapter), running the .BIN file for the iDRAC firmware initially complained of missing packages (ex. rpm, stty, gzip, among others) despite gzip being confirmed installed. Installed rpm, executed the .BIN file and this caused the server to start to reboot and then hang, which after a hard shutdown, and booting into the Lifecycle Controller the firmware was not upgraded. However, the same .BIN file worked flawlessly in CentOS.
Dell OpenManage Ubuntu Repository
For more on this, please see http://linux.dell.com/repo/community/ubuntu/.
Upgrading with a FreeDOS USB drive
Follow the directions here to create a FreeDOS USB drive: http://chtaube.eu/computers/freedos/bootable-usb/
After you've done that:
1. Eject the USB drive, then re-insert it so you can see the new FreeDOS file system.
2. Copy your BIOS update file to the drive.
3. Reboot, press F12 for the one-time boot menu, and boot from the USB Storage Device.
4. Choose "fdos".
5. Choose "4 - Load FreeDOS without drivers."
6. Execute the BIOS update.
Using WINE to extract the BIOS image for a Dell Inspiron 1525
sudo apt-get install firmware-addon-dell libsmbios-bin wine update_firmware sudo modprobe dell_rbu
Check your BIOS version number:
sudo dmidecode -s bios-version
Download the BIOS update .exe from Dell's support site, then run:
wine 1525_A17.EXE -writehdrfile -nopause
Check it outputs a .hdr file:
ls *.hdr
Then use this file:
sudo dellBiosUpdate -u -f 1525_A17.hdr
Reboot:
sudo reboot now
One should see a BIOS update screen. Please ensure you do not restart, or lose power during this process. Once it reboots automatically, one may see if it took via:
sudo smbios-sys-info
Updating the BIOS by booting into firmware directly
1. Obtain the appropriate BIOS .EXE file for your computer from http://support.dell.com (search under "drivers & downloads"). Download it to your hard drive. In this example we'll use the filename I545-A12.EXE but it will be different for you if you have a different Dell model (or a newer BIOS revision).
2. We need to create a 2.88MB "floppy" disk image (1.44MB is too small for the uncompressed BIOS code) and mount it. Note that FreeDOS doesn't provide an 'empty' 2.88MB boot disk so we need to delete the "fdos" utility folder to get space. We'll need to obtain a FreeDOS disk image and mount it:
wget http://www.fdos.org/bootdisks/autogen/FDSTD.288.gz gunzip FDOEM.288.gz mkdir /tmp/floppy sudo mount -t vfat -o loop,quiet,umask=000 FDSTD.288 /tmp/floppy rm -rf /tmp/floppy/fdos
Note that that last step is crucial to free up sufficient space on the "floppy".
3. Next we need to install dosemu (a DOS emulator) so we can extract the BIOS files from the Dell installer but with unlimited diskspace:
sudo apt-get install dosemu dosemu
You should get a window pop up that looks like DOS with the C drive active. What you are actually seeing is a dosemu 'virtual' drive, who's actual location on your Ubuntu system is ~/.dosemu/drive_c
4. Copy the .exe file to your dosemu "C" drive:
cp I545-A12.EXE ~/.dosemu/drive_c
5. Back in the dosemu window, type:
dir
and confirm that the BIOS update's .EXE file is there.
6. Type the name of the BIOS file (e.g. I545-A12) and hit return to start it up. You should see a 'Copyright (c) Foxconn LTD 2001-2007...' message and importantly messages 'Decompress the exe file' and 'Decompress the bin file'. Unfortunately, you'll also notice that it ends with an error message and 'ALL Files removed!' at the bottom. So this is where you need to get quick with your fingers, because we need to get those files before they disappear!
Run the BIOS upgrade file again in the DOS box, and wait until it says 'Begin to check the bin file'. Immediately press Ctrl-C on the keyboard to cancel and exit the program before it fails and erases the files we need. Make sure the files you need are there by typing:
dir
If you don't see files named something like AFU877.EXE (probably the same for everyone) and 8A1D1P34.BIN (probably different for everyone), you hit Ctrl-C a moment too late. Just re-run the original .EXE file and try to kill it at the right moment. The .BIN file should be around 1-2MB in size, depending on the BIOS.
7. Copy the files to your "floppy" drive image:
cp ~/.dosemu/drive_c/afu877.exe /tmp/floppy cp ~/.dosemu/drive_c/8a1d1p34.bin /tmp/floppy
8. That's it for the DOS stuff so you can close the DOS box down. Now to tidy up and prepare to run the update:
sudo umount /tmp/floppy sudo mv FDSTD.288 /boot/biosupdate.img sudo apt-get install syslinux sudo cp /usr/lib/syslinux/memdisk /boot/
9. You now need to add the biosupdate boot image to your grub (system boot) menu. You can do this from the command line like this:
sudo cat >> /etc/grub.d/40_custom
menuentry 'Dell BIOS Flash Updater' {
set root='(hd0,msdos1)'
linux16 /boot/memdisk
initrd16 /boot/biosupdate.img
}10. Press Ctrl-D to save your changes to that file.
11. Restart your computer. As soon as it starts to boot from the hard drive, hold down the Shift key to make the Grub menu appear.
12. At the Grub menu select the final entry (the one you just added; it should say "Dell BIOS Flash Updater") and press Enter.
13. FreeDOS should now start up. If you get prompts for the date and time just press Enter until you get to the A:> prompt.
14. Start the BIOS update by typing the following (substitute the name of the .EXE and .BIN files you extracted from the Dell download, as appropriate):
afu877 8a1d1p34.bin
15. Follow the prompts, reboot, and confirm that your BIOS was updated.
Obtaining and using an image from the WinPhlash utility
Firstly, you need WINE to obtain the image from the archive:
wine /path/to/biosupdater.exe
Then extract and attempt to run the updater, which will fail, but place a file named BIOS.ROM in C:\Windows\Temp\WINPHLASH\. Now download the phlash16.exe utility, which will actually perform the flash using BIOS.ROM.
If this method doesn't work, you may have downloaded a newer installer. You can then try:
wine /path/to/biosupdater.exe /WriteRomFile
which will extract the ROM file in the same directory:
/path/to/biosupdater.ROM
Assuming the image from biosdisk is called bios.img, next mount the image somewhere and modify it (as root):
mount -t vfat -o loop,rw /path/to/bios.img /mnt/somewhere
rm -f /mnt/somewhere/{xxxx.exe}
cp ~/.wine/drive_c/windows/temp/WINPHLASH/BIOS.ROM /mnt/somewhere
cp /path/to/phlash16.exe /mnt/somewhere
umount /mnt/somewhereNow write the image to a floppy or boot it with GRUB as before, but once you get a command prompt and autoexec.bat has failed, type:
phlash16.exe BIOS.ROM
Obtaining the phlash16.exe Utility
One way of getting phlash16.exe has been described previously. The relevant directions from there are reproduced in what follows. 1747A04_DOS.exe has been successfully used before, though other archives from Dell may also work. After downloading the suitable file, use DosBox to extract it:
sudo apt-get install dosbox
In the directory where you just downloaded the file:
dosbox .
In the DosBox window, type the name of the executable. It will give an error, but upon closing it, and inspecting your directory, you should see that the archive was extracted and phlash16.exe should now be present.
DellBIOS (last edited 2015-02-04 01:52:30 by penalvch)