रास्पबेरी पाई के लिए बूट समय कैसे सुधारें?


27

मैं एक एम्बेड करने योग्य दूरस्थ अनुप्रयोग बना रहा हूं जिसे स्थायी रूप से स्विच नहीं किया जाएगा। मैं अलग-अलग ओएस वितरण के साथ खेल रहा हूं और तेजी से पढ़ने की गति के साथ बेहतर एसडी कार्ड का उपयोग करके बूट करने के लिए समय को काफी कम कर सकता हूं । मैं किसी विशेष वितरण के लिए नियत नहीं हूं, इसलिए मैं एक न्यूनतम लिनक्स वितरण का उपयोग करने के लिए जितना संभव हो उतना नीचे छीन सकता हूं।

(मैंने उन बेंचमार्क की तलाश करने का प्रयास किया है जो लोग बूट समय को बेहतर बनाने के लिए दौड़े हैं, लेकिन मुझे कठिन आंकड़ों के साथ कुछ भी नहीं मिला है।)

मैं बिल्ड रूट का भी उपयोग कर सकता हूं (YouTube वीडियो रास्पबेरी पाई - सुपर फास्ट बूट टाइम - मार्शमैलो एंटरटेनमेंट सिस्टम भी देखें ) ...


आपको इस प्रश्न को बंद करने के लिए मतदान करना चाहिए। तब उपयोगकर्ताओं को मूल प्रश्न पर पुनर्निर्देशित किया जाएगा और अधिक उत्तर जोड़े जाएंगे। SInce कि एक के रूप में चिह्नित नहीं किया गया है अभी तक उत्तर दिया।
पायोटर कुला

मैं सिर्फ यह सोच रहा हूं कि इस गतिविधि में बहुत कुछ है (विचार स्पष्ट रूप से उच्च नहीं हैं, सिर्फ इसलिए कि यह एक दिन से कम है), अधिक वोट, और अधिक उत्तर, इसलिए मैंने सोचा कि इसे छोड़ना बेहतर हो सकता है ऊपर, और फिर संभवतः अपना जवाब यहां पर स्थानांतरित करें। मुझे लगता है कि यह वास्तव में सुविधा की बात है। 1 उपयोगकर्ता 3 के विरोध में अपना जवाब दे रहा है और अपने सभी मतों को आगे बढ़ा रहा है। क्या कोई कारण है कि हमें एक रास्ता या दूसरे पर जाना चाहिए? मुझे कोई आपत्ति नहीं है, मैं सिर्फ यह सोच रहा हूं कि जिन अन्य लोगों ने उत्तर दिया है वे आगे बढ़ना नहीं चाहते हैं, और इस तरह हम सामग्री खो देते हैं
RPiAwesomeness

@ppumkin इस Meta.SE पोस्ट को बंद करने के बारे में डुप्स की जाँच करें: अच्छे डुप्लिकेट और इस SE ब्लॉग पोस्ट को न हटाएं । मुझे लगता है कि वे मेरी पिछली बात से सहमत हैं। जब तक डुप्लिकेट एक दूसरे की कॉपी-पेस्ट, या भयानक गुणवत्ता नहीं है, और क्योंकि इस एक के पास बहुत सारे उत्तर / गतिविधि हैं, हमें बस उन दोनों को खुला छोड़ देना चाहिए।
आरपीअवेसन

1
@ppumkin अच्छे अंक, इसलिए जब तक यह हटाया नहीं जाता है। मैंने मूल रूप से लीव ओपन की समीक्षा की है, लेकिन मुझे लगता है कि इसे एक डुप्लिकेट के रूप में चिह्नित करना एक सही तरीका है। केवल एक चीज जो मैं सोच सकता हूं, वह यह है कि मैं कम से कम डुप्लिकेट की तुलना में चिह्नित मूल पर एक उच्च-गुणवत्ता वाला क्यू / ए चाहता हूं। यहाँ निश्चित रूप से ऐसा नहीं है।
आरपीअवेसन 20

1
हाँ, आप सही हैं। यहाँ और भी उत्तर हैं। लगता है कि अधिक ध्यान दिया गया है। मुझे लगता है कि हमें यह तय करने के लिए मध्यस्थों पर छोड़ने की जरूरत है क्योंकि वे बेहतर जानेंगे कि यहां क्या करना है। वैसे भी। आपके उत्तर पर वोटों के आवंटन के साथ अच्छा किया गया :) मुझे यकीन है कि ओपी आपके योगदान की सराहना करता है। +1
पायोटर कुला

