Why do I have those two linux folders in /usr
Those are the header files for the kernel(s) you have on your system. Both can be removed through apt-get
(do not do it manually). (probably sudo apt-get purge linux-image-3.8.0-29
)
What exactly is generic version of ubuntu ? how it differes from other versions?
"generic" means the general usage kernel. It is the kernel used for desktop installations. Before 12.04 we also had a "generic-pae ", "server" and "virtual" version next to "generic" but that distinction was removed. Nowadays we have "omap" (Kernel for TI OMAP3 and OMAP4) and "highbank" (Kernel for Calxeda Highbank).
In general the difference are optimal setttings for that specific hardware. Here is a list for several Ubuntu versions.
linux-source-x.y.z
), whereaslinux-headers-x.y.z
provides the header files necessary to compile new modules for the kernel (eg, the proprietary nvidia driver), but not a complete new kernel. Why this lives in/usr/src
rather than/usr/include
(the normal location for header files) I'm not entirely certain - I suspect it is because files in/usr/include
are to build programs that will run under linux, whereas the kernel headers are for building new parts of linux. – chronitis Jan 07 '14 at 12:08