Flash uefi boot: Создаем загрузочную флешку с Windows 10 для UEFI компьютера

Содержание

Secure Boot — ESP32 — — Руководство по программированию ESP-IDF, последняя документация

Важно

Все ссылки в этом документе относятся к Secure Boot V1 (схема безопасной загрузки на основе AES). ESP32 Revision 3 и выше, предпочтительной схемой безопасной загрузки является Secure Boot V2.
См. документ Secure Boot V2 для ESP32 Revision 3 или ESP32-S2.

Безопасная загрузка — это функция, обеспечивающая выполнение только вашего кода на чипе. Данные, загружаемые из флэш-памяти, проверяются при каждом сбросе.

Безопасная загрузка отделена от функции шифрования флэш-памяти, и вы можете использовать безопасную загрузку без шифрования содержимого флэш-памяти. Однако для безопасной среды оба должны использоваться одновременно. Дополнительные сведения см. в разделе «Безопасная загрузка и шифрование флэш-памяти».

Важно

Включение безопасной загрузки ограничивает ваши возможности для дальнейших обновлений вашего ESP32. Обязательно внимательно прочитайте этот документ и поймите последствия включения безопасной загрузки.

Фон

  • Большая часть данных хранится во флэш-памяти. Доступ к флэш-памяти не должен быть защищен от физического доступа для обеспечения безопасной загрузки, поскольку важные данные хранятся (недоступные для программного обеспечения) в Efuses, встроенном в микросхему.

  • Efuses используются для хранения безопасного ключа загрузчика (в efuse BLOCK2), а также записывается один бит Efuse (ABS_DONE_0) (записывается в 1), чтобы обеспечить постоянную безопасную загрузку на чипе. Дополнительные сведения о предохранителях eFuse см. в Техническом справочном руководстве ESP32 9.0024 > Контроллер eFuse (eFuse) [PDF].

  • Чтобы понять процесс безопасной загрузки, сначала ознакомьтесь со стандартным процессом загрузки ESP-IDF.

  • Оба этапа процесса загрузки (начальная загрузка загрузчика программного обеспечения и последующая загрузка раздела и приложения) проверяются процессом безопасной загрузки в «цепочке доверия».

Обзор процесса безопасной загрузки

Это общий обзор процесса безопасной загрузки. Пошаговые инструкции приведены в разделе «Как включить безопасную загрузку». Более подробная информация представлена ​​в разделе «Технические детали»:

  1. Параметры для включения безопасной загрузки представлены в меню конфигурации проекта в разделе «Конфигурация безопасной загрузки».

  2. По умолчанию безопасная загрузка подписывает образы и данные таблицы разделов в процессе сборки. Элемент конфигурации «Закрытый ключ подписи безопасной загрузки» — это путь к паре открытого/закрытого ключа ECDSA в файле формата PEM.

  3. Образ загрузчика программного обеспечения создается с помощью esp-idf с включенной поддержкой безопасной загрузки и скомпилированной частью открытого ключа (проверка подписи) ключа подписи безопасной загрузки. Этот образ загрузчика программного обеспечения мигает со смещением 0x1000.

  4. При первой загрузке загрузчик программного обеспечения следует следующему процессу, чтобы включить безопасную загрузку:

    • Поддержка аппаратной безопасной загрузки создает ключ безопасного загрузчика устройства (сгенерированный с помощью аппаратного ГСЧ, затем сохраненный в защищенном от чтения/записи файле efuse) и безопасный дайджест. Дайджест получается из ключа, IV и содержимого образа загрузчика.

    • Защищенный дайджест прошивается по смещению 0x0 во флэш-памяти.

    • В зависимости от конфигурации безопасной загрузки файлы efuses записываются для отключения JTAG и интерпретатора ROM BASIC (настоятельно рекомендуется включить эти параметры).

    • Загрузчик постоянно включает безопасную загрузку, записывая efuse ABS_DONE_0. После этого программный загрузчик становится защищенным (чип будет загружать образ загрузчика только в том случае, если дайджест совпадает).

  5. При последующих загрузках загрузчик ПЗУ видит, что защищенный загрузочный файл был записан, считывает сохраненный дайджест по адресу 0x0 и использует аппаратную поддержку безопасной загрузки, чтобы сравнить его с новым вычисленным дайджестом. Если дайджест не совпадает, загрузка не будет продолжена. Дайджест и сравнение полностью выполняются аппаратно, а рассчитанный дайджест не читается программным обеспечением. Технические подробности см. в разделе «Поддержка оборудования для безопасной загрузки».

  6. При работе в режиме безопасной загрузки программный загрузчик использует ключ подписи безопасной загрузки (открытый ключ которого встроен в сам загрузчик и поэтому проверяется как часть загрузчика) для проверки подписи, добавляемой ко всем последующим таблицам разделов и образам приложений перед их загрузкой.

