Вопрос или проблема
Я следовал онлайн-урокам, чтобы установить Windows 10 рядом с Linux (Arch) на отдельных жестких дисках. Это включало физическое отключение каждого жесткого диска во время установки операционной системы на другой.
Единственный поток, который я нашел и в котором нет ответа «используйте boot-repair», это этот, за исключением того, что я уже установил Linux.
Вот мои шаги.
- Отключите быстрый запуск и включите UEFI в BIOS
- Создайте совместимые с UEFI живые образы W10 и ArchLabs
- Отключите HDD0, установите W10 Home на HDD1
- Отключите HDD1, установите ArchLabs на HDD0 – grub является загрузчиком
- Подключите HDD1, загрузитесь с HDD0 с помощью BIOS – только ArchLabs указан как загрузочный вариант
- Запустите
grub-mkconfig -o /boot/grub/grub.cfg
(update-grub) – Windows обнаружен
Который выдает
Генерация файла конфигурации grub ...
Найдены образ linux: /boot/vmlinuz-linux
Найден образ initrd: /boot/initramfs-linux.img
Найдены образы резервного initrd в /boot: initramfs-linux-fallback.img
Найден менеджер загрузки Windows на /dev/sdb2@/efi/Microsoft/Boot/bootmgfw.efi
Найден образ memtest86+: /boot/memtest86+/memtest.bin
Готово
Когда я загружаю HDD0 в BIOS, я вижу вариант Windows в grub, но когда я выбираю его, я получаю эту ошибку
ошибка: нет такого устройства: FA77-02BF.
ошибка: диск `hd1,gpt2' не найден.
Нажмите любую клавишу, чтобы продолжить...
Некоторая информация
$sudo blkid
/dev/sda1: UUID="EFA1-BD6C" TYPE="vfat" PARTUUID="f1abfa2e-8f5e-4569-88a7-ebd5ebd1a737"
/dev/sda2: UUID="a43046c3-84ec-4308-9eaf-a872f1c4300d" TYPE="ext4" PARTUUID="c1a4e499-919d-4194-890f-459418430422"
/dev/sdb1: LABEL="Recovery" UUID="58CC724CCC722482" TYPE="ntfs" PARTLABEL="Основной раздел данных" PARTUUID="78b687ea-65f2-4c5a-9e2e-211c28298378"
/dev/sdb2: UUID="FA77-02BF" TYPE="vfat" PARTLABEL="EFI системный раздел" PARTUUID="149fbe08-56e3-4dd7-9dde-b60e668a2253"
/dev/sdb4: UUID="50F28160F2814AE4" TYPE="ntfs" PARTLABEL="Основной раздел данных" PARTUUID="1e767b54-5723-4d51-889a-48108c2547fe"
/dev/sdb3: PARTLABEL="Зарезервированный раздел Microsoft" PARTUUID="be54b5e0-7701-473a-aa31-bbc8919d62ae"
fstab не смонтировал sdb
, но я не уверена, нужно ли это?
$cat /etc/fstab
# /dev/sda2
UUID=a43046c3-84ec-4308-9eaf-a872f1c4300d / ext4 rw,relatime,data=ordered 0 1
# /dev/sda1
UUID=EFA1-BD6C /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2
/swapfile none swap defaults,pri=-2 0 0
Проблема, я думаю, заключается в том, что каждый жесткий диск имеет свой собственный EFI-раздел.
$fdisk -l
Диск /dev/sda: 298.1 GiB, 320072933376 байт, 625142448 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: 558CB70E-9540-49A2-87E9-728B9C3CDB16
Устройство Начало Конец Секторов Размер Тип
/dev/sda1 2048 1050623 1048576 512M EFI Система
/dev/sda2 1052672 625141759 624089088 297.6G Файловая система Linux
Диск /dev/sdb: 465.8 GiB, 500107862016 байт, 976773168 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 4096 байт
Размер ввода-вывода (минимальный/оптимальный): 4096 байт / 4096 байт
Тип метки диска: gpt
Идентификатор диска: 0676ACB7-16B9-4BBC-8030-D26B229EEF78
Устройство Начало Конец Секторов Размер Тип
/dev/sdb1 2048 1023999 1021952 499M Среда восстановления Windows
/dev/sdb2 1024000 1228799 204800 100M EFI Система
/dev/sdb3 1228800 1261567 32768 16M Зарезервированный Microsoft
/dev/sdb4 1261568 976773119 975511552 465.2G Основные данные Microsoft
В данный момент я могу использовать BIOS для выбора жесткого диска, который хочу загрузить, который, в свою очередь, использует загрузчик этого жесткого диска для запуска своей операционной системы. Но, конечно, было бы неплохо, если бы BIOS загружался на один и тот же диск каждый раз, чтобы я мог выбирать ОС через GRUB.
Если вы хотите установить Windows и Arch на два отдельных жестких диска:
- Самое простое решение – установить одну из ОС в режиме UEFI (если Win8 или 10, установите их в режиме UEFI) и другую операционную систему в режиме BIOS и переключаться между ними:
a. перейдите в меню BIOS/UEFI
b. измените режим загрузки
c. перезагрузитесь - Если вы думаете о Win7 или более ранних версиях: установите обе в режиме BIOS и дайте
grub
разобраться - Если вы настаиваете на UEFI для обеих систем, вы должны знать, что одна машина предназначена для одной (и только одной) UEFI-раздела, поэтому вы должны:
a. Сохраняйте идентичные UEFI-разделы на обоих жестких дисках (Просто скопируйте все файлы с первого на второй и все со второго на первый, поскольку это простоFAT
раздел)
b. дайте возможности загрузки осуществляться чем-то другим, чем Менеджер загрузки Windows 10 иgrub
, тогда вам понадобится что-то вроде rEFInd, и так я работаю:
Windows 10 на первом SSD, Linux (в моем случае Ubuntu, но как Arch, так и Ubuntu используютgrub
, поэтому здесь нет разницы), и оба моихefi
раздела идентичны, и я рассматриваю второйefi
раздел как резервную копию первого и скрываю дублирующиеся записи в меню rEFInd. Я регулярно используюdd
с/dev/sda1
на/dev/sdb1
¹
c. знайте, что rEFInd не поддерживает BIOS, поэтому вам возможно придется установить EFI-оболочку и вручную изменить настройки загрузки в NVRAM UEFI, чтобы rEFInd был первым для загрузки (что я в конечном итоге и сделал; не забудьте поставить rEFInd в качестве основного менеджера загрузки на первом HDD в приоритете загрузки 0 и rEFInd также как вторичный менеджер загрузки на втором HDD как приоритет загрузки 1!)
Вам придется много читать, в том числе некоторые из документов консорциума UEFI docs, но вы многому научитесь, и это возможно! (Очевидно… 😉 )
Примечание ¹: Да, это не правильная команда, я знаю: я не включаю общие dd
команды в любые из моих ответов, так как dd
лучше всего известен под прозвищем D
isk D
estroyer. 🙂
Примечание ²: Поскольку вы не объяснили, почему вы пытаетесь это сделать: если один из жестких дисков выйдет из строя, другая ОС станет недоступной, поскольку она присутствует только на одном из жестких дисков, даже если у вас есть дублирующие efi
разделы, поэтому, если вы ищите отказоустойчивость, используйте RAID1 вместо этого.
Примечание ³: Я хотел убедиться, что EFI
раздел был резервной копией на втором SSD, для которого rEFInd не действительно настроен, и убедиться, что Менеджер загрузки Windows не имеет возможности испортить GRUB.
Ответ или решение
Ошибка «no such device» при двойной загрузке Windows и Linux на отдельных жестких дисках
При установке Windows 10 и Arch Linux (или другой версии Linux) на разные жесткие диски, пользователи часто сталкиваются с проблемой, заключающейся в ошибке «no such device», когда загружают одну из операционных систем через GRUB. Эта ошибка указывает на проблемы с конфигурацией UEFI или с тем, как GRUB взаимодействует с загрузочными записями на дисках. В этой статье мы рассмотрим основные шаги для решения данной проблемы и оптимизации процесса двойной загрузки.
Понимание проблемы
Вы правильно следовали этапам установки, изолировав жесткие диски друг от друга на этапе установки, что является лучшей практикой для избежания конфликта загрузчиков. Однако, ключевой момент в вашей конфигурации заключается в том, что каждая из операционных систем имеет свою EFI-раздел (раздел для UEFI), что может создать путаницу для GRUB.
Ошибки вида «error: no such device: FA77-02BF» и «error: disk `hd1,gpt2′ not found» указывают на то, что GRUB не может корректно взаимодействовать с нужным EFI-разделом Windows.
Рекомендации по устранению ошибки
-
Проверка UEFI-параметров BIOS:
Убедитесь, что в BIOS/UEFI включены настройки UEFI и отключена опция Быстрое включение (Fast Boot). Это гарантирует, что система будет использовать UEFI для загрузки. -
Обновление конфигурации GRUB:
Раз вы уже запустилиgrub-mkconfig
, убедитесь, что он не только видит Windows, но и правильно настроен на использование правильного диска и его EFI-раздела. Если Windows находится на/dev/sdb2
, то вам нужно убедиться, что GRUB ссылается на правильный раздел. -
Редактирование конфигурационного файла GRUB вручную:
Проверьте файл/etc/grub.d/30_os-prober
и убедитесь, что опция загрузки Windows корректно указывает на EFI-раздел. Например, в строках, относящихся к Windows, убедитесь, что пути и аргументы правильные. -
Объединение EFI-разделов (если необходимо):
Если вы хотите, чтобы обе операционные системы использовали один общедоступный EFI-раздел, вы можете скопировать файлы из одного EFI-раздела в другой. Однако, это нужно делать с осторожностью и при понимании возникающих рисков (например, возможное переписывание загрузчика). -
Использование альтернативных загрузчиков:
Рассмотрите возможность использования более гибких загрузчиков, таких как rEFInd или Mishka. Эти загрузчики обеспечивают более простую настройку и управление несколькими операционными системами на одном интерфейсе UEFI. -
Файловая система и конфигурация fstab:
Убедитесь, что ваши разделы правильно указаны в файле/etc/fstab
. Вероятно, вам нужно будет добавить всё необходимые разделы, включая EFI-раздел Windows, чтобы обе ОС корректно функционировали во время загрузки.
Заключение
Работа с двойной загрузкой Windows и Linux на отдельных жестких дисках требует внимательности к деталям, особенно если вы используете UEFI. Ошибка «no such device» обычно связана с неправильной конфигурацией загрузчика и ссылок на устройства. Однако следуя вышеизложенным шагам и рекомендациям, вы сможете наладить стабильную работу системы. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью к сообществу.