วิธีแก้ไขภาพ ISO (รวมถึง ISO ที่บูตได้)


30

ฉันกำลังมองหาเครื่องมือสำหรับ Ubuntu ที่สามารถใช้เพื่อแก้ไขรูปภาพ ISO รวมถึงอิมเมจ ISO ที่สามารถบู๊ตได้เช่น Ubuntu และ ISO ISO ไม่เพียงแก้ไข แต่บันทึก ISO ที่แก้ไขแล้วและยังสามารถบู๊ตได้เมื่อเบิร์นบน USB Drive หรือ CD / DVD

คำตอบ:


42

ปริญญาโท ISO ติดตั้ง isomaster

ฉันใช้ ISO Master เพื่อเพิ่มไฟล์ไปยัง ISO ก่อนหน้านี้ เหมาะสำหรับสิ่งที่คุณต้องการเนื่องจากยังคงสถานะว่า ISO นั้นสามารถบูตได้หรือไม่ ก่อนหน้านี้ฉันเคยใช้เพื่อเพิ่มเนื้อหาอื่น ๆ (เช่นเพลง) ไปยังดิสก์สด อย่างไรก็ตามโปรดทราบว่าหลังจากทำการเปลี่ยนแปลงไฟล์ ISO คุณจะสามารถ "บันทึกเป็น" เท่านั้นนั่นคือไฟล์ ISO อื่นจะถูกสร้างขึ้นดังนั้นตรวจสอบให้แน่ใจว่าคุณมีพื้นที่ดิสก์เพียงพอสำหรับทั้งสอง

isomaster


2

PowerISOเพิ่งเปิดตัวซอฟต์แวร์แก้ไข ISO ของLinux ในเวอร์ชั่น Linux เช่นเดียวกับISO Masterมันจะรักษาสถานะว่า ISO นั้นสามารถบูตได้หรือไม่ อย่างไรก็ตามช่วยให้คุณสามารถบันทึกลงในไฟล์ต้นฉบับโดยตรง (โดยการลบก่อน) ดังนั้นจึงไม่จำเป็นต้องมีพื้นที่ดิสก์เพียงพอสำหรับทั้งสองไฟล์ ฉันพบว่าอินเทอร์เฟซนั้นใช้งานง่ายกว่าและใช้งานง่ายกว่า ISO Master

สกรีนช็อตของ PowerISO สำหรับ Linux


1

คำตอบทั่วไปสำหรับสิ่งนี้คือการคลายไฟล์ iso ทำการดัดแปลงและแพ็คมันอีกครั้ง ดูเหมือนว่า "ISO Master" ตามที่ระบุไว้ในคำตอบของ dv3500ea นั้นเป็นส่วนหน้าที่ดีในการทำเช่นนั้น

ถ้า:

  • คุณไม่มีพื้นที่เพียงพอสำหรับสิ่งนั้น
  • คุณต้องการแก้ไขการผ่าตัดแทนการเขียนใหม่ทั้งหมด
  • คุณต้องการแก้ไขอุปกรณ์เก็บข้อมูลที่มีระบบไฟล์ isofs (aka iso9660) โดยไม่ต้องคัดลอกอุปกรณ์ทั้งหมดหรือ
  • หากคุณคิดว่าสิ่งที่เปิดออกมา / การบรรจุใหม่นี้ไม่ได้มีการแฮ็กข้อมูลเพียงพอ

ถ้าอย่างนั้นคำตอบนี้เหมาะสำหรับคุณ!

โดยสรุปเราจะแทนที่ไฟล์ที่มีอยู่ในระบบไฟล์ isofs ด้วยไฟล์ที่เราต้องการ ไฟล์ที่เราต้องการจะต้องมีขนาดเล็กกว่าไฟล์ (เป้าหมาย) ที่มีอยู่และต้องยอมรับช่องว่างต่อท้าย (หรือขยะ) สิ่งนี้ต้องการเพียงสองคำสั่งเท่านั้น แต่ต้องระวัง: การพิมพ์ผิดสามารถทำลายระบบไฟล์เป้าหมายได้อย่างสมบูรณ์หรือแม้แต่เขียนทับไฟล์ต้นฉบับ การสำรองข้อมูลเป็นเพื่อนของคุณ!

ในกรณีของฉันฉันต้องการเก็บสคริปต์ในการบูตสดดังนั้นฉันไม่จำเป็นต้องพิมพ์ซ้ำทุกครั้ง สคริปต์ที่script.pyและเป้าหมายของฉัน (ติด USB) /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 [...]

หรืออีกทางหนึ่งนอกจากนี้ยังสามารถทำได้ด้วย grep ซึ่งเป็นจำนวนมากได้เร็วขึ้น $ 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คัดลอกหลายไบต์เท่านั้น ฉันคิดว่าสิ่งนี้สามารถละเว้นได้เพราะมันจะสังเกตเห็นจุดสิ้นสุดของไฟล์อินพุต แต่ฉันทิ้งไว้เพียงเพื่อให้แน่ใจ

และ voila ไฟล์นั้นถูกเขียนทับ!

แต่รอไฟล์เป้าหมายมีขนาดใหญ่กว่าสคริปต์ของเราดังนั้นบนแท่ง USB ตอนนี้ไฟล์จะเป็นดังนี้: "ในขณะที่ทำถ้าเรียกใช้ () blah; blah (); yright 2007 X Inc. " มีขยะต่อท้าย สองวิธีในการแก้ไขปัญหานี้: ทำให้ไฟล์อินพุตของเรายาวขึ้น (เพิ่มช่องว่าง) หรือเพิ่มสัญลักษณ์ความคิดเห็นในตอนท้าย โปรดทราบว่าบรรณาธิการจำนวนมากเพิ่มบรรทัดใหม่ในตอนท้ายดังนั้นคุณอาจต้องการตั้งค่าcount=เป็นN-1ไบต์ (หากไฟล์ของคุณตอนนี้มีขนาด 203 ไบต์และคุณสังเกตเห็นว่าไบต์สุดท้ายเป็นบรรทัดใหม่ให้นับเป็น 202) คุณสามารถตรวจสอบไฟล์เพื่อขึ้นบรรทัดใหม่โดยใช้xxd script.py | tailและตรวจสอบว่าไบต์สุดท้ายคือ0a(หรือในกรณีที่แปลก0d)

กระบวนการนี้เป็นกระบวนการที่เหมือนกันสำหรับ.isoไฟล์เพียงจิตใจแทนที่ด้วย/dev/sdcyour.iso

โปรดทราบว่าเมื่อคุณตรวจสอบเป้าหมายในเมานต์พอยต์ของคุณเพื่อดูว่าทำงานได้หรือไม่คุณอาจต้องใช้stringsอีกครั้ง (ขณะนี้ค้นหาสคริปต์ของคุณ) เนื่องจากไฟล์อาจยังอยู่ในแคชการอ่าน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.