3

我有一个可引导的 ISO 文件,其中包含一个filesystem.git又包含以下结构:

dr-xr-xr-x 2 root root 2048 Mär  1 17:10 branches/
-r--r--r-- 1 root root  115 Mär  1 17:10 config
-r--r--r-- 1 root root   73 Mär  1 17:10 description
-r--r--r-- 1 root root   23 Mär  1 17:10 HEAD
dr-xr-xr-x 2 root root 2048 Mär  1 17:10 hooks/
dr-xr-xr-x 2 root root 2048 Mär  1 17:10 info/
dr-xr-xr-x 4 root root 2048 Mär  1 17:10 objects/
-r--r--r-- 1 root root   85 Mär  1 17:10 packed-refs
dr-xr-xr-x 4 root root 2048 Mär  1 17:10 refs/
-r--r--r-- 1 root root   82 Mär  1 17:10 shallow

对象树中似乎有一个打包的 Debian 文件系统,并且initramfs图像似乎有一个程序可以将其解压缩并挂载filesystem.git为根文件系统,但我不知道如何。

谁能解释一下,这是如何工作的?

4

3 回答 3

3

显然webconverger已经创建了他们的自定义fuse文件系统:https ://github.com/Webconverger/git-fs 。在我看来,这是他们分发更新的方式:执行 agit-fetch然后更新 以initramfs将他们的文件系统指向git-fs新对象。您需要阅读源代码(或简单地询问其中一位开发人员......)以了解事情是如何运作的。

于 2013-03-04T13:29:54.330 回答
1

它不是一个文件系统,它是一个git存储库,所以它不会像这样挂载。

推测它是从安装媒体克隆到正在安装的系统的根目录,git clone然后.git删除该目录,或者使用较低级别的 git 命令执行一些等效操作来克隆它,而无需创建存储库的本地副本在.git目录中。

于 2013-03-04T13:01:29.187 回答
1

要回答其他有同样问题的人的问题,您可以使用git-fs结合FUSE来挂载 *.git 目录,正如 Michael Wild 所指出的那样。

于 2013-03-07T10:46:12.437 回答