XCP Tutorial – Installing a VM OS from CD

As the final part of this XCP tutorial, I wanted to add one more item that I discovered when booting up my HVM guest from a CD image. After complete all the memory and VM setup issues I got the following response to starting my new VM:

xe vm-start  uuid=f0ddc908-79a9-ea0f-7a22-17c8c4bd983c

The bootloader returned an error  vm: f0ddc908-79a9-ea0f-7a22-17c8c4bd983c (oracle_vm)
msg: Error from bootloader: Failed to parse the output of bootloader:   ()

In this case, my VM tried to obtain its information from the CD but was not finding it. I ran the following command to profile my entire VM image,

xe vm-param-list  uuid=f0ddc908-79a9-ea0f-7a22-17c8c4bd983c | grep HVM
HVM-boot-policy ( RW):
HVM-boot-params (MRW):
HVM-shadow-multiplier ( RW): 1.000
last-boot-record ( RO): ‘(‘struct’ (‘uuid’ ‘f0ddc908-79a9-ea0f-7a22-17c8c4bd983c’) (‘allowed_operations’ (‘array’)) (‘current_operations’ (‘struct’ (‘OpaqueRef:4f53e4c6-55dd-0b9a-b883-544943782288′ ‘start’))) (‘power_state’ ‘Halted’) (‘name_label’ ‘oracle_vm’) (‘name_description’ ‘Installed via xe CLI’) (‘user_version’ ‘1’) (‘is_a_template’ (‘boolean’ ‘0’)) (‘suspend_VDI’ ‘OpaqueRef:NULL’) (‘resident_on’ ‘OpaqueRef:NULL’) (‘affinity’ ‘OpaqueRef:NULL’) (‘memory_overhead’ ‘1048576’) (‘memory_target’ ‘512000000’) (‘memory_static_max’ ‘512000000’) (‘memory_dynamic_max’ ‘512000000’) (‘memory_dynamic_min’ ‘512000000’) (‘memory_static_min’ ‘512000000’) (‘VCPUs_params’ (‘struct’)) (‘VCPUs_max’ ‘1’) (‘VCPUs_at_startup’ ‘1’) (‘actions_after_shutdown’ ‘destroy’) (‘actions_after_reboot’ ‘restart’) (‘actions_after_crash’ ‘restart’) (‘consoles’ (‘array’)) (‘VIFs’ (‘array’)) (‘VBDs’ (‘array’ ‘OpaqueRef:b6970f61-abdf-9ccb-2d98-94c01b571a3e’ ‘OpaqueRef:730588ba-f6f0-089e-ad86-e0930e3bcfd6′)) (‘crash_dumps’ (‘array’)) (‘VTPMs’ (‘array’)) (‘PV_bootloader’ ‘eliloader’) (‘PV_kernel’ ”) (‘PV_ramdisk’ ”) (‘PV_args’ ‘graphical utf8′) (‘PV_bootloader_args’ ”) (‘PV_legacy_args’ ”) (‘HVM_boot_policy’ ”) (‘HVM_boot_params’ (‘struct’)) (‘HVM_shadow_multiplier’ (‘double’ ‘1’)) (‘platform’ (‘struct’ (‘nx’ ‘false’) (‘acpi’ ‘true’) (‘apic’ ‘true’) (‘pae’ ‘true’) (‘viridian’ ‘true’))) (‘PCI_bus’ ”) (‘other_config’ (‘struct’ (‘install-respository’ ‘cdrom’) (‘mac_seed’ ‘7328478f-c1e6-22d3-a856-c589537451f5′) (‘linux_template’ ‘true’) (‘machine-address-size’ ’36’) (‘install-methods’ ‘cdrom,nfs,http,ftp’) (‘rhel5′ ‘true’) (‘install-distro’ ‘rhlike’))) (‘domid’ ‘-1′) (‘domarch’ ”) (‘last_boot_CPU_flags’ (‘struct’)) (‘is_control_domain’ (‘boolean’ ‘0’)) (‘metrics’ ‘OpaqueRef:36a9d247-0c51-6cae-34ae-5db9bcae5108′) (‘guest_metrics’ ‘OpaqueRef:NULL’) (‘last_booted_record’ ”) (‘recommendations’ ‘<restrictions><restriction field=\”memory-static-max\” max=\”17179869184\” /><restriction field=\”vcpus-max\” max=\”8\” /><restriction property=\”number-of-vbds\” max=\”7\” /><restriction property=\”number-of-vifs\” max=\”7\” /></restrictions>’) (‘xenstore_data’ (‘struct’)) (‘ha_always_run’ (‘boolean’ ‘0’)) (‘ha_restart_priority’ ”) (‘is_a_snapshot’ (‘boolean’ ‘0’)) (‘snapshot_of’ ‘OpaqueRef:NULL’) (‘snapshots’ (‘array’)) (‘snapshot_time’ (‘dateTime.iso8601′ ‘19700101T00:00:00Z’)) (‘transportable_snapshot_id’ ”) (‘blobs’ (‘struct’)) (‘tags’ (‘array’)) (‘blocked_operations’ (‘struct’)) (‘snapshot_info’ (‘struct’)) (‘snapshot_metadata’ ”) (‘parent’ ‘OpaqueRef:9ebdd1c5-2026-8773-7a06-0c36e67be3f0′) (‘children’ (‘array’)) (‘bios_strings’ (‘struct’)))’

In the data above, it was clear that my HVM boot-policy had no setting so I updated that field with the following command:

xe vm-param-set uuid=f0ddc908-79a9-ea0f-7a22-17c8c4bd983c HVM-boot-policy=BIOS\ order HVM-boot-params:order=”dc”

From there, I was able to start my VM and leverage OpenXenCenter to run through the OS installation.

Final thoughts, I would like to thank Dave Scott from Citrix and Alberto González Rodríguez  from OpenXenCenter for assisting me these past few days while I worked through the memory and CD issues. Hopefully, my experience and notes can be of use to someone else trying out XCP for the first time.