एक बाहरी ड्राइव को बूट समय पर तभी माउंट करें जब उसमें प्लग लगा हो


70

मुझे अपने fstab में बाहरी हार्डड्राइव के लिए एक प्रविष्टि मिली है:

UUID="680C0FE30C0FAAE0" /jgdata ntfs noatime,rw

लेकिन कभी-कभी यह ड्राइव बूट समय पर प्लग नहीं किया जाता है। यह "जारी प्रतीक्षा, प्रेस S या M दबाएं" के संकेत के साथ एक बूट के माध्यम से मुझे आधे रास्ते में छोड़ देता है, लेकिन इस चरण में किसी भी कुंजी का कोई प्रभाव नहीं है (सहित Ctrl- Alt- Delete, कैप-लॉक भी नहीं)।

के उत्पादन की जाँच करने के लिए एक स्क्रिप्ट लिखने की कमी है fdisk -l, मैं इस ड्राइव को केवल बूट समय पर कैसे माउंट कर सकता हूं यदि यह मौजूद है? इस ड्राइव के लिए fdisk एंट्री करना आसान होगा, इसलिए मैं mount /jgdataडिवाइस नाम की आवश्यकता के बजाय बस टाइप कर सकता हूं ।

जवाबों:


73

आप सभी सही राह पर हैं। मुझे ऐसा रास्ता मिला है जो थोड़ा और साफ और बेहतर रूप है।

में जोड़ने के लिए सही विकल्प fstabहै nofail, तथापि, यह बाद आने के लिए की जरूरत है auto। यदि आप इसे बदलते हैं noauto, तो यह बूट के दौरान कभी भी माउंट नहीं होगा। यदि आप nobootwaitबूटलोडर में जोड़ते हैं , तो आप संभावित रूप से कुछ गंभीर याद कर सकते हैं, जैसे कि विभाजन की fsckजांच करने से पहले विभाजन को बढ़ाना , या उस विभाजन को न बढ़ाना जो बूट प्रक्रिया में उपयोग किया जाता है।

उपरोक्त परिवर्तन करने के बाद, सिस्टम शटडाउन होने पर डिवाइस प्लग किया जाता है, तो सिस्टम सामान्य रूप से (और वॉल्यूम को माउंट करेगा) शुरू करेगा। यह सामान्य रूप से बूट भी होगा यदि डिवाइस बूट समय पर मौजूद नहीं है।

केवल असुविधा यह है कि यदि आप सिस्टम को चालू करते समय डिवाइस को कनेक्ट करते हैं, तो कॉन्फ़िगरेशन के आधार पर (परीक्षण करने के लिए कई चर), डिवाइस तुरंत माउंट नहीं हो सकता है। यह एक साधारण के साथ ठीक किया जा सकता है mount -aया mount /specific_deviceया एक रिबूट।


2
हर उदाहरण मैं ऑटो से पहले ऑनलाइन शो नोफेल पा सकता हूं। क्या सही आदेश के लिए कोई दस्तावेज है?
हैकरन

'मैन फैस्टैब' एक आवश्यक आदेश की शुद्धता नहीं देता है (सेंटोस 7 और उबंटू 14.04 में जांचा गया)। हालांकि, यह कहता है कि "अगर यह मौजूद नहीं है तो इस उपकरण के लिए त्रुटियों की सूचना न दें।" मैं सोच रहा था कि क्या यह बूट पर टाइमआउट की प्रतीक्षा नहीं करने में मदद करेगा यदि nfs वॉल्यूम सुलभ नहीं है।
tisc0

16

मेरे पास एक ही मुद्दा था - मैंने एक अतिरिक्त कदम उठाया है

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

आर्क विकी देखें: https://wiki.archlinux.org/index.php/Fstab

उदाहरण

UUID=XXXXXXXXXXXXXXX    /myhdd ntfs  auto,nofail,noatime,rw,user    0   0

मैंने डिवाइस प्लग किए बिना और बिना सिस्टम को बूट करने की कोशिश की है, और यह ठीक काम करता है।

बूट के बाद डिस्क प्लग किए जाने पर (जब बूट पर प्लग नहीं किया जाता है) ऑटोमेट करना मैंने क्या हासिल नहीं किया है। मुझे mount -aफिर से माउंट करने के लिए रूट के रूप में उपयोग करना चाहिए ।


13

बूट विकल्प को जारी रखने के लिए noauto विकल्प देता है?

यदि यह मौजूद नहीं है, तो यह स्वचालित रूप से माउंट नहीं करता है, लेकिन यह पता चलता है कि क्या वर्तमान में इतना आसान माउंट / jgdata काम करता है ... तो एक स्क्रिप्टेड माउंट / jdata को आउटपुट चेक की आवश्यकता नहीं होगी, बस त्रुटि को पकड़ना और बूट करना जारी रखना चाहिए

संपादित करें: कुछ और पढ़ने के लिए बूटवाइट शायद पास करने के लिए एक अधिक सही विकल्प है ... (आमतौर पर नेटवर्क शेयरों के लिए उपयोग किया जाता है जो बाद में बूट प्रक्रिया में मौजूद नहीं हो सकते हैं, लेकिन यह अभी भी एक हैंग, idk का कारण बन सकता है)

