Дуальное загрузка Windows и Linux на отдельных жестких дисках – ошибка: нет такого устройства

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

Я следовал онлайн-урокам, чтобы установить Windows 10 рядом с Linux (Arch) на отдельных жестких дисках. Это включало физическое отключение каждого жесткого диска во время установки операционной системы на другой.

Единственный поток, который я нашел и в котором нет ответа «используйте boot-repair», это этот, за исключением того, что я уже установил Linux.

Вот мои шаги.

  1. Отключите быстрый запуск и включите UEFI в BIOS
  2. Создайте совместимые с UEFI живые образы W10 и ArchLabs
  3. Отключите HDD0, установите W10 Home на HDD1
  4. Отключите HDD1, установите ArchLabs на HDD0 – grub является загрузчиком
  5. Подключите HDD1, загрузитесь с HDD0 с помощью BIOS – только ArchLabs указан как загрузочный вариант
  6. Запустите 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 на два отдельных жестких диска:

  1. Самое простое решение – установить одну из ОС в режиме UEFI (если Win8 или 10, установите их в режиме UEFI) и другую операционную систему в режиме BIOS и переключаться между ними:
    a. перейдите в меню BIOS/UEFI
    b. измените режим загрузки
    c. перезагрузитесь
  2. Если вы думаете о Win7 или более ранних версиях: установите обе в режиме BIOS и дайте grub разобраться
  3. Если вы настаиваете на 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 лучше всего известен под прозвищем Disk Destroyer. 🙂
Примечание ²: Поскольку вы не объяснили, почему вы пытаетесь это сделать: если один из жестких дисков выйдет из строя, другая ОС станет недоступной, поскольку она присутствует только на одном из жестких дисков, даже если у вас есть дублирующие 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.

Рекомендации по устранению ошибки

  1. Проверка UEFI-параметров BIOS:
    Убедитесь, что в BIOS/UEFI включены настройки UEFI и отключена опция Быстрое включение (Fast Boot). Это гарантирует, что система будет использовать UEFI для загрузки.

  2. Обновление конфигурации GRUB:
    Раз вы уже запустили grub-mkconfig, убедитесь, что он не только видит Windows, но и правильно настроен на использование правильного диска и его EFI-раздела. Если Windows находится на /dev/sdb2, то вам нужно убедиться, что GRUB ссылается на правильный раздел.

  3. Редактирование конфигурационного файла GRUB вручную:
    Проверьте файл /etc/grub.d/30_os-prober и убедитесь, что опция загрузки Windows корректно указывает на EFI-раздел. Например, в строках, относящихся к Windows, убедитесь, что пути и аргументы правильные.

  4. Объединение EFI-разделов (если необходимо):
    Если вы хотите, чтобы обе операционные системы использовали один общедоступный EFI-раздел, вы можете скопировать файлы из одного EFI-раздела в другой. Однако, это нужно делать с осторожностью и при понимании возникающих рисков (например, возможное переписывание загрузчика).

  5. Использование альтернативных загрузчиков:
    Рассмотрите возможность использования более гибких загрузчиков, таких как rEFInd или Mishka. Эти загрузчики обеспечивают более простую настройку и управление несколькими операционными системами на одном интерфейсе UEFI.

  6. Файловая система и конфигурация fstab:
    Убедитесь, что ваши разделы правильно указаны в файле /etc/fstab. Вероятно, вам нужно будет добавить всё необходимые разделы, включая EFI-раздел Windows, чтобы обе ОС корректно функционировали во время загрузки.

Заключение

Работа с двойной загрузкой Windows и Linux на отдельных жестких дисках требует внимательности к деталям, особенно если вы используете UEFI. Ошибка «no such device» обычно связана с неправильной конфигурацией загрузчика и ссылок на устройства. Однако следуя вышеизложенным шагам и рекомендациям, вы сможете наладить стабильную работу системы. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью к сообществу.

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

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