Ключи

В процессе безопасной загрузки используются следующие ключи:

  • «ключ безопасного загрузчика» — это 256-битный ключ AES, который хранится в блоке Efuse 2. Загрузчик может сам сгенерировать этот ключ из внутреннего аппаратного генератора случайных чисел, пользователю не нужно его указывать (опционально можно указать этот ключ, см. Re-Flashable Software Bootloader). Efuse, удерживающий этот ключ, защищен от чтения и записи (предотвращая доступ программного обеспечения) до того, как будет включена безопасная загрузка.

    • По умолчанию схема кодирования Efuse Block 2 имеет значение «Нет», и в этом блоке хранится 256-битный ключ. На некоторых ESP32 для схемы кодирования установлено значение 3/4 Encoding (CODING_SCHEME efuse имеет значение 1), и в этом блоке должен храниться 192-битный ключ.

    Дополнительные сведения см. в Техническом справочном руководстве ESP32. > Контроллер eFuse (eFuse) > Системный параметр coding_scheme [PDF].

    Алгоритм работает с 256-битным ключом во всех случаях, 192-битные ключи расширяются за счет повторения некоторых битов (деталей).

  • «Ключ для подписи безопасной загрузки» — это стандартная пара открытого и закрытого ключей ECDSA (см. Алгоритм подписи образа) в формате PEM.

    • Открытый ключ из этой пары ключей (для проверки подписи, но не для создания подписи) компилируется в программный загрузчик и используется для проверки второго этапа загрузки (таблица разделов, образ приложения) перед продолжением загрузки. Открытый ключ можно свободно распространять, его не нужно держать в секрете.

    • Закрытый ключ из этой пары ключей должен надежно храниться как закрытый , так как любой, у кого есть этот ключ, может аутентифицироваться в любом загрузчике, настроенном на безопасную загрузку и соответствующем открытом ключе.

Размер загрузчика

Включение безопасной загрузки и/или шифрования флэш-памяти увеличит размер загрузчика, что может потребовать обновления смещения таблицы разделов. См. Размер загрузчика.

Как включить безопасную загрузку

  1. Откройте меню конфигурации проекта, перейдите к «Конфигурация безопасной загрузки» и выберите параметр «Одноразовая прошивка». (Чтобы понять альтернативный вариант «Перепрошиваемый», см. «Перепрошиваемый программный загрузчик».)

  2. Выберите имя для ключа подписи безопасной загрузки. Эта опция появится после включения безопасной загрузки. Файл может находиться где угодно в вашей системе. Относительный путь будет оцениваться из каталога проекта. Файл не обязательно должен существовать.

  3. Установите другие параметры конфигурации меню (по желанию). Обратите особое внимание на параметры «Конфигурация загрузчика», так как вы можете прошить загрузчик только один раз. Затем выйдите из menuconfig и сохраните конфигурацию

  4. .

  5. При первом запуске make , если ключ подписи не найден, будет напечатано сообщение об ошибке с командой для создания ключа подписи через espsecure.py generate_signing_key .

Важно

Ключ подписи, сгенерированный таким образом, будет использовать лучший источник случайных чисел, доступный для ОС и ее установки Python ( /dev/urandom в OSX/Linux и CryptGenRandom() в Windows). Если этот источник случайных чисел слаб, то закрытый ключ будет слабым.

Важно

Для производственных сред мы рекомендуем генерировать пару ключей с помощью openssl или другой стандартной программы шифрования. Дополнительные сведения см. в разделе Создание ключа подписи безопасной загрузки.

  1. Запустите загрузчик idf.py , чтобы создать загрузчик с поддержкой безопасной загрузки. Выходные данные сборки будут включать приглашение для команды перепрошивки с использованием esptool.py write_flash .

  1. Когда вы будете готовы прошить загрузчик, запустите указанную команду (вы должны ввести ее самостоятельно, make не выполняет этот шаг) и дождитесь завершения прошивки. Помните, что это одноразовая прошивка, после этого вы не сможете изменить загрузчик! .

  2. Запустите idf.py flash , чтобы построить и прошить таблицу разделов и только что созданный образ приложения. Образ приложения будет подписан с помощью ключа подписи, созданного на шаге 4.

