Все способы:
- Способ 1: Установка Windows на диск с Linux
- Способ 2: Обнаружение раздела Windows
- Способ 3: Ручное добавление загрузчика
- Вопросы и ответы: 0
Способ 1: Установка Windows на диск с Linux
Одной из наиболее распространенных причин отсутствия Windows 10 в загрузочном меню «Grub» является установка Windows не на тот же физический диск, на который устанавливается Linux. Если нужно установить на один компьютер Windows и Linux, устанавливайте их по возможности на один физический жесткий диск, причем первой необходимо установить Windows. Если сперва будет установлена Linux, а затем Windows, то есть большая вероятность, что загрузчик Windows затрет «Grub».
Способ 2: Обнаружение раздела Windows
Если переустановка Windows 10 по какой-то причине невозможна, попробуйте обнаружить ее из среды Linux и добавить в загрузчик последней.
- Определите в Linux название раздела, на который установлена Windows. Получить сведения о дисках и разделах в Linux можно как из «Терминала», так и с помощью штатного приложения «Дисковая утилита». Скопируйте или запомните название устройства. Например, это будет «/dev/sda1».
- Откройте «Терминал» и примонтируйте раздел с Windows 10, для чего выполните команду
sudo mount -t ntfs-3g -o ro /dev/sda1
, где /dev/sda1 — полученный на предыдущем этапе путь к тому с Windows. - Чтобы обнаружить Windows 10, выполните тут же в «Терминале» команду
sudo os-prober
. - В случае успешного обнаружения Windows обновите конфигурацию «Grub» командой
sudo update-grub
либо жеsudo grub2-mkconfig -o /boot/grub/grub.cfg
.
Способ 3: Ручное добавление загрузчика
При использовании первого способа вероятность сходу обнаружить и прописать Windows 10 в линуксовый загрузчик довольно невелика. Более сложным, но и более эффективным способом восстановления записи Windows 10 в загрузочном меню Grub является ручное добавление. Способ универсальный, использовать его можно не только при потере Windows 10, но и других операционных систем Windows.
- Узнайте название раздела с Windows как было показано в первом пункте предыдущего способа.
- Определите UUID раздела, на котором установлена Windows 10, для чего выполните в «Терминале» команду
blkid /dev/sda1
, где /dev/sda1 — название раздела с Windows. - Откройте любым текстовым редактором файл
/etc/grub.d/40_custom
и вставьте в него следующий код, где XXXXXXXXXXXXXXXX — полученный на предыдущем шаге UUID:menuentry "Windows 10" {
.
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set XXXXXXXXXXXXXXXX
chainloader +1
}
Сохраните файл. - Обновите конфигурацию Grub командой
sudo update-grub
, перезагрузите компьютер и посмотрите, появилась ли Windows в загрузочном меню Grub.
Если восстановить/добавить запись Windows 10 в загрузочное меню «Grub» не удалось, проверьте, не удален ли на диске служебный 100 МБ NTFS-раздел с загрузочными файлами. Если удален, можно будет попробовать его восстановить, но будет гораздо проще переустановить Windows и Linux. В том случае, когда используется «Grub 2» на UEFI, попробуйте включить в BIOS режим «Legacy».
Наша группа в TelegramПолезные советы и помощь
На ssd стояла windows 10.
Разбил hdd под установку linux mint, но после его установки загружалась только windows 10. Решил это чистой установкой Linux, установщик разбил диск как ему надо. Как итог linux грузится, windows 10 — нет, и кроме того не могу войти в настройки bios: меню загрузки там пустое, bios setup не открывается.
В меню загрузки grub есть только linux.
Есть ли способ добавить windows в меню загрузчика grub, как убедиться, что она сможет запуститься, и это не убьет работающий Linux?
Grub выглядит так:
По команде lsblk результат такой:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465,8G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 465,3G 0 part /
sdb 8:16 0 118G 0 disk
├─sdb1 8:17 0 117,2G 0 part
└─sdb2 8:18 0 790M 0 part
Для диска, на котором лежит windows: blkid /dev/sdb1
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 245839254 245837207 117,2G 7 HPFS/NTFS/exFAT
/dev/sdb2 245839872 247457791 1617920 790M 27 Hidden NTFS WinRE
blkid /dev/sdb1. Странный лейбл раздела с windows 10. Критично ли это?
/dev/sdb1: LABEL="M-PM-^TM-PM-8M-QM-^AM-PM-:" UUID="2EE6EE17E6EDDF59" TYPE="ntfs" PARTUUID="d7209484-01"
upd
Добавил руками пункт загрузки в grub как написано в статье.
menuentry "Windows 10" {
insmod ntfs
set root='(hd1,1)'
search --no-floppy --fs-uuid --set 2EE6EE17E6EDDF59
chainloader +1
}
При выборе — error: invalid EFI file path.
ps. Если бы была возможность зайти в bios, с удовольствием бы снес все и накатил заново винду (или восстановил с загрузочной флешки). С проблемой столкнулся не впервые, но в прошлый раз пришлось прибегнуть к прошивке bios на программаторе. Хотелось бы обойтись без такой хирургии, тк не желательно отдавать ноут на несколько дней.
— Вопрос возникал 1001 раз, если вдруг не найдёте ответа расскажите тогда как искали. В противном случае у желающих помочь может не оказаться мотивации это делать 😈…
Я уже многое посмотрел, обходя варианты после которых можно лишиться данных. Просто у меня не простой случай, я перед установкой возможно нахимичил что-то со структурой диска или с разметкой, если я правильно понимаю. Мне кажется у меня должен быть не простой случай
Пользователь добавил сообщение 11 Апреля 2018, 20:23:27:
Вместо скриншотов, которые не открываются, кинь лучше выхлоп команд:
Ооого! А есть варианты по проще.. Во всяком случае вот, результат по команде
cat /boot/grub/grub.cfg
#
# 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 [ "${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 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_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 1afa1241-c56b-4b62-a4df-38df059b1ea0
else
search --no-floppy --fs-uuid --set=root 1afa1241-c56b-4b62-a4df-38df059b1ea0
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=ru_RU
insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
set timeout=10
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=10
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=10
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/06_mint_theme ###
set menu_color_normal=white/black
set menu_color_highlight=white/light-gray
### END /etc/grub.d/06_mint_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
menuentry 'Linux Mint 18.3 Cinnamon 64-bit' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-1afa1241-c56b-4b62-a4df-38df059b1ea0' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 1afa1241-c56b-4b62-a4df-38df059b1ea0
else
search --no-floppy --fs-uuid --set=root 1afa1241-c56b-4b62-a4df-38df059b1ea0
fi
linux /boot/vmlinuz-4.13.0-38-generic root=UUID=1afa1241-c56b-4b62-a4df-38df059b1ea0 ro quiet splash $vt_handoff
initrd /boot/initrd.img-4.13.0-38-generic
}
submenu 'Advanced options for Linux Mint 18.3 Cinnamon 64-bit' $menuentry_id_option 'gnulinux-advanced-1afa1241-c56b-4b62-a4df-38df059b1ea0' {
menuentry 'Linux Mint 18.3 Cinnamon 64-bit, with Linux 4.13.0-38-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.13.0-38-generic-advanced-1afa1241-c56b-4b62-a4df-38df059b1ea0' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 1afa1241-c56b-4b62-a4df-38df059b1ea0
else
search --no-floppy --fs-uuid --set=root 1afa1241-c56b-4b62-a4df-38df059b1ea0
fi
echo 'Loading Linux 4.13.0-38-generic ...'
linux /boot/vmlinuz-4.13.0-38-generic root=UUID=1afa1241-c56b-4b62-a4df-38df059b1ea0 ro quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.13.0-38-generic
}
menuentry 'Linux Mint 18.3 Cinnamon 64-bit, with Linux 4.13.0-38-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.13.0-38-generic-init-upstart-1afa1241-c56b-4b62-a4df-38df059b1ea0' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 1afa1241-c56b-4b62-a4df-38df059b1ea0
else
search --no-floppy --fs-uuid --set=root 1afa1241-c56b-4b62-a4df-38df059b1ea0
fi
echo 'Loading Linux 4.13.0-38-generic ...'
linux /boot/vmlinuz-4.13.0-38-generic root=UUID=1afa1241-c56b-4b62-a4df-38df059b1ea0 ro quiet splash $vt_handoff init=/sbin/upstart
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.13.0-38-generic
}
menuentry 'Linux Mint 18.3 Cinnamon 64-bit, with Linux 4.13.0-38-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.13.0-38-generic-recovery-1afa1241-c56b-4b62-a4df-38df059b1ea0' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 1afa1241-c56b-4b62-a4df-38df059b1ea0
else
search --no-floppy --fs-uuid --set=root 1afa1241-c56b-4b62-a4df-38df059b1ea0
fi
echo 'Loading Linux 4.13.0-38-generic ...'
linux /boot/vmlinuz-4.13.0-38-generic root=UUID=1afa1241-c56b-4b62-a4df-38df059b1ea0 ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.13.0-38-generic
}
menuentry 'Linux Mint 18.3 Cinnamon 64-bit, with Linux 4.10.0-38-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-38-generic-advanced-1afa1241-c56b-4b62-a4df-38df059b1ea0' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 1afa1241-c56b-4b62-a4df-38df059b1ea0
else
search --no-floppy --fs-uuid --set=root 1afa1241-c56b-4b62-a4df-38df059b1ea0
fi
echo 'Loading Linux 4.10.0-38-generic ...'
linux /boot/vmlinuz-4.10.0-38-generic root=UUID=1afa1241-c56b-4b62-a4df-38df059b1ea0 ro quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.10.0-38-generic
}
menuentry 'Linux Mint 18.3 Cinnamon 64-bit, with Linux 4.10.0-38-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-38-generic-init-upstart-1afa1241-c56b-4b62-a4df-38df059b1ea0' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 1afa1241-c56b-4b62-a4df-38df059b1ea0
else
search --no-floppy --fs-uuid --set=root 1afa1241-c56b-4b62-a4df-38df059b1ea0
fi
echo 'Loading Linux 4.10.0-38-generic ...'
linux /boot/vmlinuz-4.10.0-38-generic root=UUID=1afa1241-c56b-4b62-a4df-38df059b1ea0 ro quiet splash $vt_handoff init=/sbin/upstart
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.10.0-38-generic
}
menuentry 'Linux Mint 18.3 Cinnamon 64-bit, with Linux 4.10.0-38-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-38-generic-recovery-1afa1241-c56b-4b62-a4df-38df059b1ea0' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 1afa1241-c56b-4b62-a4df-38df059b1ea0
else
search --no-floppy --fs-uuid --set=root 1afa1241-c56b-4b62-a4df-38df059b1ea0
fi
echo 'Loading Linux 4.10.0-38-generic ...'
linux /boot/vmlinuz-4.10.0-38-generic root=UUID=1afa1241-c56b-4b62-a4df-38df059b1ea0 ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.10.0-38-generic
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/10_lupin ###
### END /etc/grub.d/10_lupin ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry 'Memory test (memtest86+)' {
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 1afa1241-c56b-4b62-a4df-38df059b1ea0
else
search --no-floppy --fs-uuid --set=root 1afa1241-c56b-4b62-a4df-38df059b1ea0
fi
knetbsd /boot/memtest86+.elf
}
menuentry 'Memory test (memtest86+, serial console 115200)' {
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 1afa1241-c56b-4b62-a4df-38df059b1ea0
else
search --no-floppy --fs-uuid --set=root 1afa1241-c56b-4b62-a4df-38df059b1ea0
fi
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 10 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-9040830C4082F86C' {
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,msdos1 9040830C4082F86C
else
search --no-floppy --fs-uuid --set=root 9040830C4082F86C
fi
parttool ${root} hidden-
drivemap -s (hd0) ${root}
chainloader +1
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10
fi
### 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 ###
antosha@antosha-Lenovo-B570e ~ $ lsblk -o NAME,SIZE,MOUNTPOINT,UUID
две карты памяти, одну SD вторую microSD. Хотя глупо наверно вам говорить, если только новичкам вдруг поможет..
NAME SIZE MOUNTPOINT UUID
sdb 1,9G 2015-09-23-13-50-43-00
└─sdb1 338M F187-5709
sda 465,8G
├─sda2 348,6G /media/antosha/8CEE9481EE946 8CEE9481EE94656C
├─sda5 65,4G / 1afa1241-c56b-4b62-a4df-38df059b1ea0
├─sda3 23,7G D640C28840C26EB5
├─sda1 500M 9040830C4082F86C
└─sda6 7,9G [SWAP] c30b8a75-894c-44a8-8f5a-2eace8d889be
sr1 128M 2012-05-22-06-00-00-00
mmcblk0 3,8G
└─mmcblk0p1
3,8G /media/antosha/MYLINUXLIVE 24C7-3930
Кстати, я же записал образ AcronisTrueImage на microSD в модеме, это лайв образ с программой для настройки жестких дисков, хотел восстановить структуру своего винчестера ну или что-нибудь что не так чтобы исправилось, так эта программа, кстати как и меню при загрузке с лайв линукса отображается будто у меня видеокарта или дисплей не работают. Хотя вообще ни разу такое не видел на своем ноутбуке. Так я решил написать вам, иначе у меня сейчас не Windows, могу почти на любом шаге сделать непоправимую ошибку. Фото дисплея прилагаю
У меня есть два жестких диска в ноутбуке. На одном установлена Windows 10, а на другом Ubuntu 16. Windows 10 устанавливалась как обновление с Windows 7. Windows 7 была предустановлена на заводе. Ubuntu 16 ставилась на чистый жесткий диск.
Для начала посмотрим, что у нас есть:
$ sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL NAME FSTYPE SIZE MOUNTPOINT LABEL sda 465,8G ├─sda1 vfat 19,5G RECOVERY ├─sda2 ntfs 445,8G Windows 10 └─sda3 ntfs 450M sdb 232,9G ├─sdb1 vfat 512M /boot/efi ├─sdb2 ext2 488M /boot └─sdb3 crypto_LUKS 231,9G └─sda3_crypt LVM2_member 231,9G ├─ubuntu--vg-root ext4 224G / └─ubuntu--vg-swap_1 swap 8G └─cryptswap1 swap 8G [SWAP] sr0 1024M
Тут мы видим два раздела: sdb2 (/boot) и sdb1 (/boot/efi):
$ sudo tree /boot/ /boot/ ├── abi-4.4.0-21-generic ├── abi-4.4.0-34-generic ├── config-4.4.0-21-generic ├── config-4.4.0-34-generic ├── efi │ └── EFI │ └── ubuntu │ ├── fw │ ├── fwupx64.efi │ ├── grub.cfg │ ├── grubx64.efi │ ├── MokManager.efi │ └── shimx64.efi ├── grub │ ├── fonts │ │ └── unicode.pf2 │ ├── grub.cfg │ ├── grubenv │ ├── locale │ │ ├── en_AU.mo │ │ ├── en_CA.mo │ │ ├── en_GB.mo │ │ └── ru.mo │ ├── unicode.pf2 │ └── x86_64-efi ├── initrd.img-4.4.0-21-generic ├── initrd.img-4.4.0-34-generic ├── lost+found ├── memtest86+.bin ├── memtest86+.elf ├── memtest86+_multiboot.bin ├── System.map-4.4.0-21-generic ├── System.map-4.4.0-34-generic ├── vmlinuz-4.4.0-21-generic ├── vmlinuz-4.4.0-34-generic └── vmlinuz-4.4.0-34-generic.efi.signed
EFI предназначен для замены BIOS. /boot/efi — это системный загрузочный раздел создаваемый, когда мат. плата ноутбука использует UEFI вместо BIOS (подробнее).
Также я воспользовался скриптом Boot Info Script. Вот его результаты:
Boot Info Script 0.61 [1 April 2012] ============================= Boot Info Summary: =============================== => Windows is installed in the MBR of /dev/sda. => No boot loader is installed in the MBR of /dev/sdb. sda1: __________________________________________________________________________ File system: vfat Boot sector type: Windows 7: FAT32 Boot sector info: No errors found in the Boot Parameter Block. Operating System: Boot files: /bootmgr /boot/bcd sda2: __________________________________________________________________________ File system: ntfs Boot sector type: Windows Vista/7: NTFS Boot sector info: No errors found in the Boot Parameter Block. Operating System: Boot files: /bootmgr /Boot/BCD /Windows/System32/winload.exe sda3: __________________________________________________________________________ File system: ntfs Boot sector type: Windows Vista/7: NTFS Boot sector info: No errors found in the Boot Parameter Block. Operating System: Boot files: sdb1: __________________________________________________________________________ File system: vfat Boot sector type: FAT32 Boot sector info: No errors found in the Boot Parameter Block. Operating System: Boot files: sdb2: __________________________________________________________________________ File system: ext2 Boot sector type: - Boot sector info: Operating System: Boot files: /grub/grub.cfg sdb3: __________________________________________________________________________ File system: crypto_LUKS Boot sector type: Unknown Boot sector info: ubuntu-vg-root': _______________________________________________________________ File system: Boot sector type: Unknown Boot sector info: Mounting failed: mount: unknown filesystem type '' ubuntu-vg-swap_1': _____________________________________________________________ File system: Boot sector type: Unknown Boot sector info: Mounting failed: mount: unknown filesystem type '' mount: unknown filesystem type ''
Из этого становится ясно, что Windows установлена в MBR на /dev/sda. А /grub/grub.cfg расположен на sdb2.
Узнаем UUID от раздела с меткой «Windows 10»:
$ sudo blkid /dev/sda2
/dev/sda2: LABEL=»Windows 10″ UUID=»8684C04C84C04103″ TYPE=»ntfs» PARTUUID=»76692ca8-02″
Путем экспериментов я выяснил, что в скрипте
/etc/grub.d/40_custom
срабатывает следующее условие:
if [ «${grub_platform}» == «efi» ]; then
fi
И не срабатывает следующее условие:
if [ «${grub_platform}» == «pc» ]; then
fi
Также в ходе одного из экспериментов я получил ошибку:
«/boot/grub/x86_64-efi/ntldr.mod not found»
Следующая команда это подтверждает (подробнее):
$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
UEFI
Я не уверен, что Windows 10 у меня установлена в UEFI режиме. Возможно GRUB может загружать только системы установленные в том же режиме, в котором он сам запущен.
Да, действительно Windows работает в устаревшем режиме.
UEFI — это интерфейс между операционной системой и микропрограммами, управляющими низкоуровневыми функциями оборудования. Получается Ubuntu у меня работает с новым UEFI, а Windows с legacy BIOS.
Установим новую загрузочную конфигурацию на диск C: из под Windows:
C:\WINDOWS\system32>bcdboot C:\Windows /s C: /f uefi
Файлы загрузки успешно созданы.
Я пробовал добавить в файл
/etc/grub.d/40_custom
следующую настройку (подробнее), но дальше логотипа Windows 10 загрузка не идет:
menuentry "Windows 10 (BCD-UEFI configuration on system drive /dev/sda2)" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod search_fs_uuid
insmod chain
set root='hd0,msdos2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2 8684C04C84C04103
else
search --no-floppy --fs-uuid --set=root 8684C04C84C04103
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
Вот здесь пишут, что нельзя мешать режимы Windows in BIOS/CSM/legacy mode и Ubuntu in EFI/UEFI mode. И нужно переустанавливать одну из ОС. Или как-то по другому переключаться.
—
- EFI Partition vs /boot partition
- ubuntu appears in BIOS menu (UEFI)
- https://wiki.debian.org/GrubEFIReinstall
- Add Windows 10 to GRUB OS list
- Trying to dual boot Ubuntu 14.10 with Windows 10, last one not detected
- https://wiki.debian.org/DualBoot/Windows10
- Windows installed in UEFI-GPT Mode menu entry
- Ошибка при загрузки второй ОС через GRUB с Ubuntu 14.04.
- Installing Ubuntu on a Pre-Installed Windows 10 with UEFI