guestctl

Crates.ioguestctl
lib.rsguestctl
version0.3.0
created_at2026-01-24 21:54:20.884178+00
updated_at2026-01-24 21:54:20.884178+00
descriptionGuest VM toolkit for disk inspection and manipulation
homepage
repositoryhttps://github.com/ssahani/guestctl
max_upload_size
id2067581
size2,570,038
Susant Sahani (ssahani)

documentation

README

guestctl

A pure Rust toolkit for VM disk inspection and manipulation with beautiful emoji-enhanced output. Inspect VM disks in seconds without booting them. Designed to work seamlessly with hyper2kvm.

License: LGPL v3 Rust PyPI Downloads

๐ŸŽจ New: Beautiful terminal output with emojis and color coding makes VM inspection actually enjoyable!

๐Ÿš€ Quick Start

Installation

Python Package (Recommended):

pip install guestctl

From Source:

git clone https://github.com/ssahani/guestkit
cd guestkit
cargo build --release

Usage

Inspect a VM disk:

guestctl inspect vm.qcow2

Output:

๐Ÿ’พ Block Devices
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  โ–ช /dev/sda 8589934592 bytes (8.59 GB)

๐Ÿ–ฅ๏ธ  Operating Systems
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
    ๐Ÿง Type:         linux
    ๐Ÿ“ฆ Distribution: ubuntu
    ๐Ÿท๏ธ Product:      Ubuntu 22.04 LTS
    ๐Ÿ  Hostname:     webserver-prod
    โšก Init system:  systemd

    ๐Ÿ’ป Language Runtimes
    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
      ๐Ÿ python3
      ๐ŸŸข Node.js

    ๐Ÿณ Container Runtimes
    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
      ๐Ÿณ Docker

Interactive mode:

guestctl interactive vm.qcow2

Python API:

from guestctl import Guestfs

with Guestfs() as g:
    g.add_drive("disk.qcow2")
    g.launch()

    roots = g.inspect_os()
    for root in roots:
        print(f"OS: {g.inspect_get_distro(root)}")
        users = g.inspect_users(root)
        for user in users:
            print(f"User: {user.username}")

