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

Re: Debian Bookworm RC 1 installer- a Bug?




On 4/17/23 21:43, David Wright wrote:
On Mon 17 Apr 2023 at 08:47:30 (-0700), Peter Ehlert wrote:
On 4/16/23 09:29, David Wright wrote:
On Sun 16 Apr 2023 at 07:19:18 (-0700), Peter Ehlert wrote:
On 4/9/23 08:57, David Wright wrote:
On Wed 05 Apr 2023 at 07:03:41 (-0700), Peter Ehlert wrote:
Debian Bookworm RC 1 installer
Damned nice, the improvements are appreciated.
I ran rc1 in my usual manner, and the only difference I noticed was
the one extra question about non-free firmware, to which I replied
yes. (There may well be improvements under the hood, so to speak.)
Oh, and the initrd is somewhat larger, as per usual.

using the new debian-bookworm-DI-rc1-amd64-netinst.iso
Legacy install, GPT partition
I assume Legacy means BIOS booting. Same here, but only one disk.
correct. different term, same thing. Not UEFI
graphic install, manual partitioning
Mate Desktop (others were deselected)
Non-graphical here, a suitable partition existed, and only
standard and SSH server software was installed.

WiFi firmware:
Untested as this machine is a 2006-vintage mini-tower lacking wifi.

[ snipped narrative of later network-switching ]

Boot Loader:
all disk drives were detected, however the one with the bios_grub
partition was highlighted
I can't recall seeing anything other than the first item highlighted,
ie "Enter device manually", at least with the non-graphical installer
in expert mode. I selected the (sole) hard drive, item 2. The only
remaining item was the USB stick containing the installer ISO.

As expected nowadays, when the machine rebooted, the Grub menu
had only two lines, both pointing to the newly installed system.
(I hadn't made any attempt to counteract GRUB_DISABLE_OS_PROBER
during my installation.) So Grub was correctly installed in the
MBR, and the rest of Grub occupied d400 bytes of /dev/sda1 (the
3MB BIOS boot partition on the single disk).

=============
second try, using the debian-live-bkworm-DI-rc1-amd64-mate.iso
same machine and again Legacy install, GPT partition
however I did NOT install from the live session:
I chose to go directly to install rather than the Calamares installer
then manual partitioning

Boot Loader:
all drives were detected, however the one with the bios_grub partition
was NOT highlighted, but I did select it.
GRUB was Not properly installed, my former grub menu was still active.
How did you determine that it was the previous menu. Wouldn't it look
just the same?
I enable GRUB_DISABLE_OS_PROBER so that the various other operating
systems are shown
if the new GRUB is properly installed I get the "new" one item only
GRUB display.
then when I boot the new OS I again enable GRUB_DISABLE_OS_PROBER and
update GRUB
*** I tried a second time, same as above being super careful, same result.

I then booted with my default system, ran grub-install /dev/sde &&
update-grub
then "new" system was on my boot menu.
then booted and it ran as expected.
So you installed Grub on /dev/sde.

Which method did you use to boot the "default" system (which I assume
is bullseye, in a different partition on one or other of the disks),
in view of the rather sparse menu from grub.cfg on the new system?
I boot with the "old" GRUB menu as explained above...it has Several
operating systems listed, my old default OS is still at the top of the
list.
back to the WiFi dongle, again the obscure firmware was properly installed

Is this a Bug or a user/hardware issue?
Presumably we are now back to talking about Grub.

If you still have access to the bookworm system, you can check whether
it claimed to have completed installing Grub successfully. You should
see lines like:

    grub-installer: info: Installing grub on '/dev/sda'
    grub-installer: info: grub-install does not support --no-floppy
    grub-installer: info: Running chroot /target grub-install  --force "/dev/sda"
    grub-installer: Installing for i386-pc platform.
    grub-installer: Installation finished. No error reported.
    grub-installer: info: grub-install ran successfully

in /var/log/installer/syslog.
Thanks, I did not know where to look or what to look for.
I've tidied these lines:

