as of 2 minutes ago (from starting to write this), I have finally managed to backup, flash, and test an AMD/ATI card bios without access to a windows system. This procedure uses only free software. I am fairly positive this will work across most ATI/AMD cards, I will be doing more extensive testing tomorrow, but here is the procedure. so far tested on one Sapphire 5850 with absolutely no problems.
EDIT: works on some machines without a FAT32 partition on the hard drive, in order to solve some problems on one of my machines, I did need a FAT32 partition though.
Small FAT32 partition on hard drive
USB stick (500mb+ partition)
I have paraphrased some portions of this tutorial from: http://forum.bitcoin.org/index.php?topic=11746.0
-- a very informative post on flashing in linux.
1) DON'T BREAK YOUR VIDEO CARD. THIS IS ALL INSANELY DANGEROUS TO YOUR HARDWARE.
2) add http://wine.sourceforge.net/apt/
as a repository
>sudo apt-get install unetbootin syslinux winetricks wine
3) use utility of your choice to make a bootable FAT32 partition on your USB stick and format it.... what I did was:
> sudo cfdisk /dev/sdc --- of course, replace sdc with your usb stick's device
deleted all partitions and made one Win95 FAT32 ( 0C -- that is the number 12 in hex) remember to make it bootable
then mount sdc1 wherever you like
> sudo mkdosfs -F32 /dev/sdc1
4) go to Applications>System Tools>UNetbootin
5) select FreeDOS for the distribution and make sure your usb stick is selected at the bottom then click "ok"
6) download http://www.techpowerup.com/downloads/1962/TechPowerUp_Radeon_Bios_Editor_v1.28.html
and make a directory to do all of this flashy work in, and move those files there
8 ) unzip atiflash
9) enter the atiflash directory and make the following files. One line per GPU that you have, and increment the numbers by one for each GPU. These are examples are for four GPUS:
atiflash -s 0 backup0.rom
atiflash -s 1 backup1.rom
atiflash -s 2 backup2.rom
atiflash -s 3 backup3.rom
atiflash -f -p 0 backup0.rom
atiflash -f -p 1 backup1.rom
atiflash -f -p 2 backup2.rom
atiflash -f -p 3 backup3.rom
atiflash -f -p 0 bios0.rom
atiflash -f -p 1 bios1.rom
atiflash -f -p 2 bios2.rom
atiflash -f -p 3 bios3.rom
10) copy atiflash.exe and all of the .bat files you have just created to your USB stick or a FAT32 partition on your harddrive.
>sudo cp /usr/lib/syslinux/memdisk YOUR_USB_MOUNTPOINT
12) boot from the USB stick. Choose "FreeDOS LiveCD" from the boot loader -- NOTE: your USB stick may be detected as a hard drive, or a removable disk, mine switched between the two a few times.
13) check drive letters until you find the one the has the .bat files and atiflash.exe -- usually d:
-- look for backup0.rom -- it should be more the 0 bytes .. should be 128 kilobytesish If it is you have been successful, if it is 0 bytes than you likely did not have write permission, which is a problem I struggled with for quite a while until I finally made a FAT32 partition on my actual harddrive and that solved my issue.
16) reboot into linux
17) copy BACKUP*.ROM into whatever folder you're using to store all of this flashy stuff.
18) in a terminal navigate to the directory that you downloaded RBE into and then execute
> wine RBE_128.exe
19) click "load bios", navigate to wherever your .ROM is now saved
20) edit the bios to your heart's content, the main option you'll be wanting to change is in the "additional features" tab, where you can edit the allowable maximum clock speeds that other programs (like aticonfig) can set.
21) save the bios as bios0.rom and repeat for each GPU you backed up, and also copy them to your FAT32 partition.
22) reboot to your USB stick in FreeDOS Live CD again. and navigate to the drive where all your updated bioses are stored.
23) execute each flash#.bat that you want to update.
24) DO NOT let the computer get interupted while updating the bioses. bad things can happen.
25) reboot. If anything doesn't work properly boot from the USB stick and run restore to hopefully fix it.
I accept no responsibility for anything that goes terribly wrong when you try to follow these directions, but I hope people find it useful.
I will come back and edit this for readability as I get more experience with the process and time to do so. I will also do my best to answer any questions that anyone might have, though I make no guarantees.
Anyone who wants to pay and/or donate for the work I did developing this, will be very appreciated.
Thank you, and I hope this has been helpful.