Uefi usb live: Ventoy. Мультизагрузочная флешка / Хабр

Ventoy. Мультизагрузочная флешка / Хабр

Так выглядит загрузочный интерфейс Ventoy

Утилит для создания мультизагрузочных флешек много, а для чего такие флешки или диски на хабре я думаю, объяснять не требуется. До последнего момента я пользовался WinSetupFromUsb и Rufus пока не узнал про Ventoy. В коментах указали про такие тулзы как YUMI, E2B etc. Не знал про них, спасибо за наводку.

Итак, скачать можно утилиту в виде zip архива с github страницы проекта (Windows/ Linux). Распаковываем и запускаем.

Интерфейс утилиты

Как этим пользоваться?

  • Вставляем наш флеш диск в ПК

  • В опциях выбираем стиль разметки диска MBR/GPT

  • Включаем SecureBoot если нужно

  • Нажимаем Установить, Ventoy установлен, он больше не нужен.

  • Если необходимо установить утилиту на иной накопитель (SD, NVMe, HDD, SSD, CD/DVD) в опциях выбираем «показать другие устройства».

Утилита разбивает диск на два раздела — загрузочный GRUB/Syslinux и основной. По умолчанию файловая система основного раздела exFAT — но можно отформатировать FAT32, NTFS, UDF, XFS, Ext2, 3, 4. С основным разделом мы уже работаем в проводнике, файловом менеджере, в общем где хотите. Перетаскиваете туда новые образы (ISO/WIM/IMG/VHD(x)/EFI) и удаляете старые, проще говоря, работаете как с обычными файлами.

Основной раздел под образы можно ещё подразбить на дополнительный. Зачем? Дело в том, что после загрузки в режиме live usb, раздел с образами становится недоступен. На дополнительный раздел можно сохранить необходимые файлы для работы с live usb.

По умолчанию Ventoy сканирует все образы на диске и выводит их списком алфавитном порядке. Это удобно если их не очень много, однако проще всего будет поместить в папки. Режим TreeView включается клавишей F3, так можно увидеть все каталоги, подкаталоги и сами файлы. Нажимая Esc, можно выйти из режима TreeView. Если поместить файл .ventoyignore в какую либо папку, Ventoy ее сканировать не будет.

И основное отличие Ventoy от YUMI — в поддержке множества файловых систем, как то FAT32 / exFAT / NTFS / UDF / XFS / Ext2, 3,4. У YUMI с этим все грустно, пока всего лишь NTFS и FAT32, а exFAT все еще в разработке.

Про плагины

Как любезно указал в коментах @Oxyd,в статье не хватает слов про плагины. Извольте. Итак, плагины и файл конфигурации ventoy.json хранятся в основном каталоге с образами. Для этого создадим папку /ventoy и поместим туда ventoy.json.

Пример json файла

{
    "control": [
        { "VTOY_DEFAULT_MENU_MODE": "1" },
        { "VTOY_FILT_DOT_UNDERSCORE_FILE": "1" }
    ],
    
    "theme": {
        "file": "/ventoy/theme/blur/theme.txt",
        "gfxmode": "1920x1080"
    },
    
    "auto_install" : [
        {
            "image": "/ISO/cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso",
            "template": "/ventoy/script/windows_unattended.xml"
        },
        {
            "image": "/000/centos. iso",
            "template": "/ventoy/script/centos_kickstart.cfg"
        }
    ]
}

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

Начиная с версии 1.0.55 утилита научилась устанавливать Windows 11 на несовместимые устройства, для этого надо использовать специальный плагин. Создаем текстовый файл, вставляем код и переименовываем его в ventoy.json, размещаем в корне распакованной программы, а потом устанавливаем на диск.

ventoy.json

