[Libguestfs] Integration with muCommander

Arik Hadas
Wed, 21 Nov 2018 22:33:32 -0000

Hi All,

In the last few days, I've been working on leveraging a pluggable mechanism
that is going to be introduced for muCommander [1] to provide a front-end
for libguestfs.

I published a video [2] that demonstrates this integration: enabling to
browse/upload-to/download-from virtual disks via a file manager with a
dual-pane interface.

I've followed the guidelines for inspecting the disk's file system(s) I
got
on IRC (thanks Richard!). The code is available at [3], mostly in
LibguestfsFile.java.

However, as one can see in the video, it takes a pretty long time to
inspect the disk (in order to find the operating system) and to mount the
file systems. So it takes me back to the filesystem_walk function as I read
in [4] that it allows inspecting the metadata without mounting the disk
partition(s). Unfortunately, I didn't manage to try that function due to
the following error I get when trying to use it (tried on Fedora 28 & 29):

Exception in thread "main"
com.redhat.et.libguestfs.LibGuestFSException:
internal_filesystem_walk: feature 'libtsk' is not available in this
build of libguestfs.  Read 'AVAILABILITY' in the guestfs(3) man page for
how to check for the availability of features.
    at com.redhat.et.libguestfs.GuestFS._filesystem_walk(Native Method)
    at com.redhat.et.libguestfs.GuestFS.filesystem_walk(GuestFS.java:6010)
    at test.Main.main(Main.java:27)

Is that right that the filesystem_walk doesn't require mounting the disk
partition(s)? If that's true, can we publish a version that supports that
in the Fedora repo?

And another question, the upload/download API requires to provide a remote
file and a file on the hosting file system. I currently use a temporary
local file that is passed as input (in case of upload) or output (in case
of download) for libguestfs. But I've noticed that by specifying
"-",
libguestfs reads from stdin/writes to stdout. Do you have any experience in
using this to inject/retrieve data directly from/to a Java application
(that holds an input/output stream at hand) without going through the disk?

[1] http://www.mucommander.com
[2] https://youtu.be/_ykVRSuKFwc
[3]
https://github.com/ahadas/mucommander/tree/osgi/mucommander-libguestfs/src/main/java/com/mucommander/commons/file/archive/libguestfs
[4] https://www.redhat.com/archives/libguestfs/2016-June/msg00051.html