Features

  • ๐Ÿฆ€ Ergonomic Rust API - Type-safe enums, builder patterns, and fluent interfaces for modern Rust idioms
  • ๐Ÿ” Comprehensive API - 578 disk image manipulation functions (563 fully implemented, 15 API-defined) - 97.4% implementation coverage
  • ๐Ÿฆ€ Pure Rust - No C dependencies for core library, memory safe, high performance
  • โšก Compile-Time Safety - Type-safe filesystems, OS detection, and partition tables prevent runtime errors
  • ๐Ÿ’ฟ Disk Format Support - QCOW2, VMDK, RAW detection via magic bytes
  • ๐Ÿ“Š Partition Tables - MBR and GPT parsing, partition creation/deletion/resizing
  • ๐Ÿ—‚๏ธ Filesystem Operations - Mount/unmount, create (mkfs), check (fsck), tune, trim, resize
  • ๐Ÿ”Ž OS Inspection - Detect OS type, distro, version, architecture, hostname
  • ๐Ÿ“ฆ Package Management - List and inspect dpkg/rpm packages
  • ๐ŸŒ Network Configuration - Read hostname, DNS, interface config
  • ๐Ÿ‘ค System Configuration - Timezone, locale, users, groups, systemd units
  • ๐Ÿ” Encryption Support - LUKS encrypted volumes
  • ๐Ÿ“š LVM Support - Logical volume management
  • ๐Ÿ—œ๏ธ Archive Operations - tar, tgz, cpio creation and extraction
  • ๐Ÿ”‘ Checksums - MD5, SHA1, SHA256, SHA384, SHA512
  • ๐Ÿ›ก๏ธ Security Operations - SELinux, AppArmor, capabilities, ACLs
  • ๐Ÿฅพ Boot Configuration - Bootloader detection, kernel management, UEFI support
  • ๐Ÿ’พ Advanced Disk Operations - Swap management, hexdump, strings, secure scrubbing
  • ๐Ÿ”ง Service Management - systemd/sysvinit service detection, cron jobs
  • ๐Ÿ”‘ SSH Operations - SSH key management, certificates, authorized_keys
  • โš™๏ธ Configuration Editing - Augeas-based config file editing
  • ๐ŸชŸ Windows Support - Registry hive access, Windows-specific inspection
  • ๐ŸŒณ Btrfs Advanced - Subvolumes, snapshots, balance, scrub operations
  • ๐Ÿ“Š File Metadata - Detailed stat operations, inode info, permissions
  • ๐Ÿ› ๏ธ Utility Functions - Feature detection, settings management, debug tools
  • ๐Ÿ”ท XFS Support - XFS repair, administration, info, database operations
  • ๐Ÿ’ฟ ISO Operations - ISO creation, inspection, mounting
  • ๐Ÿ“ค Advanced Transfer - Offset-based downloads/uploads, device copying
  • ๐Ÿ’พ Disk Image Management - Create, resize, convert, sparsify, snapshot disk images
  • ๐Ÿ”ง Internal API - State management, environment parsing, debug functions
  • ๐Ÿ’ฟ NTFS Operations - ntfsclone, ntfsfix, label management
  • ๐Ÿ”ท Extended Filesystem - ext2/3/4 UUID, label, dump/restore operations
  • ๐Ÿ” Glob Operations - Pattern matching, ls0, find0, case-insensitive search
  • ๐Ÿ”ง Node Operations - mknod, mkfifo, mktemp, truncate, utimens
  • ๐Ÿ’พ MD/RAID - Software RAID creation, management, inspection
  • ๐Ÿ›ก๏ธ SELinux Extended - SELinux inspection, restorecon
  • ๐Ÿ” Capabilities - Linux capabilities management
  • ๐Ÿ”’ ACL Operations - POSIX ACL management
  • ๐ŸชŸ Hivex - Windows registry hive manipulation (16 functions)
  • ๐Ÿ”„ Rsync - rsync-based file synchronization
  • ๐Ÿฅพ Syslinux - syslinux/extlinux bootloader installation
  • ๐Ÿ“” Journal - systemd journal reading, export, verification
  • ๐Ÿ‘๏ธ Inotify - file monitoring with inotify
  • ๐Ÿ—œ๏ธ SquashFS - SquashFS creation and extraction
  • ๐Ÿฆ  YARA - malware scanning with YARA rules
  • ๐Ÿ”ฌ TSK - forensics with The Sleuth Kit (deleted file recovery)
  • ๐Ÿ’ฝ ZFS - ZFS filesystem management (10 functions)
  • ๐ŸชŸ LDM - Windows dynamic disk support (8 functions)
  • ๐Ÿ”€ Multipath - multipath device management
  • ๐Ÿฅพ GRUB - GRUB bootloader installation and configuration
  • โšก F2FS - Flash-Friendly File System support
  • ๐Ÿ’พ Bcache - block cache management
  • ๐Ÿ“ DOSFS - FAT12/16/32 filesystem tools
  • ๐Ÿ“ฆ CPIO - CPIO archive format support
  • ๐Ÿ—‚๏ธ NILFS - log-structured filesystem support
  • ๐Ÿ”ง UFS - Unix File System support
  • ๐ŸŒฒ ReiserFS - ReiserFS filesystem management
  • ๐Ÿ“ JFS - Journaled File System support
  • ๐Ÿ”น Minix - Minix filesystem support
  • ๐Ÿฉบ SMART - disk health monitoring with smartctl
  • ๐Ÿงน SysPrep - VM preparation operations (remove unique data)
  • ๐Ÿ› ๏ธ Utilities - version info, QEMU detection, umask, device stats
  • ๐Ÿ”ง Block Device Ops - setro/setrw, flush, reread partition table, block/sector size
  • ๐Ÿ“ Base64 - Base64 encoding/decoding for file content
  • ๐Ÿ”„ Extended Swap - swap label/UUID management operations
  • ๐Ÿ’พ DD Operations - dd-style copy, zero device operations
  • ๐Ÿ“ Positional I/O - pread/pwrite with offset support
  • ๐Ÿ” Virt Tools - virt-inspector, virt-convert, virt-resize, virt-sparsify info
  • ๐Ÿ—œ๏ธ Compression - gzip, bzip2, xz compression/decompression for files and devices
  • ๐Ÿท๏ธ Label Operations - generic filesystem label/UUID management (auto-detect fs type)
  • ๐Ÿ”„ Sync Operations - sync, drop_caches, flush for data consistency
  • ๐Ÿ”– Attributes - extended attributes (xattr) and file flags management
  • ๐Ÿงฉ Partition Types - GPT type GUID, attributes, expand partition tables
  • ๐Ÿ”— Link Management - symbolic and hard link operations
  • ๐Ÿ Python Bindings - PyO3-based native Python bindings
  • โšก Retry Logic - Built-in exponential backoff for reliable operations
  • ๐Ÿ”Œ Extensible - Modular architecture for easy extension