Примечание

idf.py flash не запускает загрузчик, если включена безопасная загрузка.

  1. Сбросьте ESP32, и он загрузит программный загрузчик, который вы установили. Программный загрузчик активирует безопасную загрузку на чипе, а затем проверяет подпись образа приложения и загружает приложение. Вы должны посмотреть вывод последовательной консоли из ESP32, чтобы убедиться, что безопасная загрузка включена и не возникло ошибок из-за конфигурации сборки.

Примечание

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

Примечание

Если ESP32 сбрасывается или отключается во время первой загрузки, он снова запустит процесс при следующей загрузке.

  1. При последующих загрузках оборудование для безопасной загрузки проверит, не изменился ли загрузчик программного обеспечения (используя ключ безопасного загрузчика), а затем загрузчик программного обеспечения проверит подписанную таблицу разделов и образ приложения (используя часть открытого ключа ключа подписи безопасной загрузки).

Перепрошиваемый программный загрузчик

Конфигурация

«Безопасная загрузка: одноразовая прошивка» — рекомендуемая конфигурация для производственных устройств. В этом режиме каждое устройство получает уникальный ключ, который никогда не хранится вне устройства.

Однако также доступен альтернативный режим Secure Boot: Reflashable. Этот режим позволяет указать файл двоичного ключа, который используется в качестве ключа безопасного загрузчика. Поскольку у вас есть файл ключа, вы можете создавать новые образы загрузчика и защищать для них загрузочные дайджесты.

В процессе сборки esp-idf этот 256-битный файл ключа извлекается из ключа подписи приложения ECDSA, сгенерированного пользователем (см. шаг «Создание ключа подписи безопасной загрузки» ниже). Дайджест этого закрытого ключа SHA-256 используется в качестве безопасного ключа загрузчика в efuse (как есть для схемы кодирования None или усекается до 192 байтов для кодирования 3/4). Это удобно, поэтому вам нужно сгенерировать/защитить только один закрытый ключ.

Примечание

Хотя это и возможно, мы настоятельно рекомендуем не создавать один ключ безопасной загрузки и не устанавливать его на каждое устройство в производственной среде. Вариант «Одноразовая прошивка» рекомендуется для производственных сред.

Чтобы включить перепрошиваемый загрузчик:

  1. В меню конфигурации проекта выберите «Конфигурация загрузчика» -> CONFIG_SECURE_BOOT -> CONFIG_SECURE_BOOT_V1_ENABLED -> CONFIG_SECURE_BOOTLOADER_MODE -> Reflashable.

  2. При необходимости установите CONFIG_SECURE_BOOTLOADER_KEY_ENCODING на основе схемы кодирования, используемой устройством. Схема кодирования показана в строке Features при подключении esptool.py к чипу, либо в строке Вывод сводки espefuse.py .

  3. Чтобы сгенерировать ключ подписи, выполните действия, описанные в разделе Создание ключа подписи безопасной загрузки. Путь к сгенерированному ключевому файлу необходимо указать в меню «Secure Boot Configuration».

  4. Запустить загрузчик idf.py . Будет создан файл двоичного ключа, полученный из закрытого ключа, который используется для подписи. Будут напечатаны два набора шагов перепрошивки — первый набор шагов включает espefuse.py burn_key secure_boot_v1 path_to/secure-bootloader-key-xxx.bin , которая используется для записи ключа загрузчика в efuse. (Прошивка этого ключа — одноразовый процесс.) Второй набор шагов можно использовать для перепрошивки загрузчика с предварительно рассчитанным дайджестом (сгенерированным в процессе сборки).

  5. Возобновите процедуру однократной прошивки с шага 6, чтобы прошить загрузчик и включить безопасную загрузку. Внимательно следите за выводом журнала консоли, чтобы убедиться в отсутствии ошибок в конфигурации безопасной загрузки.

Создание ключа подписи безопасной загрузки

Система сборки предложит вам создать новый ключ подписи через espsecure.py generate_signing_key . При этом используется библиотека python-ecdsa, которая, в свою очередь, использует Python os.urandom() в качестве источника случайных чисел.

