I've progressed with my 486sx stuff to the point where everything boots and runs happily most of the time. However, I have a repeatable hard kernel crash that I'm trying to track down. It appears to be resource-related, in that if I take the bootable memory stick and plug it into my laptop it copes properly. However, that's got 1.5GB of RAM, whereas the 486sx target only has 128MB. The running system only consumes about 30-34MB so it's not a memory issue as such, more a case of how kernel resources are allocated.
The problem is that when the kernel oops occurs, it scrolls all the useful information off the top of the console screen. None of my attempts to catch it with syslog or redirect the console to a serial port have worked so I assume I'm missing some compilation option. I resorted to videoing the screen when provoking the crash, which mostly fails due to persistence and frame rates, but I did catch a frame that clearly mentioned a kernel null pointer.
I even know which call is causing the problem, it's a line
res = setsockopt(s_, SOL_IP, IP_ADD_MEMBERSHIP, (void*)&req, sizeof(req));
which will execute happily in normal operation, dealing with UDP multicast sockets. The parameters all make sense.
So, does anyone know what I need to do to get the kernel oops output saved somewhere useful? GDB doesn't work either, that blows up with a segmentation fault of its own.