Raspberry Pi'nin açılış süresi nasıl geliştirilir?


27

Kalıcı olarak açılmayacak gömülebilir bir uzaktan uygulama oluşturuyorum. Farklı işletim sistemleri dağıtımlarıyla uğraşıyorum ve daha hızlı okuma hızlarına sahip daha iyi SD kartlar kullanarak önyükleme süresini önemli ölçüde azaltabiliyorum . Belirli bir dağıtım için sabit değilim, bu yüzden en az bir Linux dağıtımı kullanmak için gereken kadar soyulabilir.

(Önyükleme süresini iyileştirmek için insanların koştuğu ölçütleri aramaya çalıştım, ancak güçlü rakamlarla hiçbir şey bulamadım.)

Ayrıca yapı kökü de kullanabilirim (ayrıca bkz. YouTube videosu Raspberry Pi - Süper Hızlı Önyükleme Süresi - Hatmi Eğlence Sistemi ) ...


Bu soruyu kapatmak için oy kullanmalısın. Ardından kullanıcılar orijinal soruya yönlendirilecek ve daha fazla cevap ekleyecektir. Biri henüz cevaplanmış olarak işaretlenmedi.
Piotr Kula

Sadece bunun çok fazla aktiviteye sahip olduğunu düşünüyorum (görüşler açıkça o kadar yüksek değil, sadece bir günden daha az olduğu için), daha fazla oy ve daha fazla cevap, bu yüzden bunu bırakmanın daha iyi olacağını düşündüm yukarı ve muhtemelen cevabınızı buraya getirin. Bu gerçekten bir kolaylık meselesi olduğunu düşünüyorum. 1 kullanıcı, cevabını 3 oyuncunun yerine oynatarak değiştirerek tüm oylarını, sohbeti ve benzerlerini kaybediyor. Öyle ya da böyle gitmemiz için herhangi bir sebep var mı? Umurumda değil, sadece cevaplayan diğer kişilerin hareket etmek istemeyebileceğini düşünüyorum ve bu yüzden içeriği kaybediyoruz
RPiAwesomeness

@ppumkin Dupes'in kapatılmasıyla ilgili bu Meta.SE yazısına göz atın: İyi kopyaları ve bu SE blog yazısını silmeyin . Sanırım önceki noktama katılıyorlar. Yinelenen bir sürece diğeri veya korkunç kaliteli copy-paste, ve bu bir cevap / aktivite bol çünkü biz sadece ikisine de açık bırakmalısınız.
RPiAwesomeness

1
@ ppumkin İyi puanlar, bu silinmediği sürece. Başlangıçta Leave Open'ı gözden geçirdim, ancak bunun bir kopyası olarak işaretlemek, doğru yoldur. Aklıma gelen tek şey, en azından işaretli orijinal üzerinde, kopyadan daha yüksek kalitede bir Q / A almak istediğimdir. Kesinlikle burada durum böyle değil.
RPiAwesomeness

1
Evet haklısın. Burada daha fazla cevap var. Daha fazla dikkat çekmiş gibi görünüyor. Sanırım burada ne yapacaklarını daha iyi bileceklerine karar vermek için moderatörlere bırakmamız gerekiyor. Neyse. Cevabınıza oy vermekten aferin :) OP'nin katkınızı takdir ettiğinden eminim. +1
Piotr Kula

Yanıtlar:


13

Arch Linux'u Fred'in önerdiği özelliklerle birleştirirseniz, genel olarak hızlı önyükleme işletim sistemine sahip olmalısınız.

