update-grub не видит мою установку win10

Вопрос или проблема

Этот вопрос был перемещен с SuperUser, потому что я не получил там обратной связи. Надеюсь на большую удачу здесь.

Скорее всего, моя проблема немного глубже, чем говорит тема.

ФОКУС:

Моя основная проблема, похоже, в том, что GRUB2 не устанавливается чисто, даже при загрузке с “живого” носителя для установки. Все другие проблемы кажутся следствиями. Некоторые детали в ОБНОВЛЕНИИ 3; Я оставлю всю историю для справки.

Немного истории:

  • Эта рабочая станция была создана как машина Debian SID с корнем на SSD (sda2, раздел теперь отсутствует) и отдельным диском /home (теперь также отсутствует).
  • Я добавил установку Linux Mint 20 (sda5, текущая) с повторным использованием области подкачки (sda4).
  • Диск /home начал давать сбои (так сказал S.M.A.R.T.), и я заменил его на массив ZFS в raidz2 (sdc..sdf, текущий).
  • Я преобразовал таблицу разделов DOS на sda в GPT.
  • В этом состоянии у меня все еще было меню загрузки “debian”, отображаемое GRUB.
  • Я установил новый диск (sdb) и установил на него Windows10. Обратите внимание:
    • Я удалил (физически отключил) все диски при установке, чтобы предотвратить “непреднамеренное обновление” других разделов.
    • Этот диск на самом деле в съемном отсеке, поэтому может случиться, что он “отсутствует”, и таким образом все другие имена приводов смещаются на sdb..sde.
    • Этот диск на самом деле в съемном отсеке, поэтому он может быть заменен (я на самом деле использую это для резервного копирования).
  • Позже я удалил раздел Debian, так как он не использовался.

Текущая ситуация немного странная:

  • BIOS “меню переопределения загрузки” отображает:
    • Меню загрузки Debian (нефункциональное, если выбрано, то мигающий курсор в верхнем левом углу – это все, что я вижу).
    • Диспетчер загрузки Windows (функциональный, корректно запускается Win10)
    • Диск0 (sda, функциональный, загружает Linux Mint)
    • все другие диски (не пробовал)
  • Загрузка по умолчанию в BIOS настроена на Disk0, но она не будет запускаться автоматически, мне нужно “переопределить загрузку” каждый раз.
  • Команда reboot Linux Mint, похоже, не проходит через BIOS, и я не могу (т.е.: я не нашел способа) переопределить загрузку, так что она зависает.
  • Команда update-grub не изменяет ничего и не видит Win, даже если раздел win смонтирован (см. ниже).
  • Команда install-grub /dev/sda отказывается работать, потому что у меня UEFI BIOS.
  • Команда grub-install --target=x86_64-efi --efi-directory=/tmp/esp --bootloader-id=GRUB не удается (см. ниже).
  • Команда grub-install --target=i386-pc --efi-directory=/tmp/esp --bootloader-id=GRUB также не удается (с другим сообщением).

Как я могу исправить эту ситуацию?

