Bring Your Own Linux (BYOLinux)

Knowledge Base

Bring Your Own Linux (BYOLinux)


Icons/System/eye-open Created with Sketch. 1622 Views 10.02.2026 Cloud / Dedicated Server (bare metal)

Objective

The Bring Your Own Linux feature (BYOLinux) enables you to deploy cloudready Linux images directly on your dedicated server. You can therefore use the bare metal service as a resource for your deployments.

What does cloudready mean?

The cloudready standard generally means being agnostic of the infrastructure on which the image is deployed. In addition to the requirements and limitations mentioned below, you must ensure that the image (downloaded or generated) meets the technical expectations of a cloudready image.

This guide explains how to use Bring Your Own Linux (BYOLinux) on your OVHcloud dedicated server.

Requirements

As with any classical OS installation, a new installation with BYOLinux will erase all the data on the server.

Instructions

Technical limitations:

There are some technical limitations linked to the use of physical products such as dedicated servers. Here is a non-exhaustive list, to keep in mind during your deployment preparation:

  • Boot type: UEFI or legacy (depending on the boot type of your server)
  • Image format: qcow2
  • Only one partition in the qcow2 image
  • Partition filesystem: ext4, XFS, or BTRFS (without subvolumes)

Deployment methods:

Deploy your image via the Control Panel

Log in to the OVHcloud Control Panel and go to the Bare Metal Cloud section, then select your server under Dedicated servers.

In the General information tab, click the ... button next to "System (OS)" then click Install.

BringYourOwnLinux Control Panel 01

In the window that appears, select Custom in the menu, then Bring Your Own Linux - byolinux, and click Next.

BringYourOwnLinux Control Panel 03

You will be redirected to the configuration page. Make sure your image URL is in the correct format. Fill in the rest of the required fields on this page. Once you have confirmed that the information is correct, click Confirm.

You can find more details on the options in the deployment options section below.

For more information and examples about Cloud-Init's ConfigDrive, please read the official documentation on this page.

BringYourOwnLinux Control Panel 04

Deploy your image via the API

Log in to the API console and go to the /dedicated/server section.

The Bring Your Own Linux (BYOLinux) payload should be similar to the following:

In the customizations section, only imageURL is mandatory.

{
  "operatingSystem": "byolinux_64",
  "customizations": {
    "hostname": "mon-tux",
    "imageURL": "https://github.com/ashmonger/akution_test/releases/latest/download/deb11k6.qcow2",
    "efiBootloaderPath": "\\efi\\debian\\grubx64.efi",
    "imageCheckSum": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "httpHeaders": {
      "Authorization": "Basic bG9naW46cGFzc3dvcmQ="
    },
    "imageCheckSumType": "sha512",
    "configDriveUserData": "I2Nsb3VkLWNvbmZpZwpzc2hfYXV0aG9yaXplZF9rZXlzOgogIC0gc3NoLXJzYSBBQUFBQjhkallpdz09IG15c2VsZkBteWRvbWFpbi5uZXQKCnVzZXJzOgogIC0gbmFtZTogcGF0aWVudDAKICAgIHN1ZG86IEFMTD0oQUxMKSBOT1BBU1NXRDpBTEwKICAgIGdyb3VwczogdXNlcnMsIHN1ZG8KICAgIHNoZWxsOiAvYmluL2Jhc2gKICAgIGxvY2tfcGFzc3dkOiBmYWxzZQogICAgc3NoX2F1dGhvcml6ZWRfa2V5czoKICAgICAgLSBzc2gtcnNhIEFBQUFCOGRqWWl3PT0gbXlzZWxmQG15ZG9tYWluLm5ldApkaXNhYmxlX3Jvb3Q6IGZhbHNlCnBhY2thZ2VzOgogIC0gdmltCiAgLSB0cmVlCmZpbmFsX21lc3NhZ2U6IFRoZSBzeXN0ZW0gaXMgZmluYWxseSB1cCwgYWZ0ZXIgJFVQVElNRSBzZWNvbmRzCg=="
  }
}

In the example above, the imageCheckSum value has been obfuscated because it changes regularly whenever the target image is rebuilt.

