EDIT ISOイメージに使用できるUbuntu用のツールを探しています。 UbuntuおよびWindows ISOのような起動可能なISOイメージを含みます。編集するだけでなく、編集したISOを保存し、USBドライブまたはCD/DVDに書き込むときに起動することができます。
以前にISOマスターを使用してファイルをISOに追加しました。 ISOが起動可能かどうかの状態を保持するため、必要なものに適しています。私は過去に他のコンテンツ(音楽など)をライブディスクに追加するために使用しました。ただし、ISOファイルに変更を加えた後は、「名前を付けて保存」しかできません。つまり、別のISOファイルが作成されるので、両方に十分なディスク容量があることを確認してください。
PowerISO リリースしたばかりの Linuxバージョン ISO編集ソフトウェア。 ISOマスター のように、ISOが起動可能かどうかの状態を保持します。ただし、(最初に削除することで)元のファイルに直接保存できるため、両方のファイルに十分なディスク容量を確保する必要はありません。また、そのインターフェイスは、ISOマスターよりも簡単で直感的に使用できます。
これに対する一般的な答えは、isoファイルをアンパックし、変更して、再度パックすることです。 dv3500eaの答えで述べられているように、「ISOマスター」はそれを行うための良いフロントエンドのようです。
次の場合:
次に、この答えはあなたです!
要約すると、isofsファイルシステム内の既存のファイルを目的のファイルに置き換えます。目的のファイルは既存の(ターゲット)ファイルより小さく、末尾の空白(またはゴミ)を受け入れられる必要があります。これには実際には2つのコマンドしか必要ありませんが、注意してください。入力ミスはターゲットファイルシステムを完全に破壊したり、ソースファイルを上書きすることさえあります。バックアップはあなたの友達です!
私の場合、毎回スクリプトを再入力する必要がないように、ライブブートにスクリプトを保存したかったのです。スクリプトは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
が入力ファイルからバイトをスキップするため、skip=N
とは異なることに注意してください!)。もちろん、ターゲットテキストがある場所に設定します。count=N
これだけのバイトをコピーします。入力ファイルの終わりに気付くので、これは省略できると思いますが、念のために残しました。そして出来上がり、ファイルは上書きされます!
ただし、ターゲットファイルはスクリプトよりも大きいため、USBスティックでは、ファイルは「while do if run()blah; blah(); yright 2007 X Inc.」のようになりました。後続のゴミがあります。これを修正する2つの方法:入力ファイルを長くする(スペースを追加する)か、最後にコメント記号を追加します。多くのエディターは最後に改行を追加するので、count=
をN-1
バイトに設定することをお勧めします(ファイルが203バイトで、最後のバイトが改行であることに気づいたら、 202までカウントします)。 xxd script.py | tail
を使用して、最後のバイトが0a
(または、奇妙な場合は0d
)かどうかを確認することにより、ファイルの改行を確認できます。
このプロセスは、.iso
ファイルの場合と同じです。精神的に/dev/sdc
をyour.iso
に置き換えてください。
マウントポイントでターゲットが機能しているかどうかを確認するときは、ファイルがおそらく読み取りキャッシュにあるため、strings
を再度使用する必要があることに注意してください(今回はスクリプトを検索します)。