Comment puis-je améliorer le temps de démarrage du Raspberry Pi?

15

Je crée un appareil électroménager qui utilise comme Raspberry Pi en interne pour gérer l'interface utilisateur et la connexion WiFi nécessaire. Connecté au R-Pi, j'ai un écran LCD AdaFruit:

Adafruit LCD

et un dongle USB Wifi:

Clé USB WiFi

Et aussi un clavier. Rien d'autre. Le système d'exploitation est OpenElec , qui est un système d'exploitation assez mince.

Cependant, lorsque l'utilisateur allume l'appareil, le R-Pi met plusieurs secondes avant d'accepter la saisie de l'utilisateur.

Pourquoi cela prend-il autant de temps s'il démarre à partir du flash? Des dizaines de secondes semblent être un gros travail de calcul.

Y a-t-il quelque chose qui puisse être fait pour faire un démarrage du Raspberry Pi en moins de 5 secondes? Peuvent-ils entrer dans une sorte de mode de mise en veille prolongée où il écrit sa RAM sur FLASH, puis le relire à la mise sous tension?

Sinon, existe-t-il une alternative au Raspberry-Pi, aux capacités similaires (petit écran LCD, USB pour le dongle WiFi), qui pourrait démarrer en moins de 5 secondes?

Rocketmagnet
la source
Grande question, seriez-vous capable de coller le journal de démarrage et de le lier à celui-ci? Je ne peux pas faire grand-chose sans savoir ce qu'il fait pendant le démarrage;)
MDMoore313
2
Qu'est-ce que ça démarre? Utilisez-vous un système d'exploitation minimal et le dépouillez-vous - pas de bureau, etc. ??
Scott Seidman
2
@ScottSeidman - Ajout d'OpenElec à ma question.
1
Je suis d'accord avec @BigHomie. Il n'est pas tout à fait possible de suggérer une amélioration sans voir ce qui se passe pendant le démarrage.
1
@NickAlexeev - Aah, l'ancien problème de Stackexchanges qui se chevauchent. Je suppose que toutes les questions R-Pi seraient sur le sujet là-bas.

Réponses:

13

Je n'ai pas travaillé avec un Raspberry Pi, mais j'ai réduit les temps de démarrage avec les systèmes Linux intégrés, j'ai donc quelques réponses générales.

1) OpenElec peut être une distribution intégrée parfaitement fonctionnelle, mais les distributions pour débutants / démos ont tendance à se jeter dans l'évier de la cuisine pour vous offrir une large gamme de capacités, mais cela signifie souvent qu'il existe des services dont vous n'avez pas besoin. Regardez donc dans les répertoires init et fermez ou différez tout ce qui n'est pas essentiel pour vos besoins. Si vous n'avez besoin de rien de graphique, sur les systèmes plus lents, les fenêtres X ou les processus graphiques peuvent être des porcs en temps réel. Pas nécessairement car il ne peut pas générer de graphiques de manière adéquate, mais le chargement de toutes les bibliothèques en mémoire prend du temps. Et cela prend du temps de se charger lorsque tout ce que vous voulez est également en train de se charger ou en attente de chargement.

2) Les cartes SD ont des vitesses de lecture différentes, achetez la plus rapide que l'appareil puisse gérer. Ou peut-être voir si une clé USB se chargera plus rapidement. Vous n'aurez probablement pas besoin des cartes de 40 Mo / s, mais passer d'une carte SD bon marché à une carte pouvant gérer des transferts de 10 Mo / s pourrait faire une différence - encore une fois selon les cartes SD que le Pi peut gérer). En tant que tangente: exécuter une carte SD si le système de fichiers est accessible en écriture n'est pas idéal pour la stabilité à long terme. Si vous en avez besoin, vous devrez peut-être envisager de configurer vos paramètres de démarrage pour traiter la carte en lecture seule ou prendre d'autres dispositions système entièrement.

3) Si vous avez vraiment besoin de graphiques, l'illusion d'être démarré est parfois plus facile à obtenir que d'être prêt à 100% pour n'importe quelle entrée. Il existe des programmes d'écran de démarrage de la console qui peuvent afficher un graphique très rapidement pendant que tous les autres services dont vous avez besoin démarrent. J'ai vu des cas où un graphique du panneau de contrôle initial est utilisé comme un écran de démarrage statique qui est remplacé par un graphique en fonctionnement lorsque le système est prêt - l'utilisateur veut rarement vraiment entrer des données dans les 2-3 secondes suivant l'affichage de l'écran vers le haut.

Si vous recherchez toujours des temps de démarrage plus rapides, recherchez ici une liste de domaines à examiner.


la source
2
Concentrez-vous en particulier sur le point 2. Le démarrage du noyau et les scripts d'initialisation prennent environ 30: 70% de temps de démarrage respectivement. Le noyau personnalisé démarre environ 40% plus rapidement, les scripts de démarrage personnalisés peuvent s'améliorer de 90% par rapport aux originaux, ce qui signifie que vous pouvez facilement réduire de moitié le temps de démarrage.
SF.
Vous avez absolument raison, j'ai échangé # 1 et # 2 parce que je passerais du temps avec les scripts d'initialisation avant toute autre chose.
8

Pourquoi cela prend-il autant de temps s'il démarre à partir du flash?

Une partie de la réponse peut être un problème de débit. Bien que les cartes SD utilisent le stockage flash NAND, elles ne peuvent transmettre des données qu'en série. Par rapport à, disons, une puce flash NAND qui a été soudée à la carte qui pourrait communiquer directement avec le CPU via un bus parallèle. Le taux de transfert global dépendrait à peu près de certaines choses comme la vitesse d'horloge du bus et la taille des fichiers que vous transférez.

Le taux de transfert d'une carte SD est en fait assez faible par rapport à un disque dur SATA III ou même SATA II moderne. Court d'un port SATA, USB 3.0 est une autre alternative qui a un taux de transfert assez élevé pour un coût relativement faible.

Plus d'informations peuvent être trouvées ici , ici et ici .

Y a-t-il quelque chose qui puisse être fait pour faire un démarrage du Raspberry Pi en moins de 5 secondes?

Le CPU que le Pi utilise est assez bas de gamme (d'où le prix). Cela signifie qu'il manque des interfaces à haut débit comme SATA ou USB 3.0. À court d'émulation logicielle de ces protocoles (qui souffriront probablement également de problèmes de débit majeurs), il n'y a pas grand-chose à faire à part couper la graisse du système d'exploitation.

Peuvent-ils entrer dans une sorte de mode de mise en veille prolongée où il écrit sa RAM sur FLASH, puis le relire à la mise sous tension?

Selon OpenElec, le Pi ne prend pas en charge l'hibernation , mais si vous lisez un peu plus loin, ils ont quelques conseils sur la façon d'accélérer votre Pi .

David Freitag
la source
3

De manière générale, la lecture à partir de SD est très lente, ce qui affecte considérablement.

Essayez-le et essayez de déterminer s'il est utile d'améliorer le temps de démarrage.

Ou, vous pouvez configurer votre propre noyau pour qu'il ait très peu de taille. Ou, sauter une initialisation inutile (chercher bizarre ou quelque chose) peut aider.

Younggun Kim
la source