mcon@cinderella:~$ sudo -i
root@cinderella:~# mount /dev/sdb4 /mnt
root@cinderella:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931,5G  0 disk 
├─sda1   8:1    0   476M  0 part 
├─sda4   8:4    0   3,7G  0 part [SWAP]
└─sda5   8:5    0 143,1G  0 part /
sdb      8:16   0 698,7G  0 disk 
├─sdb1   8:17   0   499M  0 part 
├─sdb2   8:18   0   100M  0 part 
├─sdb3   8:19   0    16M  0 part 
└─sdb4   8:20   0   698G  0 part /mnt
sdc      8:32   0   2,7T  0 disk 
├─sdc1   8:33   0   2,7T  0 part 
└─sdc9   8:41   0     8M  0 part 
sdd      8:48   0   2,7T  0 disk 
├─sdd1   8:49   0   2,7T  0 part 
└─sdd9   8:57   0     8M  0 part 
sde      8:64   0   2,7T  0 disk 
├─sde1   8:65   0   2,7T  0 part 
└─sde9   8:73   0     8M  0 part 
sdf      8:80   0   2,7T  0 disk 
├─sdf1   8:81   0   2,7T  0 part 
└─sdf9   8:89   0     8M  0 part 
root@cinderella:~# update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/50_linuxmint.cfg'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.0-53-generic
Found initrd image: /boot/initrd.img-5.4.0-53-generic
Found linux image: /boot/vmlinuz-5.4.0-52-generic
Found initrd image: /boot/initrd.img-5.4.0-52-generic
Found linux image: /boot/vmlinuz-5.4.0-51-generic
Found initrd image: /boot/initrd.img-5.4.0-51-generic
Found linux image: /boot/vmlinuz-5.4.0-40-generic
Found initrd image: /boot/initrd.img-5.4.0-40-generic
Found linux image: /boot/vmlinuz-5.4.0-26-generic
Found initrd image: /boot/initrd.img-5.4.0-26-generic
device-mapper: reload ioctl on osprober-linux-sdc1  failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sdd1  failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sde1  failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sdf1  failed: Device or resource busy
Command failed.
done
root@cinderella:~# mkdir /tmp/esp
root@cinderella:~# mount /dev/sda1 /tmp/esp
root@cinderella:~# grub-install --target=x86_64-efi --efi-directory=/tmp/esp --bootloader-id=GRUB
grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn't exist. Please specify --target or --directory.
root@cinderella:~# grub-install --target=i386-pc --efi-directory=/tmp/esp --bootloader-id=GRUB
Installing for i386-pc platform.
grub-install: error: install device isn't specified.

ОБНОВЛЕНИЕ 1:

Примечание: Я кажется задаю здесь несколько вопросов, потому что я сильно подозреваю, что моя основная проблема одна, и она вызывает все (или большинство) симптомов, которые я сообщаю. Я не считаю, что они являются несвязанными вопросами.

Следуя совету, я запустил grub-mkconfig (см. ниже), который на самом деле действительно запускает os-probe, но, по-видимому, он не видит установку win10 на /dev/sdb4, смонтированном на /mnt.

Я вижу ошибки на sdc1..sdf1 (мой массив zfs; я считаю это нормальным), но я не вижу упоминания о sdb вообще.

Есть ли какие-либо дальнейшие советы?

