Jak poprawić czas rozruchu Raspberry Pi?

15

Tworzę urządzenie gospodarstwa domowego, które wewnętrznie używa Raspberry Pi do obsługi interfejsu użytkownika i niezbędnego połączenia WiFi. Połączony z R-Pi mam ekran LCD AdaFruit:

Adafruit LCD

i klucz USB Wi-Fi:

Klucz USB WiFi

A także klawiatura. Nic więcej. System operacyjny to OpenElec , który jest dość uproszczonym systemem operacyjnym.

Jednak gdy użytkownik włączy urządzenie, R-Pi potrzebuje wielu sekund, zanim zaakceptuje dane wprowadzone przez użytkownika.

Dlaczego tak długo trwa, gdy uruchamia się z pamięci flash? Dziesiątki sekund wydają się świetnym obliczeniem.

Czy jest coś, co można zrobić, aby uruchomić boot Raspberry Pi w mniej niż 5 sekund? Czy mogą przejść w tryb hibernacji, w którym zapisuje swoją pamięć RAM do FLASH, a następnie odczytują ją ponownie po włączeniu?

W przeciwnym razie, czy istnieje alternatywa dla Raspberry-Pi o podobnych możliwościach (mały ekran LCD, USB do klucza Wi-Fi), który można uruchomić w czasie krótszym niż 5 sekund?

Rocketmagnet
źródło
Świetne pytanie, czy byłbyś w stanie wkleić dziennik rozruchu i link do niego? Nie mogę wiele zrobić bez wiedzy, co robi podczas rozruchu;)
MDMoore313
2
Co to jest bootowanie? Czy używasz minimalnego systemu operacyjnego i rozbierasz go na gołe kości - bez pulpitu itp.?
Scott Seidman
2
@ScottSeidman - Dodano OpenElec do mojego pytania.
1
Zgadzam się z @BigHomie. Nie można zasugerować żadnej poprawy bez zobaczenia, co dzieje się podczas uruchamiania.
1
@NickAlexeev - Aah, stary nakładający się problem Stackexchanges. Myślę, że wszystkie pytania R-Pi byłyby tam na temat.

Odpowiedzi:

13

Nie pracowałem z Raspberry Pi, ale skróciłem czas uruchamiania z wbudowanymi systemami Linux, więc mam kilka ogólnych odpowiedzi.

1) OpenElec może być doskonale działającą osadzoną dystrybucją, ale dystrybucje dla początkujących / demo zwykle rzucają się do zlewu kuchennego, aby dać ci szeroki zakres możliwości, ale często oznacza to, że zaczynają się usługi, których nie potrzebujesz. Więc zajrzyj do katalogów init i wyłącz lub odłóż wszystko, co nie jest istotne dla twoich celów. Jeśli nie potrzebujesz niczego graficznego, w wolniejszych systemach X Window lub procesy graficzne mogą być wieprzami w czasie rzeczywistym. Niekoniecznie dlatego, że nie może odpowiednio wygenerować grafiki, ale załadowanie wszystkich bibliotek do pamięci zajmuje dużo czasu. A ładowanie zajmuje trochę czasu, gdy wszystko, czego chcesz, to ładowanie lub oczekiwanie na załadowanie.

2) Karty SD mają różne prędkości odczytu, kup najszybszą, którą urządzenie może obsłużyć. A może sprawdź, czy pamięć USB ładuje się szybciej. Prawdopodobnie nie będziesz potrzebować kart 40 Mb / s, ale przejście z taniej karty SD na kartę obsługującą transfery 10 Mb / s może mieć znaczenie - znowu w zależności od tego, jakie karty SD obsługuje Pi. Jako styczna: zjechanie z karty SD, jeśli system plików jest zapisywalny, nie jest świetne dla stabilności długoterminowej. W razie potrzeby może być konieczne skonfigurowanie ustawień rozruchu w celu traktowania karty jako tylko do odczytu lub całkowicie innych ustaleń systemowych.

3) Jeśli naprawdę potrzebujesz grafiki, iluzja bycia uruchomionym jest czasem łatwiejsza do uzyskania niż faktyczna gotowość na każde wejście. Istnieją programy uruchamiające ekran powitalny konsoli, które mogą bardzo szybko wyświetlić grafikę, podczas gdy wszystkie inne usługi, których potrzebujesz, należy uruchomić. Widziałem przypadki, w których początkowa grafika panelu sterowania jest używana jako statyczny ekran rozruchowy, który zamienia się na działający na żywo, gdy system jest gotowy - użytkownik rzadko naprawdę chce wprowadzić dane w ciągu 2-3 sekund od wyświetlenia ekranu w górę.

Jeśli nadal szukasz krótszych czasów uruchamiania, poszukaj tutaj listy obszarów do sprawdzenia.


źródło
2
Szczególnie skoncentruj się na punkcie 2. Uruchamianie jądra i skrypty inicjujące zajmują odpowiednio około 30: 70% czasu rozruchu. Niestandardowe jądro uruchomi się o około 40% szybciej, niestandardowe skrypty startowe mogą poprawić się o 90% w stosunku do oryginałów, co oznacza, że ​​możesz łatwo skrócić o połowę czas uruchamiania.
SF.
Masz całkowitą rację, zamieniłem # 1 i # 2, ponieważ spędzałem czas ze skryptami inicjującymi zanim cokolwiek innego.
8

Dlaczego tak długo trwa, gdy uruchamia się z pamięci flash?

Częścią odpowiedzi może być kwestia przepustowości. Chociaż karty SD używają pamięci flash NAND, mogą przesyłać dane tylko szeregowo. W porównaniu do, powiedzmy, mikroukładu flash NAND, który został przylutowany do płytki, który mógł komunikować się bezpośrednio z CPU za pomocą równoległej magistrali. Ogólna szybkość transferu byłaby z grubsza zależna od kilku czynników, takich jak szybkość zegara magistrali i rozmiar przesyłanych plików.

Szybkość transferu karty SD jest w rzeczywistości dość niska w porównaniu z nowoczesnym dyskiem twardym SATA III, a nawet SATA II. Poza portem SATA, USB 3.0 to kolejna alternatywa, która ma dość wysoką szybkość transferu przy stosunkowo niskim koszcie.

Więcej informacji można znaleźć tutaj , tutaj i tutaj .

Czy jest coś, co można zrobić, aby uruchomić boot Raspberry Pi w mniej niż 5 sekund?

Procesor, z którego korzysta Pi, jest dość niskiej jakości (stąd cena). Oznacza to, że brakuje mu szybkich interfejsów, takich jak SATA lub USB 3.0. Poza emulacją oprogramowania tych protokołów (która prawdopodobnie będzie również cierpieć z powodu poważnych problemów z przepustowością), niewiele można zrobić poza przycinaniem tłuszczu z systemu operacyjnego.

Czy mogą przejść w tryb hibernacji, w którym zapisuje swoją pamięć RAM do FLASH, a następnie odczytują ją ponownie po włączeniu?

Według OpenElec, Pi nie obsługuje hibernacji , ale jeśli przeczytasz trochę dalej, mają porady dotyczące przyspieszenia twojego Pi .

David Freitag
źródło
3

Ogólnie rzecz biorąc, czytanie z SD jest bardzo wolne, więc wpływa drastycznie.

Wypróbuj program rozruchowy i dowiedz się, czy jest jakiś czas, aby poprawić czas uruchamiania.

Lub możesz skonfigurować własne jądro, aby miało bardzo mały rozmiar. Lub pomijanie niepotrzebnej inicjalizacji (wyszukiwanie dziwne lub coś takiego) może pomóc.

Younggun Kim
źródło