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.


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.


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 .


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.