Originally Posted by taitran
If someone can help a newbie....
I don't understand how Linux kernel and root file system (RFS) can fit in each other. Can I just compile version x.y.z of Linux kernel and run it with Ubuntu RFS version a.b.c?
Depends. Most times yes, sometimes no.
The reason it depends is that the kernel provides a standardized programming interface. Rarely will this interface change UNLESS you are dealing with specific kernel control interfaces. Things like NFS control, or disk speed parameters, priority process queuing, or I/O queuing, or virtual machine capabilities. These applications require a closer integration with the kernel in case their interface changes.
MOST applications have no issues - they use the stable system calls that really haven't changed much in 10 years. SOMETIMES, what actually changes isn't the kernel, but runtime libraries. Applications that depend on old shared libraries can have problems with new systems - but this is not a kernel issue, normally they will just say something like "can't load library xxxx, not found".
Usually there is no problem with anything within a major numbering. Current numbering is a bit more flexible as most (if not all) basic user mode applications will have no issues with anything from 2.6 through 3.x (NOTE, this does not include the VM applications - there have been some bug fixes that did require a change, and old versions of these won't work with new kernels).
On Ubuntu, I can get apps by package manager like apt-get or something. Applications are precompiled in a particular environment (kernel version x and glibc version y for example), what guarantees it runs on my PC when got from package manager? What if I upgrade the kernel and glibc?
Normally the package manager will deal with those - if you upgrade a glibc, then anything that depends on the specific version should also be identified as needing updates. Normally, such updates have no effect... the new library provides the same functions, with the same interfaces as the older version.