Bug 1102131

Summary: Fatal error "ARM with non-EFI" in yast2-bootloader module on Raspberry Pi 2 model B
Product: [openSUSE] openSUSE Tumbleweed Reporter: Sergio Lindo <sergiolindo.empresa>
Component: YaST2Assignee: E-mail List <yast2-maintainers>
Status: RESOLVED FIXED QA Contact: Jiri Srain <jsrain>
Severity: Normal    
Priority: P5 - None CC: afaerber, agraf, guillaume.gardet, jreidinger, kanderssen, locilka, sergiolindo.empresa
Version: CurrentFlags: kanderssen: needinfo? (jreidinger)
Target Milestone: ---   
Hardware: armv7   
OS: openSUSE Factory   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: y2log

Description Sergio Lindo 2018-07-21 21:28:26 UTC
Created attachment 777687 [details]
y2log

Steps to reproduce:

1. Open yast2-bootloader
2. Go to tab "Bootloader Options"
3. Change the timeout

Yast will ask you to install the necessary packages to configure the bootloader and it will get a fatal error.
Comment 1 Knut Alejandro Anderssen González 2018-07-23 10:56:39 UTC
Josef,

Could you check it?
Comment 2 Josef Reidinger 2018-07-23 11:11:15 UTC
Sergio - can you please check content of /etc/sysconfig/bootloader? It looks like it sets grub2 and not grub2-efi. But yast2-bootloader currently supports only EFI boot on aarch.
Comment 3 Sergio Lindo 2018-07-23 11:16:44 UTC
It is set to grub2. AFAIK it is necessary for RPI since it doesn't use EFI.

Here the content of /etc/sysconfig/bootloader:

DEFAULT_APPEND="loglevel=3 splash=silent plymouth.enable=0 dwc_otg.lpm_enable=0 console=ttyAMA0,115200n8 kgdboc=ttyAMA0,115200 console=tty rootflags=commit=120,data=writeback root=UUID=27a10a70-becf-4b05-b4e1-18b631523af3 rw "
FAILSAFE_APPEND="loglevel=3 splash=silent plymouth.enable=0 dwc_otg.lpm_enable=0 console=ttyAMA0,115200n8 kgdboc=ttyAMA0,115200 console=tty rootflags=commit=120,data=writeback root=UUID=27a10a70-becf-4b05-b4e1-18b631523af3 rw  ide=nodma apm=off noresume edd=off nomodeset 3 "
LOADER_LOCATION="mbr"
LOADER_TYPE="grub2"

## Path:	System/Bootloader
## Description:	Bootloader configuration
## Type:	yesno
## Default:	"no"
#
# Enable UEFI Secure Boot support
# This setting is only relevant to UEFI which supports Secure Boot. It won't
# take effect on any other firmware type.
#
#
SECURE_BOOT="no"

## Path:	System/Bootloader
## Description:	Bootloader configuration
## Type:	yesno
## Default:	"no"
#
# Enable Trusted Boot support
# Only available for legacy (non-UEFI) boot.
#
TRUSTED_BOOT="no"
Comment 4 Josef Reidinger 2018-07-23 11:19:39 UTC
(In reply to Sergio Lindo from comment #3)
> It is set to grub2. AFAIK it is necessary for RPI since it doesn't use EFI.
> 
> Here the content of /etc/sysconfig/bootloader:
> 
> DEFAULT_APPEND="loglevel=3 splash=silent plymouth.enable=0
> dwc_otg.lpm_enable=0 console=ttyAMA0,115200n8 kgdboc=ttyAMA0,115200
> console=tty rootflags=commit=120,data=writeback
> root=UUID=27a10a70-becf-4b05-b4e1-18b631523af3 rw "
> FAILSAFE_APPEND="loglevel=3 splash=silent plymouth.enable=0
> dwc_otg.lpm_enable=0 console=ttyAMA0,115200n8 kgdboc=ttyAMA0,115200
> console=tty rootflags=commit=120,data=writeback
> root=UUID=27a10a70-becf-4b05-b4e1-18b631523af3 rw  ide=nodma apm=off
> noresume edd=off nomodeset 3 "
> LOADER_LOCATION="mbr"
> LOADER_TYPE="grub2"
> 
> ## Path:	System/Bootloader
> ## Description:	Bootloader configuration
> ## Type:	yesno
> ## Default:	"no"
> #
> # Enable UEFI Secure Boot support
> # This setting is only relevant to UEFI which supports Secure Boot. It won't
> # take effect on any other firmware type.
> #
> #
> SECURE_BOOT="no"
> 
> ## Path:	System/Bootloader
> ## Description:	Bootloader configuration
> ## Type:	yesno
> ## Default:	"no"
> #
> # Enable Trusted Boot support
> # Only available for legacy (non-UEFI) boot.
> #
> TRUSTED_BOOT="no"

well, then I worry yast2-bootloader does not support it. aarch support was added by arm guys and I do not have much clue how easy/hard is to add support also for non-EFI.
Comment 5 Knut Alejandro Anderssen González 2018-07-24 15:24:30 UTC
So, what to do about this bug? Shall we add it as a feature request?
Comment 6 Josef Reidinger 2018-07-25 06:47:59 UTC
(In reply to Knut Alejandro Anderssen González from comment #5)
> So, what to do about this bug? Shall we add it as a feature request?

well, it depends on arm guys. I expect yast2-bootloader part will be smaller one, but we need info how:

1) recognize that it is not EFI arm
2) grub2 will work on arm
3) what grub2 target should be used there
4) anything other that is needed in future bug report

I think currently RPi booting is done by preload image, so no grub2 involved.

Andreas - as you did initial bootloader support for arm, I hope you can answer this questions and also suggest how to proceed.

Thanks
Comment 7 Lukas Ocilka 2018-07-25 07:34:38 UTC
Please see FATE #323484: Enable normal SLES installation in the Raspberry Pi

We plan to support it, but it hasn't been done yet.

Josef: Take a look at that feature and try to understand what they need from
       us; ask if something is missing

Sergio: I'm afraid it's a ... bug, but unsupported yet, so feature?

Knut: All above :)
Comment 8 Andreas Färber 2018-07-25 09:25:07 UTC
openSUSE on Raspberry Pi 2 (and 1/0) has been using UEFI for quite some time, so unless someone from the community wants to contribute something else, we should stick to UEFI. We are working with Arm and others on an EBBR specification that will mandate that compliant embedded systems use (a subset of) UEFI for booting.
https://github.com/ARM-software/ebbr

I'll have to double-check at home how my /etc/sysconfig/bootloader looks, i.e. whether this is a regression in Kiwi generating those configs, or whether some check inside yast2-bootloader is misdetecting things. I recall that I had to wait on some pull requests to get merged and then didn't follow up yet for further dependent armv7hl changes: Mainly 32-bit arm should behave similar to aarch64 as opposed to x86 default, but the grub2 packaging slightly differs, with armv7hl defaulting to a U-Boot target and efi being an optional package (whereas aarch64 has efi only).
Comment 9 Alexander Graf 2018-07-25 13:19:19 UTC
The currently published armv7 tree does not contain kiwi fix 384392360 yet, so the LOADER_TYPE variable is set incorrectly.

This has been resolved in newer kiwi versions (v9.15.3 and higher) and the currently built tumbleweed image is built with 9.16.2 so the next published tumbleweed image should also include the fix.

If you want to try the latest unpublished image, please run osc getbinaries openSUSE:Factory:ARM:Live images armv7l JeOS:JeOS-raspberrypi2