Advanced CLI Features (guestctl)

  • ๐ŸŽจ Beautiful Visual Output - Emoji-enhanced terminal output with color coding for easy scanning
    • ๐Ÿ’พ Block devices with icons and visual hierarchy
    • ๐Ÿง OS detection with distribution-specific icons (Linux, Windows, FreeBSD)
    • ๐Ÿ”ด Package manager icons (RPM, DEB, Pacman)
    • ๐ŸŒ Network configuration display
    • Smart color coding: green (active), red (issues), gray (unknown)
  • ๐Ÿ“Š Multiple Output Formats - JSON, YAML, CSV, and beautiful plain text for automation and scripting
  • ๐ŸŽฏ Inspection Profiles - Specialized analysis modes:
    • Security Profile - SSH hardening, firewall status, user security, SELinux/AppArmor, risk scoring
    • Migration Profile - Complete inventory for VM migration planning
    • Performance Profile - System tuning opportunities and bottleneck detection
  • ๐Ÿ”„ VM Comparison - Diff two VMs or compare multiple VMs against a baseline
  • ๐Ÿ“ค Report Export - HTML and Markdown report generation for documentation
  • โšก Result Caching - SHA256-based caching for instant repeated inspections (60x speedup)
  • ๐Ÿš€ Batch Processing - Multi-threaded parallel inspection of multiple disk images

Quick Start

Installation

# Install system dependencies (Fedora/RHEL)
sudo dnf install qemu-img

# From source
git clone https://github.com/ssahani/guestctl
cd guestctl
cargo build --release
cargo install --path .

CLI Tool

GuestCtl is a powerful command-line tool for inspecting and manipulating VM disk images without mounting them. Features beautiful emoji-enhanced output with color coding for better readability.

Example - Inspect a VMware Photon OS disk (5 seconds):

sudo guestctl inspect photon.vmdk

Output:

๐Ÿ’พ Block Devices
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  โ–ช /dev/sda 8589934592 bytes (8.59 GB)
    โ€ข Read-only: yes

๐Ÿ—‚  Partitions
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  ๐Ÿ“ฆ /dev/sda3
    โ€ข Size:   8574189056 bytes (8.57 GB)

๐Ÿ“ Filesystems
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  ๐Ÿง /dev/sda3 ext4
    โ€ข UUID:  311182bd-f262-4081-8a2d-56624799dbad

๐Ÿ–ฅ๏ธ  Operating Systems
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
    ๐Ÿง Type:         linux
    ๐Ÿ“ฆ Distribution: photon
    ๐Ÿท๏ธ Product:      VMware Photon OS/Linux 5.0
    ๐Ÿ  Hostname:     photon-2e2948360ed5
    ๐Ÿ”ด Packages:     rpm
    โšก Init system:  systemd
    ๐Ÿ’พ Disk usage:   15.1% (5.15 TB used / 34.14 TB total)
    ๐Ÿง Kernel:       vmlinuz-6.1.10-11.ph5

Key Features:

  • ๐ŸŽจ Color-coded output - Visual hierarchy with emojis and colors
  • โšก Fast - Complete OS detection in ~5 seconds
  • ๐Ÿ”’ Safe - Read-only by default
  • ๐ŸŒ Network detection - Automatic network config parsing
  • ๐Ÿ“Š Multiple formats - Pretty terminal, JSON, HTML, YAML

Basic Operations:

# Inspect with beautiful output
sudo guestctl inspect photon.vmdk

# JSON output for scripting
sudo guestctl inspect --json ubuntu.qcow2 | jq '.operating_systems[0].distro'

# List filesystems
sudo guestctl filesystems ubuntu.qcow2

# List installed packages
sudo guestctl packages ubuntu.qcow2

# Read a file
sudo guestctl cat ubuntu.qcow2 /etc/hostname

# List directory contents
sudo guestctl list ubuntu.qcow2 /etc

# Extract a file
sudo guestctl extract ubuntu.qcow2 /etc/passwd ./passwd

Advanced Features:

# Basic inspection
guestctl inspect vm.qcow2

# JSON output for automation
guestctl inspect vm.qcow2 --output json | jq '.os.hostname'

# Security audit profile
guestctl inspect vm.qcow2 --profile security

# Migration planning profile
guestctl inspect vm.qcow2 --profile migration --output json

# Performance tuning profile
guestctl inspect vm.qcow2 --profile performance

# Compare two VMs
guestctl diff vm-before.qcow2 vm-after.qcow2

