I have a FreeBSD file server sitting in my office that has happily been serving files for a few years now. But the server is built from a conglomeration of very old parts and some of them are now wearing out. I am in the process of building another PC from old parts to replace the existing server.
One of the old parts is an Adaptec 29160 SCSI controller that will host a used Maxtor Atlas 10K4_36LWS 36 GB SCSI drive and a used Seagate ST173404LC ~80 GB SCSI drive. The Seagate, having an 80-pin connector, has an adapter to get it to work with the 68-pin cable for the Adaptec. When I got the "new" server assembled and booted it to run the SCSI disk utilities and reformat the drives, the controller saw the Seagate drive as a 4 GB drive. This just would not do. I needed a BIOS update for the 29160 controller which Adaptec supplies as an .exe for extraction and use with a bootable floppy.
Here's the problem, my new PC systems all are built without floppy drives. The motherboards do not even have floppy controllers on-board. I have been meaning to buy a USB attached floppy drive Real Soon Now™ for about 2 years and never have. I am doing the work to replace the server this weekend because the old system cannot even be backed up at this point. It gives SCSI errors and reboots if lots of disk calls are made sequentially, which happens when streaming data to the backup server. So, I need to get this server replaced now, today.
The "new" server does have a floppy drive as it is using an older technology motherboard and I have some floppy drives sitting on a shelf in my office, just in case I need one … like today. My Linux router built from a ~5 year old Compaq Presario tower PC that was given me by a friend / client, also has a floppy drive. My Mandriva Linux desktop business PC is running VirtualBox with a copy of Windows XP Professional installed in a virtual machine. So, I figured out a process to get a floppy made from which I could boot the "new" server and update the 29160's BIOS.
First I ran this command to create a 1.44 MB diskette image file:
mkdosfs -C 29160upd.img 1440
Then I started the XP Pro virtual machine, mounted the diskette image and "formatted" it as a bootable diskette. Once that completed I ran the .exe from Adaptec to extract the BIOS update utility and files and copied those to the mounted diskette image. Then I detached the image from the virtual machine and copied it to my Linux router, where a floppy drive resides. But wait … there were no floppy devices in the /dev/ directory. This was a stumper. But this command found something interesting:
locate floppy|grep dev/
I noticed a file for udev, the device creation and maintenance utility, that looked promising:
A quick look at the help output for create_floppy_devices gave the clue I needed. This command, run as root, made the floppy devices that I needed to use the floppy drive:
/lib/udev/create_floppy_devices -c fd0
Then I used the good old 'dd' command to copy the diskette image to a floppy disk:
dd if=29160upd.img of=/dev/fd0
I had to try three old diskettes before I found a good one. Once that completed without errors I removed the diskette, placed it in the "new" server, detached the SCSI cable from the controller per the instructions that came with the utility, and powered on the "new" server to boot from the diskette. The BIOS update ran successfully and the controller "saw" the correct size of the Seagate drive. It is now reformatting that Seagate drive for use with a fresh FreeBSD install.
Hopefully, some of you that find this article will be able to use this information to fix your own old controller or motherboard that requires a diskette based utility. If you do, please share a comment with us about your experience.
|free hit counter download|
Notice: All comments here are approved by a moderator before they will show up. Depending on the time of day this can take several hours. Please be patient and only post comments once. Thank you.