आसानी से पढ़िए / आदि लिखिए


11

मैं लिनक्स पर चलने वाले एक एम्बेडेड डिवाइस के साथ काम कर रहा हूं। इस उपकरण के निर्माताओं ने इसे स्थापित किया है ताकि यह रूट फाइल सिस्टम को आसानी से लोड कर सके।

/ Etc / mtab से:

rootfs / rootfs rw 0 0
/dev/root / squashfs ro,relatime 0 0

इसका मतलब है कि मैं / आदि के भीतर किसी भी फाइल को संशोधित करने में असमर्थ हूं, जैसे कि एक नया उपयोगकर्ता जोड़ना।

मैंने रूट डायरेक्टरी को हटाने की कोशिश की है:

mount -o remount,rw -t squashfs /dev/root /

लेकिन मुझे सिर्फ एक त्रुटि मिलती है

mount: cannot remount block device /dev/root read-write, is write-protected

मैंने इस त्रुटि को देखा और लोग ब्लॉकदेव का उपयोग करने के लिए कह रहे थे। सिस्टम में ब्लॉकदेव स्थापित नहीं है, इसलिए मैंने इसे संकलित किया और इसे कॉपी किया। फिर मैं भागा

blockdev --setrw rootfs

लेकिन फिर से मुझे एक त्रुटि मिली:

blockdev: cannot open rootfs: No such file or directory

यदि यह पहले से ही नहीं है, तो क्या यह संभव है कि इसे बनाया जा सके? मेरे पास सिस्टम तक रूट एक्सेस है, लेकिन मैं फाइल सिस्टम 'ऑफ़लाइन' तक पहुंचने में सक्षम नहीं हूं, सभी परिवर्तन बैश कमांड के माध्यम से किए जाने हैं।

जवाबों:


19

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

एक अन्य विकल्प एक अलग फाइल सिस्टम को माउंट करना है /etc। यह कर्नेल द्वारा समर्थित होने पर एक यूनियन माउंट के माध्यम से हो सकता है, जो आम तौर पर एक फ़ाइल सिस्टम रिकॉर्डिंग के साथ दो फाइल सिस्टम को एक साथ जोड़ देता है जो केवल बेस रीड-ओनली फाइल सिस्टम में बदलाव करता है।

कर्नेल कॉन्फ़िगरेशन में AUFS_FS या OVERLAY_FS के लिए समर्थन की जाँच करें।

उदाहरण के लिए किसी निर्देशिका को संघ-माउंट करने के लिए /tmp(उम्मीद है कि लेखन योग्य है, लेकिन संभवतः tmpfsमेमोरी में (इसलिए रिबूट के पार लगातार नहीं) यदि आपके पास सिस्टम में कोई स्थायी लेखन स्टोरेज नहीं है)

mkdir -p /tmp/etc/work /tmp/etc/upper
mount -t overlay \
      -o lowerdir=/etc,upperdir=/tmp/etc/upper,workdir=/tmp/etc/work \
       overlay /etc

तब /etcलेखन योग्य होगा और आपके द्वारा इसमें किए गए संशोधन वास्तव में संग्रहीत किए जाएंगे /tmp/etc/upper

वैकल्पिक रूप से, यदि यह केवल कुछ फ़ाइल है जिसे आप संशोधित करना चाहते हैं, तो आप उन्हें एक योग्य फ़ाइल सिस्टम में संग्रहीत संस्करण से (केवल आप किसी भी फ़ाइल पर माउंट नहीं कर सकते हैं) हाँ-माउंट कर सकते हैं:

cp /etc/passwd /tmp
mount --bind /tmp/passwd /etc/passwd

तब /etc/passwdलेखन योग्य होगा। बेशक आप भी /etcइसके बजाय पूरे के लिए कर सकते हैं । ( cp -a /etc /tmp && mount --bind /tmp/etc /etc)।


कुछ एम्बेडेड सिस्टम /etcnvram में कुछ सेटिंग के आधार पर बूट समय में फ़ाइलों को ओवरराइड कर सकते हैं । इस प्रकार, एक फाइल को बदलने के लिए /etcआप "मैजिक" सिस्टम वैरिएबल सेट करेंगे, इसे एनवीआरएम पर प्रतिबद्ध करें, फिर कॉन्फ़िगरेशन या रिबूट को पुनः लोड करें। अधिकांश घरेलू राउटर उसी तरह काम करते हैं। लेकिन सटीक तंत्र और कमांड सिस्टम-विशिष्ट हैं।
शनि। कैटसुरा

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