# Compare multiple VMs against baseline
guestctl compare baseline.qcow2 vm1.qcow2 vm2.qcow2 vm3.qcow2

# Export HTML report
guestctl inspect vm.qcow2 --export html --export-output report.html

# Export Markdown inventory
guestctl inspect vm.qcow2 --export markdown --export-output inventory.md

# Use caching for faster repeated inspections
guestctl inspect vm.qcow2 --cache  # First run: ~30s, subsequent: <0.5s

# Batch inspect multiple VMs in parallel
guestctl inspect-batch *.qcow2 --parallel 4 --cache

# Cache management
guestctl cache-stats
guestctl cache-clear

Available Commands:

  • inspect - Comprehensive VM inspection with profiles
  • diff - Compare two disk images
  • compare - Compare multiple VMs against baseline
  • inspect-batch - Parallel batch inspection
  • list - List files in disk image
  • extract - Extract files from disk image
  • execute - Execute commands in guest
  • backup - Create tar backup from guest
  • convert - Convert disk image formats
  • create - Create new disk image
  • check - Filesystem check
  • usage - Disk usage statistics
  • detect - Detect disk image format
  • info - Disk image information
  • cache-stats - View cache statistics
  • cache-clear - Clear inspection cache
  • version - Show version information

Full Documentation: docs/CLI_GUIDE.md


Basic Usage

Library (GuestFS API)

use guestctl::guestfs::Guestfs;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create handle
    let mut g = Guestfs::new()?;

    // Add disk image (read-only)
    g.add_drive_ro("/path/to/disk.qcow2")?;

    // Launch (analyzes disk)
    g.launch()?;

    // Inspect OS
    let roots = g.inspect_os()?;
    for root in roots {
        println!("Found OS root: {}", root);
        println!("  Type: {}", g.inspect_get_type(&root)?);
        println!("  Distro: {}", g.inspect_get_distro(&root)?);
        println!("  Version: {}.{}",
            g.inspect_get_major_version(&root)?,
            g.inspect_get_minor_version(&root)?);
        println!("  Hostname: {}", g.inspect_get_hostname(&root)?);
    }

    // List partitions
    let partitions = g.list_partitions()?;
    for part in partitions {
        println!("Partition: {}", part);
        println!("  Filesystem: {}", g.vfs_type(&part)?);
        println!("  Label: {}", g.vfs_label(&part).unwrap_or_default());
    }

    // Cleanup
    g.shutdown()?;

    Ok(())
}

Ergonomic Rust API (Recommended)

GuestCtl provides modern Rust patterns for better type safety and ergonomics:

use guestctl::guestfs::{Guestfs, FilesystemType, OsType, Distro};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Builder pattern for configuration
    let mut g = Guestfs::builder()
        .add_drive_ro("/path/to/disk.qcow2")
        .verbose(true)
        .build_and_launch()?;

    // Type-safe filesystem creation
    g.mkfs("/dev/sda1")
        .ext4()              // Type-safe enum, not string!
        .label("rootfs")
        .blocksize(4096)
        .create()?;

    // Type-safe OS detection with pattern matching
    for root in g.inspect_os()? {
        let os_type = OsType::from_str(&g.inspect_get_type(&root)?);

        match os_type {
            OsType::Linux => {
                let distro = Distro::from_str(&g.inspect_get_distro(&root)?);

                // Smart methods on enums
                if let Some(pkg_mgr) = distro.package_manager() {
                    println!("Package manager: {}", pkg_mgr);  // "deb", "rpm", "pacman", etc.
                }

                // Exhaustive pattern matching
                match distro {
                    Distro::Ubuntu | Distro::Debian => println!("Debian-based"),
                    Distro::Fedora | Distro::Rhel => println!("RPM-based"),
                    Distro::Archlinux => println!("Arch Linux"),
                    _ => println!("Other Linux"),
                }
            }
            OsType::Windows => println!("Windows detected"),
            _ => println!("Other OS"),
        }
    }

    g.shutdown()?;
    Ok(())
}

See docs/ERGONOMIC_API.md and docs/MIGRATION_GUIDE.md for details.

Python Bindings

GuestCtl provides native Python bindings via PyO3 for seamless integration with Python workflows.

Installation:

# Quick build (recommended)
./build_python.sh

# Or manual build
python3 -m venv .venv
source .venv/bin/activate
pip install maturin
PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 maturin develop --features python-bindings

# Verify installation
python3 -c "import guestctl; print(guestctl.__version__)"

Basic Example:

from guestctl import Guestfs

# Create handle and configure
g = Guestfs()
g.add_drive_ro("/path/to/disk.qcow2")
g.launch()

# Inspect operating system
roots = g.inspect_os()
for root in roots:
    print(f"OS Type: {g.inspect_get_type(root)}")
    print(f"Distro: {g.inspect_get_distro(root)}")
    print(f"Version: {g.inspect_get_major_version(root)}.{g.inspect_get_minor_version(root)}")
    print(f"Hostname: {g.inspect_get_hostname(root)}")

# Mount and read files
mountpoints = g.inspect_get_mountpoints(root)
for mount_path, device in sorted(mountpoints, key=lambda x: len(x[0])):
    g.mount_ro(device, mount_path)

if g.is_file("/etc/hostname"):
    content = g.read_file("/etc/hostname")
    print(f"Hostname from file: {content.decode('utf-8').strip()}")

# List installed packages
apps = g.inspect_list_applications(root)
print(f"Total packages: {len(apps)}")

# Cleanup
g.umount_all()
g.shutdown()

More Examples:

Full Documentation:

Python API Coverage:

  • 58 Guestfs methods covering OS inspection, file operations, device management, LVM, archives, and more
  • 3 DiskConverter methods for format conversion and detection
  • Comprehensive error handling with Python exceptions
  • Full type conversion between Rust and Python types

Project Structure

