Come posso migliorare il tempo di avvio di Raspberry Pi?


15

Sto creando un elettrodomestico che utilizza internamente come Raspberry Pi per gestire l'interfaccia utente e la necessaria connessione WiFi. Collegato all'R-Pi, ho uno schermo LCD AdaFruit:

Adafruit LCD

e un dongle USB Wifi:

Dongle WiFi USB

E anche una tastiera. Nient'altro. Il sistema operativo è OpenElec , che è un sistema operativo piuttosto snello .

Tuttavia, quando l'utente accende il dispositivo, l'R-Pi impiega molti secondi prima di poter accettare l'input dell'utente.

Perché ci vuole così tanto tempo se si avvia il flash? Decine di secondi sembra una grande quantità di calcoli.

C'è qualcosa che può essere fatto per eseguire un avvio Raspberry Pi in meno di 5 secondi? Possono entrare in una sorta di modalità di ibernazione in cui scrive la sua RAM su FLASH, quindi rileggerla all'accensione?

Altrimenti, esiste un'alternativa al Raspberry-Pi, con funzionalità simili (piccolo schermo LCD, USB per il dongle WiFi), che potrebbe avviarsi in meno di 5 secondi?


Ottima domanda, saresti in grado di incollare il registro di avvio e collegarlo ad esso? Non posso fare molto senza sapere cosa sta facendo durante l'avvio;)
MDMoore313

2
Che cos'è l'avvio? Stai eseguendo un sistema operativo minimale e lo stai mettendo a nudo: niente desktop, ecc. ??
Scott Seidman,

2
@ScottSeidman - Ha aggiunto OpenElec alla mia domanda.

1
Sono d'accordo con @BigHomie. Non è del tutto possibile suggerire alcun miglioramento senza vedere cosa sta succedendo durante l'avvio.

1
@NickAlexeev - Aah, il vecchio problema sovrapposto di Stackexchanges. Immagino che tutte le domande R-Pi siano in tema laggiù.

Risposte:


13

Non ho lavorato con un Raspberry Pi, ma ho ridotto i tempi di avvio con i sistemi Linux integrati, quindi ho alcune risposte generali.

1) OpenElec può essere una distribuzione integrata perfettamente funzionante, ma le distribuzioni per principianti / demo tendono a gettarsi nel lavello della cucina per offrirti un'ampia gamma di funzionalità, ma ciò spesso significa che ci sono servizi a partire che non ti servono. Quindi guarda nelle directory init e spegni o differisci qualsiasi cosa non essenziale per i tuoi scopi. Se non hai bisogno di nulla di grafico, su sistemi più lenti, X windows o processi grafici possono essere maiali in tempo reale. Non necessariamente perché non è in grado di generare grafica in modo adeguato, ma caricare tutte le librerie nella memoria richiede tempo. E ci vuole tempo dal caricamento quando tutto il resto che vuoi è anche caricare o in attesa di caricare.

2) Le schede SD hanno velocità di lettura diverse, acquista quella più veloce che il dispositivo è in grado di gestire. O forse vedere se una chiavetta USB verrà caricata più velocemente. Probabilmente non avrai bisogno delle schede da 40 Mb / s, ma passare da una scheda SD economica a una in grado di gestire trasferimenti da 10 Mb / s potrebbe fare la differenza, sempre a seconda delle schede SD che il Pi è in grado di gestire). In sostanza: scappare da una scheda SD se il filesystem è scrivibile non è eccezionale per la stabilità a lungo termine. Se è necessario, potrebbe essere necessario prendere in considerazione la configurazione delle impostazioni di avvio per trattare la scheda come di sola lettura o prendere completamente altre disposizioni di sistema.

3) Se hai davvero bisogno di grafica, l'illusione di essere avviato a volte è più facile da ottenere che essere effettivamente pronto al 100% per qualsiasi input. Esistono programmi di schermata di avvio della console che possono lanciare un'immagine molto rapidamente mentre tutti gli altri servizi di cui hai bisogno si avviano. Ho visto casi in cui un grafico del pannello di controllo iniziale viene utilizzato come una schermata di avvio statica che viene sostituita con una schermata funzionante dal vivo quando il sistema è pronto - l'utente raramente vuole davvero inserire i dati entro 2-3 secondi dalla schermata che mostra su.

Se stai ancora cercando tempi di avvio più rapidi, cerca qui un elenco di aree da esaminare.


2
Concentrati in particolare sul punto 2. L'avvio del kernel e gli script init richiedono circa il 30: 70% del tempo di avvio, rispettivamente. Il kernel personalizzato inizierà più velocemente del 40%, gli script di avvio personalizzati possono migliorare del 90% rispetto agli originali, il che significa che è possibile dimezzare il tempo di avvio.
SF.

Hai perfettamente ragione, ho scambiato # 1 e # 2 perché passerei del tempo con gli script init prima di ogni altra cosa.

8

Perché ci vuole così tanto tempo se si avvia il flash?

Parte della risposta potrebbe essere un problema di pura produttività. Mentre le schede SD utilizzano l'archiviazione flash NAND, possono solo trasmettere dati in serie. Rispetto, diciamo, a un chip flash NAND saldato alla scheda che poteva comunicare direttamente con la CPU con un bus parallelo. La velocità di trasferimento complessiva dipenderà all'incirca da alcune cose come la velocità di clock del bus e la dimensione dei file che si stanno trasferendo.

La velocità di trasferimento di una scheda SD è in realtà piuttosto bassa rispetto a un moderno disco rigido SATA III o addirittura SATA II. A corto di una porta SATA, USB 3.0 è un'altra alternativa che ha una velocità di trasferimento piuttosto elevata a costi relativamente bassi.

Ulteriori informazioni sono disponibili qui , qui e qui .

C'è qualcosa che può essere fatto per eseguire un avvio Raspberry Pi in meno di 5 secondi?

La CPU utilizzata dal Pi è piuttosto di fascia bassa (da qui il prezzo). Ciò significa che manca di interfacce ad alta velocità come SATA o USB 3.0. A corto di emulazione software di questi protocolli (che probabilmente soffriranno anche di importanti problemi di throughput) non c'è molto altro da fare se non tagliare il grasso dal sistema operativo.

Possono entrare in una sorta di modalità di ibernazione in cui scrive la sua RAM su FLASH, quindi rileggerla all'accensione?

Secondo OpenElec, il Pi non supporta l'ibernazione , ma se leggi un po 'più in basso, hanno alcuni consigli su come accelerare il tuo Pi .


3

In generale, la lettura da SD è molto lenta, quindi influisce drasticamente.

Fai una prova del diagramma di avvio e scopri se c'è qualche punto per migliorare il tempo di avvio.

Oppure, puoi configurare il tuo kernel in modo che abbia dimensioni molto ridotte. Oppure, saltare qualche inizializzazione non necessaria (cercare qualcosa di strano o qualcosa del genere) può aiutare.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.