Hi Vladimir
On 9 May 2017 at 14:59, Vladimir 'phcoder' Serbinenko <phcoder@gmail.com> wrote:
>
>
> Le Tue, May 2, 2017 à 9:06 AM, <fu.wei@linaro.org> a écrit :
>>
>> From: Fu Wei <fu.wei@linaro.org>
>>
>> This patch adds the support of xen_boot command for aarch64:
>> xen_hypervisor
>> xen_module
>> These two commands are only for aarch64, since it has its own protocol and
>> commands to boot xen hypervisor and Dom0, but not multiboot.
>>
>> For other architectures, they are still using multiboot and module
>> commands.
>>
>> Signed-off-by: Fu Wei <fu.wei@linaro.org>
>> ---
>> util/grub.d/20_linux_xen.in | 13 ++++++++++---
>> 1 file changed, 10 insertions(+), 3 deletions(-)
>>
>> diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
>> index c48af94..9777719 100644
>> --- a/util/grub.d/20_linux_xen.in
>> +++ b/util/grub.d/20_linux_xen.in
>> @@ -122,16 +122,16 @@ linux_entry ()
>> else
>> xen_rm_opts="no-real-mode edd=off"
>> fi
>> - multiboot ${rel_xen_dirname}/${xen_basename} placeholder
>> ${xen_args} \${xen_rm_opts}
>> + ${xen_loader} ${rel_xen_dirname}/${xen_basename} placeholder
>> ${xen_args} \${xen_rm_opts}
>> echo '$(echo "$lmessage" | grub_quote)'
>> - module ${rel_dirname}/${basename} placeholder
>> root=${linux_root_device_thisversion} ro ${args}
>> + ${module_loader} ${rel_dirname}/${basename} placeholder
>> root=${linux_root_device_thisversion} ro ${args}
>> EOF
>> if test -n "${initrd}" ; then
>> # TRANSLATORS: ramdisk isn't identifier. Should be translated.
>> message="$(gettext_printf "Loading initial ramdisk ...")"
>> sed "s/^/$submenu_indentation/" << EOF
>> echo '$(echo "$message" | grub_quote)'
>> - module --nounzip ${rel_dirname}/${initrd}
>> + ${module_loader} --nounzip ${rel_dirname}/${initrd}
>> EOF
>> fi
>> sed "s/^/$submenu_indentation/" << EOF
>> @@ -206,6 +206,13 @@ while [ "x${xen_list}" != "x" ] ; do
>> if [ "x$is_top_level" != xtrue ]; then
>> echo " submenu '$(gettext_printf "Xen hypervisor, version %s"
>> "${xen_version}" | grub_quote)' \$menuentry_id_option
>> 'xen-hypervisor-$xen_version-$boot_device_id' {"
>> fi
>> + if [ "x$machine" != xaarch64 ]; then
>
> Machine of grub-mkconfig doesn't necessarily match the kernel. Think of
> chroot or of having 32-bit userspace with 64-bit kernel. Better to do this
> on runtime. I know, it's not very nice but the whole grub-mkconfig is
> trouble that needs redesign that I'm working on.
So if we need to do this at run time(in grub shell), can I use
"grub_cpu" variable instead?
Yes, you can. Another possibility, probably better, is to check actual file type, see grub-file
Thanks!
>>
>> + xen_loader="multiboot"
>> + module_loader="module"
>> + else
>> + xen_loader="xen_hypervisor"
>> + module_loader="xen_module"
>> + fi
>> while [ "x$list" != "x" ] ; do
>> linux=`version_find_latest $list`
>> gettext_printf "Found linux image: %s\n" "$linux" >&2
>> --
>> 2.9.3
>>
>
--
Best regards,
Fu Wei
Software Engineer
Red Hat