Надежность ключа подписи пропорциональна (а) источнику случайных чисел в системе и (б) правильности используемого алгоритма. Для производственных устройств мы рекомендуем генерировать ключи подписи из системы с качественным источником энтропии и использовать лучшие доступные утилиты для создания ключей EC.

Например, чтобы сгенерировать ключ подписи с помощью командной строки openssl:

`
openssl ecparam -name prime256v1 -genkey -noout -out my_secure_boot_signing_key.pem
`

Помните, что надежность системы безопасной загрузки зависит от конфиденциальности ключа подписи.

Удаленная подпись изображений

Для производственных сборок рекомендуется использовать удаленный сервер подписи, а не ключ подписи на компьютере сборки (что является конфигурацией безопасной загрузки esp-idf по умолчанию). Программу командной строки espsecure.py можно использовать для подписи образов приложений и данных таблицы разделов для безопасной загрузки в удаленной системе.

Чтобы использовать удаленную подпись, отключите параметр «Подписывать двоичные файлы во время сборки». Закрытый ключ подписи не обязательно должен присутствовать в системе сборки. Однако открытый ключ (проверка подписи) необходим, поскольку он скомпилирован в загрузчик (и может использоваться для проверки подписи образов во время обновлений OTA).

Чтобы извлечь открытый ключ из закрытого ключа:

 espsecure.py extract_public_key --keyfile PRIVATE_SIGNING_KEY PUBLIC_VERIFICATION_KEY
 

Путь к общедоступному ключу проверки подписи необходимо указать в конфигурации меню в разделе «Открытый ключ проверки подписи безопасной загрузки», чтобы создать безопасный загрузчик.

После создания образа приложения и таблицы разделов система сборки распечатает этапы подписания с помощью espsecure.py:

 espsecure. py sign_data --keyfile PRIVATE_SIGNING_KEY BINARY_FILE
 

Приведенная выше команда добавляет подпись изображения к существующему двоичному файлу. Вы можете использовать аргумент –output , чтобы записать подписанный двоичный файл в отдельный файл:

 espsecure.py sign_data --keyfile PRIVATE_SIGNING_KEY --output SIGNED_BINARY_FILE BINARY_FILE
 

Рекомендации по безопасной загрузке

  • Сгенерируйте ключ подписи в системе с качественным источником энтропии.

  • Всегда держите ключ подписи в секрете. Утечка этого ключа поставит под угрозу систему безопасной загрузки.

  • Не позволяйте третьим лицам наблюдать за какими-либо аспектами процесса генерации ключей или подписи с помощью espsecure.py. Оба процесса уязвимы для тайминга или других атак по сторонним каналам.

  • Включите все параметры безопасной загрузки в конфигурации безопасной загрузки. К ним относятся шифрование флэш-памяти, отключение JTAG, отключение интерпретатора BASIC ROM и отключение зашифрованного доступа к флэш-памяти загрузчика UART.

  • Используйте безопасную загрузку в сочетании с шифрованием флэш-памяти, чтобы предотвратить локальное считывание содержимого флэш-памяти.

Технические детали

Следующие разделы содержат низкоуровневые справочные описания различных элементов безопасной загрузки:

Аппаратная поддержка безопасной загрузки

Первый этап проверки безопасной загрузки (проверка программного загрузчика) выполняется аппаратно. Аппаратное обеспечение безопасной загрузки ESP32 может выполнять три основные операции:

  1. Генерация случайной последовательности байтов с помощью аппаратного генератора случайных чисел.

  2. Создание дайджеста из данных (обычно образ загрузчика из флэш-памяти) с использованием ключа, хранящегося в блоке Efuse 2. Ключ в Efuse может (и должен) быть защищен от чтения/записи, что предотвращает доступ программного обеспечения. Для получения полной информации об этом алгоритме см. Алгоритм дайджеста безопасного загрузчика. Дайджест может быть прочитан программным обеспечением только в том случае, если Efuse ABS_DONE_0 равно , а не (т.е. по-прежнему 0).

  3. Создайте дайджест из данных (обычно это образ загрузчика из флэш-памяти), используя тот же алгоритм, что и в шаге 2, и сравните его с предварительно рассчитанным дайджестом, хранящимся в буфере (обычно считывается со смещения флэш-памяти 0x0). Аппаратное обеспечение возвращает сравнение true/false, не делая дайджест доступным для программного обеспечения. Эта функция доступна даже при записи Efuse ABS_DONE_0.

