[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [OSSTEST PATCH 4/6] Debian: preferred arch: Honour LinuxKernPreferredArchInfo



Nothing sets this yet.

Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
 Osstest/Debian.pm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/Osstest/Debian.pm b/Osstest/Debian.pm
index 600f18b1..addaaad2 100644
--- a/Osstest/Debian.pm
+++ b/Osstest/Debian.pm
@@ -1334,6 +1334,44 @@ END
        preseed_hook_command($ho, 'late_command', $sfx, $cmds);
     });
 
+    my $kern_arch_info = $xopts{LinuxKernPreferredArchInfo};
+    # LinuxKernPreferredArchInfo contains
+    #    Kernel_Debian     the Debian arch for the kernel we would prefer
+    my $kern_arch = $kern_arch_info->{Kernel_Debian};
+    if ($kern_arch &&
+       $ho->{Flags}{"arch-$r{arch}"} && !$ho->{Flags}{"arch-$kern_arch"}) {
+       # We check the flag for $r{arch} because for various reasons
+       # it may not be set.  For example, in standalone mode it is
+       # currently not normally necessary to set any arch hostflags.
+       # In that situation we bet that the kern arch can be used;
+       # this is a good bet because currently this is used for
+       # running amd64 kernels with i386 userland and hosts that can
+       # do only i386 are fairly rare, especially server hosts.
+       # If this causes a problem, setting the i386 host flag will
+       # (somewhat counterintuitively) cause this check to miss
+       # the amd64 host flag
+       logm("NOT using $kern_arch kernel (flags say not supported by host)");
+       $kern_arch = undef;
+    }
+    if ($kern_arch) {
+       logm("Using $kern_arch kernel for $r{arch} userland");
+       preseed_hook_command($ho, 'late_command', $sfx, <<END);
+#!/bin/sh
+set -ex
+in-target sh -xec '
+    # the $r{arch} kernels end up being the default so shuffle them
+    # where update-grub will not find them
+    for f in /boot/vmlinu*; do
+        dpkg-divert --rename --divert "/boot/~disable~\${f##*/}" "\$f"
+    done
+    dpkg --add-architecture $kern_arch
+    apt-get update
+    apt-get install -f -y linux-image-$kern_arch
+    update-grub
+'
+END
+    }
+
     if ( $ho->{Flags}{'need-uboot-bootscr'} ) {
        my @bootargs = uboot_common_kernel_bootargs($ho);
 
-- 
2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.