Как создать загрузочный USB-носитель только для UEFI?

Наличие живых носителей, которые могут загружаться обоими способами, может быть проблемой при установке Ubuntu на доступные в настоящее время компьютеры с Windows 8.

Другими словами, ключевое преимущество создания UEFI-только загрузочный USB live media - это: Вы знаете, что он определенно загружается и устанавливается через UEFI.

Поскольку Valve уже выполняет загрузку установщиков USB только с UEFI с их Основанный на Debian Steam OS и UNetbootin — лучшая альтернатива Ubuntu Startup Disk Creator — не совместимы с UEFI и, следовательно, вводят в заблуждение, я думаю, у нас должна быть отдельная тема для создания загрузочного USB-носителя только для UEFI.

Обзор

Создание загрузочного USB-носителя только для UEFI довольно просто. Просто скопируйте файлы на свой Форматированный в FAT32 USB-накопитель. Вот и все!

Помните, что для установки или загрузки носителя:

Содержание

  • Копирование файлов из метода ISO
    1. Пример через терминал
    2. Пример с помощью графического интерфейса
    3. Пример в Windows
  • Метод обратной связи ISO (расширенный)
    1. Создание двоичного файла
    2. Создание файла конфигурации
    3. Добавление постоянства
    4. Проверка целостности
    5. Безопасная загрузка UEFI
  • Обзор в 2020 году

1. Скопируйте файлы из метода ISO

Этот метод также работает для других установочных носителей, содержащих загрузчики EFI, таких как, например, Windows.

1.1. Пример через терминал

Вы можете сделать что-то вроде следующего, если 604A-00EA это ваш USB-накопитель, и у вас уже есть p7zip установленный:

$ 7z x ubuntu-12.04-desktop-amd64.iso -o/media/$USER/604A-00EA/

Вы закончили, если у вас есть только один раздел на этом USB-накопителе, в противном случае вам нужно пометить раздел как загрузочный, например, через parted:

# parted /dev/sdX set 1 boot on

Где /dev/sdX был бы ваш USB-накопитель и 1 номер раздела, который следует использовать для загрузки.

1.2. Пример с помощью графического интерфейса

  1. Смонтируйте iso-файл и скопируйте его содержимое на свой USB-накопитель. Нажмите Ctrl+H в Nautilus также можно отображать и копировать скрытые файлы.

    nautilus showing Disk Image Mounter in context menu when .iso-file is selected

  2. Добавьте флаг загрузки с помощью Разделенный.

    GParted showing how to manage partition flags

1.3. Пример в Windows

  1. То же, что и выше, просто скопируйте файлы.
  2. Нажмите Windows/Super+X, перейдите в раздел "Управление дисками" и проверьте, помечен ли раздел как активный. В версиях Windows, предшествующих Windows 8, вы нажимаете Windows/Super+R чтобы открыть меню "Выполнить" и открыть diskmgmt.msc, это открыло бы Управление дисками.

2. Метод обратной связи ISO (расширенный)

Вместо извлечения содержимого из ISO-образа GRUB и GRUB2 получили возможность загружаться из ISO-образов непосредственно через устройство обратной связи. Учитывая, что ISO-образ является загрузочным UEFI, мы можем настроить USB-накопитель, содержащий несколько ISO-файлов с разными операционными системами, не создавая беспорядка на USB-накопителе.

Если вы тоже хотите загрузить Windows, возможно, вам захочется взглянуть на САРДУ. Я помню, что использовал его с Windows PE примерно в 2005 году, и, похоже, он был обновлен для поддержки USB-накопителей и UEFI, но помните, что этот инструмент также поддерживает устаревшую загрузку.

Что нам нужно?

  • Очень базовые знания о файлах конфигурации GRUB.
  • Очень базовые знания о загрузке UEFI и GRUB, так как мы собираемся создать наш собственный образ загрузчика GRUB с включенным множеством модулей.
  • Загрузочный ISO-образ UEFI, USB-накопитель в формате FAT и компьютер под управлением Linux.
    • Нет, нам не нужна установка Linux с UEFI (что может быть ситуацией с курицей и яйцом), подойдет традиционная виртуальная машина Linux, такая как в VirtualBox.

2.1. Создание двоичного файла

На вашем компьютере с Ubuntu или виртуальной машине убедитесь, что пакет grub-efi-amd64-bin установлен (grub-efi-ia32-bin также доступен для 32-разрядных архитектур Intel в более новых версиях). Пакет может иметь другое имя в другом дистрибутиве, вы можете сравнить список файлов пакета чтобы найти подходящий пакет в вашем дистрибутиве.

Следующая команда сгенерирует образ GRUB, в данном случае двоичный файл EFI, который должен иметь возможность запускать каждый компьютер с прошивкой UEFI:

grub-mkimage -o bootx64.efi -p /efi/boot -O x86_64-efi \ fat iso9660 part_gpt part_msdos \ normal boot linux configfile loopback chain \ efifwsetup efi_gop efi_uga \ ls search search_label search_fs_uuid search_fs_file \ gfxterm gfxterm_background gfxterm_menu test all_video loadenv \ exfat ext2 ntfs btrfs hfsplus udf

Каждый стандарт Прошивка UEFI должна учитывать \EFI\BOOT\ для файла с именем boot{arch}.efi, поэтому создайте папки на USB-накопителе и скопируйте только что созданный образ в это место. Возможны и другие архитектуры вместо x64, но давайте будем проще с x64 / amd64.

2.2. Создание конфигурационного файла