mcon@cinderella:~$ sudo -i
root@cinderella:~# mount /dev/sdb4 /mnt
root@cinderella:~# apt install os-prober
Reading package lists... Done
Building dependency tree       
Reading state information... Done
os-prober is already the newest version (1.74ubuntu2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@cinderella:~# grub-mkconfig
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/50_linuxmint.cfg'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
#
# 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 [ "${initrdfail}" = 2 ]; then
   set initrdfail=
elif [ "${initrdfail}" = 1 ]; then
   set next_entry="${prev_entry}"
   set prev_entry=
   save_env prev_entry
   if [ "${next_entry}" ]; then
      set initrdfail=2
   fi
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 initrdfail {
    if [ -n "${have_grubenv}" ]; then if [ -n "${partuuid}" ]; then
      if [ -z "${initrdfail}" ]; then
        set initrdfail=1
        if [ -n "${boot_once}" ]; then
          set prev_entry="${default}"
          save_env prev_entry
        fi
      fi
      save_env initrdfail
    fi; fi
}
function recordfail {
  set recordfail=1
  if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; 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_gpt
insmod ext2
set root="hd0,gpt5"
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
else
  search --no-floppy --fs-uuid --set=root cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
  set timeout=30
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=hidden
    set timeout=10
  # Fallback hidden-timeout code in case the timeout_style feature is
  # unavailable.
  elif sleep --interruptible 10 ; then
    set timeout=0
  fi
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
    set gfxpayload="${1}"
    if [ "${1}" = "keep" ]; then
        set vt_handoff=vt.handoff=7
    else
        set vt_handoff=
    fi
}
if [ "${recordfail}" != 1 ]; then
  if [ -e ${prefix}/gfxblacklist.txt ]; then
    if hwmatch ${prefix}/gfxblacklist.txt 3; then
      if [ ${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
export linux_gfx_mode
Found linux image: /boot/vmlinuz-5.4.0-54-generic
Found initrd image: /boot/initrd.img-5.4.0-54-generic
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-cb358c7d-8b36-47d5-b59d-fd66e2b1ef74' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_gpt
    insmod ext2
    set root="hd0,gpt5"
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
    else
      search --no-floppy --fs-uuid --set=root cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
    fi
    linux   /boot/vmlinuz-5.4.0-54-generic root=UUID=cb358c7d-8b36-47d5-b59d-fd66e2b1ef74 ro  quiet splash $vt_handoff
    initrd  /boot/initrd.img-5.4.0-54-generic
}
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-cb358c7d-8b36-47d5-b59d-fd66e2b1ef74' {
    menuentry 'Ubuntu, with Linux 5.4.0-54-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-54-generic-advanced-cb358c7d-8b36-47d5-b59d-fd66e2b1ef74' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root="hd0,gpt5"
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        else
          search --no-floppy --fs-uuid --set=root cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        fi
        echo    'Loading Linux 5.4.0-54-generic ...'
        linux   /boot/vmlinuz-5.4.0-54-generic root=UUID=cb358c7d-8b36-47d5-b59d-fd66e2b1ef74 ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-5.4.0-54-generic
    }
    menuentry 'Ubuntu, with Linux 5.4.0-54-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-54-generic-recovery-cb358c7d-8b36-47d5-b59d-fd66e2b1ef74' {
        recordfail
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root="hd0,gpt5"
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        else
          search --no-floppy --fs-uuid --set=root cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        fi
        echo    'Loading Linux 5.4.0-54-generic ...'
        linux   /boot/vmlinuz-5.4.0-54-generic root=UUID=cb358c7d-8b36-47d5-b59d-fd66e2b1ef74 ro recovery nomodeset dis_ucode_ldr 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-5.4.0-54-generic
    }
Found linux image: /boot/vmlinuz-5.4.0-53-generic
Found initrd image: /boot/initrd.img-5.4.0-53-generic
    menuentry 'Ubuntu, with Linux 5.4.0-53-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-53-generic-advanced-cb358c7d-8b36-47d5-b59d-fd66e2b1ef74' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root="hd0,gpt5"
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        else
          search --no-floppy --fs-uuid --set=root cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        fi
        echo    'Loading Linux 5.4.0-53-generic ...'
        linux   /boot/vmlinuz-5.4.0-53-generic root=UUID=cb358c7d-8b36-47d5-b59d-fd66e2b1ef74 ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-5.4.0-53-generic
    }
    menuentry 'Ubuntu, with Linux 5.4.0-53-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-53-generic-recovery-cb358c7d-8b36-47d5-b59d-fd66e2b1ef74' {
        recordfail
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root="hd0,gpt5"
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        else
          search --no-floppy --fs-uuid --set=root cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        fi
        echo    'Loading Linux 5.4.0-53-generic ...'
        linux   /boot/vmlinuz-5.4.0-53-generic root=UUID=cb358c7d-8b36-47d5-b59d-fd66e2b1ef74 ro recovery nomodeset dis_ucode_ldr 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-5.4.0-53-generic
    }
