The Compute service enables you to import Linux-based images that were created outside of Oracle Cloud Infrastructure. For example, you can import images running on your on-premises physical or virtual machines (VMs), or VMs running in Oracle Cloud Infrastructure Classic. You can then launch your imported images on Compute virtual machines.
You can launch imported Linux VMs in either paravirtualized mode or emulated mode.
Paravirtualized mode offers better performance than emulated mode. We recommend that you use paravirtualized mode if your OS supports it. Linux-based operating systems running the kernel version 3.4 or later support paravirtualized drivers. You can verify your system's kernel version using the uname command.
Run the following command:
The output should look similar to this sample:
Linux ip_bash 4.14.35-1818.2.1.el7uek.x86_64 #2 SMP Mon Aug 27 21:16:31 PDT 2018 x86_64 x86_64 x86_64 GNU/Linux
The kernel version is the number at the first part of output string. In the sample output shown previously, the version is 4.14.35.
These Linux distributions support custom image import:
|Linux Distribution||Supported Versions||Preferred Launch Mode|
|RHEL||7 or later||Paravirtualized|
|4.5, 5.5, 5.6, 5.9, 5.11, 6.5, 6.9||Emulated|
|CentOS||7 or later||Paravirtualized|
|4.0, 4.8, 5.11, 6.9||Emulated|
|Oracle Linux||7 or later||Paravirtualized|
|4.5, 4.8, 5.8, 5.11, 6.2, 6.5||Emulated|
|Ubuntu||13.04 or later||Paravirtualized|
|FreeBSD||12 or later||Paravirtualized|
|8, 9, 10, 11||Emulated|
|Debian||8 or later||Paravirtualized|
|5.0.10, 6.0, 7||Emulated|
|SUSE||12.2 or later||Paravirtualized|
- Oracle Cloud Infrastructure has tested the operating systems listed in the previous table and will support customers in ensuring that instances launched from these images and built according to the guidelines in this topic are accessible using SSH.
- For OS versions not listed in the previous table, Oracle Cloud Infrastructure will provide commercially reasonable support to customers in an effort to get instances that are launched from these images accessible via SSH.
- Support from Oracle Cloud Infrastructure in launching an instance from a custom OS does not ensure that the operating system vendor also supports the instance. Customers running Oracle Linux on Oracle Cloud Infrastructure automatically have access to Oracle Linux Premier Support.
If your image supports paravirtualized drivers, you can convert your existing emulated mode instances into paravirtualized instances. Create a custom image of your instance, export it to Object Storage, and then reimport it using paravirtualized mode.
Linux Source Image Requirements
Custom images must meet the following requirements:
The maximum image size is 300 GB.
The image must be set up for BIOS boot.
Only one disk is supported, and it must be the boot drive with a valid master boot record (MBR) and boot loader. You can migrate additional data volumes after you import the image's boot volume.
The boot process must not require additional data volumes to be present for a successful boot.
The boot loader should use LVM or a UUID to locate the boot volume.
The disk image cannot be encrypted.
The disk image must be a VMDK or QCOW2 file.
- Create the image file by cloning the source volume, not by creating a snapshot.
- VMDK files must be either the "single growable" (monolithicSparse) type or the "stream optimized" (streamOptimized) type, both of which consist of a single VMDK file. All other VMDK formats, such as those that use multiple files, split volumes, or contain snapshots, are not supported.
The network interface must use DHCP to discover the network settings. When you import a custom image, existing network interfaces are not recreated. Any existing network interfaces are replaced with a single NIC after the import process is complete. You can attach additional VNICs after you launch the imported instance.
The network configuration must not hardcode the MAC address for the network interface.
AMD shapes are not supported.
We recommend that you enable certificate-based SSH, however this is optional. If you want your image to automatically use SSH keys supplied from the User Data field when you launch an instance, you can install cloud-init when preparing the image. See Creating an Instance for more information about the User Data field.
Preparing Linux VMs for Import
Before you import a custom Linux image, you must prepare the image to ensure that instances launched from the image can boot correctly and that network connections will work. Do the following:
Optionally, configure your Linux image to support serial console connections. A console connection can help you remotely troubleshoot malfunctioning instances, such as an imported image that does not complete a successful boot.
Create a backup of the root volume.
If the VM has remotely attached storage, such as NFS or block volumes, configure any services that rely on this storage to start manually. Remotely attached storage is not available the first time that an imported instance boots on Oracle Cloud Infrastructure.
Ensure that all network interfaces use DHCP, and that the MAC address and IP addresses are not hardcoded. See your system documentation for steps to perform network configuration for your system.
Stop the VM.
Clone the stopped VM as a VMDK or QCOW2 file, and then export the image from your virtualization environment. See the tools documentation for your virtualization environment for steps.
Importing a Linux-Based VM
After you prepare a Linux image for import, follow these steps to import the image:
Upload the VMDK or QCOW2 file to Oracle Cloud Infrastructure:
oci os object put -bn <destination_bucket_name> --file <path_to_the_VMDK_or_QCOW2_file>
- Copy the URL of the file that you uploaded: On the Bucket Details page, click the the Actions icon (three dots) next to the file, and then click Details. Copy the URL Path (URI).
Open the navigation menu. Under Core Infrastructure, go to Compute and click Custom Images.
Click Import Image.
In the Create in Compartment list, select the compartment that you want to import the image to.
Enter a name for the image.
For the Operating System, select Linux.
In the Object Storage URL field, paste the URL of the file that you uploaded.
For the Image Type, select the file type of the image, either VMDK or QCOW2.
Depending on your image's version of Linux, in the Launch Mode area, select Paravirtualized Mode or Emulated Mode. If your image supports paravirtualized drivers, we recommend that you select paravirtualized mode.
- Tags: Optionally, you can apply tags. If you have permissions to create a resource, you also have permissions to apply free-form tags to that resource. To apply a defined tag, you must have permissions to use the tag namespace. For more information about tagging, see Resource Tags. If you are not sure if you should apply tags, skip this option (you can apply tags later) or ask your administrator.
Click Import Image.
The imported image appears in the Custom Images list for the compartment, with a status of IMPORTING. When the import completes successfully, the status changes to AVAILABLE.
If the status doesn't change, or no entry appears in the Custom Images list, the import failed. Ensure that you have read access to the Object Storage object, and that the object contains a supported image.
- Complete the post-import tasks.
Post-Import Tasks for Linux Images
After you import a custom Linux-based image, do the following:
Create an instance based on the custom image. For the image source, select Custom Images, and then select the image that you imported.
- Connect to the instance using SSH.
- If the instance requires any remotely attached storage, such as block volumes or file storage, create and attach it.
- Create and attach any required secondary VNICs.
- Test that all applications are working as expected.
- Reset any services that were set to start manually.
- If you enabled serial console access to the image, test it by creating a serial console connection to the instance.
See the current issues and workarounds for known issues with imported custom images.