Even though the configDrive user data could be sent to the API directly in clear text by escaping special characters, it is recommended to send a base64-encoded script to the API. You can use the following UNIX/Linux command to encode your data:

cat my-data.yaml | base64 -w0

Here is the clear-text configDrive user data from the example above:

#cloud-config
ssh_authorized_keys:
  - ssh-rsa AAAAB8djYiw== myself@mydomain.net

users:
  - name: patient0
    sudo: ALL=(ALL) NOPASSWD:ALL
    groups: users, sudo
    shell: /bin/bash
    lock_passwd: false
    ssh_authorized_keys:
      - ssh-rsa AAAAB8djYiw== myself@mydomain.net
disable_root: false
packages:
  - vim
  - tree
final_message: The system is finally up, after $UPTIME seconds

Once you have filled in the fields, start the deployment by clicking Execute.

Deployment options

FieldDescriptionRequired
customizations/hostnameHostname
customizations/sshKeySSH public key
customizations/imageURLYour Linux image URL
customizations/imageCheckSumYour image's checksum
customizations/imageCheckSumTypeYour image's checksum type (md5, sha1, sha256, sha512)❌ (except if checksum provided)
customizations/configDriveUserDataYour configDrive file content¹
customizations/configDriveMetadataCustom Cloud-Init metadata
customizations/httpHeaders?KeyHTTP Headers key❌²
customizations/httpHeaders?ValueHTTP Headers value❌²
userMetadata/efiBootloaderPathEFI bootloader path✅³

¹ Can either be a #cloud-config or a script. Its JSON representation must be on a single line with \n for line breaks, as JSON strings cannot contain literal newlines.
² Use only if you need HTTP Headers, such as Basic Auth
³ The EFI bootloader path is used by iPXE to boot your operating system. For more information, see Understanding the dedicated server boot process. Examples:

The paths below use JSON escaping: \\ represents a single backslash. For example, \\efi\\debian\\grubx64.efi is the path \efi\debian\grubx64.efi.

Operating SystemefiBootloaderPath
Debian\\efi\\debian\\grubx64.efi
Ubuntu\\efi\\ubuntu\\grubx64.efi
Windows\\efi\\microsoft\\boot\\bootmgfw.efi
FreeBSD\\efi\\FreeBSD\\loader.efi
Alma\\efi\\almalinux\\shimx64.efi
Arch Linux\\efi\\arch\\grubx64.efi
Gentoo\\efi\\boot\\bootx64.efi

The ConfigDrive partition is used by cloud-init during the first server boot in order to apply your configurations. You can choose whether you want to use the default one, or a custom one (using configDriveUserData).

Common customer errors

The following table gives an overview of well-known customer errors and how to fix them.

Error messageDetailsSolution(s)
Please provide checkSum AND checkSumType or none of themYou have specified only one of the arguments imageCheckSum and imageCheckSumType.Either provide both arguments or none of them.
image provided format is x which does not match expected qcow2 formatNo matter what the file extension is, the real format has to be qcow2.Convert your image to qcow2 format.
image provided has a size of n bytes which is larger than device of m bytesThe image is larger than the disk chosen for the OS installation.- If your server has several disk groups, you can try to reinstall the OS on another disk group by specifying the diskgroupid argument.
- You need to reduce the size of your image.
Could not download, qcow2 image is too big to download in memory.Your server doesn't have enough RAM to download the image.You need to reduce the size of your image.
Could not download image: <error message>Cannot download image from imageURL.Check that a download with the curl command from your server works in rescue mode. If some HTTP specific headers are required, you can provide them with the httpHeaders argument.
Bad checkSumType for downloaded file, got: n while expecting m.Incorrect checksum.- Please ensure that you have specified the correct checksum.
- Check that a download with the curl command from your server works in rescue mode.

See OVHcloud API and Storage Common customer errors for related partitioning issues.

Go further

BYOLinux on GitHub - Examples and in-depth documentation

OVHcloud API & OS installation

OVHcloud API and Storage

Bring Your Own Image (BYOI)

Bring Your Own Image (BYOI) / Bring Your Own Linux (BYOLinux), a comparison sheet

Understanding the dedicated server boot process

Join our user community on https://community.ovh.com/en/.

Related articles