Oi.
Uma coisa é certa: modificar o kernel do Linux desenvolvendo algo novo não é tarefa fácil. Procure a primeira versão do Kernel (não a 1.0, mas sim as 0.xs) e veja como os recursos funcionam. Já são meio deprecated, mas naquele tempo, a alocação em C era feita com alloc e as posições de memória. Tem idéia do que é isso? Algo desse tipo (não sei, é DESSE TIPO, nunca usei alloc):
alloc(0xxf1ab4, 0xxf1ab8, 0xxf1ab12,...);
O site do kernel do Linux é esse: http://www.kernel.org/
É um trampo do tamanho do mundo. Hoje já existem outras funções em C que fazem isso, como malloc, realloc, calloc e free.
Se você quiser estudar a fundo mesmo, pra trabalhar com isso o resto da sua vida, dê uma olhada nos fontes.
Se você quiser estudar C dessa forma (meio indireta), continue. Um bom tutorial de C tá aqui: www.java2s.com
Agora, se você quer montar um Linux que é a sua cara e aprender mais ‘superficialmente’, use o Linux From Sratch: http://www.linuxfromscratch.org/
Abraço.
editado
Na minha opinião, não existe ‘melhor distribuição’. É como você perguntar qual a melhor linguagem. Existe um propósito pra cada uma (claro que algumas tem o mesmo propósito).
Por exemplo, Ubuntu e seus derivados (Xubuntu, Kubuntu e Edubuntu que, por sinal, não sei se existe ainda) são fáceis de mexer, portanto são distros destinadas ao usuário final.
Slackware, na minha opinião, é a que você deve escolher se quiser aprender. Gentoo e Debian entram também nessa parte. Usei o Slack por um ano no Desktop e agora que uso Notebook não consegui configurar a placa de vídeo (maldita positivo). Tem coisas muito complexas, mas você corre atrás e aprende.
Abraço.