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