Monday, March 19, 2007

Kernel problem solving adventures in Ubuntu Land

Since the weekend I've been playing a bit with the Linux kernel, version I configured it using my hacked copy of qconf, and then went to the trouble of installing it and booting into it. Everything has worked just fine except my USB-based drives, a Western Digital Passport and a Sandisk Cruzer Micro. I couldn't figure out what the problem was until I started to pay attention to the boot messages.

Two that came flashing along at the end of the boot process complained that two devices could not be mounted. The message listed several possible causes, then added this vitally important message at the end of each one: execute dmesg and pipe it through tail for better clues to the problem. I followed that advice right after boot and read this:

wbeebe@rhea:~$ dmesg | tail
[ 97.868878] apm: BIOS version 1.2 Flags 0x07 (Driver version 1.16ac)
[ 97.868884] apm: overridden by ACPI.
[ 103.979609] [drm] Setting GART location based on new memory map
[ 103.979620] [drm] Loading R300 Microcode
[ 103.979670] [drm] writeback test succeeded in 1 usecs
[ 107.829716] eth0: no IPv6 routers present
[ 133.728116] Unable to load NLS charset iso8859-1
[ 133.728123] FAT: IO charset iso8859-1 not found
[ 133.764059] Unable to load NLS charset iso8859-1
[ 133.764065] FAT: IO charset iso8859-1 not found

Notice the message about the character set (charset)? So I fired up the kernel configurator, went looking under File Systems | Native Language Support, and sure enough NLS ISO 8859-1 wasn't checked. I'd turned it off because I figured I didn't need it (I like to turn off everything I don't need because it cuts down on compile time). So I looked down at the description panel, and here's what it said:
NLS ISO 8859-1 (Latin 1; Western European Languages) (NLS_ISO8859_1)

If you want to display filenames with native language characters
from the Microsoft FAT file system family or from JOLIET CD-ROMs
correctly on the screen, you need to include the appropriate
input/output character sets. Say Y here for the Latin 1 character
set, which covers most West European languages such as Albanian,
Catalan, Danish, Dutch, English, Faeroese, Finnish, French, German,
Galician, Irish, Icelandic, Italian, Norwegian, Portuguese, Spanish,
and Swedish. It is also the default for the US. If unsure, say Y.

Sure enough, I checked it, recompiled and redeployed, and now those two devices work just like they do under the stock Ubuntu kernel.



If you're a knuckle dragging troglodyte like me when it comes to working in the kernel, then lucid error messages during boot are heaven sent when trying to figure out what you broke. This is what makes working on systems either heaven or hell. Life happens, but if you're given some pretty good clues about what happened while an exception is occurring, then it's only a matter of very little time before you decipher the cause of the problem and fix it. Good error messages make for good development.

Picture of baby. Ain't he cute?

No comments:

Post a Comment

All comments are checked. Comment SPAM will be blocked and deleted.

Note: Only a member of this blog may post a comment.