mirror of
https://github.com/linka-cloud/d2vm.git
synced 2024-12-01 20:06:25 +00:00
1 line
52 KiB
JSON
1 line
52 KiB
JSON
{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"d2vm (Docker to Virtual Machine) Build virtual machine image from Docker images The project is heavily inspired by the article and the work done by iximiuz on docker-to-linux . Many thanks to him. Status : alpha Supported Environments: Only building Linux Virtual Machine images is supported. Starting from v0.1.0, d2vm automatically run build and convert commands inside Docker when not running on linux or when running without root privileges. Note: windows should be working, but is totally untested. Supported VM Linux distributions: Working and tested: Ubuntu (18.04+) Luks support is available only on Ubuntu 20.04+ Debian (stretch+) Luks support is available only on Debian buster+ Alpine CentOS (8+) Unsupported: RHEL The program uses the /etc/os-release file to discover the Linux distribution and install the Kernel, if the file is missing, the build cannot succeed. Obviously, Distroless images are not supported. Prerequisites osx Docker QEMU (optional) VirtualBox (optional) Linux Docker util-linux udev parted e2fsprogs mount tar extlinux qemu-utils cryptsetup (when using LUKS) QEMU (optional) VirtualBox (optional) Getting started Install With Docker Note: this will only work if both the source context (and Dockerfile) and the output directory are somewhere inside the directory where you run the command. docker pull linkacloud/d2vm:latest alias d2vm = \"docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock --privileged -v \\$PWD:/d2vm -w /d2vm linkacloud/d2vm:latest\" wich d2vm d2vm: aliased to docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock --privileged -v $PWD :/d2vm -w /d2vm linkacloud/d2vm:latest With Homebrew brew install linka-cloud/tap/d2vm From release Download the latest release for your platform from the release page . Extract the tarball, then move the extracted d2vm binary to somewhere in your $PATH ( /usr/local/bin for most users). VERSION = $( git ls-remote --tags https://github.com/linka-cloud/d2vm | cut -d '/' -f 3 | tail -n 1 ) OS = $( uname -s | tr '[:upper:]' '[:lower:]' ) ARCH = $( [ \" $( uname -m ) \" = \"x86_64\" ] && echo \"amd64\" || echo \"arm64\" ) curl -sL \"https://github.com/linka-cloud/d2vm/releases/download/ ${ VERSION } /d2vm_ ${ VERSION } _ ${ OS } _ ${ ARCH } .tar.gz\" | tar -xvz d2vm sudo mv d2vm /usr/local/bin/ From source Clone the git repository: git clone https://github.com/linka-cloud/d2vm && cd d2vm Install using the make , docker and the Go tool chain: make install The d2vm binary is installed in the $GOBIN directory. which d2vm /go/bin/d2vm Generate shell completion The d2vm program supports shell completion for bash , zsh and fish . It can be enabled by running the following command: source < ( d2vm completion $( basename $SHELL ) ) Or you can install the completion file in the shell completion directory by following the instructions: d2vm completion $( basename $SHELL ) --help Converting an existing Docker Image to VM image: d2vm convert --help Convert Docker image to vm image Usage: d2vm convert [docker image] [flags] Flags: --append-to-cmdline string Extra kernel cmdline arguments to append to the generated one --boot-size uint Size of the boot partition in MB (default 100) --force Override output qcow2 image -h, --help help for convert --keep-cache Keep the images after the build --luks-password string Password to use for the LUKS encrypted root partition. If not set, the root partition will not be encrypted --network-manager string Network manager to use for the image: none, netplan, ifupdown -o, --output string The output image, the extension determine the image format, raw will be used if none. Supported formats: qcow2 qed raw vdi vhd vmdk (default \"disk0.qcow2\") -p, --password string Optional root user password --pull Always pull docker image --push Push the container disk image to the registry --raw Just convert the container to virtual machine image without installing anything more -s, --size string The output image size (default \"10G\") --split-boot Split the boot partition from the root partition -t, --tag string Container disk Docker image tag Global Flags: --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output Create an image based on the ubuntu official image: sudo d2vm convert ubuntu -o ubuntu.qcow2 -p MyP4Ssw0rd Pulling image ubuntu Inspecting image ubuntu No network manager specified, using distribution defaults: netplan Docker image based on Ubuntu 22.04.1 LTS (Jammy Jellyfish) Building kernel enabled image Creating vm image Creating raw image Mounting raw image Creating raw image file system Copying rootfs to raw image Setting up rootfs Installing linux kernel Unmounting raw image Writing MBR Converting to qcow2 You can now run your ubuntu image using the created ubuntu.qcow2 image with qemu : d2vm run qemu ubuntu.qcow2 SeaBIOS (version 1.13.0-1ubuntu1.1) iPXE (http://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+BFF8C920+BFECC920 CA00 Booting from Hard Disk... SYSLINUX 6.04 EDD 20191223 Copyright (C) 1994-2015 H. Peter Anvin et al Now booting the kernel from SYSLINUX... Loading /boot/vmlinuz... ok Loading /boot/initrd.img...ok [ 0.000000] Linux version 5.4.0-109-generic (buildd@ubuntu) (gcc version 9) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz ro root=UUID=b117d206-b8 [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Hygon HygonGenuine [ 0.000000] Centaur CentaurHauls [ 0.000000] zhaoxin Shanghai ... Welcome to Ubuntu 20.04.4 LTS! [ 3.610631] systemd[1]: Set hostname to <localhost>. [ 3.838984] systemd[1]: Created slice system-getty.slice. [ OK ] Created slice system-getty.slice. [ 3.845038] systemd[1]: Created slice system-modprobe.slice. [ OK ] Created slice system-modprobe.slice. [ 3.852054] systemd[1]: Created slice system-serial\\x2dgetty.slice. [ OK ] Created slice system-serial\\x2dgetty.slice. ... Ubuntu 20.04.4 LTS localhost ttyS0 localhost login: Log in using the root user and the password configured at build time. localhost login: root Password: Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-109-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage This system has been minimized by removing packages and content that are not required on a system that users do not log into. To restore this content, you can run the 'unminimize' command. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@localhost:~# Type poweroff to shut down the vm. Building a VM Image from a Dockerfile The example directory contains very minimalistic examples: cd examples ubuntu.Dockerfile : FROM ubuntu RUN apt update && apt install -y openssh-server && \\ echo \"PermitRootLogin yes\" >> /etc/ssh/sshd_config Build the vm image: The build command take most of its flags and arguments from the docker build command. d2vm build --help Build a vm image from Dockerfile Usage: d2vm build [context directory] [flags] Flags: --append-to-cmdline string Extra kernel cmdline arguments to append to the generated one --boot-size uint Size of the boot partition in MB (default 100) --build-arg stringArray Set build-time variables -f, --file string Name of the Dockerfile --force Override output qcow2 image -h, --help help for build --keep-cache Keep the images after the build --luks-password string Password to use for the LUKS encrypted root partition. If not set, the root partition will not be encrypted --network-manager string Network manager to use for the image: none, netplan, ifupdown -o, --output string The output image, the extension determine the image format, raw will be used if none. Supported formats: qcow2 qed raw vdi vhd vmdk (default \"disk0.qcow2\") -p, --password string Optional root user password --push Push the container disk image to the registry --raw Just convert the container to virtual machine image without installing anything more -s, --size string The output image size (default \"10G\") --split-boot Split the boot partition from the root partition -t, --tag string Container disk Docker image tag Global Flags: --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output sudo d2vm build -p MyP4Ssw0rd -f ubuntu.Dockerfile -o ubuntu.qcow2 . Or if you want to create a VirtualBox image: sudo d2vm build -p MyP4Ssw0rd -f ubuntu.Dockerfile -o ubuntu.vdi . KubeVirt Container Disk Images Using the --tag flag with the build and convert commands, you can create a Container Disk Image for KubeVirt . The --push flag will push the image to the registry. Complete example A complete example setting up a ZSH workstation is available in the examples/full directory. Internal Dockerfile templates You can find the Dockerfiles used to install the Kernel in the templates directory. TODO / Questions: Create service from ENTRYPOINT CMD WORKDIR and ENV instructions ? Inject Image ENV variables into .bashrc or other service environment file ? Use image layers to create rootfs instead of container ? Acknowledgments The run commands are adapted from linuxkit .","title":"Getting Started"},{"location":"#d2vm-docker-to-virtual-machine","text":"Build virtual machine image from Docker images The project is heavily inspired by the article and the work done by iximiuz on docker-to-linux . Many thanks to him. Status : alpha","title":"d2vm (Docker to Virtual Machine)"},{"location":"#supported-environments","text":"Only building Linux Virtual Machine images is supported. Starting from v0.1.0, d2vm automatically run build and convert commands inside Docker when not running on linux or when running without root privileges. Note: windows should be working, but is totally untested.","title":"Supported Environments:"},{"location":"#supported-vm-linux-distributions","text":"Working and tested: Ubuntu (18.04+) Luks support is available only on Ubuntu 20.04+ Debian (stretch+) Luks support is available only on Debian buster+ Alpine CentOS (8+) Unsupported: RHEL The program uses the /etc/os-release file to discover the Linux distribution and install the Kernel, if the file is missing, the build cannot succeed. Obviously, Distroless images are not supported.","title":"Supported VM Linux distributions:"},{"location":"#prerequisites","text":"","title":"Prerequisites"},{"location":"#osx","text":"Docker QEMU (optional) VirtualBox (optional)","title":"osx"},{"location":"#linux","text":"Docker util-linux udev parted e2fsprogs mount tar extlinux qemu-utils cryptsetup (when using LUKS) QEMU (optional) VirtualBox (optional)","title":"Linux"},{"location":"#getting-started","text":"","title":"Getting started"},{"location":"#install","text":"","title":"Install"},{"location":"#with-docker","text":"Note: this will only work if both the source context (and Dockerfile) and the output directory are somewhere inside the directory where you run the command. docker pull linkacloud/d2vm:latest alias d2vm = \"docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock --privileged -v \\$PWD:/d2vm -w /d2vm linkacloud/d2vm:latest\" wich d2vm d2vm: aliased to docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock --privileged -v $PWD :/d2vm -w /d2vm linkacloud/d2vm:latest","title":"With Docker"},{"location":"#with-homebrew","text":"brew install linka-cloud/tap/d2vm","title":"With Homebrew"},{"location":"#from-release","text":"Download the latest release for your platform from the release page . Extract the tarball, then move the extracted d2vm binary to somewhere in your $PATH ( /usr/local/bin for most users). VERSION = $( git ls-remote --tags https://github.com/linka-cloud/d2vm | cut -d '/' -f 3 | tail -n 1 ) OS = $( uname -s | tr '[:upper:]' '[:lower:]' ) ARCH = $( [ \" $( uname -m ) \" = \"x86_64\" ] && echo \"amd64\" || echo \"arm64\" ) curl -sL \"https://github.com/linka-cloud/d2vm/releases/download/ ${ VERSION } /d2vm_ ${ VERSION } _ ${ OS } _ ${ ARCH } .tar.gz\" | tar -xvz d2vm sudo mv d2vm /usr/local/bin/","title":"From release"},{"location":"#from-source","text":"Clone the git repository: git clone https://github.com/linka-cloud/d2vm && cd d2vm Install using the make , docker and the Go tool chain: make install The d2vm binary is installed in the $GOBIN directory. which d2vm /go/bin/d2vm","title":"From source"},{"location":"#generate-shell-completion","text":"The d2vm program supports shell completion for bash , zsh and fish . It can be enabled by running the following command: source < ( d2vm completion $( basename $SHELL ) ) Or you can install the completion file in the shell completion directory by following the instructions: d2vm completion $( basename $SHELL ) --help","title":"Generate shell completion"},{"location":"#converting-an-existing-docker-image-to-vm-image","text":"d2vm convert --help Convert Docker image to vm image Usage: d2vm convert [docker image] [flags] Flags: --append-to-cmdline string Extra kernel cmdline arguments to append to the generated one --boot-size uint Size of the boot partition in MB (default 100) --force Override output qcow2 image -h, --help help for convert --keep-cache Keep the images after the build --luks-password string Password to use for the LUKS encrypted root partition. If not set, the root partition will not be encrypted --network-manager string Network manager to use for the image: none, netplan, ifupdown -o, --output string The output image, the extension determine the image format, raw will be used if none. Supported formats: qcow2 qed raw vdi vhd vmdk (default \"disk0.qcow2\") -p, --password string Optional root user password --pull Always pull docker image --push Push the container disk image to the registry --raw Just convert the container to virtual machine image without installing anything more -s, --size string The output image size (default \"10G\") --split-boot Split the boot partition from the root partition -t, --tag string Container disk Docker image tag Global Flags: --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output Create an image based on the ubuntu official image: sudo d2vm convert ubuntu -o ubuntu.qcow2 -p MyP4Ssw0rd Pulling image ubuntu Inspecting image ubuntu No network manager specified, using distribution defaults: netplan Docker image based on Ubuntu 22.04.1 LTS (Jammy Jellyfish) Building kernel enabled image Creating vm image Creating raw image Mounting raw image Creating raw image file system Copying rootfs to raw image Setting up rootfs Installing linux kernel Unmounting raw image Writing MBR Converting to qcow2 You can now run your ubuntu image using the created ubuntu.qcow2 image with qemu : d2vm run qemu ubuntu.qcow2 SeaBIOS (version 1.13.0-1ubuntu1.1) iPXE (http://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+BFF8C920+BFECC920 CA00 Booting from Hard Disk... SYSLINUX 6.04 EDD 20191223 Copyright (C) 1994-2015 H. Peter Anvin et al Now booting the kernel from SYSLINUX... Loading /boot/vmlinuz... ok Loading /boot/initrd.img...ok [ 0.000000] Linux version 5.4.0-109-generic (buildd@ubuntu) (gcc version 9) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz ro root=UUID=b117d206-b8 [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Hygon HygonGenuine [ 0.000000] Centaur CentaurHauls [ 0.000000] zhaoxin Shanghai ... Welcome to Ubuntu 20.04.4 LTS! [ 3.610631] systemd[1]: Set hostname to <localhost>. [ 3.838984] systemd[1]: Created slice system-getty.slice. [ OK ] Created slice system-getty.slice. [ 3.845038] systemd[1]: Created slice system-modprobe.slice. [ OK ] Created slice system-modprobe.slice. [ 3.852054] systemd[1]: Created slice system-serial\\x2dgetty.slice. [ OK ] Created slice system-serial\\x2dgetty.slice. ... Ubuntu 20.04.4 LTS localhost ttyS0 localhost login: Log in using the root user and the password configured at build time. localhost login: root Password: Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-109-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage This system has been minimized by removing packages and content that are not required on a system that users do not log into. To restore this content, you can run the 'unminimize' command. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@localhost:~# Type poweroff to shut down the vm.","title":"Converting an existing Docker Image to VM image:"},{"location":"#building-a-vm-image-from-a-dockerfile","text":"The example directory contains very minimalistic examples: cd examples ubuntu.Dockerfile : FROM ubuntu RUN apt update && apt install -y openssh-server && \\ echo \"PermitRootLogin yes\" >> /etc/ssh/sshd_config Build the vm image: The build command take most of its flags and arguments from the docker build command. d2vm build --help Build a vm image from Dockerfile Usage: d2vm build [context directory] [flags] Flags: --append-to-cmdline string Extra kernel cmdline arguments to append to the generated one --boot-size uint Size of the boot partition in MB (default 100) --build-arg stringArray Set build-time variables -f, --file string Name of the Dockerfile --force Override output qcow2 image -h, --help help for build --keep-cache Keep the images after the build --luks-password string Password to use for the LUKS encrypted root partition. If not set, the root partition will not be encrypted --network-manager string Network manager to use for the image: none, netplan, ifupdown -o, --output string The output image, the extension determine the image format, raw will be used if none. Supported formats: qcow2 qed raw vdi vhd vmdk (default \"disk0.qcow2\") -p, --password string Optional root user password --push Push the container disk image to the registry --raw Just convert the container to virtual machine image without installing anything more -s, --size string The output image size (default \"10G\") --split-boot Split the boot partition from the root partition -t, --tag string Container disk Docker image tag Global Flags: --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output sudo d2vm build -p MyP4Ssw0rd -f ubuntu.Dockerfile -o ubuntu.qcow2 . Or if you want to create a VirtualBox image: sudo d2vm build -p MyP4Ssw0rd -f ubuntu.Dockerfile -o ubuntu.vdi .","title":"Building a VM Image from a Dockerfile"},{"location":"#kubevirt-container-disk-images","text":"Using the --tag flag with the build and convert commands, you can create a Container Disk Image for KubeVirt . The --push flag will push the image to the registry.","title":"KubeVirt Container Disk Images"},{"location":"#complete-example","text":"A complete example setting up a ZSH workstation is available in the examples/full directory.","title":"Complete example"},{"location":"#internal-dockerfile-templates","text":"You can find the Dockerfiles used to install the Kernel in the templates directory.","title":"Internal Dockerfile templates"},{"location":"#todo-questions","text":"Create service from ENTRYPOINT CMD WORKDIR and ENV instructions ? Inject Image ENV variables into .bashrc or other service environment file ? Use image layers to create rootfs instead of container ?","title":"TODO / Questions:"},{"location":"#acknowledgments","text":"The run commands are adapted from linuxkit .","title":"Acknowledgments"},{"location":"full-example/","text":"ZSH Workstation example This example demonstrate the setup of a ZSH workstation with cloud-init support. Dockerfile FROM ubuntu # Install some system packages RUN apt update && DEBIAN_FRONTEND = noninteractive apt install -y --no-install-recommends \\ qemu-guest-agent \\ ca-certificates \\ dnsutils \\ sudo \\ openssh-server # Add a utility script to resize serial terminal COPY resize /usr/local/bin/ # User setup variables ARG USER = d2vm ARG PASSWORD = d2vm ARG SSH_KEY = https://github.com/ ${ USER } .keys # Setup user environment RUN DEBIAN_FRONTEND = noninteractive apt install -y --no-install-recommends \\ bash-completion \\ curl \\ zsh \\ git \\ vim \\ tmux \\ htop \\ lsb-core \\ cloud-init \\ cloud-guest-utils # Create user with sudo privileged and passwordless sudo RUN useradd ${ USER } -m -s /bin/zsh -G sudo && \\ echo \" ${ USER } : ${ PASSWORD } \" | chpasswd && \\ sed -i 's|ALL=(ALL:ALL) ALL|ALL=(ALL:ALL) NOPASSWD: ALL|g' /etc/sudoers # Add ssh public keys ADD ${ SSH_KEY } /home/ ${ USER } /.ssh/authorized_keys # Setup permission on .ssh directory RUN chown -R ${ USER } : ${ USER } /home/ ${ USER } /.ssh # Run everything else as the created user USER ${USER} # Setup zsh environment RUN bash -c \" $( curl -fsSL https://gist.githubusercontent.com/Adphi/f3ce3cc4b2551c437eb667f3a5873a16/raw/be05553da87f6e9d8b0d290af5aa036d07de2e25/env.setup ) \" # Setup tmux environment RUN bash -c \" $( curl -fsSL https://gist.githubusercontent.com/Adphi/765e9382dd5e547633be567e2eb72476/raw/a3fe4b3f35e598dca90e2dd45d30dc1753447a48/tmux-setup ) \" # Setup auto login serial console RUN sudo sed -i \"s|ExecStart=.*|ExecStart=-/sbin/agetty --autologin ${ USER } --keep-baud 115200,38400,9600 \\%I \\$TERM|\" /usr/lib/systemd/system/serial-getty@.service There is no need to configure the network as d2vm will generate a netplan configuration that use DHCP. Build USER = mygithubuser PASSWORD = mysecurepasswordthatIwillneverusebecauseIuseMostlySSHkeys OUTPUT = workstation.qcow2 d2vm build -o $OUTPUT --build-arg USER = $USER --build-arg PASSWORD = $PASSWORD --build-arg SSH_KEY = https://github.com/ $USER .keys --force -v . Run it: d2vm run qemu --mem 4096 --cpus 4 $IMAGE ... you should be automatically logged in with a oh-my-zsh shell You should be able to find the ip address inside the VM using: hostname -I # or ip a show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1 And connect using ssh... In order to quit the terminal you need to shut down the VM with the poweroff command: sudo poweroff I hope you will find it useful and that you will have fun...","title":"Complete Example"},{"location":"full-example/#zsh-workstation-example","text":"This example demonstrate the setup of a ZSH workstation with cloud-init support. Dockerfile FROM ubuntu # Install some system packages RUN apt update && DEBIAN_FRONTEND = noninteractive apt install -y --no-install-recommends \\ qemu-guest-agent \\ ca-certificates \\ dnsutils \\ sudo \\ openssh-server # Add a utility script to resize serial terminal COPY resize /usr/local/bin/ # User setup variables ARG USER = d2vm ARG PASSWORD = d2vm ARG SSH_KEY = https://github.com/ ${ USER } .keys # Setup user environment RUN DEBIAN_FRONTEND = noninteractive apt install -y --no-install-recommends \\ bash-completion \\ curl \\ zsh \\ git \\ vim \\ tmux \\ htop \\ lsb-core \\ cloud-init \\ cloud-guest-utils # Create user with sudo privileged and passwordless sudo RUN useradd ${ USER } -m -s /bin/zsh -G sudo && \\ echo \" ${ USER } : ${ PASSWORD } \" | chpasswd && \\ sed -i 's|ALL=(ALL:ALL) ALL|ALL=(ALL:ALL) NOPASSWD: ALL|g' /etc/sudoers # Add ssh public keys ADD ${ SSH_KEY } /home/ ${ USER } /.ssh/authorized_keys # Setup permission on .ssh directory RUN chown -R ${ USER } : ${ USER } /home/ ${ USER } /.ssh # Run everything else as the created user USER ${USER} # Setup zsh environment RUN bash -c \" $( curl -fsSL https://gist.githubusercontent.com/Adphi/f3ce3cc4b2551c437eb667f3a5873a16/raw/be05553da87f6e9d8b0d290af5aa036d07de2e25/env.setup ) \" # Setup tmux environment RUN bash -c \" $( curl -fsSL https://gist.githubusercontent.com/Adphi/765e9382dd5e547633be567e2eb72476/raw/a3fe4b3f35e598dca90e2dd45d30dc1753447a48/tmux-setup ) \" # Setup auto login serial console RUN sudo sed -i \"s|ExecStart=.*|ExecStart=-/sbin/agetty --autologin ${ USER } --keep-baud 115200,38400,9600 \\%I \\$TERM|\" /usr/lib/systemd/system/serial-getty@.service There is no need to configure the network as d2vm will generate a netplan configuration that use DHCP. Build USER = mygithubuser PASSWORD = mysecurepasswordthatIwillneverusebecauseIuseMostlySSHkeys OUTPUT = workstation.qcow2 d2vm build -o $OUTPUT --build-arg USER = $USER --build-arg PASSWORD = $PASSWORD --build-arg SSH_KEY = https://github.com/ $USER .keys --force -v . Run it: d2vm run qemu --mem 4096 --cpus 4 $IMAGE ... you should be automatically logged in with a oh-my-zsh shell You should be able to find the ip address inside the VM using: hostname -I # or ip a show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1 And connect using ssh... In order to quit the terminal you need to shut down the VM with the poweroff command: sudo poweroff I hope you will find it useful and that you will have fun...","title":"ZSH Workstation example"},{"location":"reference/d2vm/","text":"d2vm Options -h, --help help for d2vm --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm build - Build a vm image from Dockerfile d2vm completion - Generate the autocompletion script for the specified shell d2vm convert - Convert Docker image to vm image d2vm run - Run the virtual machine image d2vm version -","title":"d2vm"},{"location":"reference/d2vm/#d2vm","text":"","title":"d2vm"},{"location":"reference/d2vm/#options","text":"-h, --help help for d2vm --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options"},{"location":"reference/d2vm/#see-also","text":"d2vm build - Build a vm image from Dockerfile d2vm completion - Generate the autocompletion script for the specified shell d2vm convert - Convert Docker image to vm image d2vm run - Run the virtual machine image d2vm version -","title":"SEE ALSO"},{"location":"reference/d2vm_build/","text":"d2vm build Build a vm image from Dockerfile d2vm build [context directory] [flags] Options --append-to-cmdline string Extra kernel cmdline arguments to append to the generated one --boot-size uint Size of the boot partition in MB (default 100) --build-arg stringArray Set build-time variables -f, --file string Name of the Dockerfile --force Override output qcow2 image -h, --help help for build --keep-cache Keep the images after the build --luks-password string Password to use for the LUKS encrypted root partition. If not set, the root partition will not be encrypted --network-manager string Network manager to use for the image: none, netplan, ifupdown -o, --output string The output image, the extension determine the image format, raw will be used if none. Supported formats: qcow2 qed raw vdi vhd vmdk (default \"disk0.qcow2\") -p, --password string Optional root user password --push Push the container disk image to the registry --raw Just convert the container to virtual machine image without installing anything more -s, --size string The output image size (default \"10G\") --split-boot Split the boot partition from the root partition -t, --tag string Container disk Docker image tag Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm -","title":"build"},{"location":"reference/d2vm_build/#d2vm-build","text":"Build a vm image from Dockerfile d2vm build [context directory] [flags]","title":"d2vm build"},{"location":"reference/d2vm_build/#options","text":"--append-to-cmdline string Extra kernel cmdline arguments to append to the generated one --boot-size uint Size of the boot partition in MB (default 100) --build-arg stringArray Set build-time variables -f, --file string Name of the Dockerfile --force Override output qcow2 image -h, --help help for build --keep-cache Keep the images after the build --luks-password string Password to use for the LUKS encrypted root partition. If not set, the root partition will not be encrypted --network-manager string Network manager to use for the image: none, netplan, ifupdown -o, --output string The output image, the extension determine the image format, raw will be used if none. Supported formats: qcow2 qed raw vdi vhd vmdk (default \"disk0.qcow2\") -p, --password string Optional root user password --push Push the container disk image to the registry --raw Just convert the container to virtual machine image without installing anything more -s, --size string The output image size (default \"10G\") --split-boot Split the boot partition from the root partition -t, --tag string Container disk Docker image tag","title":"Options"},{"location":"reference/d2vm_build/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_build/#see-also","text":"d2vm -","title":"SEE ALSO"},{"location":"reference/d2vm_completion/","text":"d2vm completion Generate the autocompletion script for the specified shell Synopsis Generate the autocompletion script for d2vm for the specified shell. See each sub-command's help for details on how to use the generated script. Options -h, --help help for completion Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm - d2vm completion bash - Generate the autocompletion script for bash d2vm completion fish - Generate the autocompletion script for fish d2vm completion powershell - Generate the autocompletion script for powershell d2vm completion zsh - Generate the autocompletion script for zsh","title":"D2vm completion"},{"location":"reference/d2vm_completion/#d2vm-completion","text":"Generate the autocompletion script for the specified shell","title":"d2vm completion"},{"location":"reference/d2vm_completion/#synopsis","text":"Generate the autocompletion script for d2vm for the specified shell. See each sub-command's help for details on how to use the generated script.","title":"Synopsis"},{"location":"reference/d2vm_completion/#options","text":"-h, --help help for completion","title":"Options"},{"location":"reference/d2vm_completion/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_completion/#see-also","text":"d2vm - d2vm completion bash - Generate the autocompletion script for bash d2vm completion fish - Generate the autocompletion script for fish d2vm completion powershell - Generate the autocompletion script for powershell d2vm completion zsh - Generate the autocompletion script for zsh","title":"SEE ALSO"},{"location":"reference/d2vm_completion_bash/","text":"d2vm completion bash Generate the autocompletion script for bash Synopsis Generate the autocompletion script for the bash shell. This script depends on the 'bash-completion' package. If it is not installed already, you can install it via your OS's package manager. To load completions in your current shell session: source <(d2vm completion bash) To load completions for every new session, execute once: Linux: d2vm completion bash > /etc/bash_completion.d/d2vm macOS: d2vm completion bash > $(brew --prefix)/etc/bash_completion.d/d2vm You will need to start a new shell for this setup to take effect. d2vm completion bash Options -h, --help help for bash --no-descriptions disable completion descriptions Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm completion - Generate the autocompletion script for the specified shell","title":"bash"},{"location":"reference/d2vm_completion_bash/#d2vm-completion-bash","text":"Generate the autocompletion script for bash","title":"d2vm completion bash"},{"location":"reference/d2vm_completion_bash/#synopsis","text":"Generate the autocompletion script for the bash shell. This script depends on the 'bash-completion' package. If it is not installed already, you can install it via your OS's package manager. To load completions in your current shell session: source <(d2vm completion bash) To load completions for every new session, execute once:","title":"Synopsis"},{"location":"reference/d2vm_completion_bash/#linux","text":"d2vm completion bash > /etc/bash_completion.d/d2vm","title":"Linux:"},{"location":"reference/d2vm_completion_bash/#macos","text":"d2vm completion bash > $(brew --prefix)/etc/bash_completion.d/d2vm You will need to start a new shell for this setup to take effect. d2vm completion bash","title":"macOS:"},{"location":"reference/d2vm_completion_bash/#options","text":"-h, --help help for bash --no-descriptions disable completion descriptions","title":"Options"},{"location":"reference/d2vm_completion_bash/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_completion_bash/#see-also","text":"d2vm completion - Generate the autocompletion script for the specified shell","title":"SEE ALSO"},{"location":"reference/d2vm_completion_fish/","text":"d2vm completion fish Generate the autocompletion script for fish Synopsis Generate the autocompletion script for the fish shell. To load completions in your current shell session: d2vm completion fish | source To load completions for every new session, execute once: d2vm completion fish > ~/.config/fish/completions/d2vm.fish You will need to start a new shell for this setup to take effect. d2vm completion fish [flags] Options -h, --help help for fish --no-descriptions disable completion descriptions Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm completion - Generate the autocompletion script for the specified shell","title":"fish"},{"location":"reference/d2vm_completion_fish/#d2vm-completion-fish","text":"Generate the autocompletion script for fish","title":"d2vm completion fish"},{"location":"reference/d2vm_completion_fish/#synopsis","text":"Generate the autocompletion script for the fish shell. To load completions in your current shell session: d2vm completion fish | source To load completions for every new session, execute once: d2vm completion fish > ~/.config/fish/completions/d2vm.fish You will need to start a new shell for this setup to take effect. d2vm completion fish [flags]","title":"Synopsis"},{"location":"reference/d2vm_completion_fish/#options","text":"-h, --help help for fish --no-descriptions disable completion descriptions","title":"Options"},{"location":"reference/d2vm_completion_fish/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_completion_fish/#see-also","text":"d2vm completion - Generate the autocompletion script for the specified shell","title":"SEE ALSO"},{"location":"reference/d2vm_completion_powershell/","text":"d2vm completion powershell Generate the autocompletion script for powershell Synopsis Generate the autocompletion script for powershell. To load completions in your current shell session: d2vm completion powershell | Out-String | Invoke-Expression To load completions for every new session, add the output of the above command to your powershell profile. d2vm completion powershell [flags] Options -h, --help help for powershell --no-descriptions disable completion descriptions Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm completion - Generate the autocompletion script for the specified shell","title":"powershell"},{"location":"reference/d2vm_completion_powershell/#d2vm-completion-powershell","text":"Generate the autocompletion script for powershell","title":"d2vm completion powershell"},{"location":"reference/d2vm_completion_powershell/#synopsis","text":"Generate the autocompletion script for powershell. To load completions in your current shell session: d2vm completion powershell | Out-String | Invoke-Expression To load completions for every new session, add the output of the above command to your powershell profile. d2vm completion powershell [flags]","title":"Synopsis"},{"location":"reference/d2vm_completion_powershell/#options","text":"-h, --help help for powershell --no-descriptions disable completion descriptions","title":"Options"},{"location":"reference/d2vm_completion_powershell/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_completion_powershell/#see-also","text":"d2vm completion - Generate the autocompletion script for the specified shell","title":"SEE ALSO"},{"location":"reference/d2vm_completion_zsh/","text":"d2vm completion zsh Generate the autocompletion script for zsh Synopsis Generate the autocompletion script for the zsh shell. If shell completion is not already enabled in your environment you will need to enable it. You can execute the following once: echo \"autoload -U compinit; compinit\" >> ~/.zshrc To load completions in your current shell session: source <(d2vm completion zsh) To load completions for every new session, execute once: Linux: d2vm completion zsh > \"${fpath[1]}/_d2vm\" macOS: d2vm completion zsh > $(brew --prefix)/share/zsh/site-functions/_d2vm You will need to start a new shell for this setup to take effect. d2vm completion zsh [flags] Options -h, --help help for zsh --no-descriptions disable completion descriptions Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm completion - Generate the autocompletion script for the specified shell","title":"zsh"},{"location":"reference/d2vm_completion_zsh/#d2vm-completion-zsh","text":"Generate the autocompletion script for zsh","title":"d2vm completion zsh"},{"location":"reference/d2vm_completion_zsh/#synopsis","text":"Generate the autocompletion script for the zsh shell. If shell completion is not already enabled in your environment you will need to enable it. You can execute the following once: echo \"autoload -U compinit; compinit\" >> ~/.zshrc To load completions in your current shell session: source <(d2vm completion zsh) To load completions for every new session, execute once:","title":"Synopsis"},{"location":"reference/d2vm_completion_zsh/#linux","text":"d2vm completion zsh > \"${fpath[1]}/_d2vm\"","title":"Linux:"},{"location":"reference/d2vm_completion_zsh/#macos","text":"d2vm completion zsh > $(brew --prefix)/share/zsh/site-functions/_d2vm You will need to start a new shell for this setup to take effect. d2vm completion zsh [flags]","title":"macOS:"},{"location":"reference/d2vm_completion_zsh/#options","text":"-h, --help help for zsh --no-descriptions disable completion descriptions","title":"Options"},{"location":"reference/d2vm_completion_zsh/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_completion_zsh/#see-also","text":"d2vm completion - Generate the autocompletion script for the specified shell","title":"SEE ALSO"},{"location":"reference/d2vm_convert/","text":"d2vm convert Convert Docker image to vm image d2vm convert [docker image] [flags] Options --append-to-cmdline string Extra kernel cmdline arguments to append to the generated one --boot-size uint Size of the boot partition in MB (default 100) --force Override output qcow2 image -h, --help help for convert --keep-cache Keep the images after the build --luks-password string Password to use for the LUKS encrypted root partition. If not set, the root partition will not be encrypted --network-manager string Network manager to use for the image: none, netplan, ifupdown -o, --output string The output image, the extension determine the image format, raw will be used if none. Supported formats: qcow2 qed raw vdi vhd vmdk (default \"disk0.qcow2\") -p, --password string Optional root user password --pull Always pull docker image --push Push the container disk image to the registry --raw Just convert the container to virtual machine image without installing anything more -s, --size string The output image size (default \"10G\") --split-boot Split the boot partition from the root partition -t, --tag string Container disk Docker image tag Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm -","title":"convert"},{"location":"reference/d2vm_convert/#d2vm-convert","text":"Convert Docker image to vm image d2vm convert [docker image] [flags]","title":"d2vm convert"},{"location":"reference/d2vm_convert/#options","text":"--append-to-cmdline string Extra kernel cmdline arguments to append to the generated one --boot-size uint Size of the boot partition in MB (default 100) --force Override output qcow2 image -h, --help help for convert --keep-cache Keep the images after the build --luks-password string Password to use for the LUKS encrypted root partition. If not set, the root partition will not be encrypted --network-manager string Network manager to use for the image: none, netplan, ifupdown -o, --output string The output image, the extension determine the image format, raw will be used if none. Supported formats: qcow2 qed raw vdi vhd vmdk (default \"disk0.qcow2\") -p, --password string Optional root user password --pull Always pull docker image --push Push the container disk image to the registry --raw Just convert the container to virtual machine image without installing anything more -s, --size string The output image size (default \"10G\") --split-boot Split the boot partition from the root partition -t, --tag string Container disk Docker image tag","title":"Options"},{"location":"reference/d2vm_convert/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_convert/#see-also","text":"d2vm -","title":"SEE ALSO"},{"location":"reference/d2vm_run/","text":"d2vm run Run the virtual machine image Options -h, --help help for run Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm - d2vm run hetzner - Run the virtual machine image on Hetzner Cloud d2vm run qemu - Run the virtual machine image with qemu d2vm run vbox - Run the virtual machine image with Virtualbox","title":"D2vm run"},{"location":"reference/d2vm_run/#d2vm-run","text":"Run the virtual machine image","title":"d2vm run"},{"location":"reference/d2vm_run/#options","text":"-h, --help help for run","title":"Options"},{"location":"reference/d2vm_run/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_run/#see-also","text":"d2vm - d2vm run hetzner - Run the virtual machine image on Hetzner Cloud d2vm run qemu - Run the virtual machine image with qemu d2vm run vbox - Run the virtual machine image with Virtualbox","title":"SEE ALSO"},{"location":"reference/d2vm_run_hetzner/","text":"d2vm run hetzner Run the virtual machine image on Hetzner Cloud d2vm run hetzner [options] image-path [flags] Options -h, --help help for hetzner -n, --name string d2vm server name (default \"d2vm\") --rm remove server when done -i, --ssh-key string d2vm image identity key --token string Hetzner Cloud API token [$HETZNER_TOKEN] -u, --user string d2vm image ssh user (default \"root\") Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm run - Run the virtual machine image","title":"hetzner"},{"location":"reference/d2vm_run_hetzner/#d2vm-run-hetzner","text":"Run the virtual machine image on Hetzner Cloud d2vm run hetzner [options] image-path [flags]","title":"d2vm run hetzner"},{"location":"reference/d2vm_run_hetzner/#options","text":"-h, --help help for hetzner -n, --name string d2vm server name (default \"d2vm\") --rm remove server when done -i, --ssh-key string d2vm image identity key --token string Hetzner Cloud API token [$HETZNER_TOKEN] -u, --user string d2vm image ssh user (default \"root\")","title":"Options"},{"location":"reference/d2vm_run_hetzner/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_run_hetzner/#see-also","text":"d2vm run - Run the virtual machine image","title":"SEE ALSO"},{"location":"reference/d2vm_run_qemu/","text":"d2vm run qemu Run the virtual machine image with qemu d2vm run qemu [options] [image-path] [flags] Options --accel string Choose acceleration mode. Use 'tcg' to disable it. --arch string Type of architecture to use, e.g. x86_64, aarch64, s390x (default \"x86_64\") --cpus uint Number of CPUs (default 1) --detached Set qemu container to run in the background --disk disk Disk config, may be repeated. [file=]path[,size=1G][,format=qcow2] (default []) --gui Set qemu to use video output instead of stdio -h, --help help for qemu --mem uint Amount of memory in MB (default 1024) --networking string Networking mode. Valid options are 'default', 'user', 'bridge[,name]', tap[,name] and 'none'. 'user' uses QEMUs userspace networking. 'bridge' connects to a preexisting bridge. 'tap' uses a prexisting tap device. 'none' disables networking.` (default \"user\") --publish multiple-flag Publish a vm's port(s) to the host (default []) (default A multiple flag is a type of flag that can be repeated any number of times) --qemu string Path to the qemu binary (otherwise look in $PATH) Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm run - Run the virtual machine image","title":"qemu"},{"location":"reference/d2vm_run_qemu/#d2vm-run-qemu","text":"Run the virtual machine image with qemu d2vm run qemu [options] [image-path] [flags]","title":"d2vm run qemu"},{"location":"reference/d2vm_run_qemu/#options","text":"--accel string Choose acceleration mode. Use 'tcg' to disable it. --arch string Type of architecture to use, e.g. x86_64, aarch64, s390x (default \"x86_64\") --cpus uint Number of CPUs (default 1) --detached Set qemu container to run in the background --disk disk Disk config, may be repeated. [file=]path[,size=1G][,format=qcow2] (default []) --gui Set qemu to use video output instead of stdio -h, --help help for qemu --mem uint Amount of memory in MB (default 1024) --networking string Networking mode. Valid options are 'default', 'user', 'bridge[,name]', tap[,name] and 'none'. 'user' uses QEMUs userspace networking. 'bridge' connects to a preexisting bridge. 'tap' uses a prexisting tap device. 'none' disables networking.` (default \"user\") --publish multiple-flag Publish a vm's port(s) to the host (default []) (default A multiple flag is a type of flag that can be repeated any number of times) --qemu string Path to the qemu binary (otherwise look in $PATH)","title":"Options"},{"location":"reference/d2vm_run_qemu/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_run_qemu/#see-also","text":"d2vm run - Run the virtual machine image","title":"SEE ALSO"},{"location":"reference/d2vm_run_vbox/","text":"d2vm run vbox Run the virtual machine image with Virtualbox d2vm run vbox [options] image-path [flags] Options --cpus uint Number of CPUs (default 1) --disk disk Disk config, may be repeated. [file=]path[,size=1G][,format=raw] (default []) --gui Show the VM GUI -h, --help help for vbox --mem uint Amount of memory in MB (default 1024) --name string Name of the Virtualbox VM (default \"d2vm\") --networking vbnetworks Network config, may be repeated. [type=](null|nat|bridged|intnet|hostonly|generic|natnetwork[<devicename>])[,[bridge|host]adapter=<interface>] (default []) --vboxmanage string VBoxManage binary to use (default \"VBoxManage\") Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm run - Run the virtual machine image","title":"virtualbox"},{"location":"reference/d2vm_run_vbox/#d2vm-run-vbox","text":"Run the virtual machine image with Virtualbox d2vm run vbox [options] image-path [flags]","title":"d2vm run vbox"},{"location":"reference/d2vm_run_vbox/#options","text":"--cpus uint Number of CPUs (default 1) --disk disk Disk config, may be repeated. [file=]path[,size=1G][,format=raw] (default []) --gui Show the VM GUI -h, --help help for vbox --mem uint Amount of memory in MB (default 1024) --name string Name of the Virtualbox VM (default \"d2vm\") --networking vbnetworks Network config, may be repeated. [type=](null|nat|bridged|intnet|hostonly|generic|natnetwork[<devicename>])[,[bridge|host]adapter=<interface>] (default []) --vboxmanage string VBoxManage binary to use (default \"VBoxManage\")","title":"Options"},{"location":"reference/d2vm_run_vbox/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_run_vbox/#see-also","text":"d2vm run - Run the virtual machine image","title":"SEE ALSO"},{"location":"reference/d2vm_version/","text":"d2vm version d2vm version [flags] Options -h, --help help for version Options inherited from parent commands --time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output SEE ALSO d2vm -","title":"version"},{"location":"reference/d2vm_version/#d2vm-version","text":"d2vm version [flags]","title":"d2vm version"},{"location":"reference/d2vm_version/#options","text":"-h, --help help for version","title":"Options"},{"location":"reference/d2vm_version/#options-inherited-from-parent-commands","text":"--time string Enable formated timed output, valide formats: 'relative (rel | r)', 'full (f)' (default \"none\") -v, --verbose Enable Verbose output","title":"Options inherited from parent commands"},{"location":"reference/d2vm_version/#see-also","text":"d2vm -","title":"SEE ALSO"}]} |