BSD Bootloader ‘Read Error’

Posted in Technical on February 17th, 2006 by p14nd4

As part of my home network, I have been using an HP Vectra VL5/166 Series 5 DT Pentium 166 MHz computer as my NAT router for several years now. I used IPCop (Linux-based) since its 1.3 release, followed by 1.4 for quite a while, and then decided I should give m0n0wall (BSD-based) a try, starting at the 1.2b9 release. m0n0wall was originally designed to run on embedded / SBC systems, especially Soekris boards, which boot off a CF card. It was later [easily] adapted to run on generic PCs, though there’s no real method provided to install it, other than performing a ~5 MiB disk image copy to the hard drive. I tried this (using Knoppix textmode, wget the image, then dd), but was plagued by a Read error after loading the BIOS. I worked on trying to fix this for quite a while, to no avail. Eventually I conceded defeat and just used the m0n0wall LiveCD to boot the system, and stored the configuration on a floppy disk. I later experimented with pfSense very briefly, which is a modification of m0n0wall with a somewhat different target audience and different goals in mind. Of particular interest to me was the fact that after booting from the LiveCD, it provides an actual [optional] installer, which I hoped would avoid the problems I ran into with m0n0wall. Long story short, after about 6 attempted installs, it still didn’t work, so once again, I conceded defeat, and kept on truckin’ with the m0n0wall LiveCD.

Fast forward about five months…

m0n0wall (1.2b9, LiveCD + floppy for config) was very stable … no lockups or reboots (planned or unplanned) for the whole time. One night, I decided to reboot all my computers including the m0n0wall router. Anyway, after it booted back up, it was acting strange … and then started telling me errors like no XML object found, etc. I pulled out the floppy disk, and checked it in my desktop, which spent about 10 minutes trying to read the ~12 KiB file, and later chkdisk confirmed that there were 512 bytes in bad sectors. Crap. Rather than just rebuilding my configuration, though, I decided to go all out and try the new pfSense Beta (finally out of alpha), which put me back in the situation of fixing the Read error once the system actually hit the BSD bootloader.

Read error THIS, bitches!

I googled briefly, and came across a page Why does FreeBSD’s boot loader display Read error and stop after the BIOS screen? Well, that seemed to capture the essense of my problem fairly well, so I gave it a go. There was some confusion to this issue, though, as my BIOS initially reported the disk was 16,383 cylinders, whereas the BSD bootloader installer [correctly] recognized that it was 39,703 cylinders. I tried various combinations of either using the BIOS’s wrong value in the bootloader installer, or entering the right value in the bios and bootloader, or entering a third value in both (somewhere between what the BIOS thought and what the hard drive thought); none of these approaches worked. I also tried most of these combinations without the default ‘packet mode’ selected when installing the bootloader; again, no success. I even tried partitioning the disk into ~1 GiB partitions, in case the issue was with using a partition sized greater than a 32bit address; still no luck. Eventually, I pulled out my trusty Ultimate Boot CD (UBCD), and started going through the boot loaders provided on there. I didn’t make it through the whole list, because when I got to GAG, I was easily able to go into setup -> add operating system -> select FreeBSD from the list and name it/pick an icon, then configure Boot timer to ~2 seconds (so that it will boot without my interaction, since the router is almost always headless / keyboardless), and pick the OS that I just added as the default choice. Lastly, selecting Save in Hard disk immediately installed the bootloader to the drive, and I was able to boot like a charm! It’s frustrating how quickly and easily GAG worked after I spent hours trying more complicated solutions…