और माउंट स्क्रिप्ट को इस तरह जोड़ा जा सकता है: https://stackoverflow.com/questions/2062543/running-a-script-with-the-help-of-grub-and-menu-lst


जवाब के लिए धन्यवाद। बस स्पष्ट करने के लिए, विकल्प fstab लाइन में जोड़े जाने हैं, सही? (संपादित करें: एनवीएम, इसे गुगली कर दिया। लगता है कि नोबूटवाइट की मुझे क्या ज़रूरत है।)
जेरेमी

1
मैंने fstab में nobootwait विकल्प का उपयोग किया है, पूरी तरह से काम करता है, धन्यवाद।
जेरेमी

5
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0

मेरे लिए काम किया।

nofail ... यदि यह मौजूद नहीं है तो इस उपकरण की त्रुटियों की रिपोर्ट न करें।
x-systemd.device-timeout = 30 ... यदि डिवाइस मौजूद नहीं है तो बूट 30 सेकंड से अधिक समय लेगा (डिफ़ॉल्ट 90 सेकंड है)।

स्रोत: https://wiki.archlinux.org/index.php/fstab#External_devices


यह सबसे अच्छा और सरल उत्तर है। ध्यान दें कि यह OS के नए संस्करणों के लिए नया सिंटैक्स है जो nobootwait
सिस्टमड का

इसने मेरे लिए काम किया। कुंजी डिवाइस-टाइमआउट जोड़ रही थी; केवल बूट का उपयोग करने से udv टाइमआउट के कारण बूट वास्तव में विफल हो जाएगा। (शायद USB उपकरणों के लिए अद्वितीय)
BobHy

1

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

तो, बस नीचे की तरह होने के लिए अपने fstab में लाइन फिर से लिखें:

# <file system>           <dir>       <type>    <options>         <dump> <pass>
UUID="680C0FE30C0FAAE0"   /jgdata      ntfs      user,auto,rw       0     0

इसे बदलने और सहेजने के बाद, इसे हाथ से माउंट करने का प्रयास करें:

$ सुडो माउंट-ए

यह नोट करना महत्वपूर्ण है:

  1. आपको डिवाइस के यूयूआईडी के बारे में सुनिश्चित होना चाहिए। जब आप एक फाइलसिस्टम बनाते हैं तो UUIDs मेक-फाइल सिस्टम यूटिलिटीज (mkfs। *) द्वारा उत्पन्न होते हैं।
  2. उन लोगों <options>को एक बहुत ही विशिष्ट प्रारूप के बाद लिखा जाना चाहिए, जिन्हें अल्पविराम द्वारा अलग किया गया है, लेकिन प्रत्येक अल्पविराम के बाद कोई स्थान नहीं है। इससे सावधान रहें; ;-)
  3. मुझे यकीन नहीं है कि यह सुचारू रूप से काम करेगा क्योंकि आप NTFS फाइलसिस्टम को ऑटोमेट करने की कोशिश कर रहे हैं, जो NTFS-3G क्षमताओं का उपयोग कर हैंडलेबल हैं । जबकि मेरे निर्देश सही तरीके से काम करने वाले हैं, मैंने पहले कभी भी NTFS को स्वचालित करने की कोशिश नहीं की। इसलिए, यदि यह विफल हो जाता है, तो मैं आपको NTFS के वैकल्पिक उपयोग के लिए इस बढ़ते विंडोज विभाजन को देखने की सलाह देता हूं ।

धन्यवाद!


मुझे लगता है कि आपने जो कहा, उसमें से अधिकांश वह प्राप्त करता है, लेकिन जब डिस्क का पता नहीं चलता है तो यह लटका रहता है। इसीलिए मैंने "उचित" तरीके से वर्कअराउंड का सुझाव दिया
रोबोटहुमंस

जवाब के लिए धन्यवाद। FYI करें sudo blkidकमांड UUIDs का पता लगाने का एक अच्छा तरीका है।
जेरेमी

मैंने सिर्फ उस सटीक लाइन को fstab में आज़माया है। जब HDD को प्लग किया जाता है, तो सिस्टम सामान्य रूप से बूट होता है। लेकिन, बूट के दौरान, जब बाहरी एचडीडी को प्लग नहीं किया जाता है, यह अभी भी मुझे प्रतीक्षा / छोड़ें / मैनुअल पुनर्प्राप्ति के लिए संकेत देता है। चूँकि यह संकेत समय नहीं देता है, अगर मैं टर्मिनल पर नहीं हूँ, तो बाहरी एचडीडी प्लग इन नहीं होने पर बॉक्स बूट नहीं होगा।
जेरेमी

आपको nofail, विकल्प जोड़ना होगा।
kkron 20

0

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


1
मेरे द्वारा स्वीकार किए गए उत्तर की जाँच करें, बस fstab में माउंट विकल्पों में nobootwait जोड़ें।
जेरेमी 5
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.