मैं रास्पबेरी पाई को एनएफएस रूट के साथ बूट करने के लिए कैसे कॉन्फ़िगर करूं?


25

एसडी कार्ड के बजाय रूट फाइल सिस्टम के लिए मैं अपने रास्पबेरी पाई को एनएफएस सर्वर का उपयोग कैसे कर सकता हूं?

मैं प्रदर्शन / बैकअप / विकास उद्देश्यों के लिए एनएफएस के माध्यम से एक दूरस्थ मशीन पर अपनी रूट फाइल सिस्टम रखने के लिए अपने रास्पबेरी पाई को स्थापित करने में सक्षम होना चाहता हूं। मैं यह कैसे कर सकता हूँ?


टिप के लिए बहुत बहुत धन्यवाद बाहर टिप्पणी करने के लिए #iface eth0 inet dhcp (/ mnt / rpi-root / etc / network / interfaces) से। उस बदलाव के बिना, मैं लगभग एक सप्ताह के प्रयास के लिए अपना पहला काम करने वाला एनएफएस बूट नहीं पा सका हूं। उस ख़बर को कहीं और नहीं पढ़ा था। बहुत बहुत धन्यवाद

जवाबों:


24

लघु संस्करण

  1. आपको एक रूट तैयार करने और इसे एनएफएस मशीन से निर्यात करने की आवश्यकता है
  2. आपको उसका उपयोग करने के लिए प्रारंभिक चरण बूटिंग को कॉन्फ़िगर करने की आवश्यकता है

प्रारंभिक चरण बूटिंग के लिए आपको अभी भी एसडी कार्ड की आवश्यकता होगी, लेकिन उसके बाद / बूट के अलावा कुछ भी एसडी कार्ड की आवश्यकता नहीं होगी।

विवरण

