如何在init中挂载filesystem.git目录?

我有一个可启动的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的过程,作为根文件系统,但我不知道如何。

任何人都可以解释,这是如何工作?

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

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

据推测,它是从安装媒体克隆到与git clone安装的系统的根目录,然后.git目录被删除,否则一些等效的操作执行使用低级别的git命令克隆它,而不麻烦创建本地.git目录中的存储库的副本。

为了回答具有相同问题的其他人的问题,可以像Michael Wild指出的那样,通过结合使用git-fs来挂载* .git目录。