2 Answers
2

Ubuntu Linux kernels are open source and are available for downloading and building.

For each Linux kernel version they maintain Ubuntu kernel developers maintain a set of patches until those patches are incorporated upstream. They also maintain a specific configuration. When you install a Linux image package the configuration used to build it is stored in /boot along with a map file, the kernel image, and an initrd file created for your system at the time the linux image package is installed.

This is a wiki page that describes the current maintained kernels source location. Each is stored in a git repository. As Clepto mentioned in his answer, https://help.ubuntu.com/community/Kernel/Compile contains instructions on how to get the soruce and do the compile. You can also compile vanilla kernels using an Ubuntu config, or your own config.

The Kernel development team also maintains packages for current upstream kernels in case you simply want to test one of those. That's useful for some bug testing. You can read more here.

Finally it should be possible to do a straight kernel make / make install / make modules_install, but you will have to manage the boot loader config as well as /boot and module files yourself and maybe make your own initrd file if you go with that alternative. This can be faster if you are, for example, doing a number of git bisects to find where a problem was introduced.

Needless to say, Ubuntu developers can't support a vanilla mainline kernel or one you compile yourself.