guestctl/
โ”œโ”€โ”€ Cargo.toml
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ ARCHITECTURE.md                    # Architecture documentation
โ”œโ”€โ”€ GUESTFS_IMPLEMENTATION_STATUS.md   # Implementation status (578 functions)
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ lib.rs                         # Library entry point
โ”‚   โ”œโ”€โ”€ core/                          # Core utilities
โ”‚   โ”‚   โ”œโ”€โ”€ error.rs                   # Error types
โ”‚   โ”‚   โ”œโ”€โ”€ retry.rs                   # Retry logic
โ”‚   โ”‚   โ””โ”€โ”€ types.rs                   # Common types
โ”‚   โ”œโ”€โ”€ disk/                          # Disk operations (Pure Rust)
โ”‚   โ”‚   โ”œโ”€โ”€ reader.rs                  # Disk image reader (magic byte detection)
โ”‚   โ”‚   โ”œโ”€โ”€ partition.rs               # MBR/GPT parser
โ”‚   โ”‚   โ””โ”€โ”€ filesystem.rs              # Filesystem detection (ext4, NTFS, etc.)
โ”‚   โ”œโ”€โ”€ guestfs/                       # GuestFS-compatible API (486 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ handle.rs                  # Main handle (new/launch/shutdown)
โ”‚   โ”‚   โ”œโ”€โ”€ inspect.rs                 # OS inspection (12 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ device.rs                  # Device operations (9 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ partition.rs               # Partition operations (6 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ mount.rs                   # Mount operations (11 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ file_ops.rs                # File operations (35+ functions)
โ”‚   โ”‚   โ”œโ”€โ”€ lvm.rs                     # LVM operations (9 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ command.rs                 # Command execution (4 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ archive.rs                 # Archive operations (7 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ luks.rs                    # LUKS encryption (6 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ checksum.rs                # Checksums and file content (9 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ filesystem.rs              # Filesystem operations (8 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ utils.rs                   # File utilities (11 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ network.rs                 # Network configuration (7 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ package.rs                 # Package management (5 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ system.rs                  # System configuration (13 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ security.rs                # Security operations (10 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ boot.rs                    # Boot configuration (10 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ disk_ops.rs                # Advanced disk operations (12 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ service.rs                 # Service management (8 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ ssh.rs                     # SSH operations (10 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ part_mgmt.rs               # Partition management (9 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ augeas.rs                  # Configuration editing (11 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ resize.rs                  # Filesystem resize (7 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ windows.rs                 # Windows operations (12 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ btrfs.rs                   # Btrfs operations (12 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ metadata.rs                # File metadata (17 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ misc.rs                    # Miscellaneous utilities (22 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ xfs.rs                     # XFS operations (4 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ iso.rs                     # ISO operations (4 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ transfer.rs                # Advanced file transfer (8 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ disk_mgmt.rs               # Disk image management (10 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ internal.rs                # Internal operations (16 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ ntfs.rs                    # NTFS operations (5 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ ext_ops.rs                 # Extended filesystem ops (11 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ glob_ops.rs                # Glob operations (7 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ node_ops.rs                # Node operations (10 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ md_ops.rs                  # MD/RAID operations (5 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ selinux_ops.rs             # SELinux extended (4 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ cap_ops.rs                 # Capabilities (4 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ acl_ops.rs                 # ACL operations (8 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ hivex_ops.rs               # Hivex operations (16 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ rsync_ops.rs               # Rsync operations (2 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ syslinux_ops.rs            # Syslinux operations (2 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ journal_ops.rs             # Journal operations (11 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ inotify_ops.rs             # Inotify operations (6 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ squashfs_ops.rs            # SquashFS operations (3 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ yara_ops.rs                # YARA operations (4 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ tsk_ops.rs                 # TSK operations (4 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ zfs_ops.rs                 # ZFS operations (10 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ ldm_ops.rs                 # LDM operations (8 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ mpath_ops.rs               # Multipath operations (5 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ grub_ops.rs                # GRUB operations (7 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ f2fs_ops.rs                # F2FS operations (4 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ bcache_ops.rs              # Bcache operations (5 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ dosfs_ops.rs               # DOSFS operations (5 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ cpio_ops.rs                # CPIO operations (3 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ nilfs_ops.rs               # NILFS operations (4 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ ufs_ops.rs                 # UFS operations (3 functions)
โ”‚   โ”‚   โ”œโ”€โ”€ inspect_enhanced.rs        # Enhanced inspection with profiles
โ”‚   โ”‚   โ””โ”€โ”€ windows_registry.rs        # Windows registry parsing
โ”‚   โ”œโ”€โ”€ python.rs                      # Python bindings (PyO3, 100+ methods)
โ”‚   โ”œโ”€โ”€ converters/                    # Disk format converters
โ”‚   โ”‚   โ””โ”€โ”€ disk_converter.rs          # qemu-img wrapper
โ”‚   โ””โ”€โ”€ cli/                           # CLI implementation
โ”‚       โ”œโ”€โ”€ commands.rs                # CLI commands
โ”‚       โ”œโ”€โ”€ profiles/                  # Inspection profiles
โ”‚       โ”œโ”€โ”€ exporters/                 # HTML/Markdown exporters
โ”‚       โ”œโ”€โ”€ formatters.rs              # Output formatters
โ”‚       โ”œโ”€โ”€ templates/                 # Askama templates
โ”‚       โ”œโ”€โ”€ diff.rs                    # VM comparison
โ”‚       โ””โ”€โ”€ cache.rs                   # Result caching
โ”œโ”€โ”€ examples/                          # Example programs
โ”‚   โ”œโ”€โ”€ rust/
โ”‚   โ”‚   โ”œโ”€โ”€ inspect_disk.rs
โ”‚   โ”‚   โ””โ”€โ”€ list_partitions.rs
โ”‚   โ””โ”€โ”€ python/                        # Python examples
โ”‚       โ”œโ”€โ”€ test_bindings.py           # Comprehensive test suite
โ”‚       โ”œโ”€โ”€ comprehensive_example.py   # Full-featured example
โ”‚       โ”œโ”€โ”€ archive_example.py         # Archive operations
โ”‚       โ”œโ”€โ”€ extract_files.py           # File extraction
โ”‚       โ””โ”€โ”€ README.md                  # Python examples guide
โ”œโ”€โ”€ docs/                              # Documentation (organized)
โ”‚   โ”œโ”€โ”€ README.md                      # Documentation index
โ”‚   โ”œโ”€โ”€ guides/                        # User guides
โ”‚   โ”œโ”€โ”€ api/                           # API documentation
โ”‚   โ”œโ”€โ”€ architecture/                  # Architecture docs
โ”‚   โ”œโ”€โ”€ development/                   # Contributor docs
โ”‚   โ”œโ”€โ”€ testing/                       # Testing docs
โ”‚   โ”œโ”€โ”€ status/                        # Implementation status
โ”‚   โ””โ”€โ”€ archive/                       # Historical docs
โ”œโ”€โ”€ pyproject.toml                     # Python package config
โ”œโ”€โ”€ build_python.sh                    # Python build script
โ””โ”€โ”€ tests/                             # Integration tests

Documentation

๐Ÿ“š Complete documentation is organized in docs/

Quick Links:

See docs/README.md for complete documentation index.

Architecture

See docs/architecture/ARCHITECTURE.md for detailed architecture documentation.

Core Modules

