ISO Görüntüleri nasıl düzenlenir (Önyüklenebilir ISO'lar dahil)


30

Ubuntu için ISO imgeleri düzenlemek için kullanılabilecek araçlar arıyorum . Ubuntu ve Windows ISO'lar gibi önyüklenebilir ISO görüntüleri dahil. Düzenlenmiş ISO'yu yalnızca düzenlemekle kalmaz, kaydeder ve USB Sürücü ya da CD / DVD'ye yazıldığında yine de önyüklenebilir.

Yanıtlar:


42

ISO Master isomaster'ı yükle

Daha önce ISO'lara dosya eklemek için ISO Master'ı kullandım. İhtiyacınız olan şey için uygundur çünkü ISO'nun önyüklenebilir olup olmadığının durumunu korur. Geçmişte canlı bir diske başka bir içerik (müzik gibi) eklemek için kullandım. Bununla birlikte, bir ISO dosyasında değişiklik yaptıktan sonra, yalnızca "Farklı Kaydet" seçeneğinin, yani başka bir ISO dosyasının oluşturulabileceğini unutmayın, bu nedenle her ikisi için de yeterli disk alanınız olduğundan emin olun.

isomaster


2

PowerISO az önce ISO düzenleme yazılımlarının Linux sürümünü yayınladı . Gibi ISO Usta , ISO önyüklenebilir olup olmadığı durumunu korur. Ancak, doğrudan orijinal dosyaya kaydetmenizi sağlar (önce silerek), bu nedenle her iki dosya için de yeterli disk alanına sahip olmanıza gerek yoktur. Ayrıca arayüzünü ISO Master'dan daha kolay ve sezgisel buluyorum.

Linux için PowerISO ekran görüntüsü


1

Bunun en yaygın cevabı, iso dosyasını açmak, değiştirmek ve tekrar paketlemektir. DV3500ea'nın cevabında belirtildiği gibi "ISO Master" gibi görünüyor, bunun için iyi bir ön uç.

Eğer:

  • bunun için yeterli yeriniz yok
  • her şeyi yeniden yazmak yerine sadece cerrahi bir değişiklik yapmak istiyorsun
  • Tüm cihazı kopyalamadan bir isofs dosya sistemi (aka iso9660) içeren bir depolama cihazını değiştirmek istiyorsanız, veya
  • Bu açma / yeniden paketleme işlemini sadece yeterince sahte olmadığını düşünüyorsanız

O zaman bu cevap tam size göre!

Özetle, isofs dosya sistemindeki mevcut bir dosyayı istediğimiz dosya ile değiştireceğiz. İstediğimiz dosya mevcut (hedef) dosyadan daha küçük olmalı ve takip eden boşluk (veya çöp) kabul edilebilir olmalıdır.Bu aslında sadece iki komut gerektirir ancak dikkatli olun: Bir yazım hatası hedef dosya sistemini tamamen tahrip edebilir, hatta kaynak dosyanın üzerine yazabilir. Yedekler senin arkadaşın!

Benim durumumda, bir betiği canlı bir açılışta saklamak istedim, böylece her seferinde yeniden yazmak zorunda kalmayacağım. Komut dosyası şu anda script.pyve hedefim (bir USB bellek çubuğu) /dev/sdc. Komut dosyasının boyutu 202 bayttır, bu nedenle ilk adımımız 202 bayttan daha büyük bir dosya bulmak, böylece üzerine yazabiliriz. Montajdan sonra /mntuygun bir dosya buldum /mnt/info.txt.

Bağlantı info.txtnoktasında sadece üzerine yazamayız, bunun salt okunur bir dosya sistemi olduğundan şikayet edecektir. Yine de kökünüz, öyleyse onlara bunun ne anlama geldiğini gösterelim! info.txtDosya sisteminin neresinde olduğunu bulmamız gerek . info.txtÖrneğin This is the official distribution CD of X., belki de benzersiz olan bir dize bulun ve diskte arayın:

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

Alternatif olarak, bu daha hızlı olan grep ile de yapılabilir, ancak daha sonra baştan belirtmeniz gerekir: $ sudo grep -oba 'This is ...' /dev/sdc .

Artık nerede olduğunu bildiğimize göre, bu baytları dosyamızla değiştirmemiz gerekiyor:

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

Bu hat:

  • Baytları girdi dosyasından ( if) çıktı dosyasına kopyalar.of ) ve çıktı dosyasının gerçekte bir cihaz olduğu umrunda değildir, çünkü "her şey bir dosyadır".
  • conv=notrunc çıktı dosyasını kesmemesini söyler, çünkü sadece bir kaç byte yazmak istiyoruz, dosyanın üzerine bir noktadan itibaren yazmak istemiyoruz.
  • bs=1 blok boyutunu 1 olarak ayarlar. Genellikle 4k veya daha büyük bir blok boyutu istersiniz, ancak her ikisi de (satır içi) matematik yapmak zorunda kalmaz ve bayt için tam olarak konum belirtmemize izin verir.
  • seek=Nnotta (çıkış dosyasında belli bir noktaya arar seek=Nfarklıdır skip=Nçünküskip atlama giriş dosyasından bayt!). Elbette hedef metnin olduğu yere ayarladık.
  • count=Nsadece bu çok bayt kopyala. Girdi dosyasının sonunun farkına varacağı için bunun ihmal edilebileceğini düşünüyorum, ancak emin olmak için bıraktım.

Ve işte, dosyanın üzerine yazılmıştır!

Ancak bekleyin, hedef dosya komut dosyamızdan daha büyüktü, bu yüzden USB çubuğunda dosya şimdi şöyle bir şeydi: "(run () blah; blah (blah (); yright 2007 X Inc.)." Sonunda çöp var. Bunu düzeltmenin iki yolu: giriş dosyamızı daha uzun hale getirin (boşluk ekleyin) veya sonunda bir yorum sembolü ekleyin. Eğer sette isteyebilirsiniz kadar çok editörler, sonunda bir yeni satır eklemek Not count=için N-1bayt (dosya şimdi 203 bayt ise, ve sonuncu bayt bir satır, 202 set sayısı olduğunu fark). xxd script.py | tailSon bayt olup olmadığını kontrol ederek yeni satırlar için bir dosyayı kontrol edebilirsiniz 0a(veya tuhaf durumlarda 0d).

Bu işlem bir .isodosya için aynıdır , sadece zihinsel olarak /dev/sdcbununla değiştirin your.iso.

Çalışıp çalışmadığını görmek için bağlama noktanızdaki hedefi kontrol ettiğinizde strings, dosya muhtemelen okuma önbelleğinde olduğundan, yeniden kullanmanız gerekebilir (bu kez komut dosyanızı ararken).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.