Вопрос или проблема
Этот вопрос был перемещен с 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
, если:
- он существует (пакет установлен), и
GRUB_DISABLE_OS_PROBER
не равно “true”
Ответ или решение
Обновление GRUB не видит мою установку Windows 10
Описание проблемы: Вы сталкиваетесь с проблемой, когда GRUB2 не обнаруживает вашу установку Windows 10, что вызывает трудности в переключении и загрузке между операционными системами.
-
Фокус на ключевых проблемах:
- Основная проблема заключается в том, что GRUB2 не устанавливается корректно, даже при запуске с "живой" инсталляционной среды.
- Команда
update-grub
не обнаруживает установку Windows 10. - Вы сталкиваетесь с проблемами установки GRUB в среде UEFI.
-
История и текущая ситуация:
- Ваш компьютер ранее использовал Debian SID, затем вы добавили Linux Mint 20.
- Вы сменили таблицу разделов диска с DOS на GPT и установили Windows 10 на новый диск, отключив другие диски для предотвращения случайного изменения разделов.
- BIOS предлагает выбор между различными вариантами загрузки, включая неработающий "debian" и корректно работающий Windows Boot Manager.
-
Проблемы с GRUB:
update-grub
не обнаруживает Windows 10, и есть ошибки, связанные с zfs массивами.- Попытки установки GRUB вручную через UEFI или BIOS интерфейсы – безуспешны.
-
Решение проблемы:
-
Пакет 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
.
-
-
Возможные дополнительные решения:
-
Проверка 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.
-
-
Консультационная помощь:
- Учитывая сложность проблемы, возможно, будет полезно обратиться за помощью к специалисту или на форумы, где могут находится эксперты, знакомые с подобными сложностями.
-
Контрольная проверка и финальный тест:
- Перезагрузите компьютер после всех изменений, чтобы убедиться в корректности изменения конфигурации GRUB и возможности загрузки Windows с меню выбора.
Помните, что правильное диагностирование и использование всех доступных инструментов помогут успешно решить проблему с мультизагрузкой.