X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=mclu_boot.ml;fp=mclu_boot.ml;h=c1054e5226f949cc29385dc4c5490c29c0509907;hb=5f5bfbd6da3c0994be68d163bc3d0bc5205d8609;hp=6da1bc52f197378b83194530ce25353ade1ea712;hpb=099084e3b0f22483f2bbe1cd9d4d5b5a7a137c8d;p=mclu.git diff --git a/mclu_boot.ml b/mclu_boot.ml index 6da1bc5..c1054e5 100644 --- a/mclu_boot.ml +++ b/mclu_boot.ml @@ -170,9 +170,17 @@ Try: `mclu on %s'\n" hostname hostname; let remote_external_initrd = sprintf "/var/tmp/%s.boot/initrd" name in let remote_arch = node.MS.node_status.node_info.model in + (* Guest arch defaults to the node host arch, but can be overridden + * in the template. + *) + let guest_arch = + match template_info.Template.guest_arch with + | Some arch -> arch + | None -> remote_arch in + (* UEFI firmware and NVRAM on remote, if required. *) let nvram = - match remote_arch with + match guest_arch with | "aarch64" -> Some ("/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw", "/usr/share/edk2.git/aarch64/vars-template-pflash.raw", @@ -204,9 +212,13 @@ Try: `mclu on %s'\n" hostname hostname; " in let xml = - match remote_arch with + match guest_arch with + | "arm" | "armv7" | "armv7l" | "armv7hl" -> + xml ^ "\ + hvm +" | "aarch64" -> - xml ^ sprintf "\ + xml ^ "\ hvm " | _ -> @@ -297,8 +309,10 @@ Try: `mclu on %s'\n" hostname hostname; " in let xml = - if remote_arch = "x86_64" then ( - xml ^ "\ + match guest_arch with + | "i386" | "i486" | "i586" | "i686" + | "x86_64" -> + xml ^ "\ @@ -307,8 +321,7 @@ Try: `mclu on %s'\n" hostname hostname; " - ) else - xml in + | _ -> xml in let xml = xml ^ "\ " in @@ -387,6 +400,7 @@ Try: `mclu on %s'\n" hostname hostname; fpf "export LIBGUESTFS_BACKEND_SETTINGS=network_bridge=br0\n"; fpf "export base_image=%s\n" (quote template_info.Template.base_image); fpf "export format=%s\n" (quote format); + fpf "export guest_arch=%s\n" (quote guest_arch); fpf "export name=%s\n" (quote name); fpf "export output=%s\n" (quote remote_image); (match size with