Bug#922101: grub-efi-arm: does not retrieve device-tree from uefi systab and manual devicetree does not work properly to boot armhf kernel

Da Xue da at lessconfused.com
Tue Feb 12 02:27:22 GMT 2019


Please also note the additional grub.cfg fix that we added:

### BEGIN /etc/grub.d/01_arm-efi-dt-fix ###

A secondary issue (for grub-efi-armhf) should also be created
regarding the detection of the grub module needed for /boot. That does
not seem to be happening and we have to explicitly do an insmod.

A tertiary issue (for grub-efi armhf and arm64) that we have
experienced and need feedback on is the support for part_msdos with
grub-install to support mbr partitioning schemes. A lot of armhf
systems use a boot sector that conflicts with GPT so the two
alternatives are to ship with a broken GPT table and let the system
use the backup table or support MBR. We currently address this with
adding "--modules=part_msdos" to grub-install and are fine continuing
to do so but it would warrant some consideration to just support it
out of the box.


On Mon, Feb 11, 2019 at 9:03 PM Da Xue <da+debianbug at lessconfused.com>
wrote:

> Package: grub-efi-arm
> Version: 2.02~beta3-5+deb9u1
> Severity: important
>
> Dear Maintainer,
>
>
>    * What led up to the situation?
>    Install grub (bootarm.efi) and update-grub on armhf system.
>
>    * What exactly did you do (or not do) that was effective (or
>      ineffective)?
>    We pass the device tree from u-boot to GRUB2 via UEFI systab. It is
>    not automatically used by the current version of grub so we have to
>    manually execute "devicetree" and point it to a device tree binary
>    file. However even with this manual intervention, the kernel still
>    hangs. The problem does not occur on arm64 systems or the GRUB2
>    version in Ubuntu 18.04.
>
>    * What was the outcome of this action?
>    System hangs trying to boot the kernel.
>
>    * What outcome did you expect instead?
>    System boots normally like its arm64 equivalent.
>
> -- Package-specific info:
>
>
> *********************** BEGIN /boot/grub/grub.cfg
> #
> # DO NOT EDIT THIS FILE
> #
> # It is automatically generated by grub-mkconfig using templates
> # from /etc/grub.d and settings from /etc/default/grub
> #
>
> ### BEGIN /etc/grub.d/00_header ###
> if [ -s $prefix/grubenv ]; then
>   set have_grubenv=true
>   load_env
> fi
> if [ "${next_entry}" ] ; then
>    set default="${next_entry}"
>    set next_entry=
>    save_env next_entry
>    set boot_once=true
> else
>    set default="0"
> fi
>
> if [ x"${feature_menuentry_id}" = xy ]; then
>   menuentry_id_option="--id"
> else
>   menuentry_id_option=""
> fi
>
> export menuentry_id_option
>
> if [ "${prev_saved_entry}" ]; then
>   set saved_entry="${prev_saved_entry}"
>   save_env saved_entry
>   set prev_saved_entry=
>   save_env prev_saved_entry
>   set boot_once=true
> fi
>
> function savedefault {
>   if [ -z "${boot_once}" ]; then
>     saved_entry="${chosen}"
>     save_env saved_entry
>   fi
> }
> function load_video {
>   if [ x$feature_all_video_module = xy ]; then
>     insmod all_video
>   else
>     insmod efi_gop
>     insmod efi_uga
>     insmod ieee1275_fb
>     insmod vbe
>     insmod vga
>     insmod video_bochs
>     insmod video_cirrus
>   fi
> }
>
> if [ x$feature_default_font_path = xy ] ; then
>    font=unicode
> else
> insmod part_msdos
> insmod btrfs
> if [ x$feature_platform_search_hint = xy ]; then
>   search --no-floppy --fs-uuid --set=root
> 18cc3e39-63bd-472e-a499-9502faf91f5c
> else
>   search --no-floppy --fs-uuid --set=root
> 18cc3e39-63bd-472e-a499-9502faf91f5c
> fi
>     font="/@/usr/share/grub/unicode.pf2"
> fi
>
> if loadfont $font ; then
>   set gfxmode=auto
>   load_video
>   insmod gfxterm
> fi
> terminal_output gfxterm
> if [ "${recordfail}" = 1 ] ; then
>   set timeout=30
> else
>   if [ x$feature_timeout_style = xy ] ; then
>     set timeout_style=menu
>     set timeout=5
>   # Fallback normal timeout code in case the timeout_style feature is
>   # unavailable.
>   else
>     set timeout=5
>   fi
> fi
> ### END /etc/grub.d/00_header ###
>
> ### BEGIN /etc/grub.d/01_arm-efi-dt-fix ###
> insmod fat
> search --no-floppy --fs-uuid --set=efi_root D3C2-D27A
> devicetree ($efi_root)/dtb/libre-computer/all-h3-cc-h3/board.dtb
> ### END /etc/grub.d/01_arm-efi-dt-fix ###
>
> ### BEGIN /etc/grub.d/05_debian_theme ###
> set menu_color_normal=cyan/blue
> set menu_color_highlight=white/blue
> ### END /etc/grub.d/05_debian_theme ###
>
> ### BEGIN /etc/grub.d/10_linux ###
> function gfxmode {
>         set gfxpayload="${1}"
> }
> set linux_gfx_mode=
> export linux_gfx_mode
> menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu
> --class os $menuentry_id_option
> 'gnulinux-simple-18cc3e39-63bd-472e-a499-9502faf91f5c' {
>         load_video
>         insmod gzio
>         if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
>         insmod part_msdos
>         insmod btrfs
>         if [ x$feature_platform_search_hint = xy ]; then
>           search --no-floppy --fs-uuid --set=root
> 18cc3e39-63bd-472e-a499-9502faf91f5c
>         else
>           search --no-floppy --fs-uuid --set=root
> 18cc3e39-63bd-472e-a499-9502faf91f5c
>         fi
>         echo    'Loading Linux 4.19.20-02331-g673856cba2f5-dirty ...'
>         linux   /@/boot/vmlinuz-4.19.20-02331-g673856cba2f5-dirty
> root=UUID=18cc3e39-63bd-472e-a499-9502faf91f5c ro rootflags=subvol=@
> noquiet
>         echo    'Loading initial ramdisk ...'
>         initrd  /@/boot/initrd.img-4.19.20-02331-g673856cba2f5-dirty
> }
> submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option
> 'gnulinux-advanced-18cc3e39-63bd-472e-a499-9502faf91f5c' {
>         menuentry 'Debian GNU/Linux, with Linux
> 4.19.20-02331-g673856cba2f5-dirty' --class debian --class gnu-linux --class
> gnu --class os $menuentry_id_option
> 'gnulinux-4.19.20-02331-g673856cba2f5-dirty-advanced-18cc3e39-63bd-472e-a499-9502faf91f5c'
> {
>                 load_video
>                 insmod gzio
>                 if [ x$grub_platform = xxen ]; then insmod xzio; insmod
> lzopio; fi
>                 insmod part_msdos
>                 insmod btrfs
>                 if [ x$feature_platform_search_hint = xy ]; then
>                   search --no-floppy --fs-uuid --set=root
> 18cc3e39-63bd-472e-a499-9502faf91f5c
>                 else
>                   search --no-floppy --fs-uuid --set=root
> 18cc3e39-63bd-472e-a499-9502faf91f5c
>                 fi
>                 echo    'Loading Linux 4.19.20-02331-g673856cba2f5-dirty
> ...'
>                 linux   /@/boot/vmlinuz-4.19.20-02331-g673856cba2f5-dirty
> root=UUID=18cc3e39-63bd-472e-a499-9502faf91f5c ro rootflags=subvol=@
> noquiet
>                 echo    'Loading initial ramdisk ...'
>                 initrd
> /@/boot/initrd.img-4.19.20-02331-g673856cba2f5-dirty
>         }
>         menuentry 'Debian GNU/Linux, with Linux
> 4.19.20-02331-g673856cba2f5-dirty (recovery mode)' --class debian --class
> gnu-linux --class gnu --class os $menuentry_id_option
> 'gnulinux-4.19.20-02331-g673856cba2f5-dirty-recovery-18cc3e39-63bd-472e-a499-9502faf91f5c'
> {
>                 load_video
>                 insmod gzio
>                 if [ x$grub_platform = xxen ]; then insmod xzio; insmod
> lzopio; fi
>                 insmod part_msdos
>                 insmod btrfs
>                 if [ x$feature_platform_search_hint = xy ]; then
>                   search --no-floppy --fs-uuid --set=root
> 18cc3e39-63bd-472e-a499-9502faf91f5c
>                 else
>                   search --no-floppy --fs-uuid --set=root
> 18cc3e39-63bd-472e-a499-9502faf91f5c
>                 fi
>                 echo    'Loading Linux 4.19.20-02331-g673856cba2f5-dirty
> ...'
>                 linux   /@/boot/vmlinuz-4.19.20-02331-g673856cba2f5-dirty
> root=UUID=18cc3e39-63bd-472e-a499-9502faf91f5c ro single rootflags=subvol=@
>                 echo    'Loading initial ramdisk ...'
>                 initrd
> /@/boot/initrd.img-4.19.20-02331-g673856cba2f5-dirty
>         }
> }
>
> ### END /etc/grub.d/10_linux ###
>
> ### BEGIN /etc/grub.d/20_linux_xen ###
>
> ### END /etc/grub.d/20_linux_xen ###
>
> ### BEGIN /etc/grub.d/30_os-prober ###
> ### END /etc/grub.d/30_os-prober ###
>
> ### BEGIN /etc/grub.d/30_uefi-firmware ###
> menuentry 'System setup' $menuentry_id_option 'uefi-firmware' {
>         fwsetup
> }
> ### END /etc/grub.d/30_uefi-firmware ###
>
> ### BEGIN /etc/grub.d/40_custom ###
> # This file provides an easy way to add custom menu entries.  Simply type
> the
> # menu entries you want to add after this comment.  Be careful not to
> change
> # the 'exec tail' line above.
> ### END /etc/grub.d/40_custom ###
>
> ### BEGIN /etc/grub.d/41_custom ###
> if [ -f  ${config_directory}/custom.cfg ]; then
>   source ${config_directory}/custom.cfg
> elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
>   source $prefix/custom.cfg;
> fi
> ### END /etc/grub.d/41_custom ###
> *********************** END /boot/grub/grub.cfg
>
> *********************** END /proc/mdstat
> -- System Information:
> Debian Release: 9.7
>   APT prefers stable-updates
>   APT policy: (500, 'stable-updates'), (500, 'stable')
> Architecture: armhf (armv7l)
>
> Kernel: Linux 4.19.18-041918-generic (SMP w/16 CPU cores)
> Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=ANSI_X3.4-1968)
> (ignored: LC_ALL set to C), LANGUAGE=C (charmap=ANSI_X3.4-1968) (ignored:
> LC_ALL set to C)
> Shell: /bin/sh linked to /bin/dash
> Init: unable to detect
>
> Versions of packages grub-efi-arm depends on:
> ii  debconf [debconf-2.0]  1.5.61
> ii  dpkg                   1.18.25
> ii  grub-common            2.02~beta3-5+deb9u1
> ii  grub-efi-arm-bin       2.02~beta3-5+deb9u1
> ii  grub2-common           2.02~beta3-5+deb9u1
> ii  ucf                    3.0036
>
> grub-efi-arm recommends no packages.
>
> grub-efi-arm suggests no packages.
>
> -- debconf information:
>   grub2/device_map_regenerated:
>   grub2/kfreebsd_cmdline_default: quiet
>   grub2/linux_cmdline_default: quiet
>   grub2/linux_cmdline:
>   grub2/update_nvram: true
>   grub2/kfreebsd_cmdline:
>   grub2/force_efi_extra_removable: false
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grub-devel/attachments/20190211/05a37b77/attachment-0001.html>


More information about the Pkg-grub-devel mailing list