जवाबों:


13

यदि आप आर्क लिनक्स को उन विशेषताओं के साथ जोड़ते हैं जो फ्रेड ने सुझाव दिया है, तो आपको आमतौर पर तेज़ बूटिंग ओएस प्राप्त करना चाहिए।

OS का बूट-टाइम धीमा हो जाता है

  1. धीमी गति से पढ़ें / लिखें (I / O) गति।

    तो आप एक तेज एसडी कार्ड का उपयोग करने में मदद करेंगे , एक कक्षा 10 कार्ड कक्षा 4 कार्ड की तुलना में काफी तेज होगा । मुझे गलतफहमी हुई कि एसडी कार्ड कक्षाओं ने कैसे काम किया, और टिप्पणी में यह स्पष्ट रूप से बताया गया है, मेरा बुरा। दरअसल, बड़े वीडियो ट्रांसफर जैसे HD वीडियो और व्हाट्सएप के लिए क्लास 10 कार्ड क्लास 4 कार्ड से ज्यादा तेज होगा । जाहिरा तौर पर कक्षा 4 केवल छोटी फाइलों के साथ ही प्रदर्शन करता है। फिर से, मेरा बुरा, लेकिन हे, हम सब अब और फिर से सीखते हैं।

  2. एक दलदल-नीचे init अनुक्रम।

    यदि आपके पास बहुत सारे सॉफ़्टवेयर हैं जो बूट चरण के दौरान फायर करते हैं, तो बूट-टाइम धीमा होने वाला है। अधिक सॉफ्टवेयर शुरू == लंबे समय तक बूट समय।

    इस प्रकार, यदि आपको एक तेज़ बूट की आवश्यकता है, तो जितना संभव हो उतने अनुक्रम से सॉफ़्टवेयर को काट लें। आप एक साधारण स्क्रिप्ट बना सकते हैं (या मुझे यकीन है कि वहाँ से बाहर एक है) जो मुख्य बूट अनुक्रम पूरा होने के बाद सॉफ्टवेयर लॉन्च करेगा , लोड को थोड़ा और फैलाएगा।

वह मूल रूप से यह है। आर्क लिनक्स संभवतः जाने के लिए रास्ता है, जैसा कि मैंने पहले कहा था, फ्रेड उल्लेखित सुविधाओं के साथ संयुक्त है। आर्क एक बहुत ही न्यूनतम ओएस है और उपयोग करने के लिए शुरुआत के लिए सबसे अच्छी बात नहीं हो सकती है, लेकिन अगर आपको लिनक्स में अनुभव है, तो इसके लिए जाएं। इसे स्थापित करने में थोड़ा समय लगता है, क्योंकि यह नंगे न्यूनतम के साथ आता है और इसे स्थापित करना है

आशा है कि आपका प्रोजेक्ट अच्छा हो!


3
एसडी कार्ड "क्लास" एक एम्बेडेड सिस्टम में प्रदर्शन का एक बहुत खराब संकेतक है। "वर्ग" रेटिंग बड़े अनुक्रमिक फ़ाइल स्थानांतरण (जैसे कि आपके पास एक मल्टी-मेगापिक्सेल डिजिटल कैमरा है) के लिए है, न कि स्टार्टअप स्क्रिप्ट जैसी छोटी फ़ाइलों के लिए। कक्षा 4 के कार्ड नियमित रूप से 4k पर अधिकांश कक्षा 10 के कार्ड को 100 या अधिक के कारक द्वारा पढ़ते और लिखते हैं। अच्छे IOPS के साथ कक्षा 10 के कार्ड हैं, लेकिन वे मॉडल कम और बीच के हैं।
बेन वोइगट

Yea I @BenVoigt से सहमत हूँ - जब मैंने कक्षा 4 का उपयोग किया था तो ऐसा लगता था कि छोटे लेखन और अपडेट तेज़ थे लेकिन 10 वीं कक्षा में बड़े स्थानांतरण अधिक बेहतर हैं। काश मैं तुरंत प्रदर्शन के लिए बैटरी द्वारा संचालित एक रैम कार्ड का उपयोग कर सकता।
पायोटर कुला

मुझे क्षमा करें, मुझे यह नहीं पता था। मैं उसे तुरंत ठीक कर दूंगा। मैं समझ चुका था कि कक्षा जितनी अधिक होगी उतनी ही गति होगी। यह इंगित करने के लिए धन्यवाद, मैंने अभी-अभी कुछ सीखा है: D धन्यवाद
अपवोट्स के लिए

मैं सोच रहा हूं कि मेरा जवाब क्यों खराब हो गया। मैं पूरी तरह से प्रतिनिधि के नुकसान का बुरा नहीं मानता, मैं सिर्फ यह जानना चाहता हूं कि क्या पतन हुआ है, इसलिए मैं अपने उत्तर में सुधार कर सकता हूं।
RPiAwesomeness

7

मैं आर्क लिनक्स का उपयोग करने का सुझाव देता हूं।

मुझे 5s (कर्नेल) + 5s (उपयोक्ता के लिए) का सामान्य बूटिंग समय मिलता है और इसके लिए अधिक प्रयास की आवश्यकता नहीं होती है, क्योंकि यह systemdinit के लिए उपयोग होता है ।


2
@goldilocks, आप रास्पियन पर भी सिस्टमड का उपयोग कर सकते हैं। इसने मेरे लिए बूट समय को आधा कर दिया।
जॉन ला रूय

@JohnLaRooy अच्छा पता है। मैं प्रदर्शन के अंतर को मान रहा था। पारंपरिक अंतर्ज्ञान ज्यादातर इसलिए होगा क्योंकि सिस्टमड समानांतर हो सकता है, लेकिन यह संभवतः सब कुछ के लिए शेल स्क्रिप्ट को कांटा और व्याख्या नहीं करने से समय बचाता है।
गोल्डीलॉक्स

@goldilocks मैं सहमत नहीं हूँ, मैंने कोशिश की, और systemdतुलना में बहुत फर्क पड़ता है sysvinitमेरा जवाब देखिए ।
बसज

@ बस्ज जानना और भी बेहतर। मैंने इसके बारे में अपनी टिप्पणी हटा दी है कि शायद "बूट समय के मामले में यह बहुत फर्क नहीं कर रहा है क्योंकि यह एक सिंगल कोर है"। मैं ज्यादातर सिस्टमड का उपयोग करता हूं - लेकिन टीबीएच मैं बूट समय पर ज्यादा ध्यान नहीं देता।
गोल्डीलॉक्स

7

मैंने इसके बारे में यहां एक लेख लिखा था ।

संक्षेप में: का उपयोग करें systemd

लिनक्स कॉर्ड चालू होने के बाद, पावर कॉर्ड को प्लग करने या 3 सेकंड से कम समय के बाद आप आसानी से अपना रास्पबेरीपीआई ऐप 8 सेकंड से कम चला सकते हैं ।

एक उदाहरण यहाँ, मेरी सेवा को कहते हैं samplerbox.service:

यहाँ छवि विवरण दर्ज करें

नोट: मैंने उपयोगकर्ताओं के समय का अनुकूलन करने की कोशिश नहीं की है क्योंकि मुझे इसकी आवश्यकता नहीं है: मेरा ऐप वैसे भी जल्दी शुरू हो जाता है, इसलिए मुझे कोई आपत्ति नहीं है यदि मेरे ऐप के लॉन्च होने के बाद नेटवर्किंग डीएचसीपी / आईपी अट्रैक्शन में 8 सेकंड लगते हैं।


4

इष्टतम समाधान संभवतः एक वितरण का निर्माण करना है जो केवल वही करता है जो आप इसे बूट करना चाहते हैं, इस तरह से आपको न्यूनतम समय की गारंटी दी जाती है ( पापी की तरह एक न्यूनतम इनिट प्रणाली का उपयोग करके )। वैकल्पिक रूप से, आप लिनक्स कर्नेल की डिस्क ( हाइबरनेशन ) सुविधा के लिए सस्पेंड का उपयोग करने पर विचार कर सकते हैं । एक बार बूट हो जाने के बाद, सस्पेंड और रिज्यूम ऑपरेशन बाद में बहुत जल्दी हो जाते हैं, और इस बीच सिस्टम पूरी तरह से बंद हो जाता है।


