क्या कोई लिनक्स डिस्ट्रो है जो रास्पबेरी पाई पर आसानी से "एम्बेडेड स्टाइल" चलाएगा? [बन्द है]


9

मुझे एक Linux distro चाहिए जो मुझे निम्नलिखित देगा:

  • एक रास्पबेरी पाई पर चलाएँ
  • मज़बूती से बिजली हानि से बच सकते हैं (जैसे केवल-पढ़ने के लिए फ़ाइल सिस्टम के माध्यम से)

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

मुझे कई पैकेज या ड्राइवरों की आवश्यकता नहीं है, बस USB / ईथरनेट के साथ काम करने के लिए पर्याप्त है। मुझे किसी GUI इंटरफ़ेस या किसी भी चीज़ की आवश्यकता नहीं है, यह सिर्फ C में निर्मित एक कस्टम सेवा चलाएगा।

क्या किसी को एक डिस्ट्रो का पता है जो फिट होगा?


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

बाहर की जाँच करें raspberrypi.stackexchange.com लेकिन मुझे लगता है कि यह प्रश्न विषय से हटकर है क्योंकि यह एक शॉपिंग प्रकार का प्रश्न है,
केविन पेंको

जवाबों:


3

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

बिल्डरोट का उपयोग करके, आप अपने प्रश्न में वर्णित के रूप में बिल्कुल लिनक्स कर्नेल और रूट फाइल सिस्टम का निर्माण कर सकते हैं। आपके इंटरनेट कनेक्शन की गति और आपके विकास की पीसी की क्षमताओं के आधार पर, आपके पास 1 से 4+ घंटों में बायनेरिज़ हो सकते हैं। नकारात्मक पक्ष यह है कि परिणामी बायनेरिज़ का परीक्षण नहीं किया जाता है और न ही सफलतापूर्वक बूट और निष्पादित करने की गारंटी दी जाती है। बूट अनुक्रम डिबग करने के लिए एक सिस्टम कंसोल अनिवार्य है। मॉनिटर के बिना ईथरनेट / वाईफ़ाई के माध्यम से मैं अपने मिनी-पीसी (रास्पबेरीपी / एमके802 / मेले ए 1000 / वीआईए एपीसी) का उपयोग कैसे कर सकता हूं, इसके लिए मेरा जवाब देखें लेकिन यह देखते हुए कि रास्पबेरीपी को गैर- डिजाइन करने के लिए डिज़ाइन किया गया था , यह नकारात्मक पहलू आपके कस्टम कर्नेल और आरएफएस के निर्माण के लिए एक बाधा नहीं होना चाहिए।

"जीवित बिजली हानि" के बारे में: फाइलसिस्टम का उचित चयन आमतौर पर इस चिंता को कम कर सकता है। MTD डिवाइस लेयर प्लस एक जर्नलिंग फाइलसिस्टम (जैसे jffs2) ने अनुभव से काफी मजबूत दिखाया है। निकट-पूर्ण सुरक्षा के लिए, ramfsएक आर / डब्ल्यू फाइल सिस्टम के लिए कोई स्विचओवर के साथ एक निश्चित आकार के रैमडिस्क का उपयोग करने वाले (नहीं निश्चित आकार का) है।

परिशिष्ट

बिल्डरोट की विशेषताओं पर 30-स्लाइड इंट्रो यहां है
(अंत में # 27) एम्बेडेड सिस्टम बनाने के लिए कुछ समान और वैकल्पिक साधनों का उल्लेख है।


2

TinyCoreLinux को केवल डिफ़ॉल्ट रूप से पढ़ा जाता है (दृढ़ता वैकल्पिक है): http://www.tinycorelinux.net/3.html


क्या आपने मेरे द्वारा प्रदान किए गए लिंक पर "आर्म वी 6 रास्पबेरी पाई" शीर्षक नहीं देखा?
अवरा

मुझे लगता है कि याद किया है। Upvoted;)
जर्नीमैन गीक

1

