आईएसओ छवियाँ कैसे संपादित करें (बूट करने योग्य आईएसओ सहित)


30

मैं उबंटू के लिए ऐसे टूल की तलाश कर रहा हूं जिनका उपयोग आईएसओ इमेज को संपादित करने के लिए किया जा सके । जिसमें उबंटू और विंडोज आईएसओ जैसे बूट करने योग्य आईएसओ चित्र शामिल हैं। न केवल संपादित करें, बल्कि संपादित आईएसओ को बचाएं और अभी भी बूट कर सकते हैं जब एक यूएसबी ड्राइव या सीडी / डीवीडी पर जला दिया जाता है।

जवाबों:


42

आईएसओ मास्टर आइसोमैस्टर स्थापित करें

मैंने आईएसओ से पहले फाइल को जोड़ने के लिए आईएसओ मास्टर का उपयोग किया है। यह आपके लिए आवश्यक है क्योंकि यह इस स्थिति को बनाए रखता है कि आईएसओ बूट करने योग्य है या नहीं। मैंने इसका उपयोग अन्य सामग्री (जैसे संगीत) को लाइव डिस्क में जोड़ने के लिए किया है। हालाँकि, ध्यान दें, कि ISO फ़ाइल में परिवर्तन करने के बाद, आप केवल "Save As" अर्थात एक और ISO फ़ाइल बना सकते हैं, इसलिए सुनिश्चित करें कि आपके पास दोनों के लिए पर्याप्त डिस्क स्थान है।

isomaster


2

पावरआईएसओ ने अभी-अभी अपने आईएसओ संपादन सॉफ्टवेयर का लिनक्स संस्करण जारी किया । आईएसओ मास्टर की तरह , यह इस स्थिति को बनाए रखता है कि आईएसओ बूट करने योग्य है या नहीं। हालाँकि, यह आपको मूल फ़ाइल (इसे पहले हटाकर) को सीधे सहेजने की अनुमति देता है, इसलिए दोनों फ़ाइलों के लिए पर्याप्त डिस्क स्थान रखने की आवश्यकता नहीं है। मुझे इसका इंटरफ़ेस आईएसओ मास्टर की तुलना में आसान और अधिक सहज ज्ञान युक्त लगता है।

लिनक्स के लिए PowerISO का स्क्रीनशॉट


1

इसका सामान्य उत्तर iso फ़ाइल को अनपैक करना, उसे संशोधित करना और फिर से पैक करना है। यह "आईएसओ मास्टर" जैसा दिखता है, जैसा कि DV3500ea के उत्तर में वर्णित है, ऐसा करने के लिए एक अच्छा फ्रंट-एंड है।

अगर:

  • आपके पास उसके लिए पर्याप्त जगह नहीं है
  • आप केवल पूरी चीज़ को फिर से लिखने के बजाय एक सर्जिकल संशोधन करना चाहते हैं
  • आप एक संग्रहण डिवाइस को संशोधित करना चाहते हैं जिसमें पूरे उपकरण की नकल के बिना एक आइसोफ फाइलसिस्टम (उर्फ iso9660) है, या
  • अगर आपको लगता है कि यह अनपैकिंग / रीपैकिंग बात सिर्फ हैक करने लायक नहीं है

तो यह जवाब आपके लिए है!

सारांश में, हम अपनी इच्छित फ़ाइल के साथ एक मौजूदा फ़ाइल को आइसोफ फाइलसिस्टम में बदल देंगे। हमारी इच्छित फ़ाइल मौजूदा (लक्ष्य) फ़ाइल से छोटी होनी चाहिए, और अनुगामी व्हाट्सएप (या कचरा) स्वीकार्य होना चाहिए। इसके लिए वास्तव में केवल दो आदेशों की आवश्यकता होती है, लेकिन सावधान रहें: एक टाइपो लक्ष्य फ़ाइल सिस्टम को पूरी तरह से नष्ट कर सकता है, या यहां तक ​​कि स्रोत फ़ाइल को अधिलेखित कर सकता है। बैकअप आपके दोस्त हैं!

मेरे मामले में, मैं एक स्क्रिप्ट को लाइव बूट में संग्रहीत करना चाहता था, इसलिए मुझे हर बार इसे वापस नहीं लेना है। स्क्रिप्ट पर है script.pyऔर मेरा लक्ष्य (एक यूएसबी स्टिक) है /dev/sdc। स्क्रिप्ट का आकार 202 बाइट्स है, इसलिए हमारा पहला कदम 202 बाइट्स से बड़ी फ़ाइल ढूंढना है, इसलिए हम इसे अधिलेखित कर सकते हैं। इस पर बढ़ते जाने के बाद /mnt, मुझे एक उपयुक्त फ़ाइल मिली /mnt/info.txt