OS 'önyükleme zamanlarını yavaşlatan şey

  1. Yavaş okuma / yazma (I / O) hızları.

    Böylece daha hızlı bir SD kart kullanmanız yardımcı olacaktır , Sınıf 10 kartı Sınıf 4 karttan çok daha hızlı olacaktır . SD kart sınıflarının nasıl çalıştığını yanlış anladım ve yorumlarda oldukça açık bir şekilde belirtildiği gibi. Aslında, 10. Sınıf kartı , HD video gibi büyük dosya aktarımları için 4. Sınıf karttan daha hızlı olacaktır . Görünüşe göre Sınıf 4, daha küçük dosyalarda olduğu gibi iyi bir performans sergiliyor. Yine, benim kötü, ama hey, hepimiz tekrar tekrar öğreniyoruz.

  2. Tıkalı bir init dizisi.

    Önyükleme aşamasında çalışan birçok yazılımınız varsa, önyükleme süresi daha yavaş olacaktır. Daha fazla yazılım başlangıcı == Daha uzun önyükleme süresi.

    Bu nedenle hızlı bir önyüklemeye ihtiyacınız varsa, init dizisinden mümkün olduğunca çok yazılım kesin. Ana önyükleme sırası tamamlandıktan sonra yazılımı başlatacak , yükü biraz daha uzatacak basit bir komut dosyası (veya orada bir tane olduğundan emin olabilirsiniz) oluşturabilirsiniz .

Temel olarak bu. Arch Linux muhtemelen daha önce söylediğim gibi, Fred'in bahsettiği özelliklerle bir araya gelmenin yoludur. Arch çok az bir işletim sistemidir ve yeni başlayanların kullanması için en iyi şey olmayabilir, ancak Linux'ta deneyiminiz varsa, bunun için gidin. Kurulumu biraz gerektiriyor, çünkü kurulumu minimum düzeyde geliyor ve hepsi bu kadar .

Umarım projeniz iyi gider!


3
SD kart "sınıf" gömülü bir sistemde çok düşük bir performans göstergesidir. "Sınıf" derecelendirmeleri, başlangıç ​​komut dosyaları gibi küçük dosyalar için değil, büyük sıralı dosya aktarımları içindir (çoklu megapiksel dijital kameradaki gibi). Sınıf 4 kartlar, 4k üzerindeki Sınıf 10 kartların çoğundan düzenli olarak daha iyi performans gösterir. İyi IOPS'lu Sınıf 10 kartlar var, ancak bu modeller az ve çok.
Ben Voigt

Evet @BenVoigt ile aynı fikirdeyim - sınıf 4'ü kullandığımda küçük yazmalar ve güncellemeler hızlı gibiydi ama sınıf 10'daki büyük transferler çok daha iyi. Anlık performans için pilli bir RAM kartı kullanabilmeyi isterdim.
Piotr Kula

Üzgünüm, bunu bilmiyordum. Bunu hemen düzelteceğim. Sınıf ne kadar yüksekse hızın o kadar yüksek olduğunu anladım. Buna dikkat çektiğiniz için teşekkürler, daha yeni bir şey öğrendim: D Çok olumlu oylar için teşekkürler :)
RPiAwesomeness

Cevabımın neden indirildiğini merak ediyorum. Temsilciliğin kaybına aldırış etmiyorum, sadece aşağı oyu neyin hak ettiğini bilmek istiyorum, böylece cevabımı geliştirebilirim.
RPiAwesomeness

7

Arch Linux kullanmanızı öneririm.

Normalde 5s (çekirdek) + 5s (kullanıcı alanına) önyükleme süresi alıyorum ve fazla çaba gerektirmiyor, çünkü systemdinit için kullanıyor .


2
@goldilocks, raspbian'da systemd'i de kullanabilirsiniz. Benim için önyükleme zamanını yarıya indi
John La Rooy

@JohnLaRooy bilmek iyi. Performans farkına göre geleneksel init'e göre çoğunlukla sistemd paralellik gösterebileceği için olacağına inanıyorum, ancak muhtemelen kabuk komutlarını her şey için çatallamak ve yorumlamak zorunda kalmadan da zaman kazanıyor.
goldilocks

@goldilocks Katılmıyorum, denedim ve systemdkarşılaştırıldığında, çok fazla fark var sysvinit. Cevabımı gör .
Basj,

@Basj Bilmek daha da iyi. Bu konuda yorumumu sildim, muhtemelen "tek bir çekirdekte olduğu için önyükleme süreleri açısından çok fazla fark yaratmıyor". Çoğunlukla systemd kullanıyorum - ancak TBH önyükleme zamanlarına fazla dikkat etmiyorum.
goldilocks

7

Ben bir yazı yazdım burada bu konuda.

Kısacası: kullanım systemd.