कंसोल एक्सेस के साथ सीगेट डॉकस्टार होने के बाद, मैंने इस पर डेबियन निचोड़ स्थापित किया। इसे रीड-ओनली रूट पर चलाने के लिए एक शुरुआती बिंदु के रूप में, मैंने जेफ डोजान द्वारा इस उत्कृष्ट लेख 1 का उपयोग किया । मूल रणनीति में एक स्क्रिप्ट तैयार करना शामिल है, जो प्रत्येक बूट पर, एक tmpfs के रूप में आवश्यक लेखन योग्य निर्देशिकाओं को मापता है। मैं यहाँ जेफ 2 द्वारा स्क्रिप्ट उद्धृत करता हूँ (जेफ को कुडोस!)

#!/bin/bash
DIRS="/tmp /var/log /var/run /var/lock /var/tmp /var/lib/urandom /var/lib/dhcp /etc/network/run"
for DIR in $DIRS; do
  echo "Mounting $DIR as tmpfs"
  mount -n -t tmpfs tmpfs $DIR
  if [ -d "$DIR-saved" ]; then
    echo "Restoring $DIR-saved to $DIR"
    tar -C "$DIR-saved" -cf - ./ | tar -C "$DIR" -xpf -
  fi
done

echo "nameserver 4.2.2.1" > /var/tmp/resolv.conf
touch /var/lib/dhcp/dhcpd.leases

exec /sbin/init

ऊपर की पंक्तियों को अपने लक्ष्य रूटफ़्स पर स्क्रिप्ट / sbin / init-ro के रूप में सहेजें और इसे निष्पादन योग्य बनाएं।

chmod 755 /sbin/init-ro

