Question

I have a bootable ISO file containing a filesystem.git which in turn contains this structure:

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

There seems to be a packed Debian filesystem within the objects tree and the initramfs image seems to have a procedure to unpack and mount the filesystem.git as the root filesystem, but I don't know how.

Can anyone explain, how this works?

Was it helpful?

Solution 3

To answer the question for other folks having the same issue, you can mount a *.git directory by using git-fs in combination with FUSE as pointed out by Michael Wild.

OTHER TIPS

Apparently webconverger have created their custom fuse file-system: https://github.com/Webconverger/git-fs. Looks to me that this is they way they distribute updates: perform a git-fetch and then update the initramfs to point their git-fs file system at the new object. You'll need to read the sources (or simply ask one of the developers...) in order to understand how things work exactly.

It's not a filesystem, it's a git repository, so it won't be mounted as such.

Presumably it is cloned from the install media to the root directory of the system being installed with git clone and then the .git directory is removed, or else some equivalent operation is performed using lower level git commands to clone it without bothering to create the local copy of the repository in the .git directory.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top