Found linux image: /boot/vmlinuz-5.4.0-26-generic
Found initrd image: /boot/initrd.img-5.4.0-26-generic
    menuentry 'Ubuntu, with Linux 5.4.0-26-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-26-generic-advanced-cb358c7d-8b36-47d5-b59d-fd66e2b1ef74' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root="hd0,gpt5"
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        else
          search --no-floppy --fs-uuid --set=root cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        fi
        echo    'Loading Linux 5.4.0-26-generic ...'
        linux   /boot/vmlinuz-5.4.0-26-generic root=UUID=cb358c7d-8b36-47d5-b59d-fd66e2b1ef74 ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-5.4.0-26-generic
    }
    menuentry 'Ubuntu, with Linux 5.4.0-26-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-26-generic-recovery-cb358c7d-8b36-47d5-b59d-fd66e2b1ef74' {
        recordfail
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root="hd0,gpt5"
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        else
          search --no-floppy --fs-uuid --set=root cb358c7d-8b36-47d5-b59d-fd66e2b1ef74
        fi
        echo    'Loading Linux 5.4.0-26-generic ...'
        linux   /boot/vmlinuz-5.4.0-26-generic root=UUID=cb358c7d-8b36-47d5-b59d-fd66e2b1ef74 ro recovery nomodeset dis_ucode_ldr 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-5.4.0-26-generic
    }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/10_linux_zfs ###
### END /etc/grub.d/10_linux_zfs ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
device-mapper: reload ioctl on osprober-linux-sdc1  failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sdd1  failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sde1  failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sdf1  failed: Device or resource busy
Command failed.
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
### 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 ###
done

ОБНОВЛЕНИЕ 2:

Следуя совету здесь, я полностью переустановил GRUB; через несколько мгновений я увижу, изменилось ли что-нибудь (win10, кажется, все равно отсутствует).

root@cinderella:~# apt-get install --reinstall grub-efi-amd64
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  grub-efi-amd64-bin grub-efi-amd64-signed
The following packages will be REMOVED:
  grub-gfxpayload-lists grub-pc
The following NEW packages will be installed:
  grub-efi-amd64 grub-efi-amd64-bin grub-efi-amd64-signed
0 upgraded, 3 newly installed, 2 to remove and 0 not upgraded.
Need to get 1.219 kB of archives.
After this operation, 11,6 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://es-mirrors.evowise.com/ubuntu focal-updates/main amd64 grub-efi-amd64-bin amd64 2.04-1ubuntu26.6 [703 kB]
Get:2 http://es-mirrors.evowise.com/ubuntu focal-updates/main amd64 grub-efi-amd64 amd64 2.04-1ubuntu26.6 [46,7 kB]
Get:3 http://es-mirrors.evowise.com/ubuntu focal-updates/main amd64 grub-efi-amd64-signed amd64 1.142.8+2.04-1ubuntu26.6 [469 kB]
Fetched 1.219 kB in 1s (1.030 kB/s)            
Preconfiguring packages ...
(Reading database ... 466657 files and directories currently installed.)
Removing grub-pc (2.04-1ubuntu26.6) ...
Removing grub-gfxpayload-lists (0.7) ...
Selecting previously unselected package grub-efi-amd64-bin.
(Reading database ... 466635 files and directories currently installed.)
Preparing to unpack .../grub-efi-amd64-bin_2.04-1ubuntu26.6_amd64.deb ...
Unpacking grub-efi-amd64-bin (2.04-1ubuntu26.6) ...
Selecting previously unselected package grub-efi-amd64.
Preparing to unpack .../grub-efi-amd64_2.04-1ubuntu26.6_amd64.deb ...
Unpacking grub-efi-amd64 (2.04-1ubuntu26.6) ...
Selecting previously unselected package grub-efi-amd64-signed.
Preparing to unpack .../grub-efi-amd64-signed_1.142.8+2.04-1ubuntu26.6_amd64.deb ...
Unpacking grub-efi-amd64-signed (1.142.8+2.04-1ubuntu26.6) ...
Setting up grub-efi-amd64-bin (2.04-1ubuntu26.6) ...
Setting up grub-efi-amd64 (2.04-1ubuntu26.6) ...
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/50_linuxmint.cfg'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.0-54-generic
Found initrd image: /boot/initrd.img-5.4.0-54-generic
Found linux image: /boot/vmlinuz-5.4.0-53-generic
Found initrd image: /boot/initrd.img-5.4.0-53-generic
Found linux image: /boot/vmlinuz-5.4.0-26-generic
Found initrd image: /boot/initrd.img-5.4.0-26-generic
device-mapper: reload ioctl on osprober-linux-sdc1  failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sdd1  failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sde1  failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sdf1  failed: Device or resource busy
Command failed.
done
Setting up grub-efi-amd64-signed (1.142.8+2.04-1ubuntu26.6) ...
Processing triggers for man-db (2.9.1-1) ...