बूट-टाइम के दौरान इस स्क्रिप्ट का उपयोग करने के लिए, आपको सिस्टम रूट्स को थोड़ा तैयार करना होगा (सभी को जेफ की स्क्रिप्ट 2 से उद्धृत किया गया है ( $ROOTआपके माउंट किए गए रूटफुट के वास्तविक स्थान के अनुकूल )।

# Configure dhcp-client to write resolv.conf to /tmp instead of /etc
sed -i 's/\/etc\/resolv.conf/\/var\/tmp\/resolv.conf/' $ROOT/sbin/dhclient-script > /dev/null 2>&1
rm $ROOT/etc/resolv.conf
ln -s /var/tmp/resolv.conf $ROOT/etc/resolv.conf


# make /etc/network/run/ a symlink to /tmp/network/
rm -rf $ROOT/etc/network/run
ln -s /var/tmp/network $ROOT/etc/network/run


# Fixes from http://wiki.debian.org/ReadonlyRoot

rm $ROOT/etc/blkid.tab  > /dev/null 2>&1
ln -s /dev/null $ROOT/etc/blkid.tab

rm $ROOT/etc/mtab  > /dev/null 2>&1
ln -s /proc/mounts $ROOT/etc/mtab

rm $ROOT/etc/rcS.d/S12udev-mtab

rm -rf $ROOT/var/log/*

ऊपर की तरह तैयार किए गए रूटफुट होने के बाद, आप रूट-रीड्स को केवल / etc / fstab पर माउंट कर सकते हैं ( आपके द्वारा उपयोग किए जा रहे फाइलसिस्टम के साथ ext2 को प्रतिस्थापित करें या इसके बजाय रूटफ्स का उपयोग करें )।

/dev/root  /                 ext2  noatime,ro   0 1

अंत में, आपको वास्तविक / sbin / init से पहले स्क्रिप्ट को चलाने के लिए निम्नलिखित को अपने कर्नेल पैरामीटर (जैसे / Rooti पर / inboot/cmdline.txt) में जोड़ना होगा । (निम्नलिखित बस का एक उदाहरण है जड़ और rootdelay पैरामीटर है कि लाइन में संलग्न किया करने के लिए महत्वपूर्ण हिस्सा। cmdline.txt है ।)init=/sbin/init-ro

root=/dev/mmcblk0p2 rootdelay=2 init=/sbin/init-ro

लेकिन इस बात से अवगत रहें कि किसी भी सॉफ़्टवेयर के लिए रूटफ़्स पर राइट-ऐक्सेस की आवश्यकता होती है, जिसके लिए आपको उपयुक्त tmpfs स्थानों को माउंट करना होगा या बाहरी स्टोरेज को लिखना होगा।


1

मेरे 2 सेंट, यह एक पी के लिए एक विश्वसनीय बैटरी बैकअप बनाने के लिए सबसे आसान (और अंत में अच्छा है) की तुलना में यह केवल पढ़ने के लिए ओएस के साथ रहना है। बेशक, इसका मतलब है कि आपको इलेक्ट्रॉनिक के कुछ बहुत ही बुनियादी ज्ञान की आवश्यकता होगी (और मेरा मतलब है BASIC; हम 3-4 घटक बात कर रहे हैं)। इस आदमी ने कुछ और के साथ एक फैंसी बना दिया: /raspberrypi/1360/how-do-i-build-a-ups-like-battery-backup-system

यदि आप ऐसा करते हैं, तो LiPo का उपयोग न करें; NiCad आप क्या चाहते हैं। LiPo चार्जिंग पर निरंतर नहीं ले सकता है; आपको चेतावनी दी गई थी।

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

सभी लॉग को अक्षम करने के लिए आप निम्नलिखित नियम को /etc/rsyslog.conf में पहले नियम के रूप में जोड़ सकते हैं:

*.* ~

यहां तक ​​कि जब कोई समस्या होती है, तो 99.9999% समय (मेरे व्यक्तिगत अनुभव में लगभग हर बार मेरा मतलब है) उस समस्या का ध्यान रखा जाता है जब डिस्क को अगली बार स्कैन किया जाता है। जब ऐसा होता है तो मुख्य रूप से मौसम पर निर्भर करता है कि ओएस ने देखा कि आपने क्या किया है (अजीब तरह से यह आमतौर पर नहीं होता है)। चूंकि एक पाई एसडी कार्ड का उपयोग करता है, इसलिए मुझे लगता है कि यह मेरे पीसी पर की तुलना में एक पाई पर भी कम होता है।


1

अगर मुझे सही से याद है तो केवल एक फाइल सिस्टम एसडी कार्ड को 'सुरक्षित' नहीं करेगा। मेरे पास एक ग्राहक पर 10 Pi चल रहा है (उनमें से आधे के लिए 80 दिनों से अधिक वर्तमान समय) जहां बिजली उतनी स्थिर नहीं है जितनी आप चाहते हैं / चाहते हैं। मुझे बिजली की आपूर्ति (3 ए पर रेट किए गए सस्ते चार्जर और 2.3 ए पर रेट किए गए आईपैड चार्जर) खोजने में थोड़ा समय लगा) जो वास्तव में कुछ दिनों तक पाई के चलने को बनाए रख सकते थे, इससे पहले मुझे सभी तरह के एसडी भ्रष्टाचार के मुद्दे थे , जिसमें केवल उस रीड-ओनली IIRC का उपयोग किया गया था।

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


0

मैंने इसके लिए Puppy Linux के बारे में अच्छी बातें सुनी हैं । हालांकि मुझे यह स्वीकार करना चाहिए कि मैंने इसे आजमाया नहीं है।

इसे एसडी कार्ड में वापस नहीं लिखने के लिए सेट किया जा सकता है।


-1

Raspberrypi.org के डाउनलोड पृष्ठ से चार चित्र उपलब्ध हैं :

  • डेबियन "मट्ठा"
  • सॉफ्ट-फ्लोट डेबियन "मट्ज़ी"
  • आर्क लिनक्स एआरएम
  • QtonPi

और यहाँ केवल वही है जो केवल डिफ़ॉल्ट रूप से पढ़ा जाता है (लेकिन यदि आवश्यक हो तो इसे बदला जा सकता है):

उम्मीद है, इनमें से एक आपकी जरूरतों को पूरा करेगा।


इनमें से कोई भी केवल डिफ़ॉल्ट रूप से पढ़ा जाता है।
एलेक्स चैंबरलेन

@alex, अच्छी बात है।
येदिक

TinyCoreLinux सूची में जोड़ा गया। यह केवल डिफ़ॉल्ट रूप से पढ़ा जाता है।
अवरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.