Tworzę zdalną aplikację do osadzania, która nie będzie trwale włączona. Bawiłem się różnymi wersjami systemu operacyjnego i mogę znacznie skrócić czas uruchamiania, używając lepszych kart SD o większej prędkości odczytu. Nie jestem przywiązany do żadnej konkretnej dystrybucji, więc mogę rozebrać tyle, ile jest konieczne, aby użyć minimalnej dystrybucji Linuksa.
(Próbowałem poszukać testów porównawczych, które ludzie przeprowadzili, aby skrócić czas uruchamiania, ale nie znalazłem nic z twardymi danymi).
Mógłbym również użyć kompilacji root (patrz także wideo z YouTube Raspberry Pi - Super Fast Boot Time - Marshmallow Entertainment System ) ...
Odpowiedzi:
Jeśli połączysz Arch Linux z funkcjami sugerowanymi przez Freda, powinieneś uzyskać ogólnie szybki system operacyjny.
Spowalnia to czas uruchamiania systemu operacyjnego
Wolne prędkości odczytu / zapisu (I / O).
Więc korzystając szybszą kartę SD będzie pomóc,
Class 10 karta będzie znacznie szybciej niż klasa 4 karty. Źle zrozumiałem, jak działają klasy kart SD, co zostało dość wyraźnie zaznaczone w komentarzach, moje złe. W rzeczywistości karta klasy 10 będzie szybsza niż karta klasy 4 w przypadku przesyłania dużych plików, takich jak wideo HD i tak dalej. Najwyraźniej klasa 4 działa równie dobrze z mniejszymi plikami. Ponownie, mój zły, ale hej, wszyscy uczymy się od czasu do czasu.Bogata w sekwencje inicjująca.
Jeśli masz dużo oprogramowania, które uruchamia się podczas fazy rozruchu, czas uruchamiania będzie dłuższy. Więcej oprogramowania zaczyna == Dłuższy czas uruchamiania.
Dlatego jeśli potrzebujesz szybkiego rozruchu, wytnij jak najwięcej oprogramowania z sekwencji inicjującej. Możesz stworzyć prosty skrypt (lub jestem pewien, że istnieje), który uruchomi oprogramowanie po zakończeniu głównej sekwencji rozruchowej, jeszcze bardziej rozkładając obciążenie.
Zasadniczo to jest to. Arch Linux to prawdopodobnie najlepsza droga, w połączeniu z funkcjami wymienionymi przez Freda, jak powiedziałem wcześniej. Arch jest bardzo minimalnym systemem operacyjnym i może nie być najlepszą rzeczą dla początkujących, ale jeśli masz doświadczenie w Linuksie, skorzystaj z niego. To wymaga tylko trochę konfiguracji, ponieważ ma absolutne minimum do zainstalowania i to wszystko .
Mam nadzieję, że Twój projekt się powiedzie!
źródło
Sugeruję użycie Arch Linux.
Dostaję normalny czas uruchamiania 5s (jądro) + 5s (do przestrzeni użytkownika) i nie wymaga to dużego wysiłku, ponieważ używa
systemd
do inicjalizacji.źródło
systemd
robi dużą różnicę w porównaniu dosysvinit
. Zobacz moją odpowiedź .Napisałem tutaj artykuł na ten temat.
W skrócie: użyj
systemd
.Możesz łatwo uruchomić aplikację RaspberryPi mniej niż 8 sekund po podłączeniu przewodu zasilającego lub mniej niż 3 sekundy po uruchomieniu rozruchu systemu Linux.
Przykładem tutaj jest moja usługa
samplerbox.service
:Uwaga: nie próbowałem optymalizować czasu przestrzeni użytkownika, ponieważ go nie potrzebuję: i tak aplikacja uruchamia się wcześnie, więc nie mam nic przeciwko, jeśli przypisanie DHCP / IP do sieci zajmie 8 sekund po uruchomieniu mojej aplikacji.
źródło
Optymalnym rozwiązaniem jest prawdopodobnie zbudowanie dystrybucji, która robi dokładnie to, co chcesz przy rozruchu, w ten sposób masz zagwarantowane minimalne czasy (przy użyciu minimalistycznego systemu inicjującego, takiego jak sinit ). Alternatywnie, możesz rozważyć użycie funkcji zawieszenia na dysku ( hibernacji ) jądra Linux. Po uruchomieniu operacje zawieszenia i wznowienia są dość szybkie, a system jest w międzyczasie całkowicie wyłączony.
źródło
Korzystanie ze statycznie połączonego jądra zamiast modprobowania sterowników może również znacznie zwiększyć wydajność. Istnieją inne optymalizacje, które należy wykonać, ostrożnie konfigurując i ponownie kompilując jądro.
źródło
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: ...
)Użyj TinyCoreLinux . Jest przeznaczony do szybkiego ładowania i przetrwania awarii zasilania.
źródło
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!
)Możesz spróbować użyć eINIT, aby przyspieszyć proces rozruchu: http://sourceforge.net/projects/einit/
Niestety obecnie (październik 2016 r.) Strona główna eINIT zauważa:
źródło
Usuń wszystkie moduły jądra, których nie będziesz używać.
źródło