On 20/04/2025 at 23:03, Richard Allen wrote:

What led up to the situation? I've setup two operating system disks. Windows 10
is on the primary boot disk with its own bootloader(HD0 below).
Debian12+Grub2.06 is on another disk which I select from the BIOS(HD1 below).
Once a baremetal OS is booted, I boot the other disk under VirtualBox.

What exactly did you do (or not do) that was effective (or ineffective)? I
attempted to boot my Grub2.06+Debian/12 disk inside of VirtualBox on Windows
10. However, I looked away and grub timed out and chose Windows10(whose disk is
not visible in the VM)

What was the outcome of this action? Grub reported:
     error: no such device: ${Win10_DISK_ID}

UUID search fails as expected, $root remains hd0,msdos1 (Debian partition).

     setting partition type to 0x83

parttool ($root) hidden- sets the partition type to 0x83 (Linux filesystem, same as previously, so no change). It is the only command which writes to the MBR. I acknowledge that GRUB should be smart and not rewrite the MBR if there is no change.

     error:disk `hd0,msdos1’ not found

GRUB does not see the partition any more.

I have attached the MBRs of both disks, before and after this point.

It appears that the contents of hd1_debian.after was shifted by one byte, which makes it totally unrecogizable by the BIOS, fdisk or any other tool. This is really surprising. I could not reproduce it in a QEMU+SeaBIOS virtual machine. Could it be a bug with VirtualBox ?

A possible workaround is to remove the parttool command in /etc/grub.d/30_os-prober and rebuild grub.cfg with update-grub. This command is not needed here, use cases which require it are very rare nowadays.

*********************** BEGIN /boot/grub/grub.cfg
(...)
menuentry 'Windows 10 (on /dev/sdc1)' --class windows --class os 
$menuentry_id_option 'osprober-chain-7460727360723BC4' {
        insmod part_msdos
        insmod ntfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos1 
--hint-efi=hd2,msdos1 --hint-baremetal=ahci2,msdos1 --hint='hd0,msdos1'  
7460727360723BC4
        else
          search --no-floppy --fs-uuid --set=root 7460727360723BC4
        fi
        parttool ${root} hidden-
        drivemap -s (hd0) ${root}
        chainloader +1
}

Reply via email to