Cara mengedit Gambar ISO (Termasuk ISO yang Dapat Di-boot)

30

Saya mencari alat untuk Ubuntu yang dapat digunakan untuk EDIT ISO Images. Termasuk gambar ISO yang dapat di-boot seperti Ubuntu dan Windows ISO. Tidak hanya mengedit tetapi menyimpan ISO yang diedit dan masih bisa boot ketika dibakar di Drive USB atau CD / DVD.

Luis Alvarado
sumber

Jawaban:

42

ISO Master instal isomaster

Saya telah menggunakan ISO Master untuk menambahkan file ke ISO sebelumnya. Sangat cocok untuk apa yang Anda butuhkan karena mempertahankan status apakah ISO dapat dibooting atau tidak. Saya telah menggunakannya di masa lalu untuk menambahkan konten lain (seperti musik) ke disk langsung. Namun, perlu diketahui bahwa setelah melakukan perubahan pada file ISO, Anda hanya dapat "Simpan Sebagai", yaitu file ISO lain akan dibuat, jadi pastikan Anda memiliki cukup ruang disk untuk keduanya.

isomaster

dv3500ea
sumber
2

PowerISO baru saja merilis versi Linux dari perangkat lunak pengeditan ISO mereka. Seperti ISO Master , ia mempertahankan status apakah ISO dapat di-boot atau tidak. Namun, ini memungkinkan Anda untuk menyimpan langsung ke file asli (dengan menghapusnya terlebih dahulu), sehingga tidak perlu memiliki ruang disk yang cukup untuk kedua file. Saya juga menemukan antarmuka untuk lebih mudah dan lebih intuitif untuk digunakan daripada ISO Master.

tangkapan layar PowerISO untuk Linux

Ploni
sumber
1

Jawaban umum untuk ini adalah membongkar file iso, memodifikasinya, dan mengemasnya lagi. Sepertinya "ISO Master", seperti yang disebutkan dalam jawaban dv3500ea, adalah ujung depan yang baik untuk melakukan itu.

Jika:

  • Anda tidak memiliki cukup ruang untuk itu
  • Anda hanya ingin membuat modifikasi bedah alih-alih menulis ulang semuanya
  • Anda ingin memodifikasi perangkat penyimpanan yang berisi sistem file isofs (alias iso9660) tanpa menyalin seluruh perangkat, atau
  • jika Anda pikir ini membongkar / mengemas hal tidak cukup cukup

Maka jawaban ini untuk Anda!

Singkatnya, kita akan mengganti file yang ada di sistem file isofs dengan file yang kita inginkan. File yang kami inginkan harus lebih kecil dari file (target) yang ada, dan trailing spasi (atau sampah) harus diterima. Ini sebenarnya hanya membutuhkan dua perintah, tetapi hati-hati: kesalahan ketik dapat menghancurkan sistem file target sepenuhnya, atau bahkan menimpa file sumber. Backup adalah teman Anda!

Dalam kasus saya, saya ingin menyimpan skrip dalam live boot jadi saya tidak perlu mengetik ulang setiap kali. Script sudah di script.pydan target saya (USB stick) ada di /dev/sdc. Ukuran skrip adalah 202 byte, jadi langkah pertama kami adalah menemukan file yang lebih besar dari 202 byte, sehingga kami dapat menimpanya. Setelah memasangnya di /mnt, saya menemukan file yang cocok di /mnt/info.txt.

Kita tidak bisa hanya menimpa info.txtmountpoint, itu akan mengeluh bahwa itu adalah sistem file read-only. Kita adalah root, jadi mari kita tunjukkan apa artinya itu! Kita perlu mencari tahu di mana info.txtdi sistem file. Temukan beberapa string yang (mungkin) unik untuk info.txt, misalnya This is the official distribution CD of X., dan mencarinya di disk:

$ 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 [...]

Atau, ini juga bisa dilakukan dengan grep, yang jauh lebih cepat, tapi kemudian Anda perlu menentukan dari awal: $ sudo grep -oba 'This is ...' /dev/sdc.

Sekarang kita tahu di mana tempatnya, kita hanya perlu mengganti byte-byte itu dengan file kita:

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

Garis ini:

  • menyalin byte dari file input ( if) ke file output ( of), dan tidak peduli bahwa file output sebenarnya adalah perangkat, karena "semuanya adalah file".
  • conv=notrunc memberitahu itu untuk tidak memotong file output, karena kami hanya ingin menimpa beberapa byte, tidak menimpa file dari titik tertentu dan seterusnya.
  • bs=1 mengatur ukuran blok menjadi 1. Anda biasanya menginginkan ukuran blok 4k atau lebih tinggi, tetapi ini keduanya menghindari keharusan melakukan (inline) matematika dan memungkinkan kami menentukan lokasi yang tepat untuk byte.
  • seek=Nberusaha ke titik tertentu dalam file output (perhatikan yang seek=Nberbeda dari skip=Nkarena skipmelewatkan byte dari file input!). Kami mengaturnya, tentu saja, ke tempat teks target.
  • count=Nhanya menyalin banyak byte ini. Saya pikir ini bisa dihilangkan karena akan melihat akhir dari file input, tapi saya meninggalkannya hanya untuk memastikan.

Dan voila, file itu ditimpa!

Tapi tunggu, file target lebih besar dari skrip kami, jadi pada stik USB, file itu sekarang kira-kira seperti: "selagi dilakukan jika dijalankan () blah; blah (); yright 2007 X Inc.". Ada sampah tertinggal. Dua cara untuk memperbaikinya: buat file input kami lebih panjang (tambah spasi), atau tambahkan simbol komentar di bagian akhir. Perhatikan bahwa banyak editor menambahkan baris baru di bagian akhir, jadi Anda mungkin ingin mengatur count=ke N-1byte (jika file Anda sekarang 203 byte, dan Anda melihat bahwa byte terakhir adalah baris baru, setel hitung ke 202). Anda dapat memeriksa file untuk baris baru dengan menggunakan xxd script.py | taildan memeriksa apakah byte terakhir adalah 0a(atau, dalam kasus aneh, 0d).

Prosesnya identik untuk suatu .isofile, hanya ganti secara mental /dev/sdcdengan your.iso.

Perhatikan bahwa ketika Anda memeriksa target di mountpoint Anda untuk melihat apakah itu berfungsi, Anda mungkin perlu menggunakan stringslagi (kali ini mencari skrip Anda) karena file tersebut mungkin masih dalam cache baca.

Luc
sumber