Отчет об ОБНОВЛЕНИИ 2:

После переустановки изменений нет. Я все еще вижу (неработающий) пункт “debian” в BIOS и все еще могу загрузить Linux Mint, выбрав первый физический диск.

ОБНОВЛЕНИЕ 3

Как посоветовал @oldfred, я попробовал запустить boot-repair после:

  • исправления /etc/fstab удаления устаревшей ссылки на /dev/sda2 (старая установка debian, теперь удалена).
  • загрузки с установочного носителя Linux Mint (USB-ключ).

Boot-repair предложил некоторые исправления, и, после пересмотра, я позволил ему выполнять свои дела без изменений.

Все закончилось с ошибкой.

Произошла ошибка во время ремонта.

Обнаружен заблокированный ESP. Вы можете захотеть повторить попытку после создания раздела /boot/efi (FAT32, 100MB~250MB, начало диска, флаг загрузки). Это можно сделать с помощью таких инструментов, как gParted. Затем выберите этот раздел через опцию [Separate /boot/efi partition:] опции [Boot Repair].

После небольшого поиска в интернете я подчинился и:

  • запустил gparted
  • удалил раздел /dev/sda1 (UEFI)
  • пере-создал 128MiB раздел (снова /dev/sda1, другой размер) форматированный как FAT32
  • установил флаг загрузки на раздел
  • повторно запустил boot-repair
  • проверил, что Separate /boot/efi partition: на самом деле указывает на /dev/sda1
  • позволил ему запуститься.
  • получил ту же самую, идентичную, ошибку.

Журналы обоих запусков доступны, если они считаются полезными (просто попросите, я загружу их на какой-либо сайт pastebin).

ОБНОВЛЕНИЕ 4:

После полного удаления/пере-создания раздела UEFI на загрузочном диске (/dev/sda1) и нескольких попыток переустановки GRUB2 у меня теперь следующая “стабильная” ситуация:

  • если я загружаюсь без вмешательства, я попадаю в Linux Mint (/dev/sda4).
  • если я останавливаю BIOS и запрашиваю “альтернативную загрузку”, я получаю меню (от BIOS), содержащее:
    [                    пустая строка                     ]
    [ Windows Boot Manager (P1: ST750LM022 HN-M750MB B) ]
    [           UEFI OS (P0: CT1000MX500SSD4)           ]
    [                P0: CT1000MX500SSD4                ]
    [                P3: TOSHIBA HDWD130                ]
    [                P4: TOSHIBA HDWD130                ]
    [                P5: TOSHIBA HDWD130                ]
    [                P2: TOSHIBA HDWD130                ]
    [             P1: ST750LM022 HN-M750MB B            ]
    [                   Войти в настройки BIOS                     ]
  • Windows Boot... корректно загружает Win10.
  • UEFI OS отобразит меню GRUB.
  • Меню GRUB будет содержать два “Windows-пункта”, но их выбор просто отобразит сообщение “Неверная подпись”; только записи, относящиеся к Linux, кажутся рабочими.

Пожалуйста, дайте совет.

Здесь много вопросов. Я просто отвечу на вопрос о отсутствующей Windows 10, указанной в заголовке.

Убедитесь, что у вас установлен пакет os-prober. apt install os-prober должен справиться с этим. Это приложение используется grub для обнаружения других операционных систем.

Затем выполните команду sudo grub-mkconfig. Вывод будет напечатан на stdout. Вы должны увидеть что-то подобное в журнале:

