Control QEMU like magic!

Overview

Qemantra

GitHub issues GitHub GitHub last commit GitHub pull requests GitHub Stars

Qemantra is a command-line tool for creating and managing QEMU Virtual Machines.

QEMantra banner

QEMU is better and sometimes faster than VirtualBox , but does not have any command-line central managing solution. This tool aims to manage and run your virtual machines using QEMU.

img

Features

  • Create , list and run virtual machines.
  • Create configurations to run on demand.
  • Use features of QEMU like KVM , multiple architecture support etc.
  • Features like UEFI available in a simple flag!

Examples

Running a Virtual Machine

img

Run a machine with boot menu

img

Create a Machine

img

Create a Machine with Disk

img

Create a Image

img

Usage

Call qemantra in your terminal.

$ qemantra

Check

Run qemantra check for checking for dependencies and configuration.

Highly recommended before using qemantra!.

Create Machine

The qemantra create-machine subcommand provides functionality to create machines.

Option Description
--name Name of the machine
--no-disk Don't create a disk
--disk-name Name of the disk(Not applicable when using no-disk)
--disk-size Size of the disk(Not applicable when using disk-size)
--mem-size RAM to provide to the VM
--cpu-cores Cores to provide to the RAM.

Running a machine

The qemantra run subcommand provides functionality to run a virtual machine.

Option Description
--name Name of the machine
--iso Path to the ISO(Relative path works)
--disk Disk name to add to boot order(Should be in default qemantra directory)
--externaldisk Path to a external disk to add to boot order(Any disk , not managed by qemantra)
--boot Boot options while starting the VM
--uefi Enable UEFI support(Requires OVMF to be installed)
--no-kvm Disables KVM(Enabled by default)

If qemantra run has no arguments , it will execute the last machine which was booted.

The boot options can be either menu which provides a menu to choose between boot devices. Or you can use iso option to directly boot the given iso.

List machines

Use qemantra list to list currently configured machines. Use --verbose option to list more information about the VM(Mem , Cpu etc).

You can list the images managed by qemantra by using --images option to qemantra list.

Installation ?

Currently you can only build from source.You will need Golang installed on your system. As a prerequisite you also need QEMU installed.

Install using go install by running go install github.com/pspiagicw/[email protected].

Roadmap ?

These are the major features planned to be added to qemantra. Other features are welcome to be discussed.

  • Running virtual machines
  • Creating virtual machines.
  • Can use memory and cpu cores.
  • Can use iso while running
  • Can use different disks while running
  • Can use external disk while running
  • Can use boot options
  • Make a auto install script.
  • Add to major repositories(Debian , AUR , Gentoo)
  • Support UEFI using OVMF
  • Configuration changes using ENVIRONMENT VARIABLES
  • Multiple architecture support
  • Suppport easy clipboard sharing
  • Support easy shared folder support
  • List currently running machines.
  • Control logging functionality(-v / -vv and -vvv)

Motivation ?

Virtualbox is good, but it has a QT interface and it's command line inteface is hectic at best. QEMU has no official (or good) frontend , the command line interface is mature , but has no central managing solution.

Qemantra aims to become a simple and convinient way to manage Virtual Machines. It is designed for the casual Virtualizer.

Contributing

Anybody is welcome to contribute!

Qemantra is written in Golang , so Golang developers can contribute in the technical aspect. If you want to contribute non-technically , then too you are welcome! There are lot's of work in documentation and other aspects! For bugs and feature requests , open a issue.

Comments
  • Start the indices for `qemantra list` from 1

    Start the indices for `qemantra list` from 1

    Currently the indices start from 0 , which is a little bad. If started from 1 , it would make it a little polished. Modify ListMachines function in pkg/runner/find.go. Very easy to do

    good first issue 
    opened by pspiagicw 1
  • Simple `rename` command

    Simple `rename` command

    This will allow us to rename the virtual machine to something else. Should check for

    • If given machine exists
    • If the renamed machine should also exist.
    opened by pspiagicw 1
  • Now supports --externaldisk support.

    Now supports --externaldisk support.

    Adds -e/--external-disk opiton to run subcommand. It now allows for adding a seperate disk (Only a single disk). This allows a virtual machine to use a different VM's disk or use one on-demand

    opened by pspiagicw 0
  • [Bug] `rename` command does not rename file , just the json value

    [Bug] `rename` command does not rename file , just the json value

    Currently the rename commnd does change the name of the machine , but it does not change the file name. This means this sequence of events can be deadly

    • You create a machine with name "Machine 1" , it names the file machine_1.json
    • You rename that machine to "Machine 2" , now the file machine_1 has name Machine 2. That means now "Machine 1" does not exist but "Machine 2" exists.
    • You create a machine with name "Machine 1".
    • You list number of machines , and it only lists "Machine 1" , "Machine 2" was overwritten!
    bug 
    opened by pspiagicw 0
  • [Feature] Add command to delete machines

    [Feature] Add command to delete machines

    Currently there is no way of deleting Virtual Machines.

    The command would be called delete and get only one options --name. It takes the name of the machine and delete the machine.

    bug 
    opened by pspiagicw 0
