たとえば、Ubuntu Live ISOからすべてのファイルを抽出したいとします。とは別に道/casper/filesystem.squashfs
。マニュアルページによると:
Normally xorriso only writes to disk files which were given as stdio:
pseudo-drives or as log files. But its alter ego osirrox is able to
extract file objects from ISO images and to create, overwrite, or
delete file objects on disk.
Disk file exclusions by -not_mgt, -not_leaf, -not_paths apply.
以下を使用してisoのすべてのパスを抽出できます。
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -extract / extract_dir
しかし、ディスクファイルの除外を試してみましたが、役に立ちませんでした。アクションの前後にさまざまなバリエーションやnot_leaf
シーケンスを試しました。両方ともすべてのパスを抽出します。私が試したいくつかは次のとおりです。not_paths
-extract
使用not_leaf
:
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_leaf 'filesystem.squashfs' -extract / extracted_dir
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -extract / extracted_dir -not_leaf 'filesystem.squashfs'
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_mgt on -not_leaf 'filesystem.squashfs' -extract / extracted_dir
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_mgt on -extract / extracted_dir -not_leaf 'filesystem.squashfs'
not_paths
上記の並べ替えで使用されます。
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_mgt on -not_paths 'casper/filesystem.squashfs' -- -extract / extracted_dir
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_mgt on -not_paths '/casper/filesystem.squashfs' -- -extract / extracted_dir
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_mgt on -not_paths 'extracted_dir/casper/filesystem.squashfs' -- -extract / extracted_dir
not_leaf
またはとして答えを受け入れますnot_paths
が、両方が好ましいです。これがどのように機能するかについての論理を説明するのが良いでしょう(つまり、なぜ理解できないのでしょうか?)。
答え1
-not_leaf
との設定は、-no_path
ISOイメージに木を挿入する場合のものです。
osirroxの場合、ISOから完全にコピーするには、ツリーの内容を(一時的に)減らす必要があります。これには-rm
xorrisoコマンドを使用します。-rm_r
どちらにも「」で終わる必要がある可変長パラメーターのリストがあります--
。通常の手順が終了すると、変更がまだISOに保存されていないため、抵抗が発生します。 (バッチでFAILUREが発生し、ダイアログボックスで終了できません。)最終コマンドでこれを防ぎます-rollback_end
。
xorriso -osirrox on \
-indev ubuntu-21.04-desktop-amd64.iso \
-rm /casper/filesystem.squashfs -- \
-extract / extract_dir \
-rollback_end
別の問題は、Ubuntu ISOの読み取り専用ディレクトリ権限です。抽出後の作業を中断します。 ISO内では、-find
次のコマンドを使用してそれを変更できます。
xorriso -osirrox on \
-indev ubuntu-21.04-desktop-amd64.iso \
-rm /casper/filesystem.squashfs -- \
-find / -type d -exec chmod u+w -- \
-extract / extract_dir \
-rollback_end
ISOに対するすべての変更は、-extract
コマンドの前に完了する必要があることを覚えておいてください。順序が重要です。