¿Cómo mejoro el tiempo de arranque de Raspberry Pi?


15

Estoy creando un electrodoméstico que utiliza internamente como Raspberry Pi para manejar la interfaz de usuario y la conexión WiFi necesaria. Conectado al R-Pi tengo una pantalla LCD AdaFruit:

Adafruit LCD

y un dongle USB Wifi:

Dongle USB WiFi

Y también un teclado. Nada más. El sistema operativo es OpenElec , que es un sistema operativo bastante reducido.

Sin embargo, cuando el usuario enciende el dispositivo, el R-Pi tarda muchos segundos antes de que pueda aceptar la entrada del usuario.

¿Por qué tarda tanto si se inicia desde flash? Decenas de segundos parece una gran cantidad de cómputo.

¿Hay algo que se pueda hacer para hacer un arranque de Raspberry Pi en menos de 5 segundos? ¿Pueden entrar en algún tipo de modo de hibernación donde escribe su RAM en FLASH, y luego lo leen nuevamente al encenderlo?

De lo contrario, ¿hay una alternativa al Raspberry-Pi, con capacidades similares (pequeña pantalla LCD, USB para el dongle WiFi), que podría arrancar en menos de 5 segundos?


Gran pregunta, ¿sería capaz de pegar el registro de arranque y vincularlo? No puedo hacer mucho sin saber lo que está haciendo durante el arranque;)
MDMoore313

2
¿Qué es el arranque? ¿Está ejecutando un sistema operativo mínimo y despojándolo al mínimo, sin escritorio, etc.?
Scott Seidman

2
@ScottSeidman - Agregué OpenElec a mi pregunta.

1
Estoy de acuerdo con @BigHomie. No es posible sugerir ninguna mejora sin ver lo que sucede durante el arranque.

1
@NickAlexeev - Aah, el viejo problema superpuesto de Stackexchanges. Supongo que todas las preguntas de R-Pi estarían sobre el tema allí.

Respuestas:


13

No he trabajado con una Raspberry Pi, pero he reducido los tiempos de arranque con sistemas Linux integrados, así que tengo algunas respuestas generales.

1) OpenElec puede ser una distribución integrada perfectamente viable, pero las distribuciones para principiantes / demo tienden a tirar en el fregadero de la cocina para brindarle una amplia gama de capacidades, pero eso a menudo significa que hay servicios que no necesita. Por lo tanto, busque en los directorios de inicio y apague o difiera cualquier cosa que no sea esencial para sus propósitos. Si no necesita nada gráfico, en sistemas más lentos, X windows o procesos gráficos pueden ser cerdos en tiempo real. No necesariamente porque no puede generar gráficos de manera adecuada, pero llevar todas las bibliotecas cargadas en la memoria lleva tiempo. Y lleva tiempo cargar cuando todo lo demás que desea también se carga o espera cargar.

2) Las tarjetas SD tienen diferentes velocidades de lectura, compre la más rápida que pueda manejar el dispositivo. O tal vez vea si una memoria USB se cargará más rápido. Es probable que no necesite las tarjetas de 40Mb / s, pero pasar de una tarjeta SD barata a una que pueda manejar transferencias de 10Mb / s podría marcar la diferencia, nuevamente dependiendo de las tarjetas SD que pueda manejar el Pi). Como tangente: ejecutar una tarjeta SD si el sistema de archivos es grabable no es excelente para la estabilidad a largo plazo. Si lo necesita, es posible que deba considerar configurar los ajustes de inicio para tratar la tarjeta como de solo lectura o hacer otros arreglos del sistema por completo.

3) Si realmente necesita gráficos, la ilusión de ser arrancado es a veces más fácil de conseguir que estar 100% listo para cualquier entrada. Hay programas de pantalla de inicio de la consola que pueden generar un gráfico muy rápidamente mientras se inician todos los demás servicios que necesita. He visto casos en los que se usa un gráfico inicial del panel de control como una pantalla de arranque estática que se cambia por una que funciona en vivo cuando el sistema está listo: el usuario rara vez realmente desea ingresar datos dentro de 2-3 segundos de la pantalla que muestra arriba.

Si todavía está buscando tiempos de arranque más rápidos, busque aquí una lista de áreas para examinar.


2
Especialmente concéntrese en el punto 2. El arranque del kernel y los scripts de inicio requieren aproximadamente 30: 70% de tiempo de arranque respectivamente. El kernel personalizado se iniciará un 40% más rápido, los scripts de inicio personalizados pueden mejorar un 90% con respecto a los originales, lo que significa que puede reducir a la mitad el tiempo de inicio fácilmente.
SF.

Tienes toda la razón, cambié # 1 y # 2 porque pasaría tiempo con los guiones de inicio antes que nada.

8

¿Por qué tarda tanto si se inicia desde flash?

Parte de la respuesta puede ser un problema de puro rendimiento. Si bien las tarjetas SD utilizan almacenamiento flash NAND, solo pueden transmitir datos en serie. En comparación con, digamos, un chip flash NAND que fue soldado a la placa que podría comunicarse con la CPU directamente con un bus paralelo. La velocidad de transferencia general dependerá aproximadamente de algunas cosas, como la velocidad del reloj del bus y el tamaño de los archivos que está transfiriendo.

La velocidad de transferencia de una tarjeta SD es en realidad bastante baja en comparación con un disco duro SATA III moderno o incluso SATA II. Sin un puerto SATA, USB 3.0 es otra alternativa que tiene una tasa de transferencia bastante alta a un costo relativamente bajo.

Se puede encontrar más información aquí , aquí y aquí .

¿Hay algo que se pueda hacer para hacer un arranque de Raspberry Pi en menos de 5 segundos?

La CPU que usa Pi es bastante baja (de ahí el precio). Esto significa que carece de interfaces de alta velocidad como SATA o USB 3.0. A falta de la emulación de software de estos protocolos (que probablemente también sufrirá problemas importantes de rendimiento), no se puede hacer mucho más que recortar la grasa del sistema operativo.

¿Pueden entrar en algún tipo de modo de hibernación donde escribe su RAM en FLASH y luego lo leen nuevamente al encenderlo?

Según OpenElec, el Pi no admite la hibernación , pero si lees un poco más abajo, tienen algunos consejos sobre cómo acelerar tu Pi .


3

En términos generales, la lectura desde SD es muy lenta, por lo que afecta drásticamente.

Pruébalo y prueba si hay algún punto para mejorar el tiempo de arranque.

O bien, puede configurar su propio núcleo para que tenga muy poco tamaño. O bien, saltarse algunas inicializaciones innecesarias (buscar algo extraño o algo así) puede ayudar.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.