Многие новички и опытные пользователи Linux держат также установленной на своем компьютере операционную систему Windows, например, последней, десятой версии. Новичкам это нужно чтобы иметь запасную операционную систему, к которой они смогут вернуться, если их Linux сломается. А для опытных пользователей важно программное обеспечение, которое не поддерживается ни в Linux, ни даже с помощью эмулятора Wine, а таких программ достаточно много.
Но временами случается такая ситуация, что загрузчик Grub не распознает установленную Windows и не отображает ее в списке для систем для загрузки. В этой статье мы рассмотрим почему возникает ошибка grub не видит Windows 10 и как ее решить.
Причин такой ошибки может быть несколько, начиная от того, что система установлена на другом жестком диске, и заканчивая неизвестными глюками пакета os-prober, который и занимается определением операционных систем в Linux. Также, если у вас есть несколько версий Windows на компьютере, то программа может видеть только одну из них.
Сначала можно попытаться сделать наш с Windows раздел более видимым для программы. Для этого примонтируйте его в какую-либо папку. Например, в /mnt/:
sudo mount -t ntfs-3g -o ro /dev/sda1
Я предполагаю, что система Windows установлена на разделе, который определяется в Linux, как /dev/sda1. Дальше запустите утилиту os-prober:
sudo os-prober
Если программа обнаружит Windows, то вам останется обновить конфигурацию загрузчика Grub:
sudo update-grub
Или:
sudo grub2-mkconfig -o /boot/grub/grub.cfg
Если же этот способ не сработает, а он, скорее всего, не сработает, то вам останется только вручную добавить пункт меню для Windows. Это не самое простое, но зато эффективное решение. Сначала нам нужно узнать UUID раздела диска, на который установлена Windows, например, /dev/sda1:
blkid /dev/sda1
Затем откройте файл /etc/grub.d/40_custom и добавьте туда такой код:
menuentry "Windows 10" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set B4A6AEB7A6AE7A0E
chainloader +1
}
Если кратко, то здесь мы устанавливаем в качестве корня первый раздел первого диска, а затем указываем загрузчику, что нужно найти раздел с нужным нам UUID. Затем передаем управление загрузчику на этом разделе с помощью chainloader. Дальше осталось обновить конфигурацию Grub:
sudo update-grub
Мы использовали такой метод потому что теперь настройка не собьется после обновления ядра или другого процесса, инициализирующего обновление конфигурации. Потому что если бы мы добавили эти строки в /boot/grub/grub.cfg, то они были бы перезаписаны если не при первом, то при одном из следующих обновлений системы.
Когда конфигурация обновлена вы можете перезагрузить компьютер и загружать Windows с помощью нового пункта. Таким образом, можно добавить несколько пунктов, только для разных разделов нужно указывать их UUID.
Выводы
В этой небольшой статье мы разобрали что делать когда у вас возникнет ошибка grub не видит windows 10 и какими способами ее можно исправить. На самом деле решение очень простое, если вы не используете систему с UEFI. В варианте с EFI загрузка Windows управляется не Grub, а загрузчиком UEFI, но при использовании Linux рекомендуется отключить эту технологию.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
Всем привет! Сегодня я расскажу о простом способе изменения порядка загрузки операционных систем (Linux, Windows) в загрузчике GRUB, который не требует правки различных конфигурационных файлов, все будет выполняться в удобном графическом интерфейсе.
Данная процедура будет Вам полезна, если у Вас на компьютере установлено несколько операционных систем Linux и Windows, например, Linux Ubuntu и Windows 10. О том, как установить себе на компьютер Linux Ubuntu второй системой рядом с Windows 10 с учётом особенностей UEFI, я подробно рассказывал в отдельной статье – Установка Linux Ubuntu рядом с Windows 10 на компьютере с UEFI.
Но в такой конфигурации по умолчанию будет загружаться Linux Ubuntu, однако многим хочется изменить данный порядок, например, чтобы по умолчанию загружалась Windows 10 или любая другая система, иными словами, отсортировать порядок так, как им хочется. Как я уже об этом говорил ранее, это можно сделать, и сейчас я подробно расскажу о том, как это делается, т.е. как изменить порядок загрузки операционных систем в загрузчике GRUB.
Содержание
- Введение
- Обзор программы Grub Customizer
- Установка Grub Customizer в Ubuntu
- Шаг 1 – Запускаем менеджер приложений
- Шаг 2 – Запускаем установку Grub Customizer
- Шаг 3 – Запускаем программу Grub Customizer
- Изменение порядка загрузки операционных систем
- Переименование пунктов загрузочного меню
- Сохранение настроек, загрузка и проверка порядка ОС
- Видео-инструкция
Введение
Итак, на текущий момент у Вас при включении компьютера появляется меню загрузчика GRUB, в котором первым пунктом идет операционная система Linux Ubuntu (или другой дистрибутив Linux, в моем случае именно Ubuntu). Выглядит это меню следующим образом.
Где,
- Ubuntu – это как раз операционная система Linux Ubuntu;
- Windows Boot Manager (на /dev/sda2) – это Windows 10.
Если ничего не выбрать, то через несколько секунд, по умолчанию, будет загружаться Ubuntu.
У нас стоит задача изменить порядок загрузки операционных систем таким образом, чтобы первым пунктом стояла Windows 10 и, соответственно, загружалась также первой. Дополнительно, для удобства и ясности, мы хотим присвоить пункту Windows Boot Manager более удачное имя, например – Windows 10.
Все этом можно реализовать с помощью одной программы – Grub Customizer, которую можно использовать в Linux Ubuntu.
Таким образом, сейчас я покажу, как установить Grub Customizer в Linux Ubuntu, и изменить порядок загрузки операционных систем в загрузчике Grub, используя эту программу.
На заметку! Начинающим пользователям Linux рекомендую почитать мою книгу «Linux для обычных пользователей» – в ней я максимально подробно рассказываю про Linux и о том, как пользоваться этой операционной системой без командной строки
Обзор программы Grub Customizer
Grub Customizer – это программа с графическим интерфейсом для редактирования настроек загрузчика GRUB.
Основные возможности Grub Customizer:
- Добавление и удаление операционных систем в меню GRUB, которое появляется во время загрузки компьютера;
- Изменение порядка загрузки ОС;
- Изменение времени ожидания перед загрузкой;
- Изменение оформления загрузчика GRUB (шрифт, цвет шрифта, фон и так далее).
Установка Grub Customizer в Ubuntu
Установить Grub Customizer в Ubuntu не составит труда, в Ubuntu 19.04 это можно сделать с помощью менеджера приложений (в предыдущих версиях Ubuntu возможно потребуется устанавливать PPA репозиторий).
Шаг 1 – Запускаем менеджер приложений
Сначала запускаем менеджер приложений, и для того чтобы найти нужный пакет в поиск, вводим grub сustomizer.
Шаг 2 – Запускаем установку Grub Customizer
Затем щелкаем по найденному пункту. После того как откроется окно с описанием программы, нажимаем «Установить».
Далее потребуется ввести пароль, так как процесс установки программ в Ubuntu требует дополнительных привилегий.
Шаг 3 – Запускаем программу Grub Customizer
Когда появится кнопка «Запустить», установка будет завершена. Мы можем нажать на данную кнопку, чтобы сразу запустить Grub Customizer. Также программу можно запустить и из меню приложений.
Для запуска программы снова потребуется ввести пароль, так как изменение порядка загрузки операционных систем в GRUB также требует дополнительных прав.
После запуска программы у Вас отобразится интерфейс Grub Customizer.
Изменение порядка загрузки операционных систем
Для того чтобы изменить порядок загрузки ОС, выберите нужный пункт, и нажмите кнопку перемещения вверх или вниз на панели инструментов, в зависимости от выбранного пункта.
Я для примера выберу Windows Boot Manager, и перемещу его в самый верх.
Результат следующий.
Переименование пунктов загрузочного меню
Теперь давайте переименуем пункт Windows Boot Manager в Windows 10. Для этого достаточно щёлкнуть двойным кликом по пункту и ввести новое имя.
Сохранение настроек, загрузка и проверка порядка ОС
После ввода всех настроек необходимо нажать кнопку «Сохранить», для того чтобы все введенные параметры сохранились.
В случае необходимости Вы можете перейти на дополнительные вкладки: «Основные настройки» и «Настройки оформления». Например, для того чтобы изменить шрифт меню загрузчика или цвет шрифта.
После ввода и сохранения всех настроек выключаем компьютер, и включаем его заново и смотрим, изменилось ли меню загрузчика.
В моем случае все настройки были применены и теперь по умолчанию у меня загружается Windows 10.
Видео-инструкция
У меня все, надеюсь, материал был Вам полезен, пока!
Windows 10 will, for the most part, be added to grub boot menu by the os-prober automajically.
For my specific setup I wanted to completely hide grub menu and automatically boot windows unless a hotkey was pressed to boot Ubuntu. So in my specific case os-prober isn’t an option because the most important step in hiding the grub menu, which most answers I found neglect to mention, is to set the disable os-prober flag or the menu WILL be shown until os-prober completes.
It took considerably longer than I had anticipated to get right because there are so many partial answers out there but most are version dependant and can lead you astray. I spent a lot of time trying write my own grub menu entry trying use grub commands that didn’t exist like ntdlr. Another caveat is that the chainloader functions on my grub try to boot bios not efi and will not work.(Im sure I was doing something wrong?)
In the end the solution was actually simple as the scripts that make your /boot/grub/grub.cfg do most of the work for you in finding UUIDS for your boot partitions. So you can skip the fdisk and blkid steps most people mention.
So step 1 is to make sure /boot/grub/grub.cfg is current using update-grub to make .cfg file. In terminal
sudo update-grub
Step 2 is to add custom menu entries in /etc/grub.d/40_custom. Don’t waste time trying to write your own simply open /boot/grub/grub.cfg search «menuentry» and copy the automatically generated entries.
The first in the list will be ubuntu mine looks like
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-9e66eed6-e672-49ff-a07c-afdc00809148' {
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
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 9e66eed6-e672-49ff-a07c-afdc00809148
else
search --no-floppy --fs-uuid --set=root 9e66eed6-e672-49ff-a07c-afdc00809148
fi
linux /boot/vmlinuz-5.4.0-39-generic root=UUID=9e66eed6-e672-49ff-a07c-afdc00809148 ro quiet splash $vt_handoff
initrd /boot/initrd.img-5.4.0-39-generic
}
Windows will be similar. Copy both to /etc/grub.d/40_custom. The only change I made for Ubuntu is to add the —hotkey=key flag which will make grub boot the os associated with that hotkey.
menuentry 'Ubuntu2' --class ubuntu --class gnu-linux --class gnu --class os --hotkey=u $menuentry_id_option 'gnulinux-simple-9e66eed6-e672-49ff-a07c-afdc00809148' {
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
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 9e66eed6-e672-49ff-a07c-afdc00809148
else
search --no-floppy --fs-uuid --set=root 9e66eed6-e672-49ff-a07c-afdc00809148
fi
linux /boot/vmlinuz-5.4.0-39-generic root=UUID=9e66eed6-e672-49ff-a07c-afdc00809148 ro quiet splash $vt_handoff
initrd /boot/initrd.img-5.4.0-39-generic
}
I use —hotkey=u here to set Ubuntu boot hotkey to u.
Then I tweaked the Windows entry, replacing $menuentry_id_option withe the grub —id flag.
menuentry "Windows 10" --class windows --class os --id windows-custom {
insmod part_gpt
insmod fat
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 0EAE-C882
else
search --no-floppy --fs-uuid --set=root 0EAE-C882
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
I used —id windows-custom. Save chages to /etc/grub.d/40_custom.
Finally open /etc/default/grub and add
GRUB_DISABLE_OS_PROBER=true
change GRUB_DEFAULT=0
to GRUB_DEFAULT=windows-custom
and change GRUB_TIMEOUT=10
to your choice of timings I use 0.5 just to give myself a little extra time to hit u to boot Ubuntu after POST.
Hopefully this saves someone a bit of headache, cheers!
- I have installed Windows 10
- I have installed Linux Mint Silvia and I have chosen a device for boot loader installation — sda.
- There is not Windows 10 in grub menu when the system starts
- I have booted via Linux Mint live USB.
- I Do step by step https://howtoubuntu.org/how-to-repair-restore-reinstall-grub-2-with-a-ubuntu-live-cd
- But it still no Windows 10 in grub menu
- I have booted via live windows 10 USB.
- With restoration tools, I have chosen the command line
- I have fixed Mbr by console command bootrec /FixMbr
- Ok, windows 10 is loading by there is no Grub.
- I have repeated steps 4 and 5
- There is no result
Also, I have tried to change grub config with this answer
https://askubuntu.com/questions/661947/add-windows-10-to-grub-os-list#answer-977251 — But in this case, There is Windows 10 — but when I chose — I will recursively going to grub
And with this answer
https://askubuntu.com/questions/661947/add-windows-10-to-grub-os-list#answer-890562
I have an error message when chose Windows 10 — There is no bootmgr directory
Thanks @Kinnectus for help
Also, I have tried
sudo os-prober
And getting
/dev/sda1:FreeDOS:FreeDOS:chain
/dev/sda2:FreeDOS:FreeDOS1:chain
And then I have tried
sudo update-grub
And getting
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.10.0-38-generic
Found initrd image: /boot/initrd.img-4.10.0-38-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found FreeDOS on /dev/sda1
Found FreeDOS on /dev/sda2
done
Unfortunately — there is not Windows 10 in grub menu
Also, I have fdisk output.
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 16779263 16777216 8G c W95 FAT32 (LBA)
/dev/sda2 * 16779264 33556479 16777216 8G c W95 FAT32 (LBA)
/dev/sda3 33556480 770219115 736662636 351,3G 7 HPFS/NTFS/exFAT
/dev/sda4 770220030 976771071 206551042 98,5G 5 Extended
/dev/sda5 770220032 976771071 206551040 98,5G 83 Linux
Partition 4 does not start on physical sector boundary.
There is an issue.
Maybe the problem is with this issue?
Please, help me, I am stucking with this a whole day.
I completely have no idea, what am I doing wrong.
- I have installed Windows 10
- I have installed Linux Mint Silvia and I have chosen a device for boot loader installation — sda.
- There is not Windows 10 in grub menu when the system starts
- I have booted via Linux Mint live USB.
- I Do step by step https://howtoubuntu.org/how-to-repair-restore-reinstall-grub-2-with-a-ubuntu-live-cd
- But it still no Windows 10 in grub menu
- I have booted via live windows 10 USB.
- With restoration tools, I have chosen the command line
- I have fixed Mbr by console command bootrec /FixMbr
- Ok, windows 10 is loading by there is no Grub.
- I have repeated steps 4 and 5
- There is no result
Also, I have tried to change grub config with this answer
https://askubuntu.com/questions/661947/add-windows-10-to-grub-os-list#answer-977251 — But in this case, There is Windows 10 — but when I chose — I will recursively going to grub
And with this answer
https://askubuntu.com/questions/661947/add-windows-10-to-grub-os-list#answer-890562
I have an error message when chose Windows 10 — There is no bootmgr directory
Thanks @Kinnectus for help
Also, I have tried
sudo os-prober
And getting
/dev/sda1:FreeDOS:FreeDOS:chain
/dev/sda2:FreeDOS:FreeDOS1:chain
And then I have tried
sudo update-grub
And getting
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.10.0-38-generic
Found initrd image: /boot/initrd.img-4.10.0-38-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found FreeDOS on /dev/sda1
Found FreeDOS on /dev/sda2
done
Unfortunately — there is not Windows 10 in grub menu
Also, I have fdisk output.
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 16779263 16777216 8G c W95 FAT32 (LBA)
/dev/sda2 * 16779264 33556479 16777216 8G c W95 FAT32 (LBA)
/dev/sda3 33556480 770219115 736662636 351,3G 7 HPFS/NTFS/exFAT
/dev/sda4 770220030 976771071 206551042 98,5G 5 Extended
/dev/sda5 770220032 976771071 206551040 98,5G 83 Linux
Partition 4 does not start on physical sector boundary.
There is an issue.
Maybe the problem is with this issue?
Please, help me, I am stucking with this a whole day.
I completely have no idea, what am I doing wrong.
Использование Windows 10 и Linux на одном компьютере болезненно. Иногда безопасная загрузка UEFI нарушает работу GRUB, а иногда GRUB не может просто загрузить Windows 10. Недавно я обновил Ubuntu до 19.10 Beta с Ubuntu 19.04. Теперь Ubuntu 19.10 поставляется с новой версией GRUB 2.04, в котором, как сообщается, много ошибок. В моем случае GRUB каким-то образом испортил расположение Windows MBR, и теперь я не могу загрузиться в Windows 10. Чтобы исправить ситуацию, я выполнил пару шагов, и вот подробное руководство о том, как исправить Windows 10, не загружающуюся в Linux.
Если вы используете Ubuntu 19.10 Beta, в GRUB 2.04 много ошибок. Было бы лучше перейти на Ubuntu 19.04 или полностью перейти на Windows. Перейдите к этому шагу, чтобы проверить способы изменения загрузчика по умолчанию на Windows NT.
1. Восстановите GRUB.
Иногда GRUB не может найти MBR-файл Windows на ваших дисках. Первым шагом будет проверка того, может ли Windows 10 обнаруживаться Linux. Для этого выполните следующую команду.
sudo os-prober
Вышеупомянутая команда будет искать другие операционные системы, установленные на ваших дисках. Если Windows обнаружена, вы получите результат, как показано ниже.
Если указанная выше команда может найти операционную систему Windows 10, мы можем перестроить файл конфигурации GRUB. Для этого используйте следующую команду.
sudo update-grub
Приведенная выше команда запускает сканирование всех разделов на вашем локальном диске и ищет различные установленные операционные системы. Если он обнаружит Windows 10, вы должны получить результат, аналогичный приведенному ниже. Команда также автоматически создаст запись Windows в файле конфигурации.
2. Восстановление загрузки
Если командная строка вам не по душе, вы также можете попробовать графический инструмент восстановления загрузки. Иногда файл GRUB не работает. Инструмент восстановления загрузки автоматически ищет другие операционные системы на вашем диске. Он также восстанавливает и перестраивает файл конфигурации GRUB. Это похоже на запуск os-prober вручную и перестройку файла конфигурации GRUB.
Для начала используйте следующие команды, чтобы добавить требуемый репозиторий и установить Boot Repair.
sudo apt-add-repository ppa: yannubuntu / boot-repair && sudo apt-get update sudo apt-get install -y boot-repair
Затем запустите средство восстановления загрузки. Сканирование всех дисков и разделов займет минуту или две. После этого нажмите «Рекомендуемый ремонт». Эта опция удалит предыдущий файл GRUB и восстановит его с нуля.
На следующем экране вам будет представлен набор команд, которые вы должны скопировать и вставить в терминал. Просто следуйте инструкциям на экране, предоставляемым инструментом восстановления загрузки, и он восстановит файл GRUB за вас.
Восстановление загрузки выдаст неожиданную ошибку, если вы используете бета-версию дистрибутива Linux.
Если этот метод не работает для вас, скорее всего, файл диспетчера загрузки Windows не может быть обнаружен GRUB. Следовательно, нам нужно будет создать запись для него в файле конфигурации GRUB.
3. Используйте инструмент настройки GRUB.
В общем, я бы не рекомендовал вручную обновлять что-либо в файле конфигурации GRUB. Мы будем использовать инструмент с открытым исходным кодом под названием Grub Customizer. Выполните следующие команды, чтобы загрузить и установить инструмент.
sudo add-apt-repository ppa: danielrichter2007 / grub-customizer && sudo apt-get update sudo apt install grub-customizer
Далее нам нужно расположение загрузчика Windows 10. Чтобы найти его, выполните следующую команду в терминале.
lsblk
Найдите раздел с точкой монтирования «/ boot / efi». Это раздел, в котором установлен диспетчер загрузки Windows. Нам нужно имя устройства конкретного раздела. В моем случае это sda1, следовательно, расположение загрузочного файла — «/ dev / sda1».
Кроме того, вы также можете установить gnome-disk-utility, которая представляет собой графический инструмент для отображения дисков и разделов. В меню вы можете найти системный раздел EFI. Описание раздела должно выглядеть примерно так.
Затем перейдите к инструменту настройки GRUB и щелкните значок страницы вверху, чтобы сделать запись.
Во всплывающем окне редактора записей выберите тип «Chainloader» и раздел как «/ dev / sda1». Вы также можете указать подходящее имя для записи. Опубликуйте это, нажмите Enter.
Теперь вы сможете увидеть запись, которую вы создали, в меню настройщика Grub. Однако вам нужно нажать кнопку «Сохранить», чтобы синхронизировать изменения с исходным файлом конфигурации GRUB.
Наконец, выполните перезагрузку, и теперь вы сможете загрузиться в Windows 10. Если вы не можете этого сделать, скорее всего, Windows MBR является посредником или загрузочные файлы повреждены.
4. Восстановление при запуске
Если GRUB не может загрузить Windows MBR, скорее всего, файл поврежден. Мы можем восстановить его, используя ISO-файл Windows и флешку. Вы можете использовать любое загрузочное программное обеспечение USB для Linux. Я бы посоветовал ГореUSB поскольку он прост и быстро выполняет свою работу. Когда USB-накопитель будет готов, загрузитесь с него. Нажмите «Далее» на первом экране, а затем нажмите «Восстановить компьютер» на следующем экране.
На следующей странице нажмите «Параметры устранения неполадок» и, наконец, нажмите «Восстановление при загрузке». На исправление загрузочных файлов и MBR потребуется время.
В большинстве случаев восстановление при запуске исправляет загрузочный файл Windows. В случае успеха перезагрузите компьютер, и GRUB сможет загрузить Windows. Если проблема не исчезнет, нам нужно будет снова переключить загрузчик на Windows NT.
5. Сменить загрузчик по умолчанию
Если вы уверены, что загрузочный файл Windows не поврежден, и вы не стерли данные с диска C по ошибке, мы можем снова изменить загрузчик на Windows NT. Для этого загрузитесь с USB-накопителя Windows, нажмите «Далее» на первом экране. Затем нажмите «Восстановить компьютер», а затем «Устранение неполадок».
На странице «Дополнительные параметры» нажмите «Командная строка».
В командной строке выполните следующую команду.
bcdedit / set {bootmgr} путь WINDOWS system32 winload.efi
Вышеупомянутая команда изменит загрузчик с GRUB на Windows NT. Теперь, когда вы перезагружаете свою систему, она должна загружаться прямо в Windows. Если вы переходите с Ubuntu 19.10, вам нужно будет вернуться к стабильной версии Ubuntu 19.04, поскольку в GRUB 2.04 есть много ошибок.
6. Свежая установка Windows 10
Если ни один из вышеперечисленных способов вам не подходит, скорее всего, вы случайно стерли данные с Windows. Последнее средство — выполнить новую установку Windows 10. Хорошо, что вам нужно будет только отформатировать диск C, и данные на других дисках не будут потеряны. Но, тем не менее, вы потеряете файлы на рабочем столе, в папке «Загрузки» и «Документы».
Заключительные слова
Это некоторые из способов решить, что Windows 10 не загружается в Linux. Если у вас возникнут дополнительные вопросы или вопросы, касающиеся Linux или GRUB, дайте мне знать в комментариях ниже.
Также читайте: Как заставить Windows и Mac использовать мультитач-жесты в Ubuntu
Если вы решили установить Linux рядом с Windows 10, будьте готовы к тому, что вместо привычного Win-загрузчика вам придется пользоваться линуксовым загрузчиком Grub, причем Linux в нём будет располагаться на первом месте. Это удобно, если Linux планируется использовать в качестве основной операционной системы, если таковой по-прежнему остается Windows, было бы неплохо перенести ее в начало списка загрузчика Grub.
Сделать это можно двумя основными способами: с помощью приложения Grub Customizer и путем ручного редактирования конфигурационного файла загрузчика Grub. Первый способ наиболее прост, но здесь есть небольшой нюанс. В официальных репозиториях программа Grub Customizer отсутствует, поэтому для ее установки придется подключить репозиторий PPA.
Для этого в терминале выполняем три приведенных на скриншоте команды:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer
Первая команда подключает репозиторий, вторая обновляет его,
третья команда производит установку приложения.
Если вдруг получите сообщение о временной недоступности ресурса, подождите немного и выполните третью команду повторно.
Произведя установку, запустите программу командой grub-customizer или gksu grub-customizer, если понадобятся права суперпользователя.
Рабочее окно приложения представлено списком загрузочных записей, найдите в нем запись Windows 10,
кликните по ней правой кнопкой мыши и выберите в меню «Переместить вверх».
И так еще раз, и еще раз до тех пор, пока запись не окажется в самом верху списка, а затем сохраните изменения нажатием одноименной кнопки в левом верхнем углу окна приложения.
Можете перезагружаться и смотреть, что получилось.
А получится то, что пункт выбора загрузки Windows 10 окажется в вверху списка. Кстати, вместо того чтобы перемещать загрузочную запись пошагово, можете переключиться в Grub Customizer на вкладку «Основные настройки».
И выбрать там пункт загрузки по умолчанию.
Редактирование файла grub.cfg
Более опытные пользователи могут отредактировать конфигурационный файл загрузчика вручную, открыв его в текстовом редакторе командой gksu gedit /boot/grub/grub.cfg. Если приложение gksu не установлено, установите, без него открытый файл конфигурации будет доступен только для чтения.
Найдите в файле блок данных, начинающийся с menuentry «Windows 10…» — — набор ключей и заканчивающийся данными в фигурных скобках {… …}, смотрите скриншот ниже.
Вырезав блок, вставьте его перед блоком menuentry «Ubuntu» или какой там у вас идет первым и сохраните файл. После перезагрузки запись с Windows 10 окажется в начале списка Grub.
Всё что здесь было показано, выполняется из среды Linux.
А нельзя ли внести эти же правки из работающей Windows 10? Можно, если только вы найдете способ добраться до раздела с файловой системой Ext4, на котором установлена Linux. Такой способ есть, и он очень простой. Ставьте драйвер поддержки Ext2Fsd, присваивайте Linux-разделу букву, переходите в расположение Буква:/boot/grub, открывайте файл grub.cfg Блокнотом и вносите нужные изменения.
Загрузка…
У меня есть два жестких диска в ноутбуке. На одном установлена 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:WINDOWSsystem32>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