guestfs - GuestFS-Compatible API (115 functions)

  • handle.rs - Main GuestFS handle (lifecycle management)
  • inspect.rs - OS inspection (12 functions, fully working)
  • device.rs - Device operations (9 functions, fully working)
  • partition.rs - Partition operations (6 functions, fully working)
  • mount.rs - Mount operations (11 functions, API-defined, needs NBD)
  • file_ops.rs - File operations (35+ functions, API-defined, needs FS parser or NBD)
  • lvm.rs - LVM operations (5 functions, API-defined)
  • command.rs - Command execution (4 functions, API-defined)
  • archive.rs - Archive operations (8 functions, API-defined)

disk - Pure Rust Disk Operations

  • reader.rs - Disk image reader with format detection via magic bytes
  • partition.rs - MBR and GPT partition table parser
  • filesystem.rs - Filesystem detection (ext4, NTFS, XFS, Btrfs, FAT32)

core - Core Utilities

  • error.rs - Error types using thiserror
  • retry.rs - Exponential backoff retry logic
  • types.rs - Common types (DiskFormat, GuestType, etc.)

Implementation Status

Category Functions Status
Total APIs 115 35 working, 80 API-defined
Lifecycle 8 โœ… Fully working
Inspection 12 โœ… Fully working
Device Ops 9 โœ… Fully working
Partition Ops 6 โœ… Fully working
Mount Ops 11 โš ๏ธ API-only (needs NBD)
File Ops 35+ โš ๏ธ API-only (needs FS parser)
LVM 5 โš ๏ธ API-only
Commands 4 โš ๏ธ API-only
Archives 8 โš ๏ธ API-only

See GUESTFS_IMPLEMENTATION_STATUS.md for complete function implementation status.

Design Principles

  1. Pure Rust - No C dependencies (except qemu-img tool)
  2. Memory Safety - Leveraging Rust's ownership system
  3. Zero-cost Abstractions - High-level APIs with no runtime overhead
  4. Clean API Design - Intuitive function signatures and error handling
  5. Modularity - Clean separation of concerns
  6. Testability - Comprehensive test coverage (33 tests passing)

Examples

See the examples/ directory for complete examples:

  • convert_disk.rs - Convert disk image formats
  • detect_format.rs - Detect and inspect disk images
  • retry_example.rs - Using retry logic with exponential backoff

Run examples with:

cargo run --example convert_disk
cargo run --example detect_format

API Coverage

Statistics

Metric Count Percentage
LibGuestFS functions 733 100%
GuestCtl APIs defined 364 49.7%
Fully working 349 47.6%
API-only (needs impl) 15 2.0%

Comparison with LibGuestFS

See LIBGUESTFS_COMPARISON.md for:

  • Complete function-by-function comparison
  • What's implemented vs what's missing
  • Implementation phases and timeline
  • Recommendations for full compatibility

Implementation Strategy

Current: Pure Rust implementation without C dependencies

Working:

  • โœ… Disk format detection (magic bytes)
  • โœ… Partition table parsing (MBR, GPT)
  • โœ… Filesystem detection (superblock analysis)
  • โœ… OS inspection (35 functions)

Planned (Phase 1):

  • ๐Ÿ”„ NBD mounting (qemu-nbd integration)
  • ๐Ÿ”„ File I/O via NBD mount
  • ๐Ÿ”„ Command execution via chroot
  • ๐Ÿ”„ Archive operations (tar, tgz)

Integration with hyper2kvm

guestctl is designed to work seamlessly with hyper2kvm:

use guestctl::guestfs::Guestfs;

// Simple, intuitive API
let mut g = Guestfs::new()?;
g.add_drive_ro("/path/to/disk.qcow2")?;
g.launch()?;

// Inspect VM
let roots = g.inspect_os()?;
for root in &roots {
    println!("OS: {}", g.inspect_get_distro(root)?);
    println!("Version: {}.{}",
        g.inspect_get_major_version(root)?,
        g.inspect_get_minor_version(root)?);
}

Benefits for hyper2kvm:

  • โœ… No root required for read-only operations
  • โœ… Faster - Pure Rust implementation
  • โœ… Simpler - No C dependencies
  • โœ… Safer - Rust memory safety
  • โœ… Comprehensive - 578 functions, 97.4% implementation coverage

Dependencies

System Dependencies

  • qemu-img - Disk image manipulation (QEMU tools) - Optional, for format conversion
# Fedora/RHEL
sudo dnf install qemu-img

# Ubuntu/Debian
sudo apt install qemu-utils

# Arch Linux
sudo pacman -S qemu

Note: guestctl is a pure Rust implementation with no C library dependencies!

Rust Dependencies