===================
Apr  5 12:59:44 grub-installer: info: Identified partition label for
/dev/sdb12: gpt
Apr  5 13:01:03 grub-installer: info: Installing grub on '/dev/sdb'
Apr  5 13:01:03 grub-installer: info: grub-install does not support
--no-floppy
Apr  5 13:01:03 grub-installer: info: Running chroot /target
grub-install  --force "/dev/sdb"
Apr  5 13:01:03 grub-installer: Installing for i386-pc platform.
Apr  5 13:01:13 grub-installer: grub-install: warning: this GPT
partition label contains no BIOS Boot Partition; embedding won't be
possible.
Apr  5 13:01:13 grub-installer: grub-install: warning: Embedding is
not possible.  GRUB can only be installed in this setup by using
blocklists.  However, blocklists are UNRELIABLE and their use is
discouraged..
Apr  5 13:01:13 grub-installer: Installation finished. No error reported.
Apr  5 13:01:13 grub-installer: info: grub-install ran successfully

====
So that was installing Grub on /dev/sdb. I'm confused. This is a BIOS
machine, so it boots via the MBR. Then it's meant to use blocklists?

But you installed Grub on /dev/sde. Is that using blocklists? Are you
always booting from the same MBR?

Without tying all this down 100%, you have no bug IMO. It seems you
have an extremely fragile boot implementation.

New Information:
in my effort to eliminate the hardware possibility I made several new
installs on three other machines, all with multiple drives, and only
one with the bios_grub partition

at the close of the install we are presented with a "Install the GRUB
boot loader" window/menu
it asks "install the GRUB boot loader to your primary drive" with Yes
and No options

* if I select No it presents a list of my physical drives...
choosing the one with the bios_grub partition does not work, GRUB is
not installed and the same fails are shown in the log.
You're outside my comfort zone. My understanding is that you don't
refresh the MBR, and write a blocklist. (I didn't see failure in
the log, just a robust warning.) But I don't know where that blocklist
is (I don't use them). It would be very easy for them to be overwritten.
Perhaps boot-init-script would help here.

* if I select Yes it again presents the same list of my physical drives...
choosing the one with the bios_grub partition Does work, GRUB is
installed as expected
I though you wrote earlier that that didn't work. (Nine lines after
  "second try, using the debian-live-bkworm-DI-rc1-amd64-mate.iso"
including blank lines.)

logically, I select NO because I have no clue which is the Primary
Drive and fully understand that it needs to point to the one with the
bios_grub partition.
What "needs to point to"? AIUI the Primary drive is the one the BIOS
reads the MBR from by default, ie if you haven't overridden it with
the one-shot boot device menu (ie what Dell typically put on F12).
So the BIOS has to point to the MBR which then points Grub at the
BIOS Boot Partition, when there is one (or more), and that gets you
to a Grub grub.cfg menu, and an OS.

