Building the kernel Get the source Configure it. Variant on configure; make; make install allyesconfig, allnoconfig, defconfig, menuconfig, oldconfig. Getting previous kernel's config (/proc/config.gz) Cross compiling. Building out of tree User Mode Linux QEMU Compiler gcc http://gcc.gnu.org/onlinedocs/ icc http://www.intel.com/cd/software/products/asmo-na/eng/compilers/277618.htm tcc http://fabrice.bellard.free.fr/tcc/tccboot.html Running "hello world" init. initramfs finding and mounting / Coverage Power on to C entry point. (x86, other arches?) C through launching init. Where to find the major subsystems scheduler vfs modules block/char device filesystem network Talking to userspace exec a.out, elf, #!, flat, misc syscalls ioctls device nodes synthetic filesystems /proc, /sys, shmfs, usbfs, devpts... A working Linux system Kernel, of course. root filesystem [initramfs, switch_root, pivot_root, /dev/console] init program C library dynamic loader fhs directories /dev Hardware families Linux runs on x86, x86-64 powerpc arm mips sparc sh 68k/coldfire Development CATB http://vger.kernel.org/vger-lists.html http://www.tux.org/lkml/ http://www.kernel.org/faq http://www.kernel.org/kdist/rss.xml git/mercurial Documentation/{CodingStyle,SubmitChecklist} The four layer (developer, maintainer, lieutenant, linus) model.