¿Cómo construir un SO personalizado para Raspberry pi desde cero?

10

Soy nuevo en kernel y Linux incrustado. Recientemente compré una Raspberry Pi y la inicié usando la Raspbian. El Pi me fascinó, para aprender más sobre Embedded decidí hacer un sistema de automatización del hogar. Quería usar mi propio núcleo y apilar. es decir, no quiero usar ninguno de los SO.

Para eso descargué Kernel, target_fs, firmware y cadena de herramientas del github oficial. He compilado el núcleo usando la cadena de herramientas.

Ahora no sé cómo poner esto en una nueva tarjeta sd (formateada para un nuevo comienzo). ¿Qué cosas debo tener en cuenta antes de iniciar mi stack? Como no puse el servidor / Cliente ssh o telnet, ¿cómo puedo saber si el arranque fue exitoso? ¿Dónde puedo obtener un demonio ssh / telnet para el pi? Mi objetivo es arrancar solo el kernel (o mínimo) en la Raspberry Pi.

Centauro
fuente
2
Esta es una tarea hercúlea y no creo que tenga suficiente experiencia todavía. ¿Considera simplemente ajustar una distribución existente y ahorrar el 99% del tiempo?
Thorbjørn Ravn Andersen
Me doy cuenta de que esto es un poco viejo, sin embargo, recientemente aprendí sobre MLL, que es otra forma de construir un sistema operativo Linux mínimo. Como un neofita de Linux, encontré que MLL fue fundamental para aprender el proceso. Actualmente estoy investigando el proceso por el cual incluir los controladores de Raspberry Pi en la compilación. MLL minimal.linux-bg.org/#home ¡Mucha suerte!
Rob

Respuestas:

9

El núcleo espera dos cosas: un sistema de archivos raíz y un initdemonio que reside en él. El init incluido con raspbian es un sistema de estilo sysV . No está atado a eso: otros sistemas init comúnmente utilizados con Linux (recuerde: el núcleo es Linux ) lo son systemdy upstart, pero necesita un sistema init de algún tipo.

También puede poner initun initramfs y tenerlo integrado en el núcleo , en cuyo caso podría escapar sin un sistema de archivos raíz, pero eso parece inútil en este caso.

inites la única aplicación de usuario iniciada por el kernel. Normalmente, luego inicia procesos que abren ttys con un inicio de sesión, y luego otros servicios que pueden iniciar un administrador de pantalla, sshd, etc. Es posible que no necesite el inicio de sesión, pero probablemente desee el tty; También puede iniciar sshd directamente en su lugar.

¿Dónde puedo obtener un demonio ssh / telnet para el pi?

Consíguelo en el mismo lugar que raspbian hizo, la fuente aguas arriba. Ninguna de estas cosas fue escrita específicamente para el pi. O al menos, muy, muy poco. Se ha utilizado en una gran variedad de sistemas diferentes.

Si quieres uno precompilado para el pi ... bueno, eso es raspbian, etc. 1

No sé cómo poner esto en una nueva tarjeta SD

Tendrá que usar el gestor de arranque específico para pi que se encuentra en la /bootpartición de la imagen raspbian.


1. Para ser brutalmente honesto, creo que estás en una búsqueda masivamente quijotesca que, basado en el conocimiento que implica tu pregunta, no tienes prácticamente ninguna esperanza de lograr este año a menos que renuncies a tu trabajo y te dediques a aprender a tiempo completo, y aun así, su probabilidad de fracaso es muy alta y le llevará meses llegar a un punto en el que tenga alguna posibilidad de éxito. No es simple No es facil. Dicho esto, incluso si fallas, probablemente aprenderás algunas cosas útiles en el camino. Sin embargo, podría dedicar más tiempo a aprender a comprender una distribución existente (como raspbian) y cómo usarla para crear su sistema de automatización del hogar.

Ricitos de oro
fuente
1
quijotesco ? Eres una de las pocas personas que conozco que habitualmente desafían mi vocabulario. +1 solo por eso.
Jacobm001
7

Para empezar, creo que tiene un concepto erróneo de usar computadoras integradas (especialmente en el nivel de Raspberry Pi). Si realmente desea construir un sistema operativo personalizado, le sugiero que comience en Linux desde Scratch, LFS, http://www.linuxfromscratch.org/ , pero si desea comprender la informática integrada, comience buscando en Google "sistemas integrados", Wikipedia o Embedded Wiki de Linux http://elinux.org/Main_Page .

Joe Zilch
fuente
1
+1 para LFS. ¡Sin embargo, me gustaría hacer eso en un entorno de compilación cruzada!
Ricitos de oro
-1

Yo tuve el mismo problema. Creé una colección de scripts de shell, exactamente para ese propósito.

http://www.dettus.net/detLFS

Thomas Dettbarn
fuente
¡Bienvenido a Raspberry Pi! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Steve Robillard