X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=TODO;h=a76fd2e10799331a7b765ae05c62bf106ba52bd8;hp=a42cbcc8c607103bd5ced024a46969b3ad456886;hb=2d3193e971f3c7c976146a55e6c2d49dca9d7e04;hpb=62d4f2550d6b412a4b3ad4b34d4b3d3a67c4eb6c diff --git a/TODO b/TODO index a42cbcc..a76fd2e 100644 --- a/TODO +++ b/TODO @@ -372,54 +372,8 @@ $EDITOR without any corresponding ability to set them. echo $EDITOR # or %{EDITOR} edit /etc/resolv.conf -live CD inspection ------------------- - - virt-inspector livecd.iso - -Could this be done through the core API and existing calls? - -There is a soft requirement for this in virt-manager, where it would -be nice to be able to prepopulate the operating system hints based on -what sort of ISO the user is trying to install from. - -Several sorts of CDs: - - - live CD - - install-only CD - - network install CD - - supplemental CDs with additional packages but not bootable - on its own - -Some CDs are formatted as ISO9660 and larger ones as UDF (DVD format), -but they all are unpartitioned. - -Bootable Linux CDs have an /isolinux directory. - -Bootable EFI CDs have an /EFI/BOOT directory. - -Fedora live CDs have /images/install.img which is a squashfs -containing an ext4 root. We could consider mounting this and -inspecting it separately, but it would be simple to get everything we -need from other files in the CD directory. - -More recent Fedora install DVD has /.discinfo and /.treeinfo with some -easy to parse information in it. - -Debian and Ubuntu CDs have a /.disk/info file which is the product -string. There are other interesting files in /.disk. They also have -a characteristic directory structure (eg. /dists, /pool/main) which -looks like a Debian archive. - -Windows 2003 install CDs have some characteristic stamp files in the -root directory, like: /win51 /win51ia /win51ia.sp2. The main -installation files (CAB files) are in /i386 directory. The following -files contain a lot of interesting information: - - /i386/hivesft.inf - /i386/layout.inf - /i386/sis.inf - /i386/txtsetup.sif +live CD inspection for Windows 7 +-------------------------------- Windows 7 install CDs are quite different and pretty impenetrable. There are no obvious files to parse. @@ -440,6 +394,8 @@ ntfsinfo: print various information about NTFS volume and files ntfs streams: extract alternate streams from NTFS files +ntfsck: checker for NTFS filesystems + Undelete files -------------- @@ -454,3 +410,103 @@ More mkfs_opts options Useful options to offer: - Set label. - Set UUID. + +Use /proc/self/mountinfo +------------------------ + +This file contains lots of interesting information about +what is mounted and where. eg: + + 16 21 0:3 / /proc rw,relatime - proc /proc rw + 17 21 0:16 / /sys rw,relatime - sysfs /sys rw,seclabel + 18 23 0:5 / /dev rw,relatime - devtmpfs udev rw,seclabel,size=1906740k,nr_inodes=476685,mode=755 + 26 21 253:3 / /home rw,relatime - ext4 /dev/mapper/vg-lv_home rw,seclabel,barrier=1,data=ordered + +This could be used instead of current hairy code to parse the output +of the 'mount' command. We could add new APIs to return kernel mount +options, type of filesystem at a mountpoint etc. + +guestfish drive letters +----------------------- + +There should be an option to mount all Windows drives as separate +paths, like C: => /c/, D: => /d/ etc. + +More inspection features +------------------------ + +- last shutdown time +- DHCP address +- last time the software was updated +- last user who logged in +- lastlog, last, who + +Integrate virt-inspector with CMDBs +----------------------------------- + +Either integrate virt-inspector with Configuration Management +Databases (CMDBs) or at least check that virt-inspector produces the +right range of data so that integration would be possible. The +standards for CMDBs come from the DMTF, see eg: + +http://dmtf.org/news/pr/2009/7/dmtf-releases-cmdbf-standard-federating-configuration-management-data + +Efficient way to visit all files +-------------------------------- + +https://rwmj.wordpress.com/2010/12/15/tip-audit-virtual-machine-for-setuid-files/#content + +A naive method would look like: + + g#visit ~return_stats:true "/" ( + fun pathname stat -> + ... + ) + +However this has two disadvantages: + + - requires hand-written custom bindings in each language + - unclear about locking, thread-safety and re-entrancy of handle g + +A better way would be to have some sort of explicit "download all +filenames and stat structures", which could then be iterated over: + + let files = g#find_opts ~return_stats:true "/" in + List.iter ( + fun pathname stat -> + ... + ) + +The problem with this is that 'files' is going to be larger than a +protocol buffer. + +This leads to thinking about changes to the protocol / generator to +make this simpler. The proposal would be to add RBigStringList, +RBigStructList [or RBig (Ranytype ...)]. These would work like +FileOut, in that they would use file streaming to stream XDR +structures (probably written to a file on the library side). +Generated code would hide most of the implementation. + +We also need to think about security issues: is it possible for the +daemon to keep sending back data forever, and if so what happens on +the library side. + +[Users can now use virt-ls to solve some of these problems, but it is +not a general solution at the API level] + +Interactive disk creator +------------------------ + +An interactive disk creator program. + +Attach method for disconnected operation +---------------------------------------- + +http://libguestfs.org/guestfs.3.html#guestfs_set_attach_method + +"Librarian" has an idea that he should be able to attach to a regular +appliance, but disconnect from it and reconnect to it later. This +would be some sort of modified attach method (see link above). + +The complexity here is that we would no longer have access to +stdin/stdout (or we'd have to direct that somewhere else).