ฉันกำลังมองหาเครื่องมือสำหรับ Ubuntu ที่สามารถใช้เพื่อแก้ไขรูปภาพ ISO รวมถึงอิมเมจ ISO ที่สามารถบู๊ตได้เช่น Ubuntu และ ISO ISO ไม่เพียงแก้ไข แต่บันทึก ISO ที่แก้ไขแล้วและยังสามารถบู๊ตได้เมื่อเบิร์นบน USB Drive หรือ CD / DVD
ฉันกำลังมองหาเครื่องมือสำหรับ Ubuntu ที่สามารถใช้เพื่อแก้ไขรูปภาพ ISO รวมถึงอิมเมจ ISO ที่สามารถบู๊ตได้เช่น Ubuntu และ ISO ISO ไม่เพียงแก้ไข แต่บันทึก ISO ที่แก้ไขแล้วและยังสามารถบู๊ตได้เมื่อเบิร์นบน USB Drive หรือ CD / DVD
คำตอบ:
ฉันใช้ ISO Master เพื่อเพิ่มไฟล์ไปยัง ISO ก่อนหน้านี้ เหมาะสำหรับสิ่งที่คุณต้องการเนื่องจากยังคงสถานะว่า ISO นั้นสามารถบูตได้หรือไม่ ก่อนหน้านี้ฉันเคยใช้เพื่อเพิ่มเนื้อหาอื่น ๆ (เช่นเพลง) ไปยังดิสก์สด อย่างไรก็ตามโปรดทราบว่าหลังจากทำการเปลี่ยนแปลงไฟล์ ISO คุณจะสามารถ "บันทึกเป็น" เท่านั้นนั่นคือไฟล์ ISO อื่นจะถูกสร้างขึ้นดังนั้นตรวจสอบให้แน่ใจว่าคุณมีพื้นที่ดิสก์เพียงพอสำหรับทั้งสอง
PowerISOเพิ่งเปิดตัวซอฟต์แวร์แก้ไข ISO ของLinux ในเวอร์ชั่น Linux เช่นเดียวกับISO Masterมันจะรักษาสถานะว่า ISO นั้นสามารถบูตได้หรือไม่ อย่างไรก็ตามช่วยให้คุณสามารถบันทึกลงในไฟล์ต้นฉบับโดยตรง (โดยการลบก่อน) ดังนั้นจึงไม่จำเป็นต้องมีพื้นที่ดิสก์เพียงพอสำหรับทั้งสองไฟล์ ฉันพบว่าอินเทอร์เฟซนั้นใช้งานง่ายกว่าและใช้งานง่ายกว่า ISO Master
คำตอบทั่วไปสำหรับสิ่งนี้คือการคลายไฟล์ iso ทำการดัดแปลงและแพ็คมันอีกครั้ง ดูเหมือนว่า "ISO Master" ตามที่ระบุไว้ในคำตอบของ dv3500ea นั้นเป็นส่วนหน้าที่ดีในการทำเช่นนั้น
ถ้า:
ถ้าอย่างนั้นคำตอบนี้เหมาะสำหรับคุณ!
โดยสรุปเราจะแทนที่ไฟล์ที่มีอยู่ในระบบไฟล์ 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/sdc
your.iso
โปรดทราบว่าเมื่อคุณตรวจสอบเป้าหมายในเมานต์พอยต์ของคุณเพื่อดูว่าทำงานได้หรือไม่คุณอาจต้องใช้strings
อีกครั้ง (ขณะนี้ค้นหาสคริปต์ของคุณ) เนื่องจากไฟล์อาจยังอยู่ในแคชการอ่าน