So I'm not confident where your active MBR is (sda, or sdb, or sde;
each disk can have an MBR), and why Grub is writing blocklists
(implying it doesn't know where the BIOS Boot Partition is).
So I'd say the last paragraph, quoted below, still applies.

There's a fair amount of information on the web, too, about
dual-booting Grub, which might be worth perusing.
to my understanding (and experience) GRUB will not write to a GPT
drive without a partition flagged bio_grub
No, that's wrong, and here's the evidence. I installed bookwork-RC1
onto my 2004-vintage laptop into partition four, but with the BIOS
Boot Partition (sda1) concealed from the Grub installer.

  Command (? for help): p
  Disk /dev/sda: 117210240 sectors, 55.9 GiB
  Model: IC25N060ATMR04-0
  Sector size (logical/physical): 512/512 bytes
  Disk identifier (GUID): 9B25D407-FA9E-4A0B-8701-6532B26FAE90
  Partition table holds up to 128 entries
  Main partition table begins at sector 2 and ends at sector 33
  First usable sector is 34, last usable sector is 117210206
  Partitions will be aligned on 2048-sector boundaries
  Total free space is 5181 sectors (2.5 MiB)
  
  Number  Start (sector)    End (sector)  Size       Code  Name
     1            2048            8191   3.0 MiB     0C01  Microsoft reserved
     2            8192         2047999   996.0 MiB   8200  noah02
     3         2048000        41943039   19.0 GiB    8300  Linux filesystem
     4        41943040       117207039   35.9 GiB    8300  Linux filesystem
  
  Command (? for help): w
  
  Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
  PARTITIONS!!
  
  Do you want to proceed? (Y/N): y
  OK; writing new GUID partition table (GPT) to /dev/sda.
  Warning: The kernel is still using the old partition table.
  The new table will be used at the next reboot or after you
  run partprobe(8) or kpartx(8)
  The operation has completed successfully.
  # reboot

The reboot was successful, and was just to check that sda1 is
undamaged (as it shouldn't be).

Here's the output from the partitioner during the installation,
showing no BIOS Boot Partition, and the intended 38.5GB root
filesystem:

  │                                                             │
  │    SCSI1 (0,0,0) (sda) - 60.0 GB ATA IC25N060ATMR04-0       │
  │    >            1.0 MB       FREE SPACE                     │
  │    >     #1     3.1 MB                   Microsoft re       │
  │    >     #2     1.0 GB       ext2        noah02             │
  │    >     #3    20.4 GB       ext4        Linux filesy       │
  │    >     #4    38.5 GB    F  ext4        Linux filesy  /    │
  │    >            1.6 MB       FREE SPACE                     │
  │    SCSI3 (0,0,0) (sdb) - 2.0 GB Generic Flash Disk          │
  │                                                             │

… from the Grub installer:

  ┌─────────────────┤ [!] Install the GRUB boot loader ├──────────────────┐
  │                                                                       │
  │ The following other operating systems have been detected on this      │
  │ computer: Debian GNU/Linux 11 (bullseye)                              │
  │                                                                       │
  │ If all of your operating systems are listed above, then it should be  │
  │ safe to install the boot loader to your primary drive (UEFI           │
  │ partition/boot record). When your computer boots, you will be able to │
  │ choose to load one of these operating systems or the newly installed  │
  │ Debian system                                                         │
  │                                                                       │
  │ Install the GRUB boot loader to your primary drive?     [Yes]


  ┌──────────────────┤ [!] Install the GRUB boot loader ├───────────────────┐
  │                                                                         │
  │ You need to make the newly installed system bootable, by installing     │
  │ the GRUB boot loader on a bootable device. The usual way to do this     │
  │ is to install GRUB to your primary drive (UEFI partition/boot           │
  │ record). You may instead install GRUB to a different drive (or          │
  │ partition), or to removable media.                                      │
  │                                                                         │
  │           Device for boot loader installation:                          │
  │                                                                         │
  │           Enter device manually                                         │
  │           /dev/sda  (ata-IC25N060ATMR04-0_MRG308K3K7VGYH)               │
  │           /dev/sdb  (usb-Generic_Flash_Disk_58F99DC1-0:0)               │
  │                                                            [sda]

And the log is just like yours:

  grub-installer: info: Installing grub on '/dev/sda'
  grub-installer: info: grub-install does not support --no-floppy
  grub-installer: info: Running chroot /target grub-install  --force "/dev/sda"
  grub-installer: Installing for i386-pc platform.
  grub-installer: grub-install: warning:
  grub-installer:
  grub-installer: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible
  grub-installer: .
  grub-installer: grub-install: warning:
  grub-installer: 
  grub-installer: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged.
  grub-installer: .
  grub-installer: Installation finished. No error reported.
  grub-installer: info: grub-install ran successfully
  /bin/in-target: warning: /target/etc/mtab won't be updated since it is a symlink.

At the end of the installation, I rebooted, and the new system was
displayed in the Grub menu as expected, and ran without fuss.

One might opine that the use of blocklists should have been reported,
but the "bug" is on the part of the operator in this case: wrong
partitioning.

Here's what boot-init-script reports:

                   Boot Info Script 0.78      [09 October 2019]
  
  
  ============================= Boot Info Summary: ===============================
  
   => Grub2 (v2.00) is installed in the MBR of /dev/sda and looks at sector
      46412680 of the same hard drive for core.img. core.img is at this location
      and looks for (,gpt4)/boot/grub. It also embeds following components:
  
      modules
      ---------------------------------------------------------------------------
      fshelp ext2 part_gpt biosdisk
      ---------------------------------------------------------------------------

I don't know how to find the sector number of the start of a file on
ext4, so I'll use a crude technique of listing the head of the file,
and then the code at sector 46412680:

$ hexdump -C /acer/boot/grub/i386-pc/core.img | head -n 25
00000000  52 56 be 1b 81 e8 39 01  5e bf f4 81 66 8b 2d 83  |RV....9.^...f.-.|
00000010  7d 08 00 0f 84 e2 00 80  7c ff 00 74 46 66 8b 1d  |}.......|..tFf..|
00000020  66 8b 4d 04 66 31 c0 b0  7f 39 45 08 7f 03 8b 45  |f.M.f1...9E....E|
00000030  08 29 45 08 66 01 05 66  83 55 04 00 c7 04 10 00  |.)E.f..f.U......|
00000040  89 44 02 66 89 5c 08 66  89 4c 0c c7 44 06 00 70  |.D.f.\.f.L..D..p|
00000050  50 c7 44 04 00 00 b4 42  cd 13 0f 82 af 00 bb 00  |P.D....B........|
00000060  70 eb 66 66 8b 45 04 66  09 c0 0f 85 97 00 66 8b  |p.ff.E.f......f.|
00000070  05 66 31 d2 66 f7 34 88  54 0a 66 31 d2 66 f7 74  |.f1.f.4.T.f1.f.t|
00000080  04 88 54 0b 89 44 0c 3b  44 08 7d 79 8b 04 2a 44  |..T..D.;D.}y..*D|
00000090  0a 39 45 08 7f 03 8b 45  08 29 45 08 66 01 05 66  |.9E....E.)E.f..f|
000000a0  83 55 04 00 8a 54 0d c0  e2 06 8a 4c 0a fe c1 08  |.U...T.....L....|
000000b0  d1 8a 6c 0c 5a 52 8a 74  0b 50 bb 00 70 8e c3 31  |..l.ZR.t.P..p..1|
000000c0  db b4 02 cd 13 72 46 8c  c3 8e 45 0a 58 c1 e0 05  |.....rF...E.X...|
000000d0  01 45 0a 60 1e c1 e0 03  89 c1 31 ff 31 f6 8e db  |.E.`......1.1...|
000000e0  fc f3 a5 1f be 23 81 e8  57 00 61 83 7d 08 00 0f  |.....#..W.a.}...|
000000f0  85 24 ff 83 ef 0c e9 16  ff be 25 81 e8 42 00 5a  |.$........%..B.Z|
00000100  ea 00 82 00 00 be 28 81  e8 36 00 eb 06 be 2d 81  |......(..6....-.|
00000110  e8 2e 00 be 32 81 e8 28  00 eb fe 6c 6f 61 64 69  |....2..(...loadi|
00000120  6e 67 00 2e 00 0d 0a 00  47 65 6f 6d 00 52 65 61  |ng......Geom.Rea|
00000130  64 00 20 45 72 72 6f 72  00 bb 01 00 b4 0e cd 10  |d. Error........|
00000140  46 8a 04 3c 00 75 f2 c3  00 00 00 00 00 00 00 00  |F..<.u..........|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 89 33 c4 02  00 00 00 00 37 00 20 08  |.....3......7. .|
00000200  ea 1c 82 00 00 00 00 00  02 5b 00 00 a4 b1 00 00  |.........[......|
$ 

# dd bs=512 if=/dev/sda of=/dev/stdout skip=46412680 count=1 | hexdump -C
1+0 records in
1+0 records out
512 bytes copied, 0.00235733 s, 217 kB/s
00000000  52 56 be 1b 81 e8 39 01  5e bf f4 81 66 8b 2d 83  |RV....9.^...f.-.|
00000010  7d 08 00 0f 84 e2 00 80  7c ff 00 74 46 66 8b 1d  |}.......|..tFf..|
00000020  66 8b 4d 04 66 31 c0 b0  7f 39 45 08 7f 03 8b 45  |f.M.f1...9E....E|
00000030  08 29 45 08 66 01 05 66  83 55 04 00 c7 04 10 00  |.)E.f..f.U......|
00000040  89 44 02 66 89 5c 08 66  89 4c 0c c7 44 06 00 70  |.D.f.\.f.L..D..p|
00000050  50 c7 44 04 00 00 b4 42  cd 13 0f 82 af 00 bb 00  |P.D....B........|
00000060  70 eb 66 66 8b 45 04 66  09 c0 0f 85 97 00 66 8b  |p.ff.E.f......f.|
00000070  05 66 31 d2 66 f7 34 88  54 0a 66 31 d2 66 f7 74  |.f1.f.4.T.f1.f.t|
00000080  04 88 54 0b 89 44 0c 3b  44 08 7d 79 8b 04 2a 44  |..T..D.;D.}y..*D|
00000090  0a 39 45 08 7f 03 8b 45  08 29 45 08 66 01 05 66  |.9E....E.)E.f..f|
000000a0  83 55 04 00 8a 54 0d c0  e2 06 8a 4c 0a fe c1 08  |.U...T.....L....|
000000b0  d1 8a 6c 0c 5a 52 8a 74  0b 50 bb 00 70 8e c3 31  |..l.ZR.t.P..p..1|
000000c0  db b4 02 cd 13 72 46 8c  c3 8e 45 0a 58 c1 e0 05  |.....rF...E.X...|
000000d0  01 45 0a 60 1e c1 e0 03  89 c1 31 ff 31 f6 8e db  |.E.`......1.1...|
000000e0  fc f3 a5 1f be 23 81 e8  57 00 61 83 7d 08 00 0f  |.....#..W.a.}...|
000000f0  85 24 ff 83 ef 0c e9 16  ff be 25 81 e8 42 00 5a  |.$........%..B.Z|
00000100  ea 00 82 00 00 be 28 81  e8 36 00 eb 06 be 2d 81  |......(..6....-.|
00000110  e8 2e 00 be 32 81 e8 28  00 eb fe 6c 6f 61 64 69  |....2..(...loadi|
00000120  6e 67 00 2e 00 0d 0a 00  47 65 6f 6d 00 52 65 61  |ng......Geom.Rea|
00000130  64 00 20 45 72 72 6f 72  00 bb 01 00 b4 0e cd 10  |d. Error........|
00000140  46 8a 04 3c 00 75 f2 c3  00 00 00 00 00 00 00 00  |F..<.u..........|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 89 33 c4 02  00 00 00 00 37 00 20 08  |.....3......7. .|
00000200
# 

I think that confirms that boot-init-script is correct in its
assertion.

I believe it does not use MBR
*
*
The Grub installer certainly doesn't use the MBR if you refuse it.
But the only way you can avoid using this MBR to boot the machine
is by using that MBR, where "this" and "that" are defined by
selections made in the CMOS settings. Most machines will boot from
a floppy/optical drive/USB stick/primary hard drive. Some allow
swapping primary/secondary drives. But one way or another, you
need to use an MBR, and you can chain to another boot record too.

SO: where do I report this Bug/Anomaly?
I assume it should go to the debian-boot list
I would say it's rather premature as a bug report, but more
experienced eyes might help with what's going wrong where.
I did CC this thread to the debian-boot list.
hopefully they can parse and understand what is going on and make it
more user friendly before Bookworm is final.

          
You could install and run boot-info-script, which provides details of
how the system boots, particularly where the MBR code looks for the
BIOS boot partition (ie core.img). BTW do any other disks in this
machine have BIOS boot partitions? (I've one on all my internal disks.)
thanks for that thought
But as far as we're concerned, I think more information is needed,
like what disks there are on the system, which disk the BIOS is
reading the MBR from, the final listing from the partitioner,
particularly any BIOS boot partitions, and so on. Without all that
in the narrative, there's no telling whether it's a bug or not.

        
David: thanks for your response and assistance.

long story short:
GRUB install fails with the debian-live-bkworm-DI-rc1-amd64-mate.iso
installer as described I (poorly) described above.

the debian-bookworm-DI-rc1-amd64-netinst.iso does work as expected.
With the information above, you can easily see why saying No to
writing the MBR will fail.

The installation above wrote an MBR (ie Yes) that pointed to sector
46412680, where it had written Grub's core.img. Booting succeeds.

Now reinstall, but say No to writing the MBR. The d-i will have
written an entirely new filesystem, including all of the contents of
/boot. All the files will have slightly different inodes and sector
positions because the order they were written has a random element.
However, your unrefreshed MBR will still believe that core.img is in
sector 46412680, not knowing that ext2.mod is there instead, and so
booting will fail.

Cheers,
David.

thank you for your input.

my experience is contrary

My problem with GRUB is repeatable, with both the Live ISO and the Netinstall ISO.

I will make fresh installs and file installation-reports to submit@bugs.debian.org in the near future






Reply to: