使用 xorriso 提取 iso 时如何排除提取的路径

使用 xorriso 提取 iso 时如何排除提取的路径

作为一个例子,我试图从 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命令之前完成。顺序很重要。

相关内容