Files
libguestfs/TODO
Richard Jones a86aa7d152 Guestfish feature: remote control of guestfish over a pipe.
The use case is to have a long-running guestfish process in
a shell script, and thus to avoid the overhead of starting
guestfish each time.  Do:

 eval `guestfish --listen`

 guestfish --remote somecmd
 guestfish --remote someothercmd
 guestfish --remote exit

This patch also supports having multiple guestfish processes
at the same time.

The protocol is simple XDR messages over a Unix domain socket.
2009-07-14 14:08:31 +01:00

179 lines
5.0 KiB
Plaintext

Ideas for the Python bindings:
https://www.redhat.com/archives/fedora-virt/2009-April/msg00114.html
----------------------------------------------------------------------
We badly need to actually implement the FTP server mentioned in the
documentation.
Or: Implement a FUSE-based filesystem. See the FUSE mountlo
project which does something similar, albeit only to single
filesystems:
http://sourceforge.net/project/showfiles.php?group_id=121684&package_id=150116
----------------------------------------------------------------------
BufferIn and BufferOut should turn into <char *, int> and simple
strings in other languages that can handle 8 bit clean strings.
Limit on transfers would still be 2MB for these types.
- then implement write-file properly
- and implement read-file
----------------------------------------------------------------------
Implement febootstrap command.
----------------------------------------------------------------------
Complete the Haskell bindings (see discussion on haskell-cafe).
----------------------------------------------------------------------
Complete the bindings tests - must test the return values and
error cases.
----------------------------------------------------------------------
For virt-inspector:
- Make a libvirt XML config
- Test over available OSes
- Add 'reged' / NT registry support.
----------------------------------------------------------------------
Use virtio_blk by default. It's faster and more natural.
Unfortunately it seems like this will rename all devices - see next
item.
Note: virtio_blk *IS* supported by all our minimum platforms,
ie. CentOS 5.3, Fedora 11, Debian.
----------------------------------------------------------------------
"Standalone/local mode"
Instead of running guestfsd (the daemon) inside qemu, there should be
an option to just run guestfsd directly.
The architecture in this mode would look like:
+------------------+
| main program |
|------------------|
| libguestfs |
+--------^---------+
| | reply
cmd | |
+----v-------------+
| guestfsd |
+------------------+
Notes:
(1) This only makes sense if we are running as root.
(2) There is no console / kernel messages in this configuration, but
we might consider capturing stderr from the daemon.
(3) guestfs_config and guestfs_add_drive become no-ops.
Obviously in this configuration, commands are run directly on the
local machine's disks. You could just run the commands themselves
directly, but libguestfs provides a convenient API and language
bindings. Also deals with tricky stuff like parsing the output of the
LVM commands. Also we get to leverage other code such as
virt-inspector.
This is mainly useful from live CDs, ie. virt-p2v.
Should we bother having the daemon at all and just link the guestfsd
code directly into libguestfs?
----------------------------------------------------------------------
PPC problems:
ppc (32 bit) works with qemu from git, however there is no serial console
ppc64 requires extra parameters:
-M mac99 -cpu ppc64
however it still fails:
invalid/unsupported opcode: 01 - 01 - 1a (06301e83) 00000000018c2738 1
invalid bits: 00400000 for opcode: 0b - 19 - 15 (2d746572) 0000000000009230
no serial console in ppc or ppc64 because no one can tell us what
console=ttyXX option to use
----------------------------------------------------------------------
Supermin appliance should be moved into febootstrap.
----------------------------------------------------------------------
Extra commands / functionality:
General glibc / core programs:
chgrp
grep (do it locally using pipe?)
dd (?)
ln / ln -s
readlink
utime / utimes / futimes / futimens / l..
more mk*temp calls
some sort of alloc/fallocate/posix_fallocate call to create empty space
realpath
trunc[ate??]
ext2 properties:
chattr
lsattr
badblocks
blkid
debugfs
dumpe2fs
e2image
e2undo
filefrag
findfs
logsave
mklost+found
SELinux:
chcat
restorecon
ch???
Oddball:
pivot_root
fts(3) / ftw(3)
----------------------------------------------------------------------
Allow swap space from the guest to be used. Is it a good idea?
----------------------------------------------------------------------
Need a way to query a binary or library file for its architecture.
Using objdump or readelf?
What about non-ELF files (eg. Windows, BSD).
To do this properly requires some serious logic, eg. to cover Linux
and Windows we'd need objdump and i686-pc-mingw32-objdump, and more to
cover a.out, COFF and 64 bit Windows. Therefore this cannot be done
inside the daemon, and should be done by a separate, external program
similar to virt-inspector.
Probably we should go all the way and have virt-inspector able to
determine kernel and userspace architectures of guests.
----------------------------------------------------------------------
Other initrd-* commands, such as:
initrd-extract
initrd-replace