मैंने यह केवल एक लिनक्स मशीन पर किया है। सिद्धांत रूप में यह किसी भी मशीन पर संभव है जो NFS फाइल सिस्टम को निर्यात कर सकता है।

  1. एक रूट फाइलसिस्टम तैयार करने का सबसे आसान तरीका मौजूदा छवियों द्वारा प्रदान किए गए एक को कॉपी करना है। मैंने अपने शुरुआती बिंदु के रूप में आधिकारिक डेबियन 6 छवि का उपयोग किया :

    1. छवि डाउनलोड करें, .zip फ़ाइल निकालें। अब आपको कहीं पर debian6-19-04-2012.img होना चाहिए
    2. लूपबैक डिवाइस का उपयोग करके उस छवि से रूट विभाजन को माउंट करें। आपको रूट विभाजन की शुरुआत के लिए छवि में ऑफसेट की आवश्यकता होगी, इस उदाहरण में यह छवि में दूसरा विभाजन है:

      fdisk -l debian6-19-04-2012.img
      
      डिस्क डेबियन 6-19-04-2012.img: 1949 एमबी, 1949999616 बाइट्स
      4 प्रमुख, 32 सेक्टर / ट्रैक, 29754 सिलेंडर, कुल 3808593 सेक्टर
      इकाइयां = 1 * 512 = 512 बाइट के सेक्टर
      सेक्टर आकार (तार्किक / भौतिक): 512 बाइट्स / 512 बाइट्स
      I / O आकार (न्यूनतम / इष्टतम): 512 बाइट्स / 512 बाइट्स
      डिस्क पहचानकर्ता: 0x000ee283
      
      
      डिवाइस बूट स्टार्ट एंड ब्लाक आईडी सिस्टम
      debian6-19-04-2012.img1 2048 155647 76800 c W95 FAT32 (LBA)
      debian6-19-04-2012.img2 157696 3414015 1628160 83 लिनक्स
      debian6-19-04-2012.img3 3416064 3807231 195584 82 लिनक्स स्वैप / सोलारिस
      जड़ @ रॅपन्ज़ेल: / tmp / debian6-19-04-2012 # 
      

      दूसरा विभाजन ब्लॉक (या सेक्टर) 157696 पर शुरू होता है इसलिए ऑफसेट (512 * 157696) = 80740352 है:

      रूट @ रॅपन्ज़ेल: / tmp / debian6-19-04-2012 # mkdir / mnt / पीआई-रूट-लूप
      रूट @ रॅपन्ज़ेल: / tmp / debian6-19-04-2012 # माउंट-लूप, ऑफ़सेट = 80740352 /tmp/debian6-19-04-2012/debian6-19-04-2012.img / mnt / pi-root- पाश
      रूट @ रॅपन्ज़ेल: / tmp / debian6-19-04-2012 # ls / mnt / पीआई-रूट-लूप
      बिन डेस्कटॉप आदि एफबीबी mnt proc sbin selinux sys usr
      बूट देव होम मीडिया ऑप्ट रूट sd svv tmp var
      जड़ @ रॅपन्ज़ेल: / tmp / debian6-19-04-2012 #
      
    3. माउंट की गई छवि के साथ आप संभवतः लूपबैक डिवाइस के उपयोग से बचने के लिए इसे कहीं और स्थायी रूप से कॉपी करना चाहते हैं। मैंने LVM2 वॉल्यूम बनाया और इसे / mnt / rpi-root पर माउंट किया, इसलिए मैंने किया:

      cp -rav / mnt / pi-root-loop / * / mnt / rpi-root /
      
    4. हमें अब फाइल सिस्टम को निर्यात करने की आवश्यकता है, इसलिए हमें एक लाइन जोड़ने की आवश्यकता है:

      / mnt / rpi- रूट 192.168.1.2 (आरडब्ल्यू, no_root_squash)
      

      में / आदि / NFS सर्वर पर निर्यात, जहां 192.168.1.2 रास्पबेरी पाई का पता है। जोड़ने के बाद exportfs -rvनिर्यात की सूची को फिर से पढ़ने के लिए चलाएं । ( व्यक्तिगत मेजबान के बजाय वाइल्डकार्ड / सबनेट सहित अधिक उन्नत विकल्पों के लिए निर्यात (5) देखें )

    आप वैकल्पिक रूप से इस चरण को छोड़ सकते हैं और कुछ का उपयोग करके खरोंच से एक रूट फाइल सिस्टम का निर्माण कर सकते हैं multistrap

  2. अब हमें एक एसडी कार्ड बनाने की आवश्यकता है जो इस एनएफएस शेयर का उपयोग करके शुरुआती चरण में बूटिंग और बूट करता है। मैंने आधिकारिक छवि का पहला विभाजन लेकर और एक एसडी कार्ड की प्रतिलिपि बनाकर किया था, जहां एसडी कार्ड / देव / पीडीपी है:

    डी डी
    

    और फिर चूंकि इसने पहले विभाजन को संपादित किया था, इसलिए हमने जो दो विभाजन कॉपी नहीं किए थे, उन्हें हटाने के लिए विभाजन के साथ विभाजन तालिका को संपादित किया।

    उसके बाद मैंने एसडी कार्ड से विभाजन को माउंट किया और इसे पढ़ने के लिए फ़ाइल cmdline.txt से संपादित किया:

    dwc_otg.lpm_enable = 0 कंसोल = ttyAMA0,115200 kgdboc = ttyAMA0,115200 कंसोल = tty1 root = / dev / nfs nfsroot = 192.68.1.1: / mnt / rpi-root ip = dhcp rootfstype = nfs।
    

    जहाँ 192.168.1.1 NFS सर्वर का पता है। यदि आप डीएचसीपी का उपयोग नहीं करना चाहते हैं, तो आप आईपी पते को वैकल्पिक तरीके से सेट कर सकते हैं, आगे के विवरण के लिए यह दस्तावेज़ देखें।

    एक बार यह हो जाने के बाद आप एसडी कार्ड को अनमाउंट कर सकते हैं और अपने आरपीएसबेरी पाई को एनएफएस रूट के साथ बूट कर सकते हैं। आप फ़ाइल सिस्टम को सर्वर साइड, या अन्य एनएफएस क्लाइंट्स से भी जोड़-तोड़ कर सकते हैं, जैसा कि आप फिट देखते हैं (जैसे QEMU + binfmt_misc , LVM स्नैपशॉट, बैकअप सिस्टम आदि)

वैकल्पिक चीजें

  • RAMRUN और RAMLOCK को हाँ / etc / default / rcS कारणों / var / रन और / var / लॉक में क्रमशः tmpfs (यानी ramdisk) के रूप में सेट करना - यह संभवतः सार्थक है, भले ही आपके पास केवल एक डिवाइस बूट हो रहा हो NFS फाइल सिस्टम।
  • यदि आप ip = dhcp का उपयोग कर रहे हैं, तो आपको संभवतः लाइन पर टिप्पणी करने की आवश्यकता होगी:

    #iface eth0 inet dhcp
    

    ऐसी परिस्थिति से बचने के लिए / etc / नेटवर्क / इंटरफेस / (/ mnt / rpi-root / etc / network / interfaces) जहां शुरुआती बूट डीएचसीपी और बाद में एक के बीच स्वैपिंग एक संदेश का कारण बनता है:

    nfs: सर्वर 192.168.1.1 प्रतिक्रिया नहीं दे रहा है, फिर भी कोशिश कर रहा है

  • यदि आप एक ही रूट से बहुत सारे उपकरणों को बूट करना चाहते हैं, तो आपको एक ही फाइल में लिखने की कोशिश करने वाली कई मशीनों के साथ समस्याओं से बचने के लिए "स्थानीय" / tmp (शायद tmpfs) और अन्य सूक्ष्मता प्रदान करने का ध्यान रखना होगा।


इस विस्तृत ट्यूटोरियल के लिए धन्यवाद। मैं अंतिम छवि के साथ पूरी तरह से काम कर रहा था। अब जब मैंने दो दिन पहले जारी की गई नई छवि के लिए ठीक उसी चरणों का पालन करने की कोशिश की, तो मैं त्रुटि में आ गया। रूट फाइल सिस्टम की जाँच करना निम्न त्रुटि के साथ विफल होता है: fsck.ext4: / rootdev खोलने / चलाने की कोशिश करते समय ऐसा कोई भी उपकरण या पता नहीं है जो संभवतः गैर-मौजूद या स्वैप डिवाइस है? एग्जिट स्टेटस के साथ fsck की मृत्यु 8 कोई सुझाव? क्लाउस

मेरे पास अभी जांचने के लिए एक उपकरण तक पहुंच नहीं है। कर्नेल की तरह लगता है nfs रूट समर्थन के बिना बनाया जा सकता है।
फ्लेक्सो

1
लगता है कि मैं समाधान मिल गया है। मैंने fstab बदल दिया है: proc / proc खरीद डिफॉल्ट्स 0 0 / dev / mmcblk0p1 / बूट vfat डिफॉल्ट्स 0 2 # / dev / mmcblk0p2 / ext4 डिफॉल्ट्स, Noimeime 0 1 सवाल यह है कि यह पिछली छवि के साथ काम करने के लिए क्यों उपयोग किया जाता है। यह बस निष्पादित करने में विफल रहा: S05checkroot.sh। BTW: क्या आपके पास स्वैप विभाजन को प्रबंधित करने का कोई विचार है। क्या हमें इसकी आवश्यकता है?

क्या यह आधा गधा और सिर्फ एनएफएस पूरी बात करना संभव है? अर्थात। मेजबान निर्यात /home/user/Documents/raspisRootFolderऔर ग्राहक की fstabपूरी बात पर ध्यान देता है /?
PUK

महान जवाब, मुझे असफल एसडी कार्ड से बाहर निकाला; मेरे NAS सर्वर पर पूरी चीज़ को स्थानांतरित किया। मैं यह भी टिप्पणी की /dev/mmcblk0p2 / ext4 defaults,noatime 0 1से /etc/fstab, हालांकि मुझे लगता है कि यह किसी भी मुद्दे के बिना विफल हो जाएगा यदि आप इसे में छोड़ दें।
TomG
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.