---
name: "virt-p2v-make-disk"
section: "1"
platform: "linux"
package: "virt-p2v"
version: "1.42.4-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/virt-p2v-make-disk"
---

# virt-p2v-make-disk(1)

Build the virt-p2v disk using virt-builder

## NAME

virt-p2v-make-disk - Build the virt-p2v disk using virt-builder

## SYNOPSIS

```
 virt-p2v-make-disk -o /dev/sdX [os-version]
```

## DESCRIPTION

[**virt-p2v**(1)](/virt-p2v/1.md) converts a physical machine to run virtualized on KVM, managed by libvirt, OpenStack, oVirt, Red Hat Enterprise Virtualisation (RHEV), or one of the other targets supported by [**virt-v2v**(1)](/virt-v2v/1.md).

virt-p2v-make-disk is a script which creates a bootable disk image or USB key containing virt-p2v.  It uses [**virt-builder**(1)](/virt-builder/1.md) to do this, and is just a small shell script around virt-builder.

The required *-o* parameter specifies where the output should go, for example to a USB key (eg. `"-o /dev/sdX"`) or to a file.  If you pass a device name, then **the existing contents of the device will be erased**.

The root user on the disk image uses `"p2v"` as its initial password.

### "os-version" parameter

The optional `"os-version"` parameter is the base Linux distro to use for the operating system on the ISO.  If you don't set this parameter, the script tries to choose a suitable default for you.  Most users should *not* use the `"os-version"` parameter.

The base OS selected for virt-p2v is not related in any way to the OS of the physical machine that you are trying to convert.

To list possible `"os-version"` combinations, do:

```
 virt-builder -l
```

## EXAMPLES

Write a virt-p2v bootable USB key on */dev/sdX* (any existing content on */dev/sdX* is erased):

```
 virt-p2v-make-disk -o /dev/sdX
```

Write a virt-p2v bootable virtual disk image, and boot it under qemu:

```
 virt-p2v-make-disk -o /var/tmp/p2v.img
 qemu-kvm -m 1024 -boot c \
   -drive file=/var/tmp/p2v.img,if=virtio,index=0 \
   -drive file=/var/tmp/guest.img,if=virtio,index=1
```

where */var/tmp/guest.img* would be the disk image of some guest that you want to convert (for testing only).

## ADDING EXTRA PACKAGES

You can install extra packages using the *--install* option.  This can be useful for making a more fully-featured virt-p2v disk with extra tools for debugging and troubleshooting.  Give a list of packages, separated by commas.  For example:

```
 virt-p2v-make-disk -o /var/tmp/p2v.img --install tcpdump,traceroute
```

## ADDING AN SSH IDENTITY

You can inject an SSH identity (private key) file to the image using the *--inject-ssh-identity* option.

First create a key pair.  It must have an empty passphrase:

```
 ssh-keygen -t rsa -N '' -f id_rsa
```

This creates a private key (`"id_rsa"`) and a public key (`"id_rsa.pub"`) pair.  The public key should be appended to the `"authorized_keys"` file on the virt-v2v conversion server (usually to `"/root/.ssh/authorized_keys"`).

The private key should be injected into the disk image and then discarded:

```
 virt-p2v-make-disk [...] --inject-ssh-identity id_rsa
 rm id_rsa
```

When booting virt-p2v, specify the URL of the injected file like this:

```
 │         User name: [root_____________________________] │
 │                                                        │
 │          Password: [    <leave this field blank>     ] │
 │                                                        │
 │  SSH Identity URL: [file:///var/tmp/id_rsa___________] │
```

or if using the kernel command line, add:

```
 p2v.identity=file:///var/tmp/id_rsa
```

For more information, see "SSH IDENTITIES" in [**virt-p2v**(1)](/virt-p2v/1.md).

## 32 BIT VIRT-P2V

For improved compatibility with older hardware, virt-p2v-make-disk has an *--arch* option.  The most useful setting (on x86-64 hosts) is *--arch i686*, which builds a 32 bit virt-p2v environment that will work on older hardware.  32 bit virt-p2v can convert 64 bit physical machines and can interoperate with 64 bit virt-v2v and 64 bit hypervisors.

This option requires that you have built *virt-p2v.$arch* (ie. usually *virt-p2v.i686*) by some means, and that you install it next to the ordinary *virt-p2v* binary (eg. in *$libdir/virt-p2v/* or `$VIRT_V2V_DATA_DIR`).  This is outside the scope of this manual page, but you can find some tips in "BUILDING i686 32 BIT VIRT-P2V" in [**p2v-building**(1)](/p2v-building/1.md).

## OPTIONS

- **--help**

  Display help.

- **--arch** ARCH

  Set the architecture of the virt-p2v ISO.  See "32 BIT VIRT-P2V" above.

  If this option is not supplied, then the default is to use the same architecture as the host that is running virt-p2v-make-disk.

- **--inject-ssh-identity** id\_rsa

  Add an SSH identity (private key) file into the image. See "ADDING AN SSH IDENTITY" above.

- **--install** pkg,pkg,...

  Add extra packages to the image. See "ADDING EXTRA PACKAGES" above.

- **--no-warn-if-partition**

  Normally you should not write to a partition on a USB drive (ie. don’t use `"-o /dev/sdX1"`, use `"-o /dev/sdX"` to make a bootable USB drive).  If you do this, virt-builder prints a warning.  This option suppresses that warning.

- **-o** OUTPUT

  - **--output** OUTPUT

  Write output to `"OUTPUT"`, which can be a local file or block device. **The existing contents of the device will be erased**.

- **-v**

  - **--verbose**

  Enable verbose output.  Use this if you need to debug problems with the script or if you are filing a bug.

- **-V**

  - **--version**

  Display version number and exit.

## FILES

- *$libdir/virt-p2v/virt-p2v.xz*

  The [**virt-p2v**(1)](/virt-p2v/1.md) binary which is copied into the bootable disk image.

  The location of the binary can be changed by setting the `"VIRT_P2V_DATA_DIR"` environment variable.

- *$datadir/virt-p2v/issue*

  - *$datadir/virt-p2v/launch-virt-p2v.in*

  - *$datadir/virt-p2v/p2v.service*

  Various data files that are copied into the bootable disk image.

  The location of these files can be changed by setting the `"VIRT_P2V_DATA_DIR"` environment variable.

## ENVIRONMENT VARIABLES

- "VIRT\_P2V\_DATA\_DIR"

  The directory where virt-p2v-make-disk looks for data files (see "FILES" above).  If not set, a compiled-in location is used.

## SEE ALSO

[**virt-p2v**(1)](/virt-p2v/1.md), [**virt-p2v-make-kickstart**(1)](/virt-p2v-make-kickstart/1.md), [**virt-p2v-make-kiwi**(1)](/virt-p2v-make-kiwi/1.md), [**virt-v2v**(1)](/virt-v2v/1.md), http://libguestfs.org/.

## AUTHORS

Richard W.M. Jones http://people.redhat.com/~rjones/

## COPYRIGHT

Copyright (C) 2009-2019 Red Hat Inc.

## LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program.  If not, see \<https://www.gnu.org/licenses/\>.

## BUGS

To get a list of bugs against libguestfs (which include virt-p2v), use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter\_bug.cgi?component=libguestfs&product=Virtualization+Tools

When reporting a bug, please supply:

- •

  The version of virt-p2v.

- •

  Where you got virt-p2v (eg. which Linux distro, compiled from source, etc)

- •

  Describe the bug accurately and give a way to reproduce it.
