// Module included in the following assemblies:
//
// * installing/installing_ibm_z/installing-ibm-z-kvm.adoc
// * installing/installing_ibm_z/installing-restricted-networks-ibm-z-kvm.adoc

:_mod-docs-content-type: PROCEDURE
[id="installation-user-infra-machines-iso-ibm-z-kvm-full_{context}"]
= Full installation on a new QCOW2 disk image

[role="_abstract"]
Complete the following steps to create the machines in a full installation on a new QEMU copy-on-write (QCOW2) disk image.

.Prerequisites

* At least one LPAR running  on {op-system-base} 8.6 or later with KVM, referred to as {op-system-base} KVM host in this procedure.
* The KVM/QEMU hypervisor is installed on the {op-system-base} KVM host.
* A domain name server (DNS) that can perform hostname and reverse lookup for the nodes.
* An HTTP or HTTPS server is set up.

.Procedure

. Obtain the {op-system-base} kernel, initramfs, and rootfs files from the link:https://access.redhat.com/downloads/content/290[Product Downloads] page on the Red Hat Customer Portal or from the link:https://mirror.openshift.com/pub/openshift-v4/s390x/dependencies/rhcos/latest/[{op-system} image mirror] page.
+
[IMPORTANT]
====
The {op-system} images might not change with every release of {product-title}.
You must download images with the highest version that is less than or equal
to the {product-title} version that you install. Only use the appropriate {op-system} QCOW2 image described in the following procedure.
====
+
The file names contain the {product-title} version number. They resemble the following examples:

** kernel: `rhcos-<version>-live-kernel-<architecture>`
** initramfs: `rhcos-<version>-live-initramfs.<architecture>.img`
** rootfs: `rhcos-<version>-live-rootfs.<architecture>.img`
+
. Move the downloaded {op-system-base} live kernel, initramfs, and rootfs and the Ignition files to an HTTP or HTTPS server before you launch `virt-install`.
+
[NOTE]
====
The Ignition files are generated by the {product-title} installer.
====
. Create the new KVM guest nodes using the {op-system-base} kernel, initramfs, and Ignition files, the new disk image, and adjusted parm line arguments.
+
[source,terminal]
----
$ virt-install \
   --connect qemu:///system \
   --name <vm_name> \
   --memory <memory_mb> \
   --vcpus <vcpus> \
   --location <media_location>,kernel=<rhcos_kernel>,initrd=<rhcos_initrd> \
   --disk <vm_name>.qcow2,size=<image_size>,cache=none,io=native \
   --network network=<virt_network_parm> \
   --boot hd \
   --extra-args "rd.neednet=1" \
   --extra-args "coreos.inst.install_dev=/dev/<block_device>" \
   --extra-args "coreos.inst.ignition_url=http://<http_server>/bootstrap.ign" \
   --extra-args "coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img" \
   --extra-args "ip=<ip>::<gateway>:<netmask>:<hostname>::none nameserver=<dns>" \
   --noautoconsole \
   --wait
----
+
where:

`--location`:: Specifies the location of the kernel and initrd on the HTTP or HTTPS server.
`coreos.inst.ignition_url`:: Specifies the location of the Ignition config file. Use `bootstrap.ign`, `master.ign`, or `worker.ign`. Only HTTP and HTTPS protocols are supported.
`coreos.live.rootfs_url`:: Specifies the location of the `rootfs` artifact for the `kernel` and `initramfs` you are booting. Only HTTP and HTTPS protocols are supported.
