पठन-पाठन में एक स्क्वैश फ़ाइफ़ सिस्टम को माउंट करना


45

मेरे पास एक USB स्टिक पर क्लोनज़िला इंस्टॉलेशन है और मैं ऑपरेटिंग सिस्टम में कुछ बदलाव करना चाहता हूं। विशेष रूप से, मैं एक रननीय स्क्रिप्ट सम्मिलित करना चाहूंगा ताकि /usr/sbinबैकअप को कम दर्दनाक बनाने के लिए अपनी स्वयं की बैकअप कमांड को चलाना आसान हो सके।

मुख्य फाइल सिस्टम /live/filesystem.squashfsUSB FAT-32 विभाजन के अंतर्गत रहता है ।

फ़ाइलों को जोड़ने / हटाने / बदलने में सक्षम होने के लिए मैं अपने लिनक्स मशीन पर इस रीड / राइट को कैसे माउंट कर सकता हूं? मैं एक Ubuntu 12.04 व्युत्पन्न चला रहा हूँ।

जवाबों:


38

जड़ के रूप में, filesystem.squashfsकुछ खाली डायर की नकल करें, जैसे:

cp /mnt/clonezilla/live/filesystem.squashfs /path/to/workdir
cd /path/to/workdir

फ़ाइल को अनपैक करें फिर इसे कहीं और ले जाएं (इसलिए आपके पास अभी भी बैकअप के रूप में है):

unsquashfs filesystem.squashfs
mv filesystem.squashfs /path/to/backup/

में जाओ squashfs-root, जोड़ें / अपने स्वाद के अनुसार संशोधित तो पुन: filesystem.squashfs:

cd /path/to/workdir
mksquashfs squashfs-root filesystem.squashfs -b 1024k -comp xz -Xbcj x86 -e boot

filesystem.squashfsअपने USB ड्राइव पर मौजूदा एक पर बनाए गए नए की प्रतिलिपि बनाएं , जैसे:

cp filesystem.squashfs /mnt/clonezilla/live/

फिर रिबूट करें और अपने LIVE USB का उपयोग करें।

नोट: उपरोक्त आदेशों का हिस्सा हैं squashfs-tools


यह महान काम करता है, लेकिन दुर्भाग्य से, मुझे बताने वाले सभी रूट निर्देशिकाओं के लिए एक संदेश मिलता है Source directory entry bin already used! - trying bin_1। निश्चित रूप से पर्याप्त है, मेरे आउटपुट फाइल सिस्टम में, मेरे पास फ़ोल्डर विलय करने के बजाय, ए /binऔर है /bin_1। कोई विचार? अगर मैं -noappend,फाइलसिस्टम के साथ चलता हूं तो बस काम नहीं करता।
नौफुली के

1
@TKKocheran - कस्टम स्क्रिप्ट जोड़ने /usr/binऔर इसके साथ पुन: लिंक करने के बाद मुझे यहाँ कोई त्रुटि नहीं मिल रही है mksquashfs। USB ड्राइव बूट ठीक है और मैं लाइव सत्र से अपनी स्क्रिप्ट का उपयोग कर सकता हूं। सुनिश्चित करें कि आपके पास चलने से पहले filesystem.squashfsअपने संशोधित के साथ उसी निर्देशिका में पुराना नहीं है । squashfs-rootmksquashfs
19 अप्रैल को don_crissti

@Naftuli: आपको लगता है कि "mv ... बैकअप /" चरण छोड़ दिया गया है।
जोकिम वैगनर

क्या यह काम (नकली) मूल के तहत नहीं है? सिर्फ निकालने से मुझे त्रुटि मिलती हैcreate_inode: could not create character device squashfs-root/dev/audio, because you're not superuser!
Wilf

