2

Я пытаюсь использовать USB, чтобы определить, какая ОС должна быть загружена; т.е. когда USB подключен, Windows должна загрузиться, а когда он не подключен, Ubuntu должен загрузить. Загрузка с соответствующих носителей работает нормально, но у меня проблемы с настройками порядка загрузки BIOS. Когда USB подключен, я могу установить порядок загрузки:

  1. USB (grub)
  2. SSD (grub)
  3. Загрузитесь прямо в Ubuntu
  4. Загрузка прямо в Windows

и этот порядок соответствует, пока вставлена флешка. Однако, когда я делаю следующие шаги:

  1. [с выключенным компьютером] Отсоедините USB.
  2. Включите компьютер и загрузитесь в Ubuntu или Windows.
  3. Выключи компьютер.
  4. Вставьте USB.
  5. Включите компьютер.

порядок загрузки меняется на

  1. SSD (grub)
  2. Загрузитесь прямо в Ubuntu
  3. Загрузка прямо в Windows
  4. USB (grub)

Есть ли какой-нибудь способ избежать изменения BIOS в порядке загрузки или явно указать ему, какую позицию USB искать?

Моя материнская плата - ASUS Z97-A, с утилитой ASUS UEFI BIOS, версия 2.16.1240.

Помогите мне, суперпользователи, вы моя единственная надежда.

1 ответ1

3

К сожалению, в том, как EFI справляются с подобными вещами, нет стандартизации, но, по моему опыту, поведение, которое вы описываете, довольно распространено. Проблема в том, что EFI намного "умнее" идентифицируют загрузочные устройства, чем BIOS, и многие EFI удаляют недопустимые загрузочные записи, когда они идентифицируются как таковые. Таким образом, когда вы отключите USB-накопитель и снова включите компьютер, он заметит, что есть неправильная загрузочная запись для USB-накопителя, и удалит его из списка загрузки. Я не знаю никакого решения EFI для такого рода проблем.

Это не значит, что обходных путей нет. В частности, вы можете установить менеджер загрузки EFI на свой внутренний диск, который делает то, что вы хотите - то есть загружать Windows, когда USB-накопитель не подключен, и загружать Ubuntu с USB-накопителя, когда он подключен. Затем вы оставили бы этот менеджер загрузки установленным как загрузочную программу по умолчанию.

К сожалению, GRUB AFAIK Ubuntu не может быть настроен таким образом, поэтому вам нужно искать в другом месте. Правило, которому вы хотите следовать, достаточно просто, чтобы можно было написать действительно простую программу для выполнения этой работы, но то, что я знаю, может сделать это гораздо сложнее: мой собственный менеджер загрузки rEFInd. Я рекомендую вам попробовать установить и настроить его следующим образом:

  1. Загрузиться в Ubuntu.
  2. Проверьте, что (если что-то) смонтировано в /boot/efi . (Набрав df -h , вы увидите смонтированные в данный момент разделы.)
  3. Если /boot/efi соответствует разделу на USB-накопителе, размонтируйте его и смонтируйте системный раздел EFI (ESP) с жесткого диска. (Как отмечено в ссылке, ESP является разделом FAT с определенным кодом типа. Вы , возможно , придется отслеживать его вниз с gdisk parted или GParted.)
  4. Установите пакет Debian rEFInd со страницы загрузок rEFInd. Не устанавливайте PPA; установите пакет Debian (или используйте файл .zip и запустите refind-install вручную).
  5. Отредактируйте /boot/efi/EFI/refind/refind.conf и внесите следующие изменения:
    • При желании установите время timeout -1 . Если этот параметр установлен, меню rEFInd не появится, если вы не нажмете клавишу при запуске rEFInd. Возможно, вы захотите отложить установку до тех пор, пока вы не протестируете установку.
    • Установите default_selection "vmlinuz,Microsoft" . Это приводит к тому, что rEFInd загружает Linux, если находит ядро Linux, и Windows, если ядро Linux отсутствует, то есть если USB-диск Linux отключен. Замена vmlinuz на grub также должна работать, и стоит попробовать, если vmlinuz не работает.
  6. Перезагрузите и протестируйте систему.

Если вы попробуете это без установки значения времени timeout , вы должны увидеть появившееся меню rEFInd и выделить опцию Windows (которая может быть единственной опцией), если USB-накопитель отключен; но опция Ubuntu должна быть выделена по умолчанию, если USB-накопитель подключен. Если это работает, установка времени timeout -1 приведет к прямой загрузке нужной ОС.

Если rEFInd не обнаруживает установку Ubuntu с подключенным USB-накопителем, попробуйте нажать Esc. Если появляется опция Ubuntu, попробуйте установить scan_delay 1 (или, возможно, какое-то более высокое значение).

Самая большая проблема с использованием rEFInd таким образом заключается в том, что при запуске будет происходить задержка, сканирование ОС и так далее. Это должно быть всего секунда или две, когда USB-накопитель не подключен, и, может быть, еще две или три секунды, когда USB-накопитель подключен. Более специализированный менеджер загрузки, способный справиться с этой конкретной задачей, мог бы выполнять работу с меньшей задержкой, но я не знаю ни одной такой программы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .