如何从 ISO 中提取 FreeBSD 库存安装的某些文件夹而不实际安装 FreeBSD?
我正在尝试为 FreeBSD 的各个主要版本构建许多交叉编译器,并且需要获取一些包含文件,并且libc
希望能够提取其中的一部分....../usr/include
/usr/lib
编辑:鉴于第一个回复,我觉得我必须详细说明一下。挂载 ISO 文件很简单,我知道如何在许多平台上执行此操作(例如在我的 Linux 机器上:)mount -o loop FreeBSD-7.0-RELEASE-amd64-disc1.iso freebsd7/
。但是,当您挂载 FreeBSD 的安装 ISO 时,您会注意到它们不包含文件夹,这一点可以从挂载 ISO 的文件夹内的 whileusr
输出轻松看出。find -type d -name usr
显然,这些文件以某种格式存储,我需要能够解析存在的任何元信息,以找到哪个文件是包含我需要提取的内容的存档,然后提取它。
答案1
如果您从例如下载文件ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/amd64/8.2-RELEASE/base/(你也可以在你的 ISO 上找到它们),你可以用以下命令提取它们:
cat base.?? | tar --unlink -xpzf -
(取自install.sh
同一目录)
此外,该base.mtree
文件还描述了存档的内容。
还可以找到其他档案。例如,manpages
其中包含要放入的手册页/usr/share/man/
、kernels
其中包含内核模块以及dict
要放入的单词列表/usr/share/dict/
答案2
您应该能够FreeBSD-9.0-RELEASE-i386-disc1.iso
通过将 ISO 映像安装到某个位置并从那里执行文件操作来做到这一点(至少对于映像)。就像是:
# mkdir /mnt/freebsd
# mount -t auto /path/to/install_image.iso /mnt/freebsd
# cp -r /mnt/freebsd/usr/include /some/other/location
...
# umount /mnt/freebsd
无需安装任何东西。因此,当你拥有一切后,只需卸载 ISO 并继续破解即可。这似乎是我能想到的最简单的方法。