Quais são alguns interessante, projetos de pequena kernel Linux para ajudar a aprender a fonte?

StackOverflow https://stackoverflow.com/questions/135637

Pergunta

O que os projectos de pequena que você sugeriria para um novato com o kernel, mas alguém que tem uma abundância de sistemas e experiência C? O objetivo é desenvolver uma familiaridade com o código-fonte do kernel e uma academia para a experimentação com idéias loucas.

Eu estou tentando pensar em algumas pequenas tarefas gerenciáveis ??(por exemplo, adicionar um syscall), mas o que você sugere? Para um público-alvo pensar que alguém que tem pelo menos um curso de graduação OS sob o seu cinto.

Foi útil?

Solução

Quando tirei o curso de graduação OS acima mencionado, uma das nossas tarefas era adicionar alguns syscalls. Eles eram extremamente simples, nada mas a leitura e contadores redefinir que contaram o número de vezes que outros syscalls foram invocadas. No entanto, a adição de um syscall requer olhando e modificando algumas arquivos .. muitos deles estão no mesmo relativamente pequenas subárvore da fonte do kernel, mas é o suficiente para levá-lo familiarizado com as convenções de codificação, pelo menos.

Você também pode considerar:

  • A adição de outro modo (muito simples) para o programador para implementar uma política que você achar interessante. O "uma implementação para a todos governar" é muito difícil (e ainda mais difícil chegar a acordo sobre), mas fazendo um simples programador O (N), mesmo um O rudimentar (1) programador, pode ser feito de forma relativamente simples, algoritmicamente falando. Mesmo assim, ele requer cutucando através de um monte de código.

  • Escrevendo um driver de dispositivo para uma peça muito simples de hardware externo, como um microcontrolador de 8 bits que se comunica via serial, ou até mesmo algo que você construir-se. Se você tem alguma experiência hardware, talvez tente escrever um driver de dispositivo que pode emular um controlador de NES (bit-bang alguns fios usando a porta serial e talvez um serial-to paralelo registrador de deslocamento). Você também pode fazer algo como dirigir um display muito simples LED de 7 segmentos (como o que você tem em um despertador), ou uma pequena coleção deles.

Outras dicas

O href="http://janitor.kernelnewbies.org/" rel="noreferrer"> projeto tem algumas grandes.

Com o risco de iniciar uma guerra chama: Eu recomendo que você fique longe do código do Linux kernel. Se você quer sujar as mãos com a programação de kernel, ir com FreeBSD, NetBSD ou OpenSolaris, por exemplo. O código é muito mais limpo e melhor estruturado (este é de opinião curso subjetiva), realmente concebido, e até mesmo documentado. Além disso, eles têm um depurador de kernel (note que Linus é contra ambos os depuradores de kernel e API do kernel estável, o que torna qualquer kernel um alvo móvel para o seu trabalho). Estas OS-es ainda têm uma lista de projetos em seus respectivos web-sites, e eu, pessoalmente, tenho muito boa experiência com os povos em fóruns OpenSolaris e listas de discussão do NetBSD.

Você diz que você tem experiência com C - olhada repositórios de código-fonte web de Linux e de OpenSolaris ou alguns dos BSDs, compare o código e fazer a sua própria opinião. O que estou dizendo é, eu acho, que há mais para open-source UNIX do que o Linux, e que você deve pelo menos olhar para eles antes de ir para o Linux.

Um bom lugar para começar é um projeto baseado em Unix v6 . "Xv6, um simples Unix-like sistema operacional ensino"

Há também cynix , um simples IA-32 monolítica unix-like kernel (Unmaintained)

Um grande tutorial é " rolo seu próprio brinquedo UNIX-clone OS " .

Tente baixar o código-fonte MINIX e brincar com ele, tentar entender a lógica e isso vai levar tempo, sem dúvida, mas se você cumpri-lo pode ser um perito em algum tempo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top