128: Do Seraglios Dream of Abductions?

Kernel tainting doesn’t really hurt filthy casuals like me; in my case, it has mostly been innocuous. I’ve previously had run-ins with the rtsx_usb_ms and mei{,me} modules. I believe both preceding cases simply upped my load average to 1 for no good reason, and so I blacklisted them.

Taint 101 off the back of a napkin: if a module isn’t signed off and certified to work with the kernel, the kernel will complain in the form of a nonzero taint, which it writes to the taint file (for me on Fedora 21, /proc/sys/kernel/tainted). The decomposition of the taint value (e.g. powers of two) reveals the nature of the taint. I cannot find local documentation on my machine about the taint values; GIYF. The taint cannot be reset except by rebooting the machine. Taint is a scarlet-kernel-letter: it means that the kernel is so uncertain of the module that it provides an upfront disclaimer that debugging won’t fly with such a module loaded.

I only noticed recently (when the abrt applet whined vocally) that my kernel was tainting. A quick scan via journalctl pointed squarely at vboxdrv; something about the module being unsigned. “modinfo vboxdrv” (plus some sed / grep magic) revealed that the vb* series (vboxdrv, vboxflt, vboxadt) were the only unsigned modules in the lot.

There was nothing for it. The VirtualBox kernel drivers were required for VirtualBox, which was required for vagrant, which was required for my two CS classes this semester. This past Thursday, though, I took it upon myself to weed out this silly ailment. It wasn’t hurting anything, but it couldn’t possibly be better than an untainted kernel.

Long story short, removing kmod-VirtualBox wasn’t quite enough. Subsequent reboots saw ghosts of modules past still appearing. The strangest symptoms happened whereby lsmod would list the vb three, modprobe -r would fail, rmmod would work fine, but subsequent modprobe (reload for argument’s sake) would fail.

The correct solution was to remove the package(s) (I ended up erasing VirtualBox and vagrant too) and then force the kernel to refresh itself. To this end, I ran “depmod -ae” and “dracut –force.” I suspect the “-e” flag to depmod is optional. I rebooted after this; subsequently, the kernel acknowledged the absence of the vb three and the taint finally came up clean.



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s