Como criar um SO personalizado para Raspberry pi a partir do zero?

10

Eu sou novo no kernel e Linux incorporado. Recentemente, comprei um Raspberry Pi e o inicializei usando o Raspbian. Fiquei fascinado com o Pi. Para saber mais sobre o Embedded, decidi criar um sistema de automação residencial. Eu queria usar meu próprio kernel e empilhar. ou seja, não quero usar nenhum sistema operacional.

Para isso, baixo o Kernel, target_fs, firmware e cadeia de ferramentas do github oficial. Eu compilei o kernel usando a cadeia de ferramentas.

Agora não sei como colocar isso em um novo sdcard (formatado para um novo começo). Quais são as coisas que tenho que tomar antes de inicializar minha pilha? Como não coloquei servidor / cliente ssh ou telnet, como posso saber se a inicialização foi bem-sucedida. Onde posso obter um daemon ssh / telnet para o pi? Meu objetivo é inicializar apenas o kernel (ou o mínimo necessário) no Raspberry Pi.

Centauro
fonte
2
Esta é uma tarefa hercúlea e acho que você ainda não tem experiência suficiente. Considerou apenas ajustar uma distribuição existente e economizar 99% do tempo?
Thorbjørn Ravn Andersen
Sei que isso é um pouco antigo, no entanto, aprendi recentemente sobre a MLL, que é outra maneira de criar um sistema operacional Linux mínimo. Como neofita do Linux, achei a MLL fundamental para aprender o processo. Atualmente, estou pesquisando o processo pelo qual incluir os drivers Raspberry Pi na compilação. MLL minimal.linux-bg.org/#home Boa sorte!
Rob

Respostas:

9

O kernel espera duas coisas: um sistema de arquivos raiz e um initdaemon que reside nele. O init incluído no raspbian é um sistema de estilo sysV . Você não está vinculado a isso - outros sistemas init comumente usados ​​com linux (lembre-se: o kernel é linux ) são systemde upstart- mas você precisa de algum tipo de sistema init.

Você também pode colocar initum initramfs e incorporá- lo ao kernel ; nesse caso, você pode se livrar sem um sistema de arquivos raiz, mas isso parece inútil nesse caso.

inité o único aplicativo da terra do usuário iniciado pelo kernel. Normalmente, ele inicia processos que abrem ttys com um logon e outros serviços que podem iniciar um gerenciador de exibição, sshd etc. Você pode não precisar do logon, mas provavelmente deseja o tty; você também pode iniciar o sshd diretamente.

Onde posso obter um daemon ssh / telnet para o pi?

Obtê-lo do mesmo lugar que raspbian fez, a fonte upstream. Nenhuma dessas coisas foi escrita especificamente para o pi. Ou pelo menos, muito, muito pouco. Tem sido usado em uma enorme variedade de sistemas diferentes.

Se você quer um pré-compilado para o pi ... bem, isso é raspbian, etc. 1

eu não sei como colocar isso em um novo sdcard

Você precisará usar o carregador de inicialização específico do pi, que está na /bootpartição da imagem raspbian.


1. Para ser brutalmente honesto, acho que você está em uma missão massivamente quixotesca que, com base no conhecimento implícito em sua pergunta, não tem praticamente nenhuma esperança de realizar este ano, a menos que saia do emprego e se dedique ao aprendizado em tempo integral, e mesmo assim, sua chance de falhar é muito alta e levará meses para chegar a um ponto em que você tenha alguma chance de sucesso. Isso não é simples. Não é fácil. Dito isto, mesmo se você falhar, provavelmente aprenderá algumas coisas úteis ao longo do caminho. No entanto, pode-se gastar mais tempo aprendendo a entender uma distribuição existente (como raspbian) e como usá-la para criar seu sistema de automação residencial.

Cachinhos Dourados
fonte
11
quixotesco ? Você é uma das únicas pessoas que conheço que rotineiramente desafiam meu vocabulário. +1 por isso sozinho.
Jacobm001
7

Para começar, acho que você tem o conceito errado de usar computadores incorporados (especialmente no nível do Raspberry Pi). Se você realmente deseja criar um sistema operacional personalizado, sugiro que inicie no Linux a partir do Scratch, LFS, http://www.linuxfromscratch.org/ , mas se quiser entender a computação incorporada, comece pesquisando "sistemas embarcados", Wikipedia ou Embedded. Wiki do Linux http://elinux.org/Main_Page .

Joe Zilch
fonte
11
+1 para LFS. Eu gostaria de fazer isso em uma configuração de compilação cruzada!
goldilocks
-1

Eu tive o mesmo problema. Eu criei uma coleção de scripts de shell, exatamente para esse propósito.

http://www.dettus.net/detLFS

Thomas Dettbarn
fonte
Bem-vindo ao Raspberry Pi! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
9788 Steve Steve Robillard