Estoy creando una aplicación remota incorporable que no se activará permanentemente. He estado jugando con diferentes distribuciones de SO y puedo reducir el tiempo de arranque sustancialmente usando mejores tarjetas SD con velocidades de lectura más rápidas. No estoy fijado a ninguna distribución en particular, por lo que puedo despojarme tanto como sea necesario para usar una distribución mínima de Linux.
(Intenté buscar puntos de referencia que la gente haya ejecutado para mejorar el tiempo de arranque, pero no he encontrado nada con cifras difíciles).
También podría usar la raíz de compilación (vea también el video de YouTube Raspberry Pi - Super Fast Boot Time - Marshmallow Entertainment System ) ...
Respuestas:
Si combina Arch Linux con las características que sugirió Fred, debería obtener un sistema operativo de arranque generalmente rápido.
Lo que ralentiza los tiempos de arranque del sistema operativo es
Velocidades lentas de lectura / escritura (E / S).
Por lo que el uso de una tarjeta SD más rápida será ayudar,
una tarjeta Clase 10 será sustancialmente más rápido que una tarjeta de clase 4. No entendí cómo funcionaban las clases de tarjetas SD, y eso se ha señalado con bastante claridad en los comentarios, mi mal. En realidad, una tarjeta de Clase 10 será más rápida que una tarjeta de Clase 4 para transferencias de archivos grandes , como video HD y demás. Aparentemente, la clase 4 funciona igual de bien con archivos más pequeños. De nuevo, mi mal, pero bueno, todos aprendemos de vez en cuando.Una secuencia de inicio empantanada.
Si tiene mucho software que se inicia durante la fase de arranque, el tiempo de arranque será más lento. Más software iniciando == Mayor tiempo de arranque.
Por lo tanto, si necesita un arranque rápido, corte la mayor cantidad de software posible de la secuencia de inicio. Puede crear un script simple (o estoy seguro de que hay uno) que iniciará el software una vez que se complete la secuencia de inicio principal, extendiendo un poco más la carga.
Eso es básicamente eso. Arch Linux es probablemente el camino a seguir, combinado con las características que Fred mencionó, como dije antes. Arch es un sistema operativo muy mínimo y puede que no sea lo mejor para un principiante, pero si tiene experiencia en Linux, hágalo. Solo requiere un poco de configuración, ya que viene con el mínimo necesario para instalar y eso es todo .
Espero que tu proyecto salga bien!
fuente
Sugiero usar Arch Linux.
Obtengo un tiempo de arranque normal de 5s (kernel) + 5s (para el espacio de usuario) y no requiere mucho esfuerzo, ya que se usa
systemd
para init.fuente
systemd
hace mucha diferencia en comparación consysvinit
. Mira mi respuesta .Escribí un artículo aquí al respecto.
En resumen: uso
systemd
.Puede hacer que su aplicación RaspberryPi se ejecute fácilmente menos de 8 segundos después de enchufar el cable de alimentación, o menos de 3 segundos después de que se haya iniciado el arranque de Linux.
Un ejemplo aquí, mi servicio se llama
samplerbox.service
:Nota: No he intentado optimizar el tiempo de espacio del usuario porque no lo necesito: mi aplicación se inicia temprano de todos modos, por lo que no me importa si la atribución de DHCP / IP de red tarda 8 segundos después de que se haya lanzado mi aplicación.
fuente
Probablemente, la solución óptima es crear una distribución que haga exactamente lo que quieres que arranque, de esta manera tienes garantizadas tiempos mínimos (usando un sistema de inicio minimalista como sinit ). Alternativamente, puede considerar usar la función de suspensión al disco ( hibernación ) del kernel de Linux. Una vez arrancado, las operaciones de suspensión y reanudación más adelante son bastante rápidas y, mientras tanto, el sistema está completamente apagado.
fuente
El uso de un kernel enlazado estáticamente en lugar de controladores modprobing también puede aumentar drásticamente el rendimiento. Hay que hacer otras optimizaciones configurando y volviendo a compilar cuidadosamente un kernel.
fuente
1) Do this in command line, 2) Do this and this 3) Modify this and this in config.txt 4) Boot, it will take 3.2 seconds! 5) Here is the result of my benchmarks: ...
)Usa TinyCoreLinux . Está hecho para una carga rápida y para sobrevivir a fallas de energía.
fuente
1) Download an image here: +link 2) Flash it on your microSD 3) Modify this and this in config.txt 4) Boot, it will take 3.2 seconds!
)Puede intentar usar eINIT para acelerar el proceso de arranque: http://sourceforge.net/projects/einit/
Desafortunadamente en la actualidad (octubre de 2016), la página de inicio de eINIT señala:
fuente
Elimine los módulos del núcleo que no usará.
fuente