{
«control»: [
{ «VTOY_DEFAULT_MENU_MODE»: «0» },
{ «VTOY_TREE_VIEW_MENU_STYLE»: «0» },
{ «VTOY_FILT_DOT_UNDERSCORE_FILE»: «1» },
{ «VTOY_SORT_CASE_SENSITIVE»: «0» },
{ «VTOY_MAX_SEARCH_LEVEL»: «max» },
{ «VTOY_DEFAULT_SEARCH_ROOT»: "/ISO" },
{ «VTOY_MENU_TIMEOUT»: «10» },
{ «VTOY_DEFAULT_IMAGE»: "/ISO/debian_netinstall.iso" },
{ «VTOY_FILE_FLT_EFI»: «1» },
{ «VTOY_DEFAULT_KBD_LAYOUT»: «QWERTY_USA» },
{ «VTOY_WIN11_BYPASS_CHECK»: «1» }
]
}

Подытожим:

Плюсы:

  • Открытый исходный код GPLv3

  • Однокнопочный интерфейс

  • Скорость установки ограничена скоростью накопителя

  • Можно установить на любой подходящий диск — SD Card, NVme, HDD, флешка, оптический диск

  •  Установка из ISO / WIM / IMG / VHD (x) / EFI без распаковки

  • Поддержка разметки MBR/GPT

  • Поддержка x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI, ARM64 UEFI, MIPS64EL UEFI

  • Основной раздел можно форматировать в FAT32 / exFAT / NTFS / UDF / XFS / Ext2, 3,4

  • Поддержка более 730 файлов дистрибутивов и постоянно добавляются новые

  • Накопитель после установки Ventoy можно использовать как обычно (я вставил флешку в смартфон)

  • Обновлять Ventoy необязательно (если используете определенный набор дистрибутивов) но в новых версиях улучшается совместимость.

  • Поддержка плагинов

  • Обширная и исчерпывающая справка по программе.

Минусы:

  • Не все железо поддерживает

  • Не все образы корректно работают, так что это отнюдь не «серебряная пуля»

  • Нет автообновления утилиты.

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

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

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

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

Содержание

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

Этот метод также работает для других установочных носителей, содержащих загрузчики 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 также можно отображать и копировать скрытые файлы.

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

1.3. Пример в Windows

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

Вместо извлечения содержимого из 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-накопителе находится в первозданном состоянии:

  • Как я могу проверить целостность загруженного компакт-диска Ubuntu?
  • Можно ли выполнить проверку целостности загрузочного диска USB?

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

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

Я написал этот ответ более 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 и больше не должны бояться.

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

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

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

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

Содержание

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

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

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

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

 $ 7z x ubuntu-12.04-desktop-amd64.iso -o/media/ $ПОЛЬЗОВАТЕЛЬ/604A-00EA/
 

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

 # parted /dev/sdX установить 1 загрузку на
 

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

1.2. Пример через графический интерфейс

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

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

1.3. Пример для Windows

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

Вместо того, чтобы извлекать содержимое из образа 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.
    • Нет, нам не нужна установка 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 \
 жир iso9660 part_gpt part_msdos \
 обычная загрузка linux configfile loopback chain \
 efifwsetup efi_gop efi_uga \
 ls поиск search_label search_fs_uuid search_fs_file \
 gfxterm gfxterm_background gfxterm_menu тест 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
установить color_highlight=черный/светло-пурпурный
пункт меню «Загрузить Ubuntu 14.04.2 LTS из ISO» {
        установить isofile="/efi/boot/ubuntu-14.04.2-desktop-amd64.iso"
        петля $isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject тихий всплеск постоянный --
        initrd (цикл)/casper/initrd.lz
}
подменю "Полезные фрагменты" {
    пункт меню «Убунту» {
            цепной загрузчик /efi/ubuntu/grubx64.efi
    }
    пункт меню 'Windows' {
            цепной загрузчик /efi/Microsoft/Boot/bootmgfw.efi
    }
    пункт меню «Настройка прошивки» {
            fwsetup
    }
}
 

Важным моментом является блок конфигурации с заголовком Boot Ubuntu 14. 04.2 LTS from 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.

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

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

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

 дд, если=/dev/zero of=casper-rw bs=1M count=4094
mkfs.ext4 -m 0 Каспер-RW
 

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

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

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

  • Как проверить целостность загруженного компакт-диска Ubuntu?
  • Можно ли выполнить проверку целостности загрузочного USB-диска?

2.

5. UEFI Secure Boot

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

Я написал этот ответ более 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 и больше не должны бояться.

boot — создание загрузочного USB-накопителя UEFI с использованием пользовательского ISO

Задавать вопрос

спросил

Изменено
3 года, 6 месяцев назад

Просмотрено
5к раз

У меня есть устройство с процессором AMD64, но с загрузчиком UEFI, который поддерживает только i386.

Я создал собственный установщик Ubuntu 19.04 ISO с помощью Cubic и записал его на USB-накопитель с помощью usb-creator-gtk (Startup Disk Creator).

Это создает два раздела на USB:

Первый раздел отформатирован как ISO9660 и содержит содержимое ISO, второй — это раздел FAT32, который содержит только загрузочные файлы .EFI.

Второй раздел — это то, с чего будет загружаться планшет. Его содержимое взято из файла efi.img, хранящегося внутри /boot/grub на ISO. Первоначально он содержал только файлы AMD64 EFI.:

Я создал свой собственный заменяющий файл img.efi и ввел файл bootia32.efi, используя следующие команды:

 dd if=/dev/zero of=efi.img bs= 1M количество = 5
mkfs.fat efi.img
sudo mount -o loop,rw efi.img /media/efi
sudo cp -r <файлы> /media/efi
 

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

Я использовал этот файл bootia32. efi для успешной загрузки grub раньше, если вместо этого вручную отформатировать USB как FAT32, скопировать файлы ISO и поместить пользовательский файл EFI внутрь /EFI/BOOT, тогда устройство будет загрузитесь в Grub, как я и ожидал.

Но я хотел бы сделать ISO, который можно было бы прошить как обычно и нормально загрузиться.

Мой вопрос: какой смысл создавать отдельный раздел для хранения загрузочных файлов EFI, как это делает usb-creator-gtk?
Как заставить этот раздел загружать конфигурацию Grub установщика, а не только командную строку Grub?

Спасибо.

2

Спасибо @oldfred за объяснение того, что отдельные разделы предназначены для преодоления ограничения размера файла в 4 ГБ для FAT32.

Мне удалось создать загрузочный ISO-образ, поместив загрузочную папку и папки EFI из ISO в раздел FAT32 (efi.img).

Я изменил grub.cfg для запуска из другого раздела, чем тот, в котором он находится.
grubx64.efi
mmx64.efi

Но работает, так что я доволен.

Точная структура моего файла efi.img такова:

 .
├── ботинок
│   └── жратва
│   ├── font.pf2
│   ├── grub.cfg
│   ├── loopback.cfg
│   └── x86_64-efi
│   ├── acpi.mod
│   ├── adler32.mod
│   ├── ahci.mod
│   ├── all_video.mod
│   ├── aout.mod
│   ├── appleldr.mod
│   ├── archelp.mod
│   ├── ata.mod
│   ├── at_keyboard.mod
│   ├── backtrace.mod
│   ├── bfs.mod
│   ├── bitmap.mod
│   ├── bitmap_scale.mod
│   ├── blocklist.mod
│   ├── boot.mod
│   ├── bsd.mod
│   ├── bswap_test.mod
│   ├── btrfs.mod
│   ├── bufio.mod
│   ├── кат.мод
│   ├── cbfs.mod
│   ├── cbls.mod
│   ├── cbmemc.mod
│   ├── cbtable.mod
│   ├── cbtime.mod
│   ├── chain.mod
│   ├── cmdline_cat_test.mod
│   ├── cmp.mod
│   ├── cmp_test.mod
│   ├── command.lst
│   ├── cpio_be.mod
│   ├── cpio.mod
│   ├── cpuid.mod
│   ├── crc64.mod
│   ├── cryptodisk.mod
│   ├── crypto.lst
│   ├── crypto.mod
│   ├── cs5536.mod
│   ├── ctz_test. mod
│   ├── datehook.mod
│   ├── date.mod
│   ├── datetime.mod
│   ├── diskfilter.mod
│   ├── disk.mod
│   ├── div.mod
│   ├── div_test.mod
│   ├── dm_nv.mod
│   ├── echo.mod
│   ├── efifwsetup.mod
│   ├── efi_gop.mod
│   ├── efinet.mod
│   ├── efi_uga.mod
│   ├── ehci.mod
│   ├── elf.mod
│   ├── eval.mod
│   ├── exfat.mod
│   ├── exfctest.mod
│   ├── ext2.mod
│   ├── fat.mod
│   ├── файл.мод
│   ├── fixvideo.mod
│   ├── font.mod
│   ├── fs.lst
│   ├── gcry_arcfour.mod
│   ├── gcry_blowfish.mod
│   ├── gcry_camellia.mod
│   ├── gcry_cast5.mod
│   ├── gcry_crc.mod
│   ├── gcry_des.mod
│   ├── gcry_dsa.mod
│   ├── gcry_idea.mod
│   ├── gcry_md4.mod
│   ├── gcry_md5.mod
│   ├── gcry_rfc2268.mod
│   ├── gcry_rijndael.mod
│   ├── gcry_rmd160.mod
│   ├── gcry_rsa.mod
│   ├── gcry_seed.mod
│   ├── gcry_serpent.mod
│   ├── gcry_sha1.mod
│   ├── gcry_sha256.mod
│   ├── gcry_sha512.mod
│   ├── gcry_tiger.mod
│   ├── gcry_twofish.mod
│   ├── gcry_whirlpool.mod
│   ├── geli.mod
│   ├── gettext.mod
│   ├── gfxmenu. mod
│   ├── gfxterm_background.mod
│   ├── gfxterm_menu.mod
│   ├── gfxterm.mod
│   ├── gptsync.mod
│   ├── grub.cfg
│   ├── gzio.mod
│   ├── halt.mod
│   ├── hashsum.mod
│   ├── hdparm.mod
│   ├── help.mod
│   ├── hexdump.mod
│   ├── hfs.mod
│   ├── hfspluscomp.mod
│   ├── hfsplus.mod
│   ├── http.mod
│   ├── iorw.mod
│   ├── jfs.mod
│   ├── jpeg.mod
│   ├── keylayouts.mod
│   ├── keystatus.mod
│   ├── ldm.mod
│   ├── legacycfg.mod
│   ├── legacy_password_test.mod
│   ├── linux16.mod
│   ├── linuxefi.mod
│   ├── linux.mod
│   ├── loadbios.mod
│   ├── loadenv.mod
│   ├── loopback.mod
│   ├── lsacpi.mod
│   ├── lsefimmap.mod
│   ├── lsefi.mod
│   ├── lsefisystab.mod
│   ├── lsmmap.mod
│   ├── ls.mod
│   ├── lspci.mod
│   ├── lssal.mod
│   ├── luks.mod
│   ├── lvm.mod
│   ├── lzopio.mod
│   ├── macbless.mod
│   ├── macho.mod
│   ├── mdraid09_be.mod
│   ├── mdraid09.mod
│   ├── mdraid1x.mod
│   ├── memrw.mod
│   ├── minicmd.mod
│   ├── minix2_be.mod
│   ├── minix2.mod
│   ├── minix3_be.mod
│   ├── minix3. mod
│   ├── minix_be.mod
│   ├── mmap.mod
│   ├── moddep.lst
│   ├── morse.mod
│   ├── mpi.mod
│   ├── msdospart.mod
│   ├── mul_test.mod
│   ├── multiboot2.mod
│   ├── multiboot.mod
│   ├── nativedisk.mod
│   ├── net.mod
│   ├── newc.mod
│   ├── ntfscomp.mod
│   ├── ntfs.mod
│   ├── odc.mod
│   ├── offsetio.mod
│   ├── ohci.mod
│   ├── part_acorn.mod
│   ├── part_amiga.mod
│   ├── part_apple.mod
│   ├── part_bsd.mod
│   ├── part_dfly.mod
│   ├── part_dvh.mod
│   ├── part_gpt.mod
│   ├── partmap.lst
│   ├── part_msdos.mod
│   ├── part_plan.mod
│   ├── part_sun.mod
│   ├── part_sunpc.mod
│   ├── parttool.lst
│   ├── parttool.mod
│   ├── пароль.мод
│   ├── password_pbkdf2.mod
│   ├── pata.mod
│   ├── pbkdf2.mod
│   ├── pbkdf2_test.mod
│   ├── pcidump.mod
│   ├── play.mod
│   ├── png.mod
│   ├── priority_queue.mod
│   ├── probe.mod
│   ├── procfs.mod
│   ├── progress.mod
│   ├── raid5rec.mod
│   ├── raid6rec.mod
│   ├── random.mod
│   ├── read.mod
│   ├── reboot.mod
│   ├── regexp.mod
│   ├── reiserfs. mod
│   ├── relocator.mod
│   ├── romfs.mod
│   ├── scsi.mod
│   ├── serial.mod
│   ├── setjmp.mod
│   ├── setjmp_test.mod
│   ├── setpci.mod
│   ├── shift_test.mod
│   ├── signal_test.mod
│   ├── sleep.mod
│   ├── sleep_test.mod
│   ├── spkmodem.mod
│   ├── squash5.mod
│   ├── syslinuxcfg.mod
│   ├── terminal.lst
│   ├── terminal.mod
│   ├── terminfo.mod
│   ├── test_blockarg.mod
│   ├── testload.mod
│   ├── test.mod
│   ├── testspeed.mod
│   ├── tftp.mod
│   ├── tga.mod
│   ├── time.mod
│   ├── триг.мод
│   ├── tr.mod
│   ├── true.mod
│   ├── udf.mod
│   ├── ufs1_be.mod
│   ├── ufs1.mod
│   ├── ufs2.mod
│   ├── uhci.mod
│   ├── usb_keyboard.mod
│   ├── usb.mod
│   ├── usbms.mod
│   ├── usbserial_common.mod
│   ├── usbserial_ftdi.mod
│   ├── usbserial_pl2303.mod
│   ├── usbserial_usbdebug.mod
│   ├── usbtest.mod
│   ├── verify.mod
│   ├── video_bochs.mod
│   ├── video_cirrus.mod
│   ├── video_colors.mod
│   ├── video_fb.mod
│   ├── videoinfo.mod
│   ├── video.lst
│   ├── видео.мод
│   ├── videotest_checksum. mod
│   ├── видеотест.мод
│   ├── xfs.mod
│   ├── xnu.mod
│   ├── xnu_uuid.mod
│   ├── xnu_uuid_test.mod
│   ├── xzio.mod
│   └── zfscrypt.mod
└── эфи
    └── ботинок
        ├── bootia32.efi
        ├── BOOTx64.EFI
        ├── grubx64.efi
        └── mmx64.efi
 

Некоторые из них, вероятно, не нужны, но меня не беспокоят дополнительные 10 МБ места, которые они занимают.

Это мой grub.cfg внутри файла img.efi, обратите внимание на set root=(hd0) :

 if loadfont /boot/grub/font.pf2 ; затем
установить gfxmode=авто
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
фи
установить menu_color_normal=белый/черный
установить menu_color_highlight=черный/светло-серый
установить время ожидания = 5
пункт меню «Установить сервер Ubuntu» {
установить корень = (hd0)
установить gfxpayload = сохранить
linux /casper/vmlinuz boot=casper only-вездесущий тихий всплеск ---
initrd /каспер/initrd
}
пункт меню "Запуск с внутреннего диска" {
linux (hd1,gpt2)/boot/vmlinuz root=/dev/mmcblk1p2 intel_idle.

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