See Cargo.toml for complete list:

  • thiserror - Custom error types
  • byteorder - Binary parsing
  • memmap2 - Memory-mapped I/O
  • regex - Pattern matching
  • pyo3 (optional) - Python bindings
  • serde / serde_json - Serialization

Development

Building

# Debug build
cargo build

# Release build (optimized)
cargo build --release

# Run tests
cargo test

# Run with logging
RUST_LOG=debug cargo run -- convert --source test.vmdk --output test.qcow2

Running Tests

Rust Tests:

# Unit tests
cargo test

# Integration tests
cargo test --test '*'

# With coverage
cargo tarpaulin --out Html

Python Tests:

# Install pytest (if not already installed)
pip install pytest

# Run Python bindings tests
pytest tests/test_python_bindings.py -v

# Run with test disk image
export GUESTKIT_TEST_IMAGE=/path/to/test.qcow2
pytest tests/test_python_bindings.py -v

Comprehensive Testing:

# Run all tests (Rust + Python)
cargo test --all-features
pytest tests/test_python_bindings.py -v

# Example Python integration test
cd examples/python
sudo python3 test_bindings.py /path/to/disk.img

Note on Permissions: Some tests require root access for mounting disk images.

See docs/testing/TESTING.md for complete testing documentation.

Code Quality

# Format code
cargo fmt

# Lint
cargo clippy

# Check documentation
cargo doc --no-deps --open

Cargo Features

guestctl uses Cargo features for optional functionality:

  • disk-ops (default) - Disk operation utilities
  • guest-inspect (default) - Guest OS inspection
  • python-bindings (optional) - PyO3 Python bindings
[dependencies]
guestctl = { version = "0.1", features = ["guest-inspect"] }

# With Python bindings
guestctl = { version = "0.1", features = ["python-bindings"] }

Build with Python bindings:

cargo build --features python-bindings

Roadmap

See GUESTFS_IMPLEMENTATION_STATUS.md for detailed implementation status.

Phase 0: Foundation (โœ… COMPLETE)

  • Pure Rust architecture (no C dependencies)
  • Disk format detection (QCOW2, VMDK, RAW)
  • Partition table parsing (MBR, GPT)
  • Filesystem detection (ext4, NTFS, XFS, Btrfs, FAT32)
  • Comprehensive API structure (578 functions, 97.4% implemented)
  • OS inspection (30+ functions fully working)
  • Device operations (20+ functions fully working)
  • Partition operations (15+ functions fully working)
  • Python bindings foundation (PyO3)

Phase 1: Essential Operations (๐Ÿ”„ PLANNED - 3 weeks)

Implement for 90% hyper2kvm compatibility:

  • NBD mounting - qemu-nbd integration for filesystem access
  • Command execution (4 functions) - command, sh, sh_lines
  • Archive operations (8 functions) - tar_in, tar_out, tgz_in, tgz_out
  • File operations (10 functions) - cp, mv, download, upload, grep, find
  • LUKS operations (6 functions) - luks_open, luks_close, luks_format
  • LVM activation (4 functions) - vg_activate_all, lvcreate, lvremove

Total: 30+ critical functions

Phase 2: Filesystem Operations (๐Ÿ“… FUTURE - 2 weeks)

  • Filesystem creation (mkfs, mke2fs, mkfs_btrfs)
  • Filesystem repair (fsck, e2fsck, ntfsfix, xfs_repair)
  • Extended attributes (getxattr, setxattr)
  • Resize operations (resize2fs, ntfsresize)

Phase 3: Advanced Features (๐Ÿ“… FUTURE - 4 weeks)

  • Augeas (config file editing)
  • Windows registry (Hivex operations)
  • Partition management (add/delete/resize)
  • SELinux relabeling

Phase 4: Specialized (๐Ÿ“… OPTIONAL)

  • Btrfs advanced features (subvolumes, snapshots)
  • ZFS support
  • YARA malware scanning
  • File recovery (TSK)

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Write tests for new functionality
  4. Ensure all tests pass
  5. Submit a pull request

See CONTRIBUTING.md for detailed guidelines.

License

This project is licensed under the GNU Lesser General Public License v3.0 (LGPL-3.0).

See LICENSE for full license text.

Acknowledgments

  • hyper2kvm - Primary use case and integration target
  • QEMU - Disk format conversion tools
  • Rust Community - For excellent crates and tooling

Support

Related Projects

  • hyper2kvm - Production-grade VM migration toolkit
  • hypersdk - High-performance hypervisor SDK

Made with โค๏ธ for reliable VM operations

Commit count: 0

cargo fmt