Алгоритм дайджеста безопасного загрузчика

Начиная с «образа» двоичных данных в качестве входных данных, этот алгоритм генерирует дайджест в качестве выходных данных. Дайджест иногда называют «резюме» в документации по оборудованию. 9) должны соответствовать аппаратным ограничениям, а не криптографическим ограничениям.

  1. Считать ключ AES из блока efuse 2 в обратном порядке байтов. ) 9)

  2. Вычислить SHA-512 зашифрованного текста.

Выходной дайджест содержит 192 байта данных: 128-байтовый IV, за которым следует 64-байтовый дайджест SHA-512.

Алгоритм подписи изображения

Детерминированный ECDSA, как указано в RFC 6979.

  • Кривая — NIST256p (openssl называет эту кривую «prime256v1», иногда ее также называют secp256r1).

  • Хэш-функция SHA256.

  • Ключевой формат, используемый для хранения, — PEM.

  • Подпись изображения имеет размер 68 байтов — 4-байтовое слово версии (в настоящее время нулевое), за которым следуют 64 байта данных подписи. Эти 68 байт добавляются к образу приложения или данным таблицы разделов.

Ручные команды

Безопасная загрузка интегрирована в систему сборки esp-idf, поэтому make будет автоматически подписывать образ приложения, если включена безопасная загрузка. Загрузчик idf. py создаст дайджест загрузчика, если для него настроено menuconfig.

Однако можно использовать инструмент espsecure.py для создания автономных подписей и дайджестов.

Чтобы подписать бинарный образ:

 espsecure.py sign_data --keyfile ./my_signing_key.pem --output ./image_signed.bin image-unsigned.bin
 

Ключевой файл — это файл PEM, содержащий закрытый ключ подписи ECDSA.

Для создания дайджеста загрузчика:

 espsecure.py дайджест_безопасный_загрузчик --keyfile ./securebootkey.bin --output ./bootloader-digest.bin build/bootloader/bootloader.bin
 

Ключевой файл — это 32-байтовый необработанный ключ безопасной загрузки для устройства.

Вывод команды espsecure.pydigest_secure_bootloader представляет собой один файл, который содержит как дайджест, так и добавленный к нему загрузчик. Чтобы прошить комбинированный дайджест плюс загрузчик на устройство:

 esptool.py write_flash 0x0 bootloader-digest. bin
 

Безопасная загрузка и шифрование флэш-памяти

Если используется безопасная загрузка без шифрования флэш-памяти, можно запустить атаку «время проверки на время использования», при которой содержимое флэш-памяти подкачивается после проверки и запуска образа. Поэтому рекомендуется использовать обе функции вместе.

Проверка подписанного приложения без аппаратной безопасной загрузки

Целостность приложений можно проверить даже без включения опции аппаратной безопасной загрузки. Этот параметр использует ту же схему подписи приложения, что и аппаратная защита.
boot, но, в отличие от аппаратной безопасной загрузки, не препятствует физическому обновлению загрузчика. Это означает, что устройство может быть защищено
против удаленного доступа к сети, но не против физического доступа. По сравнению с аппаратной безопасной загрузкой этот вариант намного проще реализовать. Пошаговые инструкции см. в разделе Как включить проверку подписанного приложения.

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

  • Проверка при обновлении: если этот параметр включен, подпись автоматически проверяется всякий раз, когда API-интерфейсы esp_ota_ops.h используются для обновлений OTA. Если включена аппаратная безопасная загрузка, этот параметр всегда включен и не может быть отключен. Если аппаратная безопасная загрузка не включена, этот параметр по-прежнему обеспечивает значительную защиту от сетевых злоумышленников, предотвращая подделку обновлений OTA.

  • Проверка при загрузке: если этот параметр включен, загрузчик будет скомпилирован с кодом для проверки того, что приложение подписано перед его загрузкой. Если включена аппаратная безопасная загрузка, этот параметр всегда включен и не может быть отключен. Если аппаратная безопасная загрузка не включена, этот параметр сам по себе не обеспечивает значительной безопасности, поэтому большинство пользователей захотят оставить его отключенным.

