More on BIOS hacking

2003 February 11
by darkness

Today was the day to finish the setup on a firewall/LTSP server, and to test one of the thin clients that go with it.

The server was pretty much a snap and should be ready to go. Red Hat has a new kernel out for RH8.0, 2.4.18-24 if memory serves. There aren’t any readily available FreeS/WAN RPMs that I saw, so I had to update my FreeS/WAN spec file to build with the new stuff. I took the opportunity to make it build correctly as a regular user too, which has the side effect of not screwing up the kernel source in /usr/src. On the down side, this means making a copy of /usr/src/linux-2.4. Anyway, it worked. I’ll try and remember to post my spec and maybe my patches, if relevant, here later. (Right now the machine is turned off and I don’t particularly feel like plugging it back up.)

Now we move on to the somewhat sore subject of the client. I told the person procuring these “thin clients” (read: stripped down PC) that I needed something that would net boot, and I needed to test it before they bought it — unless they specifically contained something normal like an Intel or 3Com card. Did I get one to test? No. They gave me a slightly computer that supposedly used the same motherboard, and they gave it to me late in the game. That was when I did my previous BIOS hacking excursion, which miraculously worked. So now the final product gets in, so I mail the BIOS off to my co-worker (read: boss) and tell him to flash it to all the PCs, look for “something weird as a boot option,” and we should be good.

I remember him calling and talking about how he was having trouble flashing. I told him he just needed to try about every AMI flash utility on the Amptron (the manufacturers of these PCs) website and one should work. I cannot recall him calling me back to tell me anything different other than (basically) “everything is flashed.” So he asks me to test one of the PCs, so I bring it home.

Somehow I knew something wasn’t going to be right, but I didn’t really know what. Perhaps I should have taken the hint that none of the computers were packed up; they’re all sitting on a table, lined up, built, but not boxed or anything. (We’re delivering… this Wednesday. Date was just set… Monday.) Anyway, I boot the thing up, no Etherboot. I check the BIOS and, lo, there is no via-rhine.lz boot option. Hark, I believe this computer has not been flashed at all! Indeed, it proceeds to quite happily go in to the Novell RPL boot loader, which I do believe I had removed from my BIOS.

I don’t have any real concrete evidence to prove that he didn’t flash the computers, I suppose. Maybe the flash utility thinks it worked. Still, I think my instruction of “something real weird” in the boot menu should have been a sufficient test, because there wasn’t anything in the boot menu that looked out of place until you loaded my BIOS. Given this particular person’s history, I do not give him the benefit of the doubt, and instead speculate that one of two things happened. The first possibility is that he couldn’t figure out the flash, left it for a few days, then thought for some reason he’d done it. To every computer, I guess. The second possibility is that he couldn’t get it to load, didn’t want to keep fucking with it (i.e., work) and instead decided to hand me the computers in the hope that either (a) they’d magically work, or (b) I’d fix them (a.k.a., doing his work for him).

Needless to say, I’m a bit incensed about this.

Anyway, it turns out my handy AMINF332.EXE wasn’t going to flash this board for me. The board, incidentally, should be identical to the one I originally made the BIOS for and tested with; apparently it is not identical. The flash utility was giving me the lovely “No chipset/part” error, or some such. At some point I found the magic /X flag to the AMI flash utility. This is a little interactive text UI with menus and such where you can select options a bit more easily. Here I found a catalog of “chipsets” and “parts.” I eventually figured out that I needed to manually select my VIA chipset (which was actually marked P4M266/8233C in AMINF332.EXE) and my flash “part” number. I found the 8233C bit when I found out that VIA actually makes this whole motherboard and read some docs on their site. For the flash chip I actually peeled the sticker off of the BIOS chip and roughly matched the part number to a similar part number in the flash utility’s catalog. After this, you select the file you want to flash, and it goes about doing it.

This actually ended up working, even in spite of a mistake or two I made. For example, one time I accidentally picked the wrong part and ended up trying to flash some AMD flash chip. The computer hung when it went to try and write the BIOS, and the BIOS was intact upon cold boot. I think I may have even used the latest AMI flash utility off of Amptron’s site.

Tomorrow: my revenge upon those who would deceive me!

1 Comment leave one →
2004 March 3

tools for bios hacking

Leave A Comment

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS