Rapaz, complicadinho... o kernel do linux não é muito "acadêmico". Um kernel mais organizado, como o do Minix ou do
Tropix facilitaria bastante sua vida.
Se vc vai mesmo ficar com o kernel do Linux, vai precisar entender o código fonte.
Não todo, claro, acho que nem os programadores do kernel o entendem todo, no máximo a parte onde trabalham. Foque-se na parte dos "device drivers", é um sub-diretório dentro da árvore do código fonte.
Você consegue o código fonte do kernel corrente pro seu Ubuntu (vc deve usá-lo, uma vez que postou sua dúvida aqui) com o pacote "linux-source". É o código fonte do kernel, já com as alterações ("patches") do Ubuntu.
Se vc quiser o kernel sem modificações (também chamado de "vanilla"), vá em
www.kernel.org. Lá também vai haver documentação sobre o kernel em si. Ah, no código fonte também tem muita documentação.
Boa sorte.