Kerneled

I’ve been scrambling for the past six months helping my brother who sustained a serious back injury in a car / truck accident. As soon as I understood what had happened I contacted a car accident lawyer. When you go online to find a car accident lawyer, it is overwhelming. But after reading some sites, I realized my brother who sustained serious injuries with possible long-term consequences that would impact complete recovery AND who wasn’t at fault should have a car accident lawyer. Thank goodness they work on a contingency basis. I think, as does my brother, the 35% of the settlement the lawyer took as his fee was well worth it since my brother received the maximum compensation allowed under the law. Meanwhile, the accident has put my brother totally out of commission for these twelve months while he slowly recuperates. He is just starting physical therapy and has been told it may take up to two years before he is able to be fully functional. Friends have suggested that he is most likely eligible for social security disability. The application process is a nightmare and then when you learn that more than 60% of the initial social security disability claims are rejected, you just want to give up. I have decided my brother is not going to be part of that 60% statistic so this past week I contacted another lawyer, this one a social security disability lawyer. Fortunately they also work on a contingency plan so my brother doesn’t have to pay any money at the start of the process. While social security disability attorneys won’t guarantee that you’ll be awarded Social Security Disability benefits, at least I believe our case will have the best chance of being successful. But hey, if I can negotiate the crazy world of kernels, surely I can help out my brother by finding him capable lawyers!

Update: the world of kernels never stops, does it? The latest brouhaha comes courtesy of Dell, whose new tablet (the Streak) uses files from the GNU Linux kernel source tree…but Dell has so far failed to release all the pertinent source code. Shades of Cisco!

This comes only days after the Linux kernel ‘privilege-escalation’ security bug was finally killed. The little guy has been lurking around the Linux kernel for over five years now, but Rafel Wojtczuk at Invisible Things Lab showed how the X server (for example) could exploit the vulnerability via memory corruption.

Now, this is still a very obscure and purely local vulnerability, and it doesn’t affect all distros (for instance, if you’re using SUSE and have updated since 2004 or so, you’re probably safe). It’s just plain weird that this got by us all for so long — just goes to show, even having millions of hands doesn’t mean that you won’t still drop the ball every once in a while.

Speaking of kernel bugs, Windows is up to thirteen this year; the latest is expected to go unpatched until at least September. However, like the Linux vulnerability, this is an isolated local issue, so users have very little to worry about unless others have physical access to their PCs.

Whew! Just got back from a whirlwind trip to Swaziland, where I met with a series of foreign investors. I am more and more impressed with the technical savvy of exiled Nigerian royalty, by the way.

But seriously, thanks for stopping by. What we have here is a monster in the making, a virtual hierophant of websites. All about the fascinating and deep topic of kernels.

The kernel is basically the heart of your operating system, just as the CPU is the heart of your computer’s hardware. The kernel will allow your hardware and software to communicate — as a matter of fact, it actually makes calls on a regular basis. System calls, that is. Plus loading and unloading modules, and all sorts of other stuff that the operating system needs to do to connect the applications to the hardware.

These lines of communication are (to use a seriously flawed analogy) somewhat like the difference between serial and parallel…the first being mainly consecutive stages, the latter being simultaneous stages. It’s nowhere near that simple, of course, but we only have so much space…

Monolithic kernels: all layers are consecutive; the app communicates with the hardware through a series of operating system software stages. A single address space is used to execute OS code — sort of a “one-stop execute” model, with the obvious drawback that any localized issue can affect the entire system.

Microkernels: the kernel itself has minimal OS-to-hardware demands (multitasking, memory management, etc.), instead turning over many hardware-related services to modular ‘servers’ in the user space. The obvious theoretical advantages were not often borne out by actual performance until fairly recently. “Nanokernels” take this approach even farther, with even basic services handled by device drivers.

Exokernels: similar to microkernels and nanokernels in that the kernel is kept as small as possible, simply delivering the basic hardware resources directly and letting the apps sort it all out. Very intriguing, but so far mostly relegated to the academic research stage for now.