3

मॉड्रॉबिंग ड्राइवरों के बजाय एक सांख्यिकीय रूप से लिंक किए गए कर्नेल का उपयोग करना भी नाटकीय रूप से प्रदर्शन बढ़ा सकता है। कर्नेल को सावधानीपूर्वक कॉन्फ़िगर करने और पुन: स्थापित करने के लिए अन्य अनुकूलन किए जाने चाहिए।


1
एक साल पुराने जवाब को टक्कर देने के लिए क्षमा करें। लेकिन क्या आप इस बारे में कुछ और जानकारी दे सकते हैं कि कोई "स्टैटिकली लिंक्ड कर्नेल का उपयोग" कैसे करेगा?
सीजर


इसे जोड़ने के लिए, एक सांख्यिकीय रूप से लिंक किए गए कर्नेल को संकलित करने के लिए, आपको केवल 'मेनुकोनफिग बनाने' या 'xconfig बनाने' के माध्यम से जाने की ज़रूरत है और उन चालकों को शामिल करें, जिन्हें आप कर्नेल में मॉड्यूल के रूप में चुनने के बजाय उनकी आवश्यकता है। ऐसा करने से उन्हें vmlinuz में पकाया जाता है, और आपको बूटअप पर मोडप्रो अनुक्रम को छोड़ने की सुविधा मिलती है, जिससे कर्नेल मॉड्यूल का पता लगाने और लोड करने में काफी समय लगता है, क्योंकि वे आवश्यक हैं।
शराबी कोड बंदर

आपके उत्तर के लिए धन्यवाद। यह उपयोगी होने के लिए, क्या आप इसे काम करने के लिए कुछ प्रतिलिपि प्रस्तुत करने योग्य कदम शामिल कर सकते हैं? (कुछ इस तरह 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: ...)
बसज जूल

वास्तव में नहीं, एक कर्नेल को फिर से जोड़ना एक 5 कदम सरल प्रक्रिया नहीं है। लिनक्स कर्नेल को कॉन्फ़िगर और संकलित करने के तरीके को दिखाने के लिए वेब पर बहुत सारे हैं-कैसे हैं ...
Drunken Code Monkey

1

TinyCoreLinux का उपयोग करें । यह तेजी से लोड करने और बिजली की खराबी से बचने के लिए बनाया गया है।


आपके उत्तर के लिए धन्यवाद। आप इसे काम करने के लिए कुछ प्रतिलिपि प्रस्तुत करने योग्य कदम शामिल कर सकते हैं? (कुछ इस तरह 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!)
बसज

0

आप बूट प्रक्रिया को तेज करने के लिए eINIT का उपयोग करने की कोशिश कर सकते हैं: http://sourceforge.net/projects/einit/

दुर्भाग्य से वर्तमान (अक्टूबर 2016) में eINIT मुखपृष्ठ नोट:

eINIT लिनक्स और FreeBSD के लिए / sbin / init प्रोग्राम का वैकल्पिक कार्यान्वयन हुआ करता था। ठीक है, मुझे लगता है कि यह अभी भी है, लेकिन इस परियोजना पर अब सालों से काम चल रहा है।


हम यहां केवल सूचना-रहित लिंक के संबंध में एक नई नीति का प्रयास कर रहे हैं । यदि इस पोस्ट को ऐसी जानकारी शामिल करने के लिए संपादित नहीं किया गया है, जो एक जवाब के रूप में खड़ी हो सकती है, हालांकि न्यूनतम, 48 घंटों में समुदाय द्वारा इसे सही करने के लिए इसे सामुदायिक विकी में परिवर्तित किया जाएगा।
Ghanima

-3

किसी भी कर्नेल मॉड्यूल को निकालें जो आप उपयोग नहीं करेंगे।


4
इस साइट पर दिए गए सुझावों में सुझाए गए कार्यों को करने के लिए आवश्यक कदम (यह निर्धारित करने के लिए कैसे मॉड्यूल लोड किए गए हैं, जिनकी आवश्यकता है और उन्हें कैसे निकालना है), और संदर्भ और आगे की जानकारी के लिए लिंक शामिल होना चाहिए।
स्टीव रोबिलार्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.