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

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

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

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

124
задан 20 November 2015 в 03:28

3 ответа

Обзор

Создание UEFI только для загрузки живых USB-носителей довольно просто. Просто скопируйте файлы на ваш 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-накопителе, в противном случае вам нужно пометить раздел как загрузочный e. g. через parted:

# parted /dev/sdX set 1 boot on

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

1.2. Пример через GUI

  1. Mount the .iso-file and copy the content over to your USB drive. Нажмите Ctrl+H в Nautilus, чтобы также отобразить и скопировать скрытые файлы.

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

  2. Добавьте флаг загрузки через GParted.

    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, посмотрите на SARDU. Я помню, что использовал его с Windows PE примерно в 2005 году, и он, кажется, был обновлен для поддержки USB-носителей и UEFI, но помните, что этот инструмент также поддерживает загрузку по наследству.

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

  • Очень базовые знания о конфигурационных файлах GRUB.
  • Очень базовые знания о загрузке UEFI и GRUB, так как мы собираемся сгенерировать наш собственный загрузочный образ GRUB с большим количеством модулей.
  • Загрузочный ISO-образ UEFI, USB-накопитель, отформатированный в FAT, и машина, которая работает под управлением Linux.
    • Нет, нам не нужна UEFI-инсталляция Linux (это может быть ситуация с курицей и яйцом), традиционная Linux VM, как в 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=3
set color_highlight=black/light-magenta

menuentry '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 из ISO. Вы можете изменить цвет и таймаут в соответствии с вашими предпочтениями. Я выбрал черный/светло-маджента, так как он все еще выглядит немного Ubuntu...мешок, но легко различим при загрузке цепочек других конфигураций. Вы можете найти больше примеров для других дистрибутивов в Arch Wiki и чтение руководства GRUB действительно стоит вашего времени, если вы хотите выйти за рамки этого.

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

цикл обратной связи по циклу $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=4094
mkfs.ext4 -m 0 casper-rw

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

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

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

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

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

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

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

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

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

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


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

146
ответ дан 20 November 2015 в 03:28

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

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

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

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

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

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

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

help.ubuntu.com/community/Installation/iso2usb

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

4
ответ дан 20 November 2015 в 03:28

Использование 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 ! )

2
ответ дан 20 November 2015 в 03:28

Другие вопросы по тегам:

Похожие вопросы: