बूट समय पर लूप डिवाइस कैसे सेट करें?


14

मैं बूट समय पर लूप डिवाइस सेट करना चाहता हूं। मुझे आश्चर्य है कि ऐसा करने का सबसे अच्छा तरीका क्या है।

मैंने इसके लिए Google पर खोज की है। कुछ कहते हैं, एक udv नियम को जोड़ने, कुछ में एक स्क्रिप्ट डाल कहते हैं /etc/init.d, कुछ भी initramfs को संशोधित करता है।

तो ऐसा करने का सबसे अच्छा या सही तरीका क्या है? क्या आप कुछ विवरण दे सकते हैं (कैसे करें)?

धन्यवाद।


मैं साथ जाऊंगा /etc/init.d/something, या /etc/rc.local, लेकिन मेरा सुझाव है कि जो भी विधि काम करती है, उसके साथ बने रहें।
enzotib

6
किस लिए? यदि आप बूट समय पर फ़ाइल माउंट करना चाहते हैं, तो इसे लूप विकल्प के साथ / etc / fstab में जोड़ें और माउंट आपके लिए लूपबैक डिवाइस को कॉन्फ़िगर करने का ध्यान रखेगा।
Psusi

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

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

@Roun: फ़ाइल में विभाजन अभी भी माउंट किए जा सकते हैं, हालांकि आपको फ़ाइल की शुरुआत से विभाजन की सेक्टर ऑफसेट निर्दिष्ट करना होगा (जैसे mount /disk.img /mnt -o loop,offset=2048पहले विभाजन के लिए)। एक बार लूप डिवाइस को सेट करने के बाद ऑफ़सेट को पार्टेड या fdisk का उपयोग करके पाया जा सकता है (इसके लिए मेरा जवाब नीचे देखें)।
ज़नफुर

जवाबों:


7

उबंटू में स्टार्टअप चीजों को करने के लिए कम से कम तीन "उपयुक्त" तरीके हैं (यह मानते हुए कि आप इसे केवल माउंट नहीं करना चाहते हैं), वरीयता क्रम में घटते हुए यहां सूचीबद्ध हैं:

  1. /etc/init/*.conf (कल का नवाब)
  2. /etc/init.d/* (Sysvinit)
  3. /etc/rc.local (रनलेवल चेंज स्क्रिप्ट)

Udv नियमों का उपयोग करने की संभावना भी है, लेकिन यह जटिल होगा। मैं इसके खिलाफ सलाह देता हूं। इतनी छोटी सी चीज के लिए sysvinit स्क्रिप्ट ओवरकिल है, इसलिए मैं अन्य दो विकल्पों पर ध्यान केंद्रित करूंगा। रनलेवल परिवर्तन स्क्रिप्ट सबसे सरल (हालांकि कम से कम पसंदीदा) है, इसलिए मैं वहां शुरू करूंगा।

/etc/rc.localफ़ाइल बस द्वारा निष्पादित किया जाता है /etc/init.d/rc.localsysvinit स्क्रिप्ट है, जो (डिफ़ॉल्ट रूप से) है रनलेवल "पर" किसी भी सामान्य का उपयोग करने जा पर पिछले निष्पादित (जब जैसे आप सामान्य रूप से बूट, लेकिन आप नीचे नहीं बंद या पुनर्प्राप्ति मोड में जाते हैं)। बूट डिवाइस की स्थापना को लागू करने के लिए, बस इसे अंत में जोड़ें /etc/rc.local, यह मानते हुए कि आपकी फ़ाइल को कॉल किया गया है /srv/diskimageऔर आप /dev/loop0लूप के रूप में उपयोग करना चाहते हैं :

losetup /dev/loop0 /srv/diskimage

वास्तव में यह सब वहाँ है। बेशक, अपने सेटअप पर जो भी सबसे अच्छा काम करता है, उसके साथ फ़ाइल नाम बदलें।

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

description     "Setup loop devices after filesystems are mounted"

start on mounted MOUNTPOINT=/srv
task
exec losetup /dev/loop0 /srv/diskimage

वैचारिक रूप से अनुसरण करने के लिए यह पर्याप्त सरल होना चाहिए: पहली पंक्ति मानव पाठकों के लिए एक टिप्पणी है, और यह अपस्टार्ट को निर्देश है कि जब तक /srvफाइलसिस्टम माउंट न हो जाए, तब तक प्रतीक्षा करें , लॉसेटअप प्रक्रिया को निष्पादित करें, और प्रक्रिया समाप्त होने पर सफलतापूर्वक समाप्त होने पर विचार करें (" कार्य ", एक ऐसी सेवा के विपरीत है जो निरंतर है)। बस उन सामग्रियों को एक फ़ाइल मिलान में रखें /etc/init/*.conf। मैं /etc/init/losetup.confखुद चुनूंगा।

इस /etc/rc.localतरह के एक साधारण बात के लिए ऊपर की ओर नौकरियों के फायदे छोटे लेकिन महत्वपूर्ण हैं। सबसे पहले, /etc/rc.localपदावनत किया जाता है, और इसका उपयोग "गंदे सैंडबॉक्स के रूप में चीजों को प्राप्त करने के लिए" किया जाता है, जो इन दिनों बहुत अधिक लोगों द्वारा फहराया जाता है। इसके उपयोग पर अन्य कारणों के अलावा, कुछ प्रोग्राम जो उस फ़ाइल का उपयोग करते हैं, वे केवल सामग्री को अधिलेखित कर देंगे, और विभिन्न स्क्रिप्ट्स को समेटना मुश्किल है जिन्हें एक ही फ़ाइल में जाने की आवश्यकता है। दूसरा, अपस्टार्ट वास्तव में आपके लिए निर्भरता की जांच कर रहा है (यह सुनिश्चित करना कि फाइलसिस्टम पहले माउंट किया गया है), इसलिए यदि फाइल सिस्टम को बढ़ाने में कोई समस्या है तो यह नहीं होगा।लूप डिवाइस को सेट करने का प्रयास करें .... लेकिन एक बार जब आप इसे हल और माउंट कर लेंगे। तीसरा, अपस्टार्ट बहुत अधिक लचीला है: आप, उदाहरण के लिए, अप्रयुक्त लूप डिवाइस को खोजने के लिए पर्याप्त स्मार्ट हो सकते हैं, और "एमिट" जो अन्य अपस्टार्ट नौकरियों में उपयोग के लिए लूप डिवाइस है, उसी तरह जैसे हमने "MOUNNOINT" चर का उपयोग किया था इस उदाहरण में ऊपर।


कैसे /etc/init/losetup.conf लगाया गया ??? मेरे लिए यह काम नहीं कर रहा है ...
इमरान

1

जैसा कि @psusi ने बताया, सबसे आसान तरीका है कि आप अपनी /etc/fstabफ़ाइल में निम्न पंक्ति जोड़ें

/path/to/loop/device       /path/to/mount/point       auto       loop       0 0

अब रिबूट या mount -aरूट के रूप में चलाएं । फिर डिवाइस को माउंट किया जाना चाहिए। आप इसे देख सकते हैं lsblk

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