Comment créer un système d'exploitation personnalisé pour Raspberry Pi à partir de zéro?

10

Je suis nouveau sur le noyau et Linux embarqué. J'ai récemment acheté un Raspberry Pi et l'ai démarré à l'aide du Raspbian. J'étais fasciné par le Pi, pour en savoir plus sur Embedded j'ai décidé de faire un système domotique. Je voulais utiliser mon propre noyau et ma pile. c'est-à-dire que je ne veux utiliser aucun des OS.

Pour cela, j'ai téléchargé le noyau, target_fs, le firmware et la chaîne d'outils depuis le github officiel. J'ai compilé le noyau en utilisant la chaîne d'outils.

Maintenant, je ne sais pas comment mettre cela sur une nouvelle carte SD (formatée pour un nouveau départ). Que dois-je faire avant de démarrer ma pile? Comme je n'ai pas mis de serveur / client ssh ou telnet, comment puis-je savoir que le démarrage a réussi. Où puis-je obtenir un démon ssh / telnet pour le pi? Mon objectif est de démarrer uniquement le noyau (ou le strict minimum) dans le Raspberry Pi.

Centaure
la source
2
C'est une tâche herculéenne et je ne pense pas que vous ayez encore assez d'expérience. Vous considérez simplement ajuster une distribution existante et économiser 99% du temps?
Thorbjørn Ravn Andersen
Je me rends compte que c'est un peu vieux, mais j'ai récemment appris sur MLL, qui est une autre façon de construire un système d'exploitation Linux minimal. En tant que néophite Linux moi-même, j'ai trouvé le MLL déterminant dans l'apprentissage du processus. Je recherche actuellement le processus par lequel inclure les pilotes Raspberry Pi dans la build. MLL minimal.linux-bg.org/#home Bonne chance!
Rob

Réponses:

9

Le noyau attend deux choses: un système de fichiers racine et un initdémon qui y réside. L'init inclus avec raspbian est un système de style sysV . Vous n'êtes pas lié à cela - d'autres systèmes d'initialisation couramment utilisés avec linux (rappelez-vous: le noyau est linux ) le sont systemdet upstart- mais vous avez besoin d'un système d'initialisation quelconque.

Vous pouvez également mettre initun initramfs et le faire construire dans le noyau , auquel cas vous pourriez vous en tirer sans un système de fichiers racine, mais cela semble inutile dans ce cas.

initest la seule application utilisateur lancée par le noyau. Normalement, il démarre ensuite les processus qui ouvrent ttys avec une connexion, puis d'autres services qui peuvent démarrer un gestionnaire d'affichage, sshd, etc. Vous n'avez peut-être pas besoin de la connexion, mais vous voulez probablement le tty; vous pouvez également démarrer directement sshd à la place.

Où puis-je obtenir un démon ssh / telnet pour le pi?

Obtenez-le du même endroit que Raspbian, la source en amont. Aucun de ces trucs n'a été écrit spécifiquement pour le pi. Ou du moins, très très peu. Il a été utilisé sur une grande variété de systèmes différents.

Si vous voulez un pré-compilé pour le pi ... eh bien, c'est raspbian, etc. 1

je ne sais pas comment mettre cela sur une nouvelle carte SD

Vous devrez utiliser le chargeur de démarrage spécifique à pi qui se trouve dans la /bootpartition de l'image raspbian.


1. Pour être honnêtement honnête, je pense que vous êtes dans une quête massivement querelleuse qui, sur la base des connaissances impliquées par votre question, vous n'avez pratiquement aucun espoir d'accomplir cette année à moins de quitter votre emploi et de vous consacrer à l'apprentissage à temps plein, et même alors, vos chances d'échec sont très élevées et il vous faudra des mois pour atteindre un point où vous aurez toutes les chances de réussir. Ce n'est pas simple. Ce n'est pas facile. Cela dit, même si vous échouez, vous apprendrez probablement des choses utiles en cours de route. Cependant, il serait préférable de consacrer du temps à apprendre à comprendre une distribution existante (telle que Raspbian) et à l'utiliser pour créer votre système domotique.

Boucles d'or
la source
1
quixotique ? Vous êtes l'une des seules personnes que je connais qui défie régulièrement mon vocabulaire. +1 pour cela seul.
Jacobm001
7

Pour commencer, je pense que vous avez le mauvais concept d'utiliser des ordinateurs intégrés (en particulier au niveau du Raspberry Pi). Si vous voulez vraiment construire un système d'exploitation personnalisé, je vous suggère de commencer par Linux from Scratch, LFS, http://www.linuxfromscratch.org/ mais si vous voulez comprendre l'informatique embarquée, commencez par googler les "systèmes embarqués", Wikipedia ou Embedded Wiki Linux http://elinux.org/Main_Page .

Joe Zilch
la source
1
+1 pour LFS. Je voudrais faire cela dans un cadre de compilation croisée!
goldilocks
-1

J'ai eu le même problème. J'ai créé une collection de scripts shell, exactement dans ce but.

http://www.dettus.net/detLFS

Thomas Dettbarn
la source
Bienvenue sur Raspberry Pi! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Steve Robillard