VM fails to boot with 'No operating system was found'
search cancel

VM fails to boot with 'No operating system was found'

book

Article ID: 440492

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

  • Red Hat Enterprise Linux (RHEL) virtual machine fails to boot into the Guest OS.
  • The virtual machine console displays the following error

No operating system was found. If you have an operating system installation disc, you can insert the disc into the system's CD-ROM drive and restart the virtual machine.

  • In the `vmware.log` file of the affected VM, you see entries similar to

vcpu-0 - [msg.Backdoor.OsNotFound] No operating system was found.

  • The issue may occur specifically after a reboot following environmental changes like adding an additional HDD to the VM.

Environment

  • vCenter 8.x
  • ESXi 8.x

Cause

The issue is caused by an incorrect "bios.hddOrder" parameter within the virtual machine configuration (.vmx) file. This parameter manually overrides the BIOS hard disk boot priority. If it is set to a SCSI identifier that does not contain the OS bootloader (e.g., "scsi0:#"), the BIOS will fail to find a bootable device even if the OS disk is attached to the VM.

Resolution

To resolve this issue, modify the `.vmx` file to point to the correct boot disk or remove the manual override.

  1. Power off the affected VM
  2. Log in to the ESXi host via SSH or use the Web Client to locate the VM directory.
  3. Create a backup of the existing `.vmx` file:
    cp /vmfs/volumes/<datastore>/<VM folder>/<VM_NAME.vmx> /var/core/<VM_NAME.vmx.bkp>
  4. Open the `.vmx` file using a text editor (e.g., vi):
    vi VM_NAME.vmx
  5. Search for the entry "bios.hddOrder"
  6. Perform one of the following actions:

    Correct the path: Change the value to match your boot disk SCSI ID (typically "scsi0:0"):
    bios.hddOrder = "scsi0:0"

    or

    Remove the override:
    Delete the "bios.hddOrder" line entirely to allow the VM to use the default BIOS detection logic.

  7. Save and exit the editor:
    wq!
  8. Identify the VM ID (vmid)
    vim-cmd vmsvc/getallvms | grep VM_NAME
  9. Reload the virtual machine configuration to apply the changes:
    vim-cmd vmsvc/reload <vmid>
  10. Power on the virtual machine.

Additional Information

Changing the boot order of a virtual machine on ESXi using virtual machine advanced option

Virtual Machine powers on but fails to boot: No operating system was found