Anyway, I’m glad it works. I’ve mostly reconfigured my router with pfSense installed to the hard drive now, and it seems to be working fairly well. I haven’t checked out the Beta1 known bugs yet, but the first bug I’ve observed seems too obvious to even imagine someone hasn’t posted. I guess the pfSense logo is set as a background image (css, presumably … I haven’t actually looked at the code), so they use a transparent image statically placed above it for the actual linking (to the main page). For me, this image (http://arvin.local:446/themes/pfsense/images/transparent.gif) is missing (404 – Not Found) in each of the three themes provided with pfSense, so I get a nice little rectangle with the word Transparent (the alt text) above the pfSense logo. Aside from that, everything else has been sweet like candy. There’s rumor that I can even get more info than just traffic stats from SNMP (for use on my cacti box), but I haven’t looked into that very much yet. Anyway, I hope this can help someone else with a similar problem to mine. I don’t just write these technical posts because I like to regale myself with stories of grueling troubleshooting and frustration ;). Good luck, and have fun.

Programming Assignments

Posted in Technical on February 16th, 2006 by p14nd4

Well, my final full semester has started, which includes a fairly grueling schedule totaling 20 credits of 4000-5000 level csci courses. Crazy? Yes. Am I going to do well in all my classes? No. Am I going to take a year or two off my life through sleep deprivation? Probably. Regardless, I’m taking some classes that are finally of potential interest to me. The University of Minnesota B.S. Computer Science program requires that students declare an upper division emphasis, which I kind of made up on a whim the night I realized I had to register for my classes. If you clicked the link above, you know that three of my classes are network and/or internet programming (which happens to probably be my area of most interest), so my emphasis was named something along the lines of Internet/Information Services.

Anyway, the two network programming courses I’m in have just released their [first] big programming assignments for the semester, both of which are kind of interesting, and I dare say I might even be excited to work on them. If you counted, you’ll notice that still leaves me with four other classes about which I have not expressed any excitement. Three of those aren’t bad per se, just not necessarily exciting to me. The fourth is Data Mining. My feelings on that class can be easily summarized as follows:

:-(

…But I digress. Getting back to my main motivation for this post, which was to talk about these two programming assignments.

Csci4211 – Introduction to Computer Networks

The full assignment is defined here, if you’re eager enough to actually read about it yourself. The assignment is titled Peer-to-Peer (P2P) File Sharing System with Messaging, which is fairly self explanatory. To understate the situation, it’s not going to wipe out Kazaa or BitTorrent any time soon, as it will be written for a command-line/console interface (no GUI), and (based on my brief scan of the assignment) can only actually exchange files between directly connected nodes (there’s no central server).

Inet4021 – Network Programming

Dammit. I hibernated my computer and lost the paragraph I’d already written about this assignment. Surely this time around will be less exciting than the first; I apologize. That said, I’ll proceed. The assignment is only available in .doc format here, which you probalby don’t want to go to the trouble of downloading and opening, so I’ll summarize. The assignment is boringly titled Lab #3, which isn’t of much use to you, but the primary objective is: Based on RFC 1945, you will need to write an HTTP client that meets the 1.0 specification. For the less technically oriented individuals out there, an HTTP client is more commonly known as a web browser (such as Internet Explorer). This ain’t yo’ momma’s web browser, though… Don’t expect pretty graphics, flash animations, or anything fun like that … a closer comparison would be wget, though this is even less advanced than that. I think a more fitting description would be a URL document grabber. It’s approximately equivilent to going to Start -> Run -> cmd, and typing:

telnet www.umn.edu 80
GET / HTTP/1.0

[Press enter twice]

This returns the following, which is approximately what I understand this program is supposed to output:

HTTP/1.1 302 Found
Date: Fri, 17 Feb 2006 00:23:25 GMT
Server: Apache/1.3.33 (Unix) mod_fastcgi/2.2.12 mod_ssl/2.8.23 OpenSSL/0.9.7g
Location: http://www1.umn.edu/twincities/index.php
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC -//IETF//DTD HTML 2.0//EN>
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF=http://www1.umn.edu/twincities/index.php>here</A>.<P>
<HR>
<ADDRESS>Apache/1.3.33 Server at www.umn.edu Port 80</ADDRESS>
</BODY></HTML>

To continue my line of reference from aboive, this client certainly isn’t going to blow Internet Explorer out of the water. Considering my dream job (take that very lightly) is working for Opera Software ASA, this project is of particular interest to me. I actually kind of wish it was a more extensive project (though, don’t quote me on that in three weeks when it’s due, and I haven’t started yet).

Intel 802.11b 2100 3B finally working with 3Com OfficeConnect 3CRWE454G72

Posted in Technical on January 30th, 2006 by p14nd4

A wordy title, to be sure, but I figured I would post my "news" here, after struggling with this for so long. If you’ve read my previous post(s), you’ll know that I’ve experienced tremendous difficulty and aggravation with my 3Com OfficeConnect Wireless 11g Access Point (3CRWE454G72). The most recent round of fun I had with this AP was after buying my IBM (Lenovo) ThinkPad T41 2373-5U2 (pics), which includes an installed mPCI Intel 802.11b (2100 3B "Intel Pro Wireless LAN 2100 3b Mini PCI") wireless client adapter. Of course I eagerly set up the laptop and try to connect to the network/internet through my AP. Apparently 3Com thinks that’s a silly idea, and gave me a big NOYUO (well, not quite, but I pretty much couldn’t get the laptop to associate with the access point, pick up an IP via DHCP, or any of that fun stuff). After only a few months earlier going through a similar experience with my Fujitsu LifeBook P-1035 (Prism II) and the same access point, only to later find out that 3Com acknowledged this was a problem with their firmware (in the sense that they fixed it, and listed it as such in the changelog), I didn’t put too much more effort into what I assumed was a lost cause (since I can’t fix the proprietary 3Com firmware, and they were already tired of me whining about a handful of problems from before their previous firmware fix).

It wasn’t until today … a couple months after buying this laptop, that I stumbled across this enlightening article on Intel’s site, noting that "PSP (Power Save Polling) Causes Connection Issues With Some Access Points." Durrr… After seeing the title, I was already fairly sure what the solution was, but I read through the article anyway, which notes:

If the wireless access point / wireless gateway does not properly support the PSP feature, intermittent loss of wireless connection, inability to initiate a wireless connection, or poor wireless connection data performance could result. The symptoms may be more pronounced when on battery power.

Contact the access point vendor for an updated software which corrects the problem. [Heh, yeah, I won’t hold my breath.]

As a temporary workaround, manually set the adapter to CAM (continually aware mode), which disables the PSP capability. To do this, in either Intel® PROSet for Wireless Software or the Network Control Panel Applet (NCPA), in the power management section, uncheck the DEFAULT / AUTO selection and set the slider for HIGHEST / MAXIMUM PERFORMANCE.

Battery life be damned, I guess, if I need to use my laptop with my own access point. I suppose it’s better that it worked out this way … that I could connect to every other AP I’ve ever tried, except the one I own, rather than only being able to connect to mine, and no one else’s (for instance, in class, at the coffee shop, at a friend’s place, etc.). I’ll probably send 3Com another email, and link them to the Intel page noted above, but if they haven’t fixed it already, it seems somewhat improbable that one email is going to weigh very heavily on their minds. That said, I am surprised that such a conflict has not arisen more frequently. The ThinkPad line seems moderately popular, as does the Intel 2100 mPCI card. I’m not sure why I would be the first person with this particular combination of hardware (and IBM does set the power save level to medium by default (this is where I experienced problems)), nor does it seem like 3Com would neglect to test such a popular card (from my observations, anyhow) with their hardware. I’m sure the reasons behind this will remain a mystery to me, but there something worth pondering. I hope this can help at least someone else out there on THE INTERNET! from some of the frustration that I’ve experienced. Enjoy. G’night.

Edit: [2006-02-06T03:28-0600]
Perhaps my jubilation was premature. Although I successfully used my wireless network for several hours the night this was posted, I was right back where I started, when I tried using my laptop a couple nights ago. I connected up to the AP right after starting up my laptop, signed onto my captive portal, and WiFi was working … then about ten minutes later, there was approximately no connectivity (no pinging the AP, or the device behind it … nothing even appearing in the ARP cache. I’ll keep this updated if I find out anything else useful.