git.annexia.org
/
mclu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixes to allow (32 bit) arm guests to run on aarch64 hosts.
[mclu.git]
/
mclu_boot.ml
diff --git
a/mclu_boot.ml
b/mclu_boot.ml
index
6da1bc5
..
c1054e5
100644
(file)
--- 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
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 =
(* 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",
| "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;
<boot dev='hd'/>
" in
let xml =
<boot dev='hd'/>
" in
let xml =
- match remote_arch with
+ match guest_arch with
+ | "arm" | "armv7" | "armv7l" | "armv7hl" ->
+ xml ^ "\
+ <type arch='armv7l' machine='virt'>hvm</type>
+"
| "aarch64" ->
| "aarch64" ->
- xml ^
sprintf
"\
+ xml ^ "\
<type machine='virt'>hvm</type>
"
| _ ->
<type machine='virt'>hvm</type>
"
| _ ->
@@
-297,8
+309,10
@@
Try: `mclu on %s'\n" hostname hostname;
</console>
" in
let xml =
</console>
" in
let xml =
- if remote_arch = "x86_64" then (
- xml ^ "\
+ match guest_arch with
+ | "i386" | "i486" | "i586" | "i686"
+ | "x86_64" ->
+ xml ^ "\
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
@@
-307,8
+321,7
@@
Try: `mclu on %s'\n" hostname hostname;
<model type='cirrus' vram='9216' heads='1'/>
</video>
"
<model type='cirrus' vram='9216' heads='1'/>
</video>
"
- ) else
- xml in
+ | _ -> xml in
let xml = xml ^ "\
</devices>
</domain>" in
let xml = xml ^ "\
</devices>
</domain>" 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 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
fpf "export name=%s\n" (quote name);
fpf "export output=%s\n" (quote remote_image);
(match size with