virt-what module #11

Closed
opened 2025-12-21 11:42:17 +00:00 by thabeta · 0 comments
Owner

Module Overview

The virt-what module provides virtualization environment detection capabilities for , enabling the system to identify and characterize the virtualization layer, hypervisor type, and container technologies in use. This information is crucial for optimizing performance, selecting appropriate drivers, and configuring workloads correctly based on the underlying virtualization stack.

The module combines multiple detection techniques including CPUID inspection, hypervisor signatures, filesystem analysis, and system file examination to accurately identify virtualization environments. It can distinguish between bare metal, various hypervisors, container technologies, and cloud provider environments, providing with the context needed for optimal operation.

Functionality

  • Hypervisor type detection: Identify specific hypervisors including KVM, Xen, VMware ESXi, Microsoft Hyper-V, VirtualBox, and QEMU through multiple detection methods
  • Container environment identification: Detect container runtimes and technologies including Docker, Podman, LXC, systemd-nspawn, and Kubernetes environments
  • Virtual machine recognition: Determine if running inside a virtual machine and extract VM metadata and capabilities
  • Hardware virtualization assessment: Check for hardware virtualization support including Intel VT-x, AMD-V, and nested virtualization capabilities
  • Virtualization feature detection: Identify available virtualization features like IOMMU, CPU virtualization flags, and hypervisor-specific capabilities

Module API

Hypervisor Detection

  • VirtDetector::new() -> Self - Create a new virtualization detector
  • detect_hypervisor() -> Result<Option<HypervisorType>, VirtError> - Detect the hypervisor type
  • is_running_in_vm() -> Result<bool, VirtError> - Check if running in a virtual machine
  • get_hypervisor_info() -> Result<HypervisorInfo, VirtError> - Get detailed hypervisor information
  • detect_kvm() -> Result<bool, VirtError> - Detect KVM hypervisor presence

Container Detection

  • detect_container() -> Result<Option<ContainerType>, VirtError> - Detect container runtime
  • is_running_in_container() -> Result<bool, VirtError> - Check if running in container
  • get_container_info() -> Result<ContainerInfo, VirtError> - Get container environment details
  • detect_docker() -> Result<bool, VirtError> - Detect Docker container runtime
  • detect_podman() -> Result<bool, VirtError> - Detect Podman container runtime
  • detect_lxc() -> Result<bool, VirtError> - Detect LXC container technology
  • get_container_id() -> Result<Option<String>, VirtError> - Extract container ID

Hardware Virtualization

  • check_hardware_virtualization() -> Result<VirtSupport, VirtError> - Check hardware support
  • check_nested_virtualization() -> Result<bool, VirtError> - Check nested virtualization
  • get_virt_features() -> Result<Vec<VirtFeature>, VirtError> - Get virtualization features
  • check_iommu_support() -> Result<bool, VirtError> - Check IOMMU availability
  • check_vt_x() -> Result<bool, VirtError> - Check Intel VT-x support
  • check_amd_v() -> Result<bool, VirtError> - Check AMD-V support
  • get_cpu_flags() -> Result<Vec<String>, VirtError> - Get CPU virtualization flags
## Module Overview The virt-what module provides virtualization environment detection capabilities for , enabling the system to identify and characterize the virtualization layer, hypervisor type, and container technologies in use. This information is crucial for optimizing performance, selecting appropriate drivers, and configuring workloads correctly based on the underlying virtualization stack. The module combines multiple detection techniques including CPUID inspection, hypervisor signatures, filesystem analysis, and system file examination to accurately identify virtualization environments. It can distinguish between bare metal, various hypervisors, container technologies, and cloud provider environments, providing with the context needed for optimal operation. ## Functionality - **Hypervisor type detection**: Identify specific hypervisors including KVM, Xen, VMware ESXi, Microsoft Hyper-V, VirtualBox, and QEMU through multiple detection methods - **Container environment identification**: Detect container runtimes and technologies including Docker, Podman, LXC, systemd-nspawn, and Kubernetes environments - **Virtual machine recognition**: Determine if running inside a virtual machine and extract VM metadata and capabilities - **Hardware virtualization assessment**: Check for hardware virtualization support including Intel VT-x, AMD-V, and nested virtualization capabilities - **Virtualization feature detection**: Identify available virtualization features like IOMMU, CPU virtualization flags, and hypervisor-specific capabilities ## Module API ### Hypervisor Detection - `VirtDetector::new() -> Self` - Create a new virtualization detector - `detect_hypervisor() -> Result<Option<HypervisorType>, VirtError>` - Detect the hypervisor type - `is_running_in_vm() -> Result<bool, VirtError>` - Check if running in a virtual machine - `get_hypervisor_info() -> Result<HypervisorInfo, VirtError>` - Get detailed hypervisor information - `detect_kvm() -> Result<bool, VirtError>` - Detect KVM hypervisor presence ### Container Detection - `detect_container() -> Result<Option<ContainerType>, VirtError>` - Detect container runtime - `is_running_in_container() -> Result<bool, VirtError>` - Check if running in container - `get_container_info() -> Result<ContainerInfo, VirtError>` - Get container environment details - `detect_docker() -> Result<bool, VirtError>` - Detect Docker container runtime - `detect_podman() -> Result<bool, VirtError>` - Detect Podman container runtime - `detect_lxc() -> Result<bool, VirtError>` - Detect LXC container technology - `get_container_id() -> Result<Option<String>, VirtError>` - Extract container ID ### Hardware Virtualization - `check_hardware_virtualization() -> Result<VirtSupport, VirtError>` - Check hardware support - `check_nested_virtualization() -> Result<bool, VirtError>` - Check nested virtualization - `get_virt_features() -> Result<Vec<VirtFeature>, VirtError>` - Get virtualization features - `check_iommu_support() -> Result<bool, VirtError>` - Check IOMMU availability - `check_vt_x() -> Result<bool, VirtError>` - Check Intel VT-x support - `check_amd_v() -> Result<bool, VirtError>` - Check AMD-V support - `get_cpu_flags() -> Result<Vec<String>, VirtError>` - Get CPU virtualization flags
despiegk added this to the later milestone 2025-12-21 20:39:59 +00:00
thabeta self-assigned this 2025-12-31 15:44:15 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_lib#11
No description provided.