@Wilf - आप squashfs-root/dev/*नियमित उपयोगकर्ता के रूप में डिवाइस फ़ाइलें ( ) नहीं बना सकते हैं , आपको रूट विशेषाधिकारों की आवश्यकता है।
don_crissti

5

आपके सिस्टम कुछ Uion-फाइल सिस्टम का समर्थन करता है, तो इस तरह के रूप aufs या overlayfs , आप अपने मूल स्क्वैशएफएस फ़ाइल निकालने के लिए नहीं है।

उदाहरण के लिए ओवरलेफ्स का उपयोग किया जाता है (इसे सक्षम करने के लिए एक कर्नेल विकल्प): आप अपने स्क्वैशफाइफाइल को / fm या कहीं और पहले माउंट कर सकते हैं । इसमें 2 डायरेक्टरीज़ के साथ एक राइटिटेबल फाइल सिस्टम तैयार करें, जैसे / to और / temp । मर्ज किए गए परिणामों के लिए एक और लेखन निर्देशिका / फिन तैयार करें । अपने सिस्टम के लिए एक ओवरलेफ़्स के रूप में उन्हें एक साथ माउंट करें ---

mount -t overlay -o lowerdir=/fm,upperdir=/to,workdir=/temp overlay /fin

अब आप / फिन में फाइल्स को जोड़ / संशोधित कर सकते हैं । एक बार सब कुछ हो जाने के बाद, आप एक नई स्क्वाशफ फ़ाइल में mksquashfs / fin कर सकते हैं ,

mksquashfs /fin newfile; umount /fin

, फिर स्पष्ट / अन्य सभी उपयोग की गई निर्देशिकाओं को अनमाउंट करें जैसा कि आप करेंगे।

स्क्वैशएफएस और कुछ unionfs आमतौर पर एक के लिए उपयोग किया जाता है लिव-सीडी


यदि आप एक फ़ाइल को माउंटेड / फिन से हटाते हैं, तो क्या यह आपके द्वारा बनाए गए अंतिम स्क्वैशफॉ से हटा दिया जाएगा?
लोकलहोस्ट

2

यहाँ , मुझे एक अन्य उत्तर मिला:

bash# mount dir.sqsh /mnt/dir -t squashfs -o loop

7
उपरोक्त कमांड इसे केवल पढ़ने के लिए माउंट करेगा, जो इसे बढ़ते हुए नहीं करने से बेहतर है; अफसोस, हाथ में सवाल का पूरा जवाब नहीं।
harperville

मैं मानता हूं कि यह पूर्ण उत्तर नहीं है। एक साथ unix.stackexchange.com/a/377269/27328 के साथ आप एक उत्तर का निर्माण कर सकते हैं जहाँ आपको इसे संशोधित करने के लिए अपने फाइल सिस्टम को अनपैक करने की आवश्यकता नहीं है - कम जगह, कम समय।
यूजर

सरलतम विधि, सेंटोस 7 पर काम किया
सेफ

0

दिखाए गए अनुसार ओवरलेफ़्स का उपयोग करना छद्म "स्क्वैशफ़्स आरडब्ल्यू" का सबसे अच्छा तरीका है; हालाँकि इसे> 4.x कर्नेल (या ubuntu> 14.x भरोसेमंद) पर चलाना आवश्यक है।

एक वैकल्पिक समाधान जब कोई बिना किसी ओवरलेफ़ / एफ़यू / यूनियनफ़ॉरे के पुराने लाइव सीडी पर बैठा हो तो स्क्वैशफ़ॉउन क्षमताओं का उपयोग करना

जरूरी:

 without unsquashfs, so this can be done on low storage system

उदाहरण:

स्क्वाशफ़ेट्स "यूएसआर" निर्देशिका को संशोधित करें

1    mount squashfs_file /mnt

2    cp -a /mnt/usr $HOME  ##modify whatever $HOME/usr as needed

3    mksquashfs /mnt new_squashfs_file -wildcards -e usr

4    mksquashfs $HOME/usr new_squashfs_file -keep-as-directory

5    umount /mnt  # cleanup

लाइन 3 पुराने रूप से पुराने स्क्वैशफाइल को बनाता है जिसमें पुराने को शामिल नहीं किया गया है

पंक्ति 4 नए -squashfsfile में संशोधित-usr-dir को जोड़ती है

यहाँ देखें स्क्वैश एफएफ़ स्क्वैश एफएफ़टी फ़ाइल के अंदर उप-निर्देशिका में जोड़ें

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