RaspberryPi uygulamanızın güç kablosunu taktıktan sonra 8 saniyeden daha az veya Linux önyüklemesi başladıktan sonra 3 saniyeden daha kısa sürede çalışmasını sağlayabilirsiniz .

Burada bir örnek, hizmetim denir samplerbox.service:

görüntü tanımını buraya girin

Not: Kullanıcı zamanını optimize etmeyi denemedim çünkü buna ihtiyacım yok: Uygulamam yine de erken başlıyor, bu nedenle ağ DHCP / IP özniteliği uygulamanın başlatılmasından 8 saniye sonra başarabilir miyim?


4

En uygun çözüm, muhtemelen açılışta tam olarak ne istiyorsa onu yapan bir dağıtım oluşturmaktır, bu şekilde en az kez garanti edilir ( sinit gibi minimalist bir init sistemi kullanarak ). Alternatif olarak, Linux çekirdeğinin disk askıya alma ( hazırda bekletme ) özelliğini kullanmayı düşünebilirsiniz . Başlatıldıktan sonra askıya alma ve devam ettirme işlemleri daha sonra oldukça hızlıdır ve bu arada sistem tamamen devre dışı kalır.


3

Modprobing sürücüleri yerine statik olarak bağlı bir çekirdek kullanmak da performansı önemli ölçüde artırabilir. Bir çekirdeğin dikkatlice yapılandırılması ve yeniden derlenmesiyle yapılması gereken diğer optimizasyonlar vardır.


1
Asırlık bir cevap verdiğim için özür dilerim. Ancak "statik olarak bağlı bir çekirdeği kullanma" hakkında nasıl bir şeyler yapacağınız hakkında biraz daha bilgi verebilir misiniz?
Sezar


Buna eklemek için, statik olarak bağlı bir çekirdeği derlemek için, modül olarak seçmek yerine, 'make menuconfig' veya 'make xconfig' üzerinden geçmeniz ve çekirdeğe ihtiyaç duyduğunuz sürücüleri eklemeniz yeterlidir. Bunu yapmak onları vmlinuz'da pişirir ve önyükleme sırasında modprobe sırasını atlamanıza izin verir, bu da çekirdek modüllerini gerektiğinde algılamak ve yüklemek için oldukça fazla zaman alır.
Sarhoş Kod Maymun

Cevabınız için teşekkür ederim. Kullanışlı olması için çalışması için birkaç tekrarlanabilir adım ekleyebilir misiniz? (Gibi bir şey 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: ...)
Basj

Gerçekten de, bir çekirdeği yeniden derlemek 5 adımlı basit bir işlem değildir. Yapılandırmak nasıl göstereceğim ve bir Linux çekirdeği ... derlemek nasıl yapılır web üzerinde yılların bol vardır
Sarhoş Kodu Maymun

1

TinyCoreLinux kullanın . Hızlı yükleme ve elektrik kesintilerinde hayatta kalmak için yapılmıştır.


Cevabınız için teşekkür ederim. Çalışması için birkaç tekrarlanabilir adım ekleyebilir misiniz? (Gibi bir şey 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!)
Basj

0

Önyükleme işlemini hızlandırmak için eINIT kullanmaya çalışabilirsiniz:: http://sourceforge.net/projects/einit/

Ne yazık ki şu anda (Eki 2016) eINIT ana sayfasının notları:

eINIT, Linux ve FreeBSD için / sbin / init programının alternatif bir uygulamasıydı. Sanırım hala öyle, ancak proje yıllardır beklemede kaldı.


Burada sadece bilgi bağlantısız cevaplarla ilgili yeni bir politika deniyoruz . Bu gönderi bir cevap olarak durabilecek bilgileri içerecek şekilde düzenlenmemişse, ancak en az 48 saat içinde topluluk tarafından düzeltilmesini basitleştirmek için Topluluk Wiki'sine dönüştürülecektir.
Ghanima

-3

Kullanmayacağınız çekirdek modüllerini çıkarın.


4
Bu sitedeki cevaplar, önerilen eylemleri gerçekleştirmek için gereken adımları (hangi modüllerin yüklendiğini, hangilerinin gerekli olduğunu ve nasıl kaldırıldığını belirleyebilmeli) ve daha fazla bilgiye referans ve bağlantıları içermelidir.
Steve Robillard
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.