TCLUG Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

the proper way to compile kernels, according to Linus



I ran across this on the Linuxcare kernel-traffic web page (http://kt.linuxcare.com/kernel-traffic/latest_print.epl)
Basically, it started out as a discussion about why symlinking /usr/include/asm -> /usr/src/linux/include/asm is a bad thing and should be stopped. (something to do with library incompatibilities... stuff that's over my head).

here's the part that's really interesting; since it runs counter to all the documentation I've read says. (but makes eminent sense).

Linus Torvalds wrote:
I would suggest that people who compile new kernels should: 

* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it. 

* compile the kernel in their own home directory, as their very own selves. No need to be root to compile kernel. You need to be root to _install_ the kernel, but that's different. 

* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the "linux/include/asm" symlink that is only used for the internal kernel compile itself) 

And yes, this is what I do. My /usr/src/linux still has the old 2.2.13 header files, even though I haven't run a 2.2.13 kernel in a _loong_ time. But those headers were what glibc was compiled against, so those headers are what matches the library object files. 

And this is actually what has been the suggested environment for at least the last five years. I don't know why the symlink business keeps on living on, like a bad zombie. Pretty much every distribution still has that broken symlink, and people still remember that the linux sources should go into "/usr/src/linux" even though that hasn't been true in a _loong_ time. 
**********

so basically, don't compile in /usr/src/linux; compile in your home directory. this is a good thing, because the less you dink around with your /usr tree (especially as root), the better. :)

Carl Soderstrom
-- 
Network Engineer
Real-Time Enterprises
(952) 943-8700