Очень простой пример для grub.cfg конфигурационный файл, который следует поместить в тот же каталог, что и bootx64.efi будет выглядеть примерно так:

set timeout=3set color_highlight=black/light-magentamenuentry 'Boot Ubuntu 14.04.2 LTS from ISO' {        set isofile="/efi/boot/ubuntu-14.04.2-desktop-amd64.iso"        loopback loop $isofile        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash persistent --        initrd (loop)/casper/initrd.lz}submenu 'Useful snippets' {    menuentry 'Ubuntu' {            chainloader /efi/ubuntu/grubx64.efi    }    menuentry 'Windows' {            chainloader /efi/Microsoft/Boot/bootmgfw.efi    }    menuentry 'Firmware Setup' {            fwsetup    }}

Важная вещь - это блок конфигурации с заголовком Boot Ubuntu 14.04.2 LTS from ISO. Вы можете изменить цвет и время ожидания в соответствии с вашими предпочтениями. Я выбрал black/light-magenta поскольку он все еще выглядит немного похожим на Ubuntu, но легко различим при загрузке других конфигураций по цепочке. Вы можете найти больше примеров для других дистрибутивов в Арка Вики и читая Руководство по личинке это действительно стоит вашего времени, если вы хотите выйти за рамки этого.

Возвращаясь к блоку конфигурации, должно быть очевидно, что на ISO ссылаются как /efi/boot/ubuntu-14.04.2-desktop-amd64.iso, так что скопируйте свой ISO в \EFI\BOOT\ и заменить ubuntu-14.04.2-desktop-amd64.iso в конфигурации с фактическим именем файла вашего ISO.

loopback loop $isofile это строка, которая загрузит наш ISO-файл на устройство обратной связи, с которого мы сможем напрямую загрузить ядро Linux. Это возможно, потому что наш образ EFI GRUB включает модуль обратной связи. (Для определения того, какие модули целесообразно включить, потребовалось немного проб и ошибок. Вы не должны видеть никаких сообщений об ошибках, хотя это все еще не идеально.) Говоря о ядре, вы можете добавить параметры ядра, такие как toram, параметры для разных языков (пример locale=de_DE bootkbd=de) и, как в примере: persistent

2.3. Добавление постоянства

Вы можете добавить раздел, как описано в: Как мне заставить live-USB использовать раздел для сохранения? Или вы можете создать casper-rw файл и поместите его в корень вашего USB-накопителя.

dd if=/dev/zero of=casper-rw bs=1M count=4094mkfs.ext4 -m 0 casper-rw

Я не проверял, каков абсолютный максимум, он должен быть где-то между 4094 и 4096 МБ. Используйте раздел, если вы собираетесь использовать больше места. Обратите внимание, что каждое изменение (root) является модификацией файловой системы overlay, даже при удалении файлов.

2.4. Проверка целостности

Вам следует ознакомиться с ответами на следующие вопросы, чтобы убедиться, что содержимое Live ISO на USB-накопителе находится в первозданном состоянии:

2.5. Безопасная загрузка UEFI

Безопасная загрузка станет обязательной для компьютеров с Windows 10, я предлагаю вам взглянуть на предварительный загрузчик Linux Foundation, чтобы добавить функции безопасной загрузки в эту настройку. Вот некоторые ASCII-графика, иллюстрирующая меню прилагаемого HashTool.

3. Обзор в 2020 году

Я написал этот ответ более 5 лет назад. Насколько хорошо это все еще работает? Это хорошо работает для Ubuntu. install.wim из последних образов Windows 10, однако, превышает максимальный размер файла FAT32, и большие изображения, такие как RHEL 8, также не подходят. Вчера я попробовал Rufus и заметил, что он также использует GRUB с модулями NTFS EFI для чтения другого раздела NTFS, где хранятся установочные файлы Windows. Однако не удалось загрузить данные из этого раздела. Кроме того, exFAT теперь стал обычным явлением.

Windows придирчива к дискам, на которых нет таблиц разделов. Попытка перепрофилировать старые твердотельные накопители в качестве компактных флэш-накопителей USB не очень хорошо работает в Windows. Возможно, мне нужно прочитать некоторую документацию Microsoft, чтобы выяснить, в чем заключалось обоснование того, чтобы сделать ее немного сложнее, чем в Linux.

ChromeOS - это другая тема, я думаю, что невозможно создать носитель для восстановления так, как я предпочитаю. Что является громоздким, когда вам приходится использовать Windows и переформатировать весь диск, чтобы создать носитель для вашего Chromebook.

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


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

Извлечение из ISO-файла в FAT32

Извлечение содержимого 64-разрядного ISO-файла рабочего стола Ubuntu в раздел с файловой системой FAT32 и флагом загрузки выполнит задачу: создать живой диск, который загружается только в режиме UEFI. Здесь это называется "Копировать файлы из метода ISO" (в принятом ответе).

Проверьте, работает ли он в режиме UEFI или BIOS

Но его легко протестировать в работающей системе Ubuntu (как в режиме реального времени, так и в установленном режиме), если он был загружен в режиме UEFI или BIOS. Запустите эту командную строку,

test -d /sys/firmware/efi && echo efi || echo bios

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

Смотрите также следующие ссылки для более подробного объяснения и описания метода,

help.ubuntu.com/community/Installation/iso2usb

help.ubuntu.com/community/Installation/iso2usb/diy

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

Затем:

sudo dd if=path/to/image/file | pv | sudo dd of=/dev/device_you_want_to_use

(/dev/device_you_want_to_use как правило, будет /dev/sdb, но сверьтесь с df!)