Как включить проверку подписанного приложения

  1. Открыть меню конфигурации проекта -> Функции безопасности -> Включить CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT

  2. Можно включить «Загрузчик проверяет подписи приложений», который проверяет приложение при загрузке.

  3. По умолчанию «Подписывать двоичные файлы во время сборки» будет включено при выборе параметра «Требовать подписанные образы приложений», который будет подписывать двоичные файлы как часть процесса сборки. Файл с именем в «Закрытом ключе подписи безопасной загрузки» будет использоваться для подписи образа.

  4. Если вы отключите параметр «Подписывать двоичные файлы во время сборки», вам нужно будет ввести путь к файлу открытого ключа, используемому для проверки подписанных образов, в «Ключ проверки открытой подписи безопасной загрузки».
    В этом случае необходимо сгенерировать закрытый ключ подписи, следуя инструкциям в разделе «Создание ключа подписи безопасной загрузки»; открытый ключ проверки и подписанное изображение должны быть сгенерированы в соответствии с инструкциями в разделе Удаленное подписание изображений.

Дополнительные функции

Отладка JTAG

По умолчанию, когда включена безопасная загрузка, отладка JTAG отключается через eFuse. Загрузчик делает это при первой загрузке, в то же время он включает безопасную загрузку.

Дополнительные сведения об использовании отладки JTAG с включенной безопасной загрузкой или проверкой подписанного приложения см. в разделе JTAG с шифрованием флэш-памяти или безопасной загрузкой.

usb — Как сделать флэш-накопитель BIOS/UEFI с полным шифрованием диска

Введение

Другие ответы на этот вопрос предполагают, что у вас есть компьютер, на котором вы можете удалить внутренние диски или как-то отключить их. Это не всегда возможно или удобно. Я сделал это с помощью виртуальной машины QEMU-KVM. Если у вас уже установлена ​​виртуальная машина QEMU-KVM на рабочем столе Ubuntu или если у вас есть компьютер под управлением Ubuntu, способный запускать виртуальные машины QEMU-KVM, то этот подход может быть проще, чем отключение жестких дисков изнутри вашего компьютера.

В общем, виртуальная машина (ВМ) отлично подходит для управления полными установками Ubuntu на USB. После того, как я настрою его, я могу загрузить полную установку USB на виртуальной машине и поддерживать ее, не закрывая свой основной рабочий стол Ubuntu.

Предварительные требования

  1. QEMU-KVM Диспетчер виртуальных машин Графический интерфейс пользователя, работающий на Ubuntu 20.04.

Следующая команда установит все необходимые пакеты:

 sudo apt install --install-recommends virt-manager
 
  1. Пустой USB-накопитель, достаточно большой для полной установки Ubuntu
    и достаточно места для хранения ваших данных
  2. ISO-образ Ubuntu 20.04, хранящийся на компьютере, где установлен QEMU-KVM.
    работает

Найти имя USB-устройства

Нам нужно найти имя устройства USB-накопителя. Вставьте USB-накопитель и откройте приложение Gnome Disks :

Обратите внимание, мой USB-накопитель называется /dev/sdc . Ваш может быть другим. Эта информация понадобится вам на следующем шаге.

Размонтируйте все без исключения разделы, используя кнопку черного квадрата и превратив ее в черный треугольник.

Важно размонтировать все USB-разделы USB.

Процесс установки Ubuntu на виртуальной машине потребует от виртуальной машины полного доступа к USB-накопителю, чтобы он мог перезаписывать и создавать новые разделы на виртуальной машине.

Создайте новую виртуальную машину для использования USB-накопителей

Обычно при создании новой виртуальной машины вам предлагается создать виртуальный жесткий диск (файл), на котором установлена ​​ОС. Мы хотим получить прямой доступ к USB и установить там Ubuntu. Для этого требуется новая настройка виртуальной машины. Мы также хотим создать виртуальную машину, которая загружает устаревший BIOS, и, возможно, еще одну виртуальную машину, которая загружает UEFI.

Откройте приложение Диспетчер виртуальных машин и перейдите в Файл > Новая виртуальная машина :

Мы будем использовать Ubuntu 20. 04.2.0 Desktop ISO. нажмите «Вперед» и перейдите к следующему экрану:

Нажмите кнопку обзора и найдите файл ISO. Затем нажмите Выберите том , чтобы выбрать его. Заполните имя ОС, которую вы устанавливаете, как показано выше.

Выберите объем оперативной памяти и количество ЦП, которые вы хотите выделить для этой ВМ:

Теперь самое важное. нажмите Выберите или создайте пользовательское хранилище и введите имя вашего USB-устройства:

Обратите внимание, у меня /dev/sdc , у вас может быть по-другому. Если вы сделали это раньше, вы получите предупреждение Диск «/dev/sdc» уже используется другими гостями… . Нажмите Да, чтобы использовать эти диски.

Измените имя виртуальной машины, если хотите.

Выберите Настройка конфигурации перед установкой :

Здесь вы выбираете режим BIOS или UEFI:

Выберите BIOS, если он еще не выбран.

Если вы хотите создать еще одну виртуальную машину для проверки загрузки UEFI создаваемого USB-накопителя, выполните все описанные выше шаги и выберите вариант UEFI для второй виртуальной машины.

Нажмите кнопку «Применить» внизу, чтобы внести изменения.

Когда все изменения будут выполнены, нажмите Начать установку вверху, чтобы продолжить. Это запустит только что созданную виртуальную машину и загрузится с ISO-образа, который вы выбрали в режиме BIOS. Вы должны увидеть этот экран:

Если вы видите другой экран, возможно, вы загрузились в режиме UEFI. Затем вы увидите экран с надписью Попробуйте Ubuntu без установки :

Выберите вариант «Попробовать Ubuntu». Это позволит вам внести необходимые изменения после установки. Вы увидите знакомый рабочий стол Ubuntu со значком «Установить Ubuntu».

Выберите Язык, Клавиатура, Обычная установка, Установка третьей стороны… .

При установке введите тег «Стереть диск и установить Ubuntu», а затем выберите «Дополнительные функции». Нажмите «Использовать LVM с новой установкой Ubuntu», а затем «Зашифровать новую установку Ubuntu для безопасности».

Выберите ключ безопасности. При желании перезапишите пустое место на диске.

Выберите страну, затем имя пользователя и пароль.

После завершения установки выберите Продолжить тестирование , чтобы внести изменения в USB, чтобы он загружался в режимах BIOS и UEFI.

В виртуальной машине Ubuntu, все еще работающей из установочного ISO, откройте приложение «Диски» и выберите USB-накопитель на левой панели:

Обратите внимание на имя устройства, /dev/vda . Это отличается от /dev/sdc , так как теперь мы смотрим на тот же USB из виртуальной машины. Также обратите внимание на размер Раздела 1 и Раздела 5, в данном случае 537 МБ и 767 МБ соответственно. Это поможет нам найти эти разделы позже.

Смонтируйте эти два раздела, нажав на черные треугольники и превратив их в квадраты.

Откройте приложение «Файлы» (также известное как Nautilus) на виртуальной машине и перейдите к +Другие расположения > Компьютеры > cdrom . Это установочный ISO-образ Ubuntu, с которого мы загрузились.

Откройте другие экземпляры приложения «Файлы» на виртуальной машине и перейдите к + Другие расположения > Том 537 МБ. Это раздел 1.

Измените размер и переместите два открытых окна файлов так, чтобы вы могли видеть их оба, как показано ниже.

Скопируйте папку boot и EFI с компакт-диска в Раздел 1 :

Теперь перейдите к +Другие расположения > 767 Объем МБ > grub в верхнем окне «Файлы».

И в +Другие места > 537 МБ Volume > boot > grub в нижнем окне Files, как показано ниже:

ea5c-487c-a14a-90b6edcea385/grub — /media/ubuntu/4281-A2FB/boot/grub , как показано выше.

Снова откройте диски приложения и размонтируйте раздел 1 и раздел 5. закройте приложение дисков.

Откройте приложение терминала в виртуальной машине и смонтируйте раздел 1 из /mnt и установите grub с помощью двух команд:

 sudo mount /dev/vda1 /mnt
sudo grub-install --boot-directory=/mnt/boot/dev/vda
 

Обратите внимание, что здесь мы называем USB-накопитель /dev/vda , а первый раздел — /dev/vda1 .

Обратите внимание, что вам не понадобится пароль для sudo при загрузке Live install.

Закройте терминал и выключите виртуальную машину. Нажмите Введите при появлении запроса.

Перейдите на вкладку настроек ВМ, когда ВМ не запущена, а затем SATA CDROM на левой панели:

Удалите образ ISO и нажмите Применить, чтобы изменения вступили в силу. Запустите виртуальную машину еще раз, чтобы она загружалась с USB-накопителя.

по какой-то причине я получаю черный экран вместо запроса парольной фразы шифрования, когда я загружаю USB с помощью виртуальной машины.

Читайте также: