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

108

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

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

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

LiveWireBT
источник

Ответы:

133

обзор

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

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

  • Возможно, вам все равно придется явно указать компьютеру загрузку носителя через UEFI .
  • Рекомендуется таблица разделов GPT, как в предустановках Windows 8 и более поздних версий.
  • Не забудьте создать раздел после того, как вы создали таблицу разделов.
  • Используйте последние ISO-образы AMD64 (LTS), потому что они определенно содержат загрузчики UEFI.

Содержание

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

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. Пример через GUI

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

    nautilus, показывающий Disk Image Mounter в контекстном меню, когда выбран .iso-файл

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

    GParted показывает, как управлять флагами разделов

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, как в 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 from ISO. Вы можете изменить цвет и время ожидания по своему вкусу. Я выбрал, black/light-magentaпоскольку он все еще выглядит немного 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.

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=4094
mkfs.ext4 -m 0 casper-rw

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

2,4. Проверка целостности

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

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

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


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

LiveWireBT
источник
1
позвольте мне указать (а), что все ПК, поставленные за последние 5 лет или около того, имеют такую ​​возможность; (б) что установщик root .iso может использовать полную флешку в качестве обычного постоянного хранилища. (используйте параметры монтирования ro для защиты от случайного удаления.) Для современных ПК и распространенных шаблонов использования это кажется лучшим решением, чем стандартное решение live-usb-creator.
user1539216
3
При использовании метода GUI я столкнулся с некоторыми ошибками символических ссылок . Это актуально? Можете ли вы уточнить?
VRR
1
Привет, LiveWireBT! Спасибо за такой интересный ответ !! Я следовал 2. Метод обратной петли ISO (расширенный) и сумел загрузить UEFI с USB-накопителя. Но в конце загрузки я получил сообщение об ошибке: « Не могу смонтировать / dev / loop2 на / cow, и после нажатия клавиши enter я увидел приглашение (initramfs). Вы можете помочь мне с этим?
Зуба
Хочу также поблагодарить вас за великолепное руководство, оно было четким и лаконичным. Я никогда даже не думал о разделении флэш-накопителя и наличии на нем нескольких ОС. Еще раз спасибо!
Хатем Джабер
2
По крайней мере, в 16.04 «copy all files» не загружается из-за аргумента строки ядра grub.cfg «file = / cdrom / preseed / ubuntu.seed». Нет такого файла, вероятно, связанного с ранее упомянутой отсутствующей символической ссылкой (Ubuntu to.). Отредактируйте файл grub.cfg, чтобы удалить файл = ... и заменить его на «live-media-path = / casper / ignore_uuid»
ubfan1
3

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

Извлечение содержимого ISO-файла 64-битного рабочего стола 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

sudodus
источник
2

Использование ddработало для меня, по некоторым причинам, версия GUI не работала. Итак, во-первых, вы можете захотеть отслеживать прогрессирование 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!)

вир
источник
8
Создание носителя таким способом не приводит к загрузке только UEFI . Акцент сделан на последнем абзаце вопроса: «Существует также одно преимущество создания загрузочных носителей USB с поддержкой только UEFI: вы знаете, что оно определенно загружается через UEFI». Наличие носителя, способного загружаться в обоих направлениях, является проблемой при попытке понять и настроить загрузочную UbuIu UEFI.
LiveWireBT
1
Понимаю. Странно то, что таким образом я смог создать образ, который загружался в режиме UEFI (я знаю это, поскольку ноутбук был настроен на разрешение только загрузки uefi, а также из-за начального экрана). Предпочитаемый ответ не работает для меня, компьютер просто не загрузится с образом, созданным простым копированием файлов.
SUP
5
@sup этот метод создает носитель, который может быть загружен в UEFI. Проблема в том, что это не только UEFI-загрузочный, как указано в вопросе: он также может быть загружен в режиме BIOS.
Дараэль