Bug 246494

Summary: [PATCH] misc: add the boot flag to the i386 memstick.img release (MBR)
Product: Base System Reporter: Jorge Maidana <jorgem.seq>
Component: miscAssignee: Ed Maste <emaste>
Status: Closed FIXED    
Severity: Affects Only Me CC: emaste
Priority: --- Keywords: patch
Version: CURRENT   
Hardware: i386   
OS: Any   
See Also: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=246191
Attachments:
Description Flags
release/i386/make-memstick.sh patch none

Description Jorge Maidana 2020-05-16 05:56:58 UTC
Created attachment 214543 [details]
release/i386/make-memstick.sh patch

The UFS partition of the i386 memstick.img is missing the boot flag.
Comment 1 Ed Maste freebsd_committer freebsd_triage 2020-05-21 21:37:24 UTC
I observed a failure on a Lenovo X220 while attempting to use FreeBSD-13.0-CURRENT-i386-20200521-r361307-mini-memstick.img.xz due to this issue; the system reported

Non-system disk
Press any key to reboot

Fixed by running from another machine:
# gpart set -a active -i 2 da0

This patch looks correct and I'll take care of it; we'll also need to figure out how far back this broke.
Comment 2 Ed Maste freebsd_committer freebsd_triage 2020-05-21 21:53:12 UTC
It looks like this was probably introduced by r342283 which added a 2nd partition to the i386 memstick. That change was actually a mistake for i386 though, as we do not have any EFI boot support for i386, so we should revert the i386 part of r342283.
Comment 3 Ed Maste freebsd_committer freebsd_triage 2020-05-24 18:12:34 UTC
By default mkimg makes the first partition active, if no -a flag:

# gpart show md0
=>     1  712744  md0  MBR  (348M)
       1   66584    1  efi  [active]  (33M)
   66585  646160    2  freebsd  (316M)

We need to at least revert the i386 part of r342283, which will restore the active flag on the bootcode-containing UFS partition. We may want to also explicitly specify `-a 1` in the hope that someone making a change similar to r342283 in the future will realize the need to update it, but it's not strictly necessary.
Comment 4 commit-hook freebsd_committer freebsd_triage 2020-05-24 18:26:34 UTC
A commit references this bug:

Author: emaste
Date: Sun May 24 18:25:50 UTC 2020
New revision: 361437
URL: https://svnweb.freebsd.org/changeset/base/361437

Log:
  Make i386 memstick images bootable.

  This reverts the i386 part of r342283, "Rework UEFI ESP generation", and
  the followup commit in r342690.

  r342283 added an ESP to the i386 memstick image, and as a side effect
  made the ESP the active partition, not the bootcode-containing UFS
  partition.  As a result the i386 memstick images would not boot in
  either UEFI or legacy mode - UEFI failed because we do not support i386
  UEFI booting, and legacy mode failed because the partition with legacy
  bootcode was not active.

  The bootcode-containing UFS partition is again the only, and active,
  partition.

  PR:		246494
  Reported by:	Jorge Maidana
  Differential Revision:	The FreeBSD Foundation

Changes:
  head/release/i386/make-memstick.sh