हम info.txtमाउंटपॉइंट पर बस ओवरराइट नहीं कर सकते , यह शिकायत करेगा कि यह केवल पढ़ने के लिए फाइल सिस्टम है। हम जड़ हैं, हालांकि, चलो उन्हें दिखाने का क्या मतलब है! हमें यह पता लगाने की जरूरत info.txtहै कि फाइलसिस्टम पर कहां है। info.txtउदाहरण के लिए This is the official distribution CD of X., (शायद) अद्वितीय है , और इसके लिए डिस्क पर खोजें: कुछ स्ट्रिंग खोजें

$ sudo strings -a -t d /dev/sdc | grep 'CD of X.'
2573588480 This is the official distribution CD of X. See INSTALL for how to [...]

वैकल्पिक रूप से, यह भी ग्रेप है, जो एक बहुत तेजी से होता है के साथ किया जा सकता है, लेकिन फिर आप शुरू से ही यह निर्दिष्ट करना होगा: $ sudo grep -oba 'This is ...' /dev/sdc

अब जब हम जानते हैं कि यह कहाँ है, तो हमें बस उन बाइट्स को अपनी फ़ाइल से बदलना होगा:

$ sudo dd if=script.py of=/dev/sdc conv=notrunc bs=1 seek=2573588480 count=202

यह रेखा:

  • इनपुट फ़ाइल ( if) से आउटपुट फाइल ( of) तक की प्रतियां बाइट करती हैं , और यह परवाह नहीं करता है कि आउटपुट फाइल वास्तव में एक डिवाइस है, क्योंकि "सब कुछ एक फाइल है"।
  • conv=notrunc यह आउटपुट फ़ाइल को छोटा नहीं करने के लिए कहता है, क्योंकि हम केवल कुछ बाइट्स को अधिलेखित करना चाहते हैं, न कि एक निश्चित बिंदु से फ़ाइल को ओवरराइट करना।
  • bs=1 ब्लॉक आकार को 1. पर सेट करें। आप आमतौर पर 4k या उच्चतर ब्लॉक आकार चाहते हैं, लेकिन यह दोनों गणित (इनलाइन) गणित करने से बचते हैं और हमें स्थान को बाइट तक निर्दिष्ट करते हैं।
  • seek=Nआउटपुट फ़ाइल में एक निश्चित बिंदु की तलाश करता है (ध्यान दें कि इससे seek=Nअलग है skip=Nक्योंकि skipइनपुट फ़ाइल से स्काइप बाइट्स!)। हम इसे निर्धारित करते हैं, निश्चित रूप से, जहां लक्ष्य पाठ है।
  • count=Nकेवल इस कई बाइट्स की प्रतिलिपि बनाएँ। मुझे लगता है कि इसे छोड़ दिया जा सकता है क्योंकि यह इनपुट फ़ाइल के अंत को नोटिस करेगा, लेकिन मैंने इसे केवल सुनिश्चित करने के लिए छोड़ दिया।

और वॉयला, फ़ाइल अधिलेखित है!

लेकिन रुकिए, लक्ष्य फ़ाइल हमारी स्क्रिप्ट से बड़ी थी, इसलिए USB स्टिक पर, फ़ाइल अब कुछ इस तरह है: "जबकि करते हैं तो () blah; blah (); yright 2007 X Inc."। कूड़ा कचरा है। इसे ठीक करने के दो तरीके: हमारी इनपुट फ़ाइल को अधिक समय तक बनाएं (रिक्त स्थान जोड़ें), या अंत में एक टिप्पणी प्रतीक जोड़ें। ध्यान दें कि कई संपादकों, अंत में एक नई पंक्ति जोड़ें ताकि आप सेट करना चाह सकते हैं count=करने के लिए N-1बाइट (यदि आपकी फ़ाइल अब 203 बाइट्स है, और आप है कि पिछले बाइट एक नई पंक्ति, 202 करने के लिए सेट गिनती है नोटिस)। आप xxd script.py | tailअंतिम बाइट है 0a(या, अजीब मामलों में, 0d) का उपयोग करके और जाँच करके newlines के लिए एक फ़ाइल की जाँच कर सकते हैं ।

यह प्रक्रिया एक .isoफ़ाइल के लिए समान है , बस मानसिक रूप से बदल देती /dev/sdcहै your.iso

ध्यान दें कि जब आप अपने माउंटपॉइंट में लक्ष्य की जांच करते हैं कि क्या यह काम करता है, तो आपको stringsफिर से उपयोग करने की आवश्यकता हो सकती है (इस समय अपनी स्क्रिप्ट की खोज) क्योंकि फ़ाइल अभी भी कैश में है।

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