### BEGIN /etc/grub.d/30_os-prober ###
Found Windows 10 on /dev/sda1
menuentry 'Windows 10 (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-967C12CC7C12A6D1' {
        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=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,мsδοs1  967C12CC7C12A6D1
        else
          search --no-floppy --fs-uuid --set=root 967C12CC7C12A6D1
        fi
        parttool ${root} hidden-
        drivemap -s (hd0) ${root}
        chainloader +1
}
### END /etc/grub.d/30_os-prober ###

Если это так, то вы действительно видите, что os-prober был вызван. Если вас устраивает вывод, то снова запустите команду и перенаправьте ее вывод в /boot/ вот так: sudo grub-mkconfig > /boot/grub/grub.cfg

Вот как это работает:

grub-common разворачивает /etc/grub.d/30_os-prober, который читается и выполняется grub-mkconfig. Он запустит os-prober, если:

  1. он существует (пакет установлен), и
  2. GRUB_DISABLE_OS_PROBER не равно “true”

Ответ или решение

Обновление GRUB не видит мою установку Windows 10

Описание проблемы: Вы сталкиваетесь с проблемой, когда GRUB2 не обнаруживает вашу установку Windows 10, что вызывает трудности в переключении и загрузке между операционными системами.

  1. Фокус на ключевых проблемах:

    • Основная проблема заключается в том, что GRUB2 не устанавливается корректно, даже при запуске с "живой" инсталляционной среды.
    • Команда update-grub не обнаруживает установку Windows 10.
    • Вы сталкиваетесь с проблемами установки GRUB в среде UEFI.
  2. История и текущая ситуация:

    • Ваш компьютер ранее использовал Debian SID, затем вы добавили Linux Mint 20.
    • Вы сменили таблицу разделов диска с DOS на GPT и установили Windows 10 на новый диск, отключив другие диски для предотвращения случайного изменения разделов.
    • BIOS предлагает выбор между различными вариантами загрузки, включая неработающий "debian" и корректно работающий Windows Boot Manager.
  3. Проблемы с GRUB:

    • update-grub не обнаруживает Windows 10, и есть ошибки, связанные с zfs массивами.
    • Попытки установки GRUB вручную через UEFI или BIOS интерфейсы – безуспешны.
  4. Решение проблемы:

    • Пакет os-prober: Убедитесь, что пакет os-prober установлен, так как он отвечает за обнаружение других операционных систем. Установите его через sudo apt install os-prober.

    • Использование grub-mkconfig: Запустите sudo grub-mkconfig для генерации нового конфигурационного файла GRUB. Проверьте вывод на наличие обнаружения Windows 10. Ждем строчку типа Found Windows 10 on /dev/sdbX.

    • Обновление конфигурации GRUB: Если grub-mkconfig правильно определяет Windows, обновите файл конфигурации grub, выполнив sudo grub-mkconfig > /boot/grub/grub.cfg.

  5. Возможные дополнительные решения:

    • Проверка GRUB_DISABLE_OS_PROBER: Убедитесь, что в файле /etc/default/grub переменная GRUB_DISABLE_OS_PROBER не выставлена в "true". Если она включена, это предотвратит выполнение os-prober.

    • Проблемы с UEFI: Обратите внимание на ошибки, связанные с UEFI, и, если необходимо, создайте новый ESP (EFI System Partition), как было предложено в использовании Boot Repair.

    • Ручное добавление записи Windows в GRUB: Если автоматически обнаружить не удается, можно вручную отредактировать файл /etc/grub.d/40_custom и добавить туда запись для Windows.

  6. Консультационная помощь:

    • Учитывая сложность проблемы, возможно, будет полезно обратиться за помощью к специалисту или на форумы, где могут находится эксперты, знакомые с подобными сложностями.
  7. Контрольная проверка и финальный тест:

    • Перезагрузите компьютер после всех изменений, чтобы убедиться в корректности изменения конфигурации GRUB и возможности загрузки Windows с меню выбора.

Помните, что правильное диагностирование и использование всех доступных инструментов помогут успешно решить проблему с мультизагрузкой.

Оцените материал
Добавить комментарий

Капча загружается...