Releases(v0.0.1)
Owner
pspiagicw
pspiagicw
Generate random, pronounceable, sometimes even memorable, "superhero like" codenames - just like Docker does with container names.

Codename an RFC1178 implementation to generate pronounceable, sometimes even memorable, "superheroe like" codenames, consisting of a random combinatio

Luca Sepe 84 Dec 11, 2022
Control external Fan to cool down your raspi cluster

Fan control for Raspberry Pi This is a small project that I build in order to cool down my raspi home cluster The case I use have some external fans t

Carlos Tadeu Panato Junior 13 Dec 11, 2021
Configuration agent for BFE control plane

conf-agent conf-agent 说明 conf-agent 从 api-server 获取最新的配置并触发bfe热加载。 获取方式 获取 conf-agent 工具。获取 conf-agent 有多种方式: 在 releases 页面下载对应平台的可执行文件 通过 go get 工具本地

null 15 Oct 28, 2022
Joy2Mouse is a program that allows you to control your computer mouse with a joystick.

Joy2Mouse Joy2Mouse is a program that allows you to control your computer mouse with a joystick. Features Control your mouse with a joystick Mouse dow

Abby 4 Dec 26, 2021
Sa818 - Sa818 UHF/VHF walkie talkie module control library for golang

SA818 golang library for serial control This library written in Go programming l

Suvir Kumar 0 Jan 23, 2022
Go library for hardware I/O control, in the programming style of Arduino

hwio Introduction hwio is a Go library for interfacing with hardware I/O, particularly on SoC-based boards such as BeagleBone Black, Raspberry Pi and

Mark Stephens 324 Dec 9, 2022
Get user-like access to VirtualBox VMs from Go code.

#Vboxgo Get user-like access to VirtualBox VMs from Go code. This library wraps some define-tainted VirtualBox SDK functions, making it possible to ge

Vladislav Supalov 27 Oct 25, 2021
Assembly syntax that makes you feel like you're writing code in a high-level language.

shasm Assembly syntax that makes you feel like you're writing code in a high-level language. Shasm is not an Assembler. Shasm simply compiles Shasm sy

Shoyaaa 14 Jun 5, 2021
go-playground-converter is formatter error response inspiration like express-validator in nodejs build on top go-playground-validator.

Go Playground Converter go-playground-converter is formatter error response inspiration like express-validator in nodejs build on top in go-playground

Restu Wahyu Saputra 10 Dec 9, 2022
Names things like they're action movies from the mid 90s.

thing-namer Names things like they're action movies from the mid 90s. Installing You know the drill. go get github.com/Unquabain/thing-namer Building

Ben C. Forsberg 0 Nov 6, 2021
Like comm(1), but for any number of files

ncomm is like comm, but for any number of files, not just two files.

Ulysse Carion 1 Sep 20, 2022
Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.

Advent of Code 2021 Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved

Kemal Ogun Isik 0 Dec 2, 2021
Zach Howell 0 Jan 4, 2022
Generate possible AD usernames from names like John Doe > J.Doe or JDoe

GOtusernames Generate possible AD usernames from names like John Doe > J.Doe or JDoe Example user file: ~/programming/golang/src/gotyourusername ❯ cat

null 6 Dec 13, 2022
A toy project like cowsay or ponysay

xkcdsay is a simple application just for fun. Once again, Just for fun. I like c

siddontang 10 Dec 23, 2022
Eightbit - A converter to create shitty 8-bit like images

eightbit A converter to create shitty 8-bit like images. Usage To install: go in

Jeff Palm 0 Jan 8, 2022
Contains a function to get an ip that can be used like localhost.

Get the host IP Contains a function to get an ip that can be used like localhost. Motivation If you have a rest api running in a machine executor on C

Bruno 1 Jan 20, 2022
Search running process for a given dll/function. Exposes a bufio.Scanner-like interface for walking a process' PEB

Search running process for a given dll/function. Exposes a bufio.Scanner-like interface for walking a process' PEB

Alex Flores 2 Apr 21, 2022
Ghdl - A much more convenient way to download GitHub release binaries on the command line, works on Win & Unix-like systems

ghdl Memorize ghdl as github download ghdl is a fast and simple program (and als

beet 49 Oct 12, 2022