Оглавление

  1. Теория
    1. Загрузчики
    2. Таблица разделов
    3. MBR / PBR
    4. UEFI
    5. GRUB4DOS, SYSLINUX, GRUB2
    6. rEFInd
    7. BCD (Boot Configuration Data)
    8. Файлы
      1. Различные типы файлов
      2. Содержимое файлов
      3. Различия между Windows и Linux
      4. Команда source в Linux
      5. BAT/CMD файлы в Windows
    9. Текстовые файлы
    10. Окончание строк в Windows и Linux: CR+LF и LF
  2. Програмное обеспечение
    1. Операционные системы, Live диски
    2. Geany
    3. Утилита BOOTICE
    4. Дистрибутивы загрузчиков
    5. Готовые архивы EFI / GRUB4DOS / SYSLINUX
    6. Примеры конфигурационных файлов
    7. Утилита виртуализации Qemu
    8. Инструкции по установке загрузчиков
  3. Практика
    1. Объяснение загрузчиков
      1. GRUB4DOS
      2. Syslinux
      3. GRUB2
    2. Элемент изучения
    3. Практические примеры
      1. Загрузчики флешки
      2. Проверка запуска загрузчиков
      3. Наполнение флешки
      4. Деление флешки на несколько разделов
    4. Новое поколение материнский плат UEFI-NON-CSM
    5. Тестирование

1. Теория

1.1. Загрузчики

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

Важно понимать несколько ключевых моментов:

  1. MBR и PBR — это места на носителе, где хранится загрузочный код.
    • MBR (Master Boot Record) — первый сектор диска (512 байт), содержит таблицу разделов и первичный загрузчик, который запускается первым при старте системы. Он либо сам загружает ОС, либо передаёт управление загрузчику, расположенному в PBR активного раздела.
    • PBR (Partition Boot Record) — первый сектор конкретного раздела, содержит вторичный загрузчик, который уже загружает ядро ОС или следующий этап загрузки.
  2. Сам файл загрузчика — это исполняемый код, который может находиться в MBR, PBR или в файловой системе (например, EFI-загрузчик в ESP разделе).
  3. Загрузчик указывает, откуда грузить — с MBR, PBR или EFI-раздела — и какой именно загрузчик или ядро запускать.
  4. Разные загрузчики могут использовать разные подходы, но суть одна — они обеспечивают цепочку передачи управления от прошивки или BIOS к операционной системе.

Все загрузчики работают по схожему принципу: выполняется код загрузчика, который указывает, откуда и что загружать дальше — с MBR, PBR или EFI-раздела.

Важно не только сам файл загрузчика, но и место его расположения (MBR, PBR, ESP), а также способ взаимодействия с прошивкой (BIOS или UEFI).

Загрузчик — это связующее звено, которое управляет процессом загрузки, передавая управление от начального кода к ядру ОС или другому загрузчику.

Например, первичный загрузчик в MBR может передать управление загрузчику в PBR активного раздела, а тот уже загрузит ОС. В UEFI-системах загрузчик находится в специальном разделе ESP и запускается напрямую прошивкой.

Этот файл содержит инструкции, как и откуда загружать операционную систему или следующий загрузчик. Например, GRUB2, SYSLINUX, rEFInd — это разные загрузчики, которые могут запускаться с разных мест и по-разному управлять процессом загрузки.

Любой носитель информации — будь то SSD (SATA или NVMe), HDD, USB-флешка, microSD, встроенная память смартфона или планшета — устроены примерно одинаково с точки зрения хранения данных: это набор ячеек памяти, организованных в блоки и разделы, на которых записываются файлы и системные данные.

Для загрузки операционной системы важен именно загрузчик — специальный код, который запускается при включении устройства и указывает, откуда и как загружать ОС.

В ПК это может быть код в MBR, PBR или EFI System Partition (ESP) для UEFI-систем. В смартфонах и планшетах тоже есть свои загрузчики (bootloader), которые запускают ОС, но архитектура и способы загрузки могут отличаться.

Загрузочный файл или код — это ключевой элемент, который определяет процесс загрузки, независимо от типа носителя или устройства. Он указывает, где искать ядро ОС, как передать управление и какие параметры использовать.

Однако устройства могут иметь разные архитектуры, прошивки и способы загрузки:

Итог.

Перейти к оглавлению.


1.2. Таблица разделов

Что такое таблица разделов, где она хранится и зачем нужна?

Таблица разделов — это специальная структура данных на физическом накопителе (жестком диске, SSD, флешке и т.п.), которая содержит информацию обо всех разделах диска: где они начинаются, где заканчиваются, какого типа и как называются. Она нужна, чтобы операционная система и загрузчик понимали, как организовано пространство на диске и где искать данные или операционные системы.

Таблица разделов хранится в определённой области диска, в зависимости от типа таблицы:

Что такое MBR и GPT?

MBR (Master Boot Record) — это традиционный формат таблицы разделов, который хранится в первом секторе диска. В MBR содержится:

Ограничения MBR:

GPT (GUID Partition Table) — современный стандарт таблицы разделов, разработанный для замены MBR. Особенности GPT:

Итог

Перейти к оглавлению.


1.3. MBR / PBR

Что такое первичный и вторичный загрузчики MBR и PBR?

MBR (Master Boot Record) — это специальный первый сектор на физическом носителе (обычно на жестком диске, но может быть и любая флешка, microSD, любой SSD), который содержит код загрузчика и таблицу разделов диска. В MBR записывается первичный загрузчик, который запускается при включении компьютера. Его задача — начать процесс загрузки операционной системы.

PBR (Partition Boot Record) — это загрузочный сектор конкретного раздела диска. В нем находится вторичный загрузчик, который более сложный и отвечает за загрузку операционной системы из конкретного раздела.

Кратко о процессе загрузки.

  1. При включении питания BIOS/UEFI ищет MBR на первом секторе диска.
  2. Выполняется первичный загрузчик MBR — он анализирует таблицу разделов и выбирает активный раздел.
  3. Управление передается вторичному загрузчику PBR этого раздела.
  4. Вторичный загрузчик загружает операционную систему.

Итог.

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

Перейти к оглавлению.


1.4. UEFI

Что такое EFI загрузка?

EFI (Extensible Firmware Interface) или точнее UEFI (Unified EFI) — это современный интерфейс между прошивкой компьютера и операционной системой, который заменяет традиционный BIOS. В отличие от BIOS, UEFI поддерживает более гибкую и мощную систему загрузки.

При загрузке с UEFI:

Почему носитель должен быть отформатирован в FAT32?

Стандарт UEFI требует, чтобы EFI System Partition была отформатирована в файловой системе FAT32 (для сменных носителей допускается FAT16 или FAT12, но FAT32 — самый распространённый вариант).

Причина в том, что UEFI прошивка содержит встроенную поддержку чтения FAT32, но не поддерживает другие файловые системы, например NTFS или exFAT, на этапе загрузки.

Если носитель отформатирован в NTFS, UEFI не сможет прочитать загрузочные файлы, и загрузка не произойдет без дополнительных ухищрений (например, специальных драйверов или загрузчиков).

FAT32 — это универсальная, простая и широко поддерживаемая файловая система, которая гарантирует совместимость с UEFI.

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

В 32 битных системах UEFI ищет в той же самой папке файл «BOOTia32.EFI»

Перейти к оглавлению.


1.5. GRUB4DOS, SYSLINUX, GRUB2

Что такое GRUB4DOS, SYSLINUX и GRUB2?

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

Для этого на флешку устанавливают загрузчик (GRUB4DOS, SYSLINUX или GRUB2), который при старте показывает меню с выбором, что именно загрузить.

GRUB4DOS часто используют из-за его гибкости и возможности загружать ISO-образы напрямую, а также из-за поддержки старых BIOS-систем.

SYSLINUX применяют для простых загрузочных флешек с Linux, где не требуется сложное меню или поддержка UEFI.

GRUB2 выбирают для более сложных задач, особенно если нужна поддержка UEFI, работа с разными файловыми системами и расширенные возможности меню загрузки.

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

Перейти к оглавлению.


1.6. rEFInd

Что такое rEFInd и зачем он нужен?

rEFInd — это современный загрузочный менеджер для систем с UEFI/EFI, который позволяет удобно выбирать между несколькими установленными операционными системами на одном устройстве. Он является форком более старого проекта rEFIt и отличается простотой, красивым графическим интерфейсом и автоматическим обнаружением ОС без сложной настройки.

Основные преимущества rEFInd:

Почему и как комбинируют rEFInd, GRUB2, GRUB4DOS и SYSLINUX?

В реальных мультизагрузочных сценариях часто используют комбинацию нескольких загрузчиков, чтобы обеспечить максимальную совместимость и гибкость:

Такая комбинация позволяет:

Почему rEFInd не всегда удобен и почему от него часто отказываются на флешках в пользу комбинации GRUB2 + GRUB4DOS + SYSLINUX?

Хотя rEFInd — современный и красивый загрузчик для UEFI, на практике он не всегда оказывается удобным и надежным для использования на мультизагрузочных флешках. Вот основные причины:

  1. Ограничение только UEFI
  2. rEFInd работает только в UEFI-режиме и не поддерживает BIOS (Legacy) загрузку. Многие флешки и компьютеры требуют поддержки обоих режимов, чтобы быть универсальными. В то время как GRUB4DOS и SYSLINUX отлично работают в BIOS-режиме, rEFInd не может заменить их полностью.

  3. rEFInd часто просто запускает GRUB
  4. На практике rEFInd часто используется как «первичный» загрузчик, который просто запускает GRUB2, а уже GRUB2 выполняет основную работу по загрузке ОС и управлению меню. То есть rEFInd не всегда выполняет всю работу самостоятельно, а служит лишь «переходником».

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

  7. Проблемы с порядком загрузки и приоритетами
  8. rEFInd может "навязывать" себя первым в списке загрузки UEFI, что не всегда удобно, особенно если флешка используется на разных компьютерах с разными настройками прошивки. Это требует дополнительной настройки, чтобы rEFInd не мешал загрузке с других устройств.

  9. Отсутствие поддержки BIOS и ограниченная поддержка файловых систем
  10. SYSLINUX и GRUB4DOS обеспечивают отличную поддержку BIOS-режима и работу с FAT32 и другими файловыми системами, что важно для загрузочных флешек с утилитами и старыми ОС. rEFInd же ориентирован на UEFI и FAT32 ESP-разделы, что ограничивает его универсальность.

Почему выбирают комбинацию GRUB2 + GRUB4DOS + SYSLINUX на флешках?

rEFInd — отличный загрузчик для UEFI с красивым интерфейсом, но он ограничен только UEFI, сложен в настройке и часто просто запускает GRUB, не заменяя его полностью. Поэтому на мультизагрузочных флешках часто отказываются от rEFInd в пользу комбинации GRUB2 + GRUB4DOS + SYSLINUX, которая обеспечивает поддержку и BIOS, и UEFI, гибкость, надежность и удобство работы с разными ОС и утилитами.

Перейти к оглавлению.


1.7. BCD (Boot Configuration Data)

Что такое BCD в Windows?

BCD (Boot Configuration Data) — это специальный файл конфигурации загрузчика Windows, который содержит информацию о доступных операционных системах, параметрах их загрузки и порядке выбора. По сути, это современный аналог старого файла boot.ini, но с более гибкой структурой и возможностями.

Почему BOOTICE удобен для редактирования BCD, особенно на мультизагрузочных флешках?

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

BCD — ключевой файл конфигурации загрузчика Windows, управляющий меню и параметрами загрузки ОС.

BOOTICE удобен тем, что позволяет легко и быстро редактировать BCD и другие загрузочные записи как для BIOS (MBR/PBR), так и для UEFI (ESP-раздел), что особенно важно для мультизагрузочных флешек.

Возможность работать с обоими режимами загрузки и редактировать меню из разных мест на флешке делает BOOTICE незаменимым инструментом для создания универсальных загрузочных USB-носителей.

Перейти к оглавлению.


1.8. Файлы

1.8.1. Различные типы файлов

Что такое бинарный файл?

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

Что такое шестнадцатеричный код выполнения и ассемблерный код?

Зачем нужны ResHacker и Restorator?

ResHacker (Resource Hacker) и Restorator — это инструменты для просмотра и редактирования ресурсов внутри исполняемых файлов Windows (например, иконок, меню, диалогов, строк и т.п.). Они позволяют изменять интерфейс программ без перекомпиляции исходного кода, что полезно для локализации, кастомизации или создания патчей.

Можно ли любой файл просматривать как текстовый и писать в файл изображения любой текст?

Перейти к оглавлению.


1.8.2. Содержимое файлов

Можно ли любой файл просматривать как текстовый и писать в файл изображения любой текст?

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

Аналогично, Можно ли дописывать текст в конец файла изображения?

Да, технически в любой файл, включая изображение (например, JPG), можно дописать произвольные данные в конец файла.

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

Почему это работает?

Форматы изображений, например JPEG, имеют чётко определённую структуру и маркеры конца файла.

Дополнительные данные после конца файла обычно игнорируются стандартными программами.

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

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

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

Перейти к оглавлению.


1.8.3. Различия между Windows и Linux

Типы файлов и их обработка.

В Windows действительно существует множество форматов файлов (например, .exe, .dll, .docx, .jpg и т.д.), и для каждого формата обычно используется своё программное обеспечение. Windows ориентирована на ассоциации файлов с программами, и расширение файла играет важную роль в определении, как его открыть.

В Linux ситуация другая: файловая система рассматривает практически всё как файл — включая устройства, процессы и т.д. Однако не все файлы текстовые. В Linux есть как текстовые файлы (например, скрипты, конфигурации), так и бинарные (исполняемые программы, библиотеки). Важным критерием для исполнения файла является флаг «исполняемый» (execute permission) в правах доступа, а не расширение файла. То есть, чтобы файл можно было запустить, он должен иметь соответствующие права, а не обязательно иметь определённое расширение.

Файловая система и структура.

В Linux используется единая иерархия каталогов, где всё начинается с корня /. Устройства и ресурсы представлены как файлы в этой структуре.

В Windows файловая система построена на буквах дисков (C:, D: и т.д.), и устройства обычно не представлены как файлы.

Исполняемые файлы.

В Windows исполняемые файлы обычно имеют расширение .exe или .dll, и система ориентируется на расширение для запуска.

В Linux исполняемый файл — это файл с установленным флагом исполнения, независимо от расширения. Например, скрипт без расширения может быть исполняемым, если у него есть соответствующие права.

Итог.

Таким образом, разница в подходах к файловой системе и обработке файлов существенна, но не сводится к тому, что в Linux «все файлы текстовые».

Перейти к оглавлению.


1.8.4. Команда source в Linux

Использование команды source и файлов начальных данных в Linux.

В Linux команда source (или точка .) используется для выполнения команд из файла в текущем сеансе оболочки. Например, source .bashrc или source myscript.sh загружает и выполняет содержимое этих файлов, не создавая нового процесса. Это позволяет, например, задавать переменные окружения, функции и алиасы, которые будут доступны в текущей сессии.

Такие файлы, как .bashrc, .profile, .bash_profile и другие, служат локальными файлами начальных данных (инициализации) для настройки среды пользователя. Они позволяют задавать переменные окружения, пути к библиотекам, алиасы и прочие настройки, которые применяются только для конкретного пользователя или сессии.

В Windows такого подхода нет?

В Windows нет прямого аналога команды source в командной строке cmd.exe, но в PowerShell есть похожие механизмы (например, . для dot-sourcing скриптов). Однако в классическом cmd.exe обычно переменные окружения задаются через системные настройки или через запуск отдельных скриптов, которые не влияют на текущую сессию так гибко, как в Linux.

Зачем использовать локальные файлы начальных данных?

Таким образом, в Linux использование source и локальных файлов конфигурации — это мощный и гибкий способ управлять средой, которая действительно отличается от подходов в Windows.

Перейти к оглавлению.


1.8.5. BAT/CMD файлы в Windows

BAT/CMD файлы в Windows как аналог локальных файлов инициализации в Linux.

В Windows батники (.bat, .cmd) часто используются для задания переменных окружения, изменения путей (PATH) и запуска программ с нужными настройками. Это позволяет изолировать конфигурацию для конкретного приложения или проекта, не влияя на глобальные системные переменные.

Пример с настройкой путей для Portable Python и виртуальных окружений — классический способ сделать запуск более управляемым и избежать конфликтов между разными версиями библиотек и интерпретаторов.

Например, файл «Python-portable-3.10.5-x64.bat».

@cd/d "%~dp0"
@echo off
SET PATH=%CD%\Portable-Python-3.10.5-x64\;%PATH%
SET PATH=%CD%\Portable-Python-3.10.5-x64\Scripts\;%PATH%
SET WORKON_HOME=%CD%\env-x64\
DOSKEY clear=cls
cmd.exe

Здесь %~dp0 — путь к каталогу, где находится батник, что позволяет делать скрипт переносимым.

Такой подход действительно похож на использование локальных файлов инициализации в Linux (.bashrc, source), где вы задаёте локальные переменные и пути, чтобы не "засорять" глобальную среду и избежать конфликтов.

Отличия и особенности.

Использование батников для локальной настройки среды — это действительно удобный и распространённый способ в Windows, аналогичный по идее локальным файлам инициализации и source в Linux. Это помогает сделать программы более управляемыми, изолированными и стабильными.

Перейти к оглавлению.


1.9. Текстовые файлы

Почему важно сохранять текстовые файлы в разных кодировках между Linux и Windows?

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

Если файл, сохранённый в Windows в ANSI (CP-1251), открыть в Linux, который ожидает UTF-8, то кириллические символы могут отображаться некорректно (абракадабра). Аналогично, если файл сохранён в UTF-8, а Windows-программа ожидает ANSI, то тоже возможны проблемы с отображением текста.

Практические моменты.

Важно сохранять текстовые файлы в обеих кодировках (ANSI и UTF-8), чтобы обеспечить корректное чтение и отображение текста как в Windows, так и в Linux.

Это связано с историческими и техническими особенностями кодировок, используемых в этих ОС. UTF-8 — более универсальная и современная кодировка, но Windows-программы и консоли иногда требуют ANSI (CP-1251) для правильной работы с русским текстом. Если вы работаете в смешанной среде, лучше использовать UTF-8 и при необходимости настраивать окружение Windows для поддержки UTF-8, либо конвертировать файлы в нужную кодировку.

В идеале сохранять по 2 файла в 2 разных кодировках для полной совместимости - и «ansi», и «utf-8».

Почему браузеры показывают UTF-8 корректно через интернет, а локальные текстовые файлы — ANSI?

Основная причина связана с тем, как браузеры определяют и обрабатывают кодировку текста в разных ситуациях:

  1. При работе через интернет (HTTP/HTTPS)
  2. При открытии локального текстового файла

Через интернет браузеры ориентируются на явные указания кодировки (обычно UTF-8) и показывают текст правильно.

При открытии локальных файлов браузер полагается на системные настройки и «угадывает» кодировку, поэтому ANSI-файлы Windows отображаются нормально, а UTF-8 без BOM — могут отображаться некорректно.

Чтобы избежать проблем с локальными файлами, рекомендуется сохранять их в UTF-8 с BOM или явно указывать кодировку в HTML-файлах.

Поэтому локальные файлы в ANSI часто отображаются корректно, а UTF-8 без BOM — нет.

В Windows локальные текстовые файлы часто сохраняются в ANSI (например, CP-1251 для русского языка). Браузер, открывая такой файл локально, может по умолчанию использовать системную локаль или ANSI-кодировку, чтобы правильно отобразить текст. Если файл сохранён в UTF-8 без BOM (специального маркера начала файла), браузер может не распознать кодировку и показать «кракозябры».

Когда вы открываете простой текстовый файл напрямую (например, через file://), браузер не всегда получает явную информацию о кодировке. В этом случае он пытается угадать кодировку или использует системные настройки.

Таким образом, при загрузке страницы из интернета браузер «знает», что текст в UTF-8, и отображает его адекватно.

Веб-серверы обычно указывают в заголовках ответа или в метатегах HTML, что содержимое страницы закодировано в UTF-8. Это стало стандартом для веба, так как UTF-8 поддерживает все языки и символы. Браузеры, получая такую информацию, корректно интерпретируют и отображают текст в UTF-8.

Перейти к оглавлению.


1.10. Окончание строк в Windows и Linux: CR+LF и LF

В Windows для обозначения конца строки в текстовых файлах используется комбинация из двух символов — CR (Carriage Return, возврат каретки) и LF (Line Feed, перевод строки).

Таким образом, вместе CR+LF обеспечивают переход на новую строку с возвратом курсора в начало строки.

В Linux и Unix-подобных системах для конца строки используется только один символ — LF.

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

Почему в Windows текстовые файлы с LF сливаются в одну строку?

Когда Windows-программы (например, классический Блокнот) открывают текстовый файл, в котором в качестве окончания строки используется только LF (как в Linux), они не распознают этот символ как полноценный переход на новую строку. В результате весь текст отображается как одна длинная строка без переносов. Это происходит потому, что Windows ожидает именно последовательность CR+LF для корректного отображения переноса строки.

Перейти к оглавлению.

2. Програмное обеспечение

Нюансы выбора ПО.

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

  1. Старая версия ПО.
  2. Портативная версия ПО.
  3. Создание из любой Windows.

Дело не в том, что мне нравятся или не нравятся старые или портативные версии, а в том, что новые или свежие версии программ скорее всего не совместимы со старыми ОС - такими как Windows 7 или даже XP, если вдруг однажды понадобится. А иногда даже требуют неких дополнительных каких-то библиотек или драйверов.

Создание таких флешек преимущественно отдается именно Windows, начиная с 7-ки. Но это не значит, что тоже самое вы не сможете сделать из любой другой ОС - будь то хоть Linux, хоть MacOS или буквально считай почти MSDos.

Единственным исключением является только сам загрузчик Windows, начиная с 7-ки и выше - под названием «BCD (Boot Configuration Data)». Для него качественных альтернатив редакторов, к большому сожалению, просто нет.


Програмное обеспечение.

2.1. Операционные системы, Live диски

Сами ОС и Live диски можно найти на «Панели ссылок» - Глава 3.3.

На ней содержаться ссылки на следующие системы и Live диски:

Перейти к оглавлению.


2.2. Geany

Далее что нам понадобится - это текстовый редактор Geany (оф. сайт, Портативная версия 1.37.1 x86), но не простой.

В одной из глав выше я писал, что в каждой ОС и всех текстовых файлах важна кодировка. В каждом загрузчике есть конфигурационные файлы, которые по сути являются текстовыми в определнных кодировках и с определенным окончанием строк CR+LF или только LF. И чтобы не нарушать ни кодировку конфигурационных файлов ни окончание строк, лучше редактировать их сразу правильно. А значит обычные встроенные в любую ОС текстовые редакторы не подойдут по умолчанию, именно потому что они могут испортить не только кодировку конфигурационных файлов загрузчиков, но и перенос трок между Windows и Linux и в итоге флешка просто не сможет загрузится.

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

Редактор есть как для Windows. так и для Linux и других ОС. Свежая версия для ОС от 10-ки и старше. Портативная должна работать хоть на 7-ке, хоть даже на XP, вроде бы.

Если не сможете им воспользоваться, есть альтернативный текстовый редактор, но только для Windows - «Notepad ++». Для Linux подойдут такие как: «Leafpad» и «Gedit» В консольном варианте Linux скорее всего только один редактор «Nano», но с осторожностью.

Перейти к оглавлению.


2.3. Утилита BOOTICE

Универсальная утилита BOOTICE x86 ru, русскоязычная версия.

Она универсальная тем, что выступает не только как редактор разделов флешек, но и как единственный, качественный и понятный редактор BCD (Boot Configuration Data) файлов загрузчиков Windows.

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

В Linux же есть целых 2 варианта редакторов разделов - это «GParted» графический редактор разделов и консольный вариант «cfdisk».

Перейти к оглавлению.


2.4. Дистрибутивы загрузчиков

Далее понадобится несколько архивов самих установочников загрузчиков. Не волнуйсте, установка возможна не только одним единственным Bootice из Windows, но также и из Linux, и даже из MSDos, если вдруг однажды придётся.

Перейти к оглавлению.


2.5. Готовые архивы EFI / GRUB4DOS / SYSLINUX

Теперь сами загрузчики.

Перейти к оглавлению.


2.6. Примеры конфигурационных файлов

Примеры всех конфигурационных файлов загрузчиков - и для GRUB4DOS, и для SysLinux, и для GRUB2 смотрите здесь.

Там вы найдете множество разных вариантов настроек для очень многих случаев любых настроек загрузки ОС - будь то хоть совместно Windows 7 + Alkid Live DVD, или Windows 10 + AlKid Live USB + Linux Mint, и многие многие другие.

Перейти к оглавлению.


2.7. Утилита виртуализации Qemu

Утилита виртуализация Qemu (QemuBootTester.zip для Windows, 32 бит для Windows, 64 бит для Windows) для тестирования загрузочных флешек.

Для Windows обратите внимание на то, что для наиболее старых версия Windows - вроде 7-ки ищите в 2022 году такую версию как «qemu-w32-setup-20221230.exe» для 32 бит или «qemu-w64-setup-20221230.exe» для 64 бит. Для старших версий ОС Windows от 10-ки и выше можете ставить любую свежую версию.

Вот вам сразу прямые ссылки на несколько версий, включая указанную и для 32 Бит и для 64 Бит.

Для Linux установку смотрите здесь.

НО, в Linux еще надо установить некий GUI, иначе отображение результата не будет как такового. Например в Linux Mint - это «qemu-system-gui» кажись. Кажись, потому что в разных дистрибутивых Linux, у них даже названия разные. В Archlinux например вообще вот такой список пакетов потребуется установить: qemu-full qemu-img qemu-ui-gtk qemu-tools edk2-ovmf qemu-block-gluster qemu-block-iscsi. Т.е. в Archlinux вместо «qemu-system-gui» вообще «qemu-ui-gtk».

Понадобится еще один файлик - edk2-ovmf-202505-1-any.pkg.tar.gz - имитация загрузки UEFI режима, если вы не скачивали QemuBootTester, в который она встроена, чтобы не перезагружать вашу ОС для проверки получившейся мультизагрузочной флешки.

Из этого архива понадобятся только 2 файла.

Можете даже распаковать их по очереди и сразу переименовать сразу так.

Только учтите один нюанс!

Ни одна программа виртуализации толком нормально и адекватно не работает на Windows с флешками!

На Linux - без проблем с чем угодно. А вот на Windows - извините, чтобы интернет не посоветовал - я перепробовал далеко не один 10-к способов.

Наиболее адекватным оказался только QemuBootTester.zip для Windows.

Тем не менее, я все равно приведу коды запуска проверки флешек и для Windows, и для Linux.

Вдруг это только мне так не везет...

Перейти к оглавлению.


2.8. Инструкции по установке загрузчиков

Инструкция установки MBR и PBR из утилиты Bootice. (Ниже список одной и той же инструкции в разных форматах для онлайн чтения)

Инструкция установки MBR и PBR из CMD, Linux или даже MSDOs.

И ещё один момент! После установки загрузчиков конкретно к 2 файлам загрузчика SYSLINUX - «syslinux.cfg» и «/boot/syslinux/ldlinux.sys» добавляется системный атрибут скрытых файлов. Поэтому если вы не обнаружили конфигурационный файл «syslinux.cfg» - не паникуйте! Возможно он просто скрытый. Это делает сам загрузчик при его установки на флешку для безопасности и это никак изменить нельзя!

Перейти к оглавлению.

3. Практика

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

Например, пусть будут установчная флешка с Windows 10 и парой других ОС или дополнительных утилит. И флешка для простого восстановления доступа, настроек или просто ремонта.

Все смежные и спользуемые внутри загрузчиков утилиты также обговорим - какая и зачем нужна.

Примеры всех конфигурационных файлов загрузчиков - и для GRUB4DOS, и для SysLinux, и для GRUB2 смотрите здесь.


3.1. Объяснение загрузчиков

В главе «2.4» и «2.5» были указаны дистрибутивы загрузчиков и архивы готовых совмещенных загрузчиков.

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

Нам еще необходимо рассмотреть как управлять каждым из этих загрузчиков и какие файлы в них входят. Потому что их еще можно и разделять для удобства управления. В большинство Live дисков практически все разработчики так и поступают.

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

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

Самое главное что вам надо усвоить - это то, что флешка должна содержать один единственный раздел, таблицу разделов «MBR» и иметь файловую систему «FAT32».

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

Также некоторые из автоматических утилит или инструкций порой предлагают отформатировать флешку или сами авмтоматически форматируют флешку в файловую систему «NTFS». «Это не правильно и не верно!».

Проблема в том, что режим UEFI будет работать только с файловой системой «FAT32».

А вторая проблема в таблице разделов. При форматировании в «GPT» вы рискуете потерять возможность взаимодействовать с BIOS режимом загрузки.

Если же вы сразу воспользуетесь таблицей «MBR» и файловой системой «FAT32» - то у вас будет нормальная возможность взаимодействовать с загрузкой и в «UEFI» и в «BIOS» режимах! А это и есть конечная цель создания такой мультизагрузочной флешки!

Переходим к архиву «EFI-Grub4Dos-SysLinux-Full.7z».

В самом архиве содержится набор файлов. Распакуйте, зайдите в саму папку и перенесети все файлы и папки на вашу флешку.

По поводу скинов и фоновых картинок поговорим как-нибудь отдельно. Сначала нужно научиться управлять данными загрузчиками.

Содержимое архива «EFI-Grub4Dos-SysLinux-minimal.7z» практически ничем не отличается. Там внутри этих папок просто содержится меньше встроенных мультизагрузочных утилит для тестов и ремонта. На случай если флешка сильно ограничена по объему.

3.1.1. GRUB4DOS

Рассмотрим на примере главы «2.5» и архива максимальной версии совмещенных загрузчиков архива «EFI-Grub4Dos-SysLinux-Full.7z» загрузчик «GRUB4DOS».

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

Вообще-то их может и больше. Столько сколько вам нужно. Но об этом поговорим позже.

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

Для редактирования используйте упомянутый ранее редактор Geany. Можете просто перетащить на него мышкой нужные файлы.

Каждое меню имеет определенные строки записи. Перетащите файл «menu.lst» в Geany редактор.

Например для пункта меню Windows 7 будут такие строки запуска системы.

title Win7 RU SP1 x86-x64
find --set-root --ignore-floppies --ignore-cd /bootmgr
map --unmap=0:0xff
map --unhook
root (hd0,0)
chainloader (hd0,0)/bootmgr

Наименование меню после команды «title».

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

find --set-root --ignore-floppies --ignore-cd /bootmgr

Вот то, что в конце - «/bootmgr» - это как раз и есть сам загрузчик Windows 7.

Остальные строки до строки «chainloader» как раз и дают загрузчику понять, где он находится - флешка или диск, или другой носитель. Таким образом система определяет что за такой корень вообще у нее есть. В других загрузчиках все немного по другому. Это единственный загрузчик, который еще и может думать и определять принципы зарождения корневой директории. Именно в нём и проще всего загрузить любой ISO образ напрямую.

Далее уже командой «chainloader» загрузчик передаёт управление дальше по цепочке следующему загрузчику.

Как вы могли заметить, ниже в меню есть такие строки.

title Else Utilites >>>
configfile /boot/menu_u.lst

Вот как раз они и определяют переход в другое отдельное такое же меню, но с другими пунктами и настройками. И таких вы можете себе сделать сколько угодно. Откройте и этот файл тоже в Geany. Он будет чуть-чуть отличаться. Но в нём есть возврат в предыдущее меню аналогичным образом. Т.е. между этими меню вполне можно переходить туда-сюда.

Если вам нужен отдельный пункт для загрузки меню Syslinux.

title SYSLINUX
find --set-root --ignore-floppies /boot/syslinux/ldlinux.sys
chainloader +1

Alkid Live CD скорее всего был бы примерно таким же. Разница только в том какой переход и к какому загрузчику осуществляется. Сравните его с переходом к загрузчику Syslinux выше.

title Alkid Live CD
find --set-root /minint/setupldr.bin
chainloader /minint/setupldr.bin

title Alkid Live CD (without SCSI/RAID)
find --set-root /minint/setuplns.bin
chainloader /minint/setuplns.bin

Пример загрузки Ubuntu, Debian, Linux Mint и других ISO есть в файле «boot-info/standart-os_menu.lst».

Нас же интересует как правильно преобразовать строки загрузки из Syslinux или GRUB2 в загрузку GRUB4DOS.

Рассмотрим на примере gparted-live-1.7.0-8-amd64.

grub4dos использует menu.lst или grldr с собственным синтаксисом.

title GParted Live
kernel /live/vmlinuz
initrd /live/initrd.img
boot

syslinux использует label, kernel, append и т.п.

grub2 использует linux и initrd через экспорт переменных оболочки.

Например, полноценно в grub4dos загрузка Gparted будет выглядеть уже примерно так. При этом параметры я просто взял и перенес прямо из syslinux в том виде в котором они там были, ничего не изменив.

title GParted live 1.7.0-8 amd64
find --set-root /live/vmlinuz
kernel /live/vmlinuz boot=live union=overlay username=user config components quiet noswap net.ifnames=0 nosplash ocs_1_cpu_udev scsi_mod.use_blk_mq=0 nvme.poll_queues=1
initrd /live/initrd.img
boot

Команда «find --set-root /папка/нужный-файл» обязательна. Это значит, что все пути, указанные после этой команды, будут интерпретироваться относительно этого корня — то есть относительно корня найденного раздела.

Значит ли это, что initrd /live/initrd.img будет искать файл в другом месте?

Нет, если вы указали find --set-root /live/vmlinuz, то и initrd /live/initrd.img будет искать файл именно на том же разделе, где был найден /live/vmlinuz, потому что корень уже установлен на этот раздел. Корень — это корень раздела, а не абсолютный путь в файловой системе. Важно понимать, что root в grub4dos — это не абсолютный путь в файловой системе, а именно указание на раздел/устройство, с которого грузятся файлы.

Пути /live/vmlinuz и /live/initrd.img — это пути внутри этого раздела.

Таким образом процесс создания собственной меню загрузки Grub4DOS по сути отчасти даже является творческим процессом. Вы распологаете те пункты меню какие вам нужны и там, где вам нужно, в том порядке, в каком вы сами захотите.

Примеры всех конфигурационных файлов загрузчиков - и для GRUB4DOS, и для SysLinux, и для GRUB2 смотрите здесь.

Перейти к оглавлению.


3.1.2. Syslinux

Теперь рассмотрим меню «syslinux.cfg».

Вообще таких файла в архиве 2. Один находится в корне. Другой в папке «boot/syslinux/syslinux.cfg».

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

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

В принципе вы могли бы переустановить PBR загрузчик syslinux и указать файл который в «/boot/syslinux/syslinux.cfg», а тот который в корне - вполне могли бы удалить. Если вам так нужна эстетика и меньшее количество файлов в корне. Так тоже можно.

Создание меню Syslinux сложнее и проще одновременно. Оно содержит определенные команды и более конкретную структуру по сравнению с GRUB4DOS.

Основные команды и их назначение.

Создание пунктов меню.

Текст помощи к пункту меню.

Создание подменю и вложенных меню.

Syslinux поддерживает создание подменю с помощью специальных команд:

Пример структуры с подменю:

LABEL submenu
  MENU LABEL Подменю
  MENU MENU1

MENU BEGIN MENU1
  LABEL item1
    MENU LABEL Пункт 1 в подменю
    KERNEL /vmlinuz
    APPEND ...
  LABEL back
    MENU LABEL Назад
    MENU EXIT
MENU END

Здесь MENU MENU1 вызывает подменю с именем MENU1, которое описано между MENU BEGIN MENU1 и MENU END.

Пример простого меню с подменю.

MENU TITLE Главное меню
DEFAULT linux

LABEL linux
  MENU LABEL Загрузить Linux
  KERNEL /vmlinuz
  INITRD /initrd.img
  APPEND root=/dev/sda1 ro

LABEL submenu
  MENU LABEL Дополнительные опции
  MENU MENU1

MENU BEGIN MENU1
  LABEL memtest
    MENU LABEL Запустить Memtest86+
    KERNEL /memtest.bin
  LABEL back
    MENU LABEL Назад в главное меню
    MENU EXIT
MENU END

Примеры всех конфигурационных файлов загрузчиков - и для GRUB4DOS, и для SysLinux, и для GRUB2 смотрите здесь.

Там вы найдете множество разных вариантов настроек для очень многих случаев любых настроек загрузки ОС - будь то хоть совместно Windows 7 + Alkid Live DVD, или Windows 10 + AlKid Live USB + Linux Mint, и многие многие другие.

Т.е. «здесь» и «здесь»

Перейти к оглавлению.


3.1.3. GRUB2

Рассмотрим меню «grub.cfg».

Основные команды и структура меню GRUB2.

Пример простого пункта меню.

menuentry 'Boot from hd1' {
    set root=(hd1)
    chainloader +1
}

Этот пункт загрузит загрузчик с первого сектора второго диска (hd1).

Как загрузить GRUB4DOS из GRUB2.

menuentry "GRUB4DOS" {
    set root=(hd0,1)
    chainloader +1
}

Здесь GRUB2 передает управление загрузчику GRUB4DOS, установленному в загрузочном секторе первого раздела первого диска.

Либо можно попробовать сделать это другим образом.

Скачайте из пункта «2.4» архив «grub4dos-0.4.6a-2024-02-26.7z» и распакуйте оттуда файл «grub.exe» в корень флешки в папку «/boot» уже имеющегося у вас там загрузчика «EFI-Grub4Dos-SysLinux-Full.7z» или «EFI-Grub4Dos-SysLinux-minimal.7z».

Тогда загрузка GRUB4DOS из GRUB2 будет такой.

menuentry "GRUB4DOS" {
    search --file --no-floppy --set=root /menu.lst
    linux /boot/grub.exe --config-file=/menu.lst
}

Команда search --file --no-floppy --set=root /menu.lst ищет раздел, где находится файл /menu.lst, и устанавливает этот раздел как корневой (root). Это гарантирует, что GRUB2 правильно найдёт и grub.exe, и конфиг menu.lst, даже если у вас несколько дисков или разделов.

После этого команда linux /boot/grub.exe --config-file=/menu.lst загрузит grub.exe из папки /boot и передаст ему параметр с указанием конфигурационного файла.

Создание подменю.

Рассмотрим пример.

submenu '8. Tools' {
    menuentry '1. Memtest' {
        set isofile="/iso/memtest.iso"
        linux16 /boot/memdisk iso
        initrd16 $isofile
    }
    menuentry '2. Plop Boot Manager' {
        linux16 /boot/plpbt.bin
    }
    menuentry "Boot IMG - Seagate Tools" {
        linux16 /memdisk bigraw
        initrd16 /SeaTools.img
    }
}

submenu '8. Tools' { ... } — создаёт подменю с названием "8. Tools". При выборе этого пункта откроется вложенное меню с пунктами, описанными внутри.

menuentry '1. Memtest' { ... }

set isofile="/iso/memtest.iso" — задаёт переменную isofile, указывающую путь к ISO-образу Memtest.

linux16 /boot/memdisk iso — загружает 16-битный (BIOS) загрузчик memdisk из пакета Syslinux, с параметром iso. Memdisk позволяет загружать образы дисков (ISO, IMG) как виртуальные диски.

initrd16 $isofile — загружает в память ISO-образ, указанный в переменной isofile, как initrd (initial ramdisk). Memdisk использует этот образ для эмуляции загрузочного диска.

Таким образом, этот пункт загружает Memtest из ISO-образа через memdisk.

menuentry '2. Plop Boot Manager' { ... }

linux16 /boot/plpbt.bin — загружает 16-битный бинарник Plop Boot Manager, который позволяет выбирать устройства загрузки (USB, CD и т.п.) на старых системах.

menuentry "Boot IMG - Seagate Tools" { ... }

linux16 /memdisk bigraw — загружает memdisk с параметром bigraw, который позволяет загружать большие образы дисков (например, HDD-образы).

initrd16 /SeaTools.img — загружает образ SeaTools.img в память как initrd. Это загрузочный образ утилит Seagate для диагностики дисков.

Как это работает в целом?

Как сделать из одного файла «grub.cfg» несколько?

Рассмотрим структуру файлов.

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

Главный файл grub.cfg

insmod part_gpt
insmod part_msdos
insmod efi_gop
insmod efi_uga
insmod gfxterm
insmod loopback
insmod all_video
insmod gzio
insmod ext2
insmod fat
insmod iso9660
insmod ntfs

loadfont "${prefix}/fonts/unicode.pf2"

GRUB_GFXMODE=1024x768

color_normal=black/black
menu_color_normal=white/cyan
menu_color_highlight=yellow/light-magenta
background_color gray

set timeout=60
set default=0
set pager=1
--------------------------------------------------------------------------------------------------
menuentry 'boot from hd1' {
    set root=hd1
    chainloader +1
}
--------------------------------------------------------------------------------------------------
menuentry "Windows 10" {
    search --file --no-floppy --set=root /boot/grub/windows.cfg
    configfile /boot/grub/windows.cfg
}
--------------------------------------------------------------------------------------------------
menuentry "Konboot EFI" {
    search --file --no-floppy --set=root /boot/grub/konboot.cfg
    configfile /boot/grub/konboot.cfg
}
--------------------------------------------------------------------------------------------------
menuentry "Memtest" {
  search --file --no-floppy --set=root /boot/memtest.efi
  chainloader /boot/memtest.efi
}
--------------------------------------------------------------------------------------------------
menuentry "Power & Help" {
    search --file --no-floppy --set=root /boot/grub/power_help.cfg
    configfile /boot/grub/power_help.cfg
}
--------------------------------------------------------------------------------------------------

Меню загрузки Windows /boot/grub/windows.cfg

insmod part_gpt
insmod part_msdos
insmod efi_gop
insmod efi_uga
insmod gfxterm
insmod loopback
insmod all_video
insmod gzio
insmod ext2
insmod fat
insmod iso9660
insmod ntfs

loadfont "${prefix}/fonts/unicode.pf2"

GRUB_GFXMODE=1024x768

color_normal=black/black
menu_color_normal=white/cyan
menu_color_highlight=yellow/light-magenta
background_color gray

set timeout=60
set default=0
set pager=1
--------------------------------------------------------------------------------------------------
menuentry "(ESC) Back to Main Menu" --hotkey=esc {
     search --file --no-floppy --set=root /boot/grub/grub.cfg
    configfile /boot/grub/grub.cfg
}
--------------------------------------------------------------------------------------------------
menuentry "Boot Windows 10" {
  search --file --no-floppy --set=root /EFI/BOOT/win10bootx64.efi
  chainloader /EFI/BOOT/win10bootx64.efi
}

Меню загрузки KonBoot /boot/grub/konboot.cfg

insmod part_gpt
insmod part_msdos
insmod efi_gop
insmod efi_uga
insmod gfxterm
insmod loopback
insmod all_video
insmod gzio
insmod ext2
insmod fat
insmod iso9660
insmod ntfs

loadfont "${prefix}/fonts/unicode.pf2"

GRUB_GFXMODE=1024x768

color_normal=black/black
menu_color_normal=white/cyan
menu_color_highlight=yellow/light-magenta
background_color gray

set timeout=60
set default=0
set pager=1
--------------------------------------------------------------------------------------------------
menuentry "(ESC) Back to Main Menu" --hotkey=esc {
    search --file --no-floppy --set=root /boot/grub/grub.cfg
    configfile /boot/grub/grub.cfg
}
--------------------------------------------------------------------------------------------------
menuentry "KonBootDxeIA32" {
  search --file --no-floppy --set=root /EFI/BOOT/KonBootDxeIA32.efi
  chainloader /EFI/BOOT/KonBootDxeIA32.efi
}
--------------------------------------------------------------------------------------------------
menuentry "KonBootDxeX64" {
  search --file --no-floppy --set=root /EFI/BOOT/KonBootDxeX64.efi
  chainloader /EFI/BOOT/KonBootDxeX64.efi
}
--------------------------------------------------------------------------------------------------
menuentry "kon-boot ISO" {
  set isofile="/boot/kon-bootCD.iso"
  linux16 /boot/memdisk iso
  initrd16 $isofile
}
--------------------------------------------------------------------------------------------------
menuentry "kon-boot ISO old" {
  set isofile="/boot/kon-bootCD_old.iso"
  linux16 /boot/memdisk iso
  initrd16 $isofile
}

Меню управления питанием /boot/grub/power_help.cfg

insmod part_gpt
insmod part_msdos
insmod efi_gop
insmod efi_uga
insmod gfxterm
insmod loopback
insmod all_video
insmod gzio
insmod ext2
insmod fat
insmod iso9660
insmod ntfs

loadfont "${prefix}/fonts/unicode.pf2"

GRUB_GFXMODE=1024x768

color_normal=black/black
menu_color_normal=white/cyan
menu_color_highlight=yellow/light-magenta
background_color gray

set timeout=60
set default=0
set pager=1
--------------------------------------------------------------------------------------------------
menuentry "(ESC) Back to Main Menu" --hotkey=esc {
    search --file --no-floppy --set=root /boot/grub/grub.cfg
    configfile /boot/grub/grub.cfg
}
--------------------------------------------------------------------------------------------------
menuentry "(F1) Info Disk System and Video" --hotkey="f1" {
    echo "                       www.BootDev.ru"
    echo ""
    echo "[---------------- Info disk system ----------------]"
    ls -l
    echo "[---------------- Info video system  ----------------]"
    videoinfo
    echo ""
    echo "Press ESC for Main Menu..."
    sleep --interruptible 9999
}
--------------------------------------------------------------------------------------------------
menuentry "" {
    echo " "
}
--------------------------------------------------------------------------------------------------
menuentry "(r) Reboot" --hotkey="r" {
    reboot
}
--------------------------------------------------------------------------------------------------
menuentry "(h) Shutdown" --hotkey="h" {
    halt
}

Примеры всех конфигурационных файлов загрузчиков - и для GRUB4DOS, и для SysLinux, и для GRUB2 смотрите здесь.

Например «grub.cfg.txt»

Перейти к оглавлению.


3.2. Элемент изучения

В папках архивов файлов «EFI-Grub4Dos-SysLinux-Full.7z» и «EFI-Grub4Dos-SysLinux-minimal.7z» в папке «EFI/BOOT» имеется определенный набор файлов.

Эти файлы нельзя изменять! То есть, при копировании файлов любого Live-диска в папку по пути «/EFI/BOOT/» 3 из 5 файлов — «BOOTIA32.EFI», «BOOTX64.EFI» и «memtest.efi» — нельзя удалять, переименовывать или заменять другими файлами с такими же именами!

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

Однако внутри эти файлы настроены и ссылаются на конкретные загрузчики, поэтому их нельзя перемещать, переименовывать или заменять в исходной папке «/EFI/BOOT/».

При создании действительно качественной мультизагрузочной флешки вам всё равно придётся распаковывать содержимое Live диска в отдельную папку. В этом случае в распакованном Live диске по тому же пути «/EFI/BOOT/» вы можете переименовывать файлы «.efi» на любые другие имена.

Таким образом, загрузчик GRUB2 будет корректно загружаться и работать. В противном случае при загрузке с флешки в режиме UEFI вы рискуете загрузить не GRUB2, а другой загрузчик, встроенный в ваш Live диск.

Аналогичные правила применимы и к директории «/boot/» и всем её вложенным файлам и папкам.

С помощью редактора Geany скачанного в пункет «2.2» вам придётся в начале для каждого Live диска вручную изучить все его конфигурационные файлы всех загрузчиков. Это скорее всего будет «bootmgr» и «BCD» у Windows, «syslinux.cfg» и «grub.cfg» для других систем и дисков расположенные совершенно не так как в приведенных архивах. Все эти файлы кофигурации еще придётся хорошенько поискать.

Это нужно для того, что найти как выглядят текущие параметры загрузочных строк каждой системы отдельно, включая различные варианты загрузок и выписать их отдельно или скопировать в любой текстовый файл, чтобы в итоге привести к правильным конфигурациям «EFI + GRUB4DOS + SYSLINUX» архивов загрузчиков.

«BCD» файлы загрузок и BIOS и UEFI менять как-либо вообще не обязательно.

Последнее чаще всего нужно только для того, чтобы была возможность совместить несколько ОС в одной. Например, я хочу чтобы у меня была и «Windows 10 x64» и скажем все возможные диски восстановлений ОС «Microsoft Dyagnostyc and Recovery Toolset» Или скажем «Windows 10 x64» и какой-нибудь Live диск вроде «WIN7PE-COMPACT.ISO».

К большому сожалению в этом случае без редактирования файла «BCD» с помощью утилиты BOOTICE скачанной в пункте «2.3» вообще никак не обойтись.

Для примера в главе «3.1.3» я намеренно привёл меню «windows.cfg» с переименованным файлом «/EFI/BOOT/win10bootx64.efi».

Теперь поговорим отдельно про загрузчики других ОС.

В любом диске или ОС может быть определен один из нескольких типов загрузчиков, а иногда даже несколько из них:

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

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

Причем самое интересное состоит в том, что копировать файлы нужно БЕЗ ЗАМЕНЫ, если вдруг у нашего архива будут иметься точ в точ такие же.

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

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

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

Например, перенести распакованные диски с разными версиями GParted-Live Linux дисков, мне так и не удалось. С Linux Mint есть нюансы, но её все таки вполне возможно перенести и нормально запускать в любом из режимов.

Почему я подробно расписал только 3 загрузчика - «GRUB2», «Syslinux» и «GRUB4DOS» в соответствующих главах в этой статье?

Дело в том, что практически любые мультизагрузочные диски опираются только на 3 этих типа загрузчиков. В такие диски может быть заранее вшита специальными настройками таблица разделов диска. Например, при записи почти любого Linux диска на флешку, пусть даже с помощью программы «Rufus», но в режиме «DD» - в итоге на флешке будет 2 раздела. Один для загрузки в режиме UEFI GPT, другой для работы в режиме BIOS MBR, не смотря на то, что все файлы будут на второй разделе флешки.

Также в Linux дисках используются только 2 типа загрузчиков разных версий - «GRUB2» и «Syslinux».

В Windows это скорее всего будет загрузчик «bootmgr», а точнее он определяет загрузку меню BIOS MBR «BCD», вернее ссылается на него. соответствующие «*.efi» файлы ссылаются на UEFI GPT «BCD» меню. Изучить их можно через утилиту «bootice».

На дисках Linux загрузчик «GRUB2», будет скорее всего в подпапке «boot/grub/grub.cfg». Иногда файлы этого загрузчика переименовывают, сохраняя формат «boot/grub/*.cfg» и подключают в этот же файл.

Файлы загрузчика «Syslinux» могут быть по следующим подпапкам:

Главное, что у Syslinux конфигурационных файлов всегда сохраняется формат «*.cfg» и находятся они всегда в одноименных папках. Изучив все конфигурационные файлы легко понять какой из них является меню с параметрами загрузки.

Рассмотрим в качестве примера диск «Linux Mint».

Сразу откроем меню «boot/grub/grub.cfg» в «Geany».

Видим там меню «menuentry». Это оно и есть.

Если бы мы увидели там команды «source» или «configfile» и следующий за ним файл - мы бы поняли, что меню находится именно там, и нам бы пришлось открыть через тот же «Geany» уже эти файлы в той же директории.

Точно также мы ищем меню с параметрами загрузки ОС и для Syslinux.

Для «Linux Mint» это файл «isolinux/isolinux.cfg».

Видим в нём команду.

include live.cfg

Открываем этот файл - «isolinux/live.cfg».

Обнаруживаем там «label live» и «menu label, kernel, append». Это оно и есть. Нужное нам меню со всеми параметрами загрузки системы.

Точно также мы ищем менющки и для любых других дисков.

Для любых Linux важно понимать, что нас интересуют только меню с загрузкой в RAM, т.е. с использованием например команды «toram=» и файлом «filesystem.squashfs».

Дело в том, что без него, т.е. без его загрузки в оперативную память, вы скорее всего провалитесь только до консольного состояния «initramfs» и всё. А нам нужна именно полноценная загрузка ОС и желательно с полноценной графической оболочкой.

Перейти к оглавлению.


3.3. Практические примеры

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

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

В Windows лучше всего форматировать носители через «Управление дисками». В Linux удобнее всего через программу «Gparted», либо если не доступна графическая оболочка, то через консольную программу «cfdisk».

клик для увеличения

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

Для Gparted

# Определили устройство
lsblk
# Запустили gparted
gparted /dev/sda
# или
# Определили устройство
lsblk
# Запустили gparted
gparted /dev/sdc

Для cfdisk

# Определили устройство
lsblk
# Запустили cfdisk
cfdisk /dev/sda
# или
# Определили устройство
lsblk
# Запустили cfdisk
cfdisk /dev/sdb
# или
# Определили устройство
lsblk
# Запустили cfdisk
cfdisk /dev/sdc

клик для увеличения клик для увеличения клик для увеличения

3.3.1. Загрузчики флешки

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

Согласно пункту «2.5» скачиваю архив, например, «EFI-Grub4Dos-SysLinux-Full.7z», распаковываю с помощью утилиты «7Z» и копирую файлы из распакованной папки на флешку.

После чего записываю «MBR / PBR» загрузчики согласно инструкциям пункту «2.8».

Запись загрузчика «GRUB4DOS».

Проверка, что запись загрузчика «GRUB4DOS» удалась.

Запись загрузчика «SYSLINUX». Решил убрать файл «syslinux.cfg» подальше в подпапку «/boot/syslinux/» просто ради удобства.

Проверка, что запись загрузчика «SYSLINUX» удалась.

Перейти к оглавлению.


3.3.2. Проверка запуска загрузчиков.

Теперь необходимо проверить все записанные загрузчики успешно загружаются и работают. Для этого используем утилиту виртуализации «Qemu», а точнее «QemuBootTester» из пункта «2.7».

Проверка запуска «MBR / PBR», в данном случае «GRUB4DOS».

Проверка перехода от «GRUB4DOS» к «SYSLINUX».

Проверка запуска флешки в режиме «UEFI».

Как видите все загрузчики прекрасно работают во всех режимах - и «BIOS» и «UEFI».

Перейти к оглавлению.


3.3.3. Наполнение флешки.

Допустим я хочу себе флешку, на которой у меня будет не только скажем «Windows 10 x64», но и набор мультизагрузочных средств диагностики и ремонта. Например, пусть будут следующие.

Нет ничего невозможного. И мы с вами такую флешку сделаем вместе. Для начала вам приёдся скачать все эти диски с Sourceforge.net официального сайта моего репозитория из пункта «2.1. Операционные системы, Live диски» и распаковать по отдельным директориям.

К сожалению совместить друг с другом все диски не выйдет. Например, любая Windows и «WIN7PE-COMPACT». Либо та, либо другая. И тоже самое касается «AdminPE10» и любого другого Live диска.

Суть как раз в том, что совместить друг с другом Windows-диски никак не выйдет введу капризности старых оболочек загрузок ОС. И под капризностью я подразумеваю не совместимость директорий вышестоящих систем и оболочек вроде XP-PE.

Тем не менее, я написал фразу, что нет ничего невозможного.

Так и есть. Можно пойти немного другим путем. Если размер диска небольшой (не более 1 ГБ), то его просто можно загрузить в качестве ISO образа, вместо того, чтобы распаковывать и пытаться совместить файлы вместе с имеющимися загрузчиками. Останется только прописать правильную их загрузку в оперативную память в каждом загрузчике.

Почему не более 1 ГБ?

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

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

Распакуем образ системы «Windows-10-22H2-x64-Ru.iso», например, в папку с тем же названием, с помощью утилиты «7Z File Manager» и посмотрим на файлы внутри.

Предлагаю сразу скопировать файл «bootmgr.efi» в папку «efi/boot».

Также считаю необходимым скопировать все «.efi» и «.bin» файлы из папки «efi/microsoft/boot» в папку «efi/boot».

И обязательно переименовать файлы «BOOTIA32.EFI» и «BOOTX64.EFI» в любые другие названия, например, «win10bootia32.EFI» и «win10bootix64.EFI» по пути «efi/boot» если такие там вообще имеются.

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

Скопируйте все файлы в корень флешки.

Переходим к остальным дискам.

Распакуйте оставшиеся диски в отдельные директории: «Acronis-BootCD-Collection-2012-Grub4Dos-Edition-11-in-1-v6-12.2012.iso», «Alkid-Live-DVD.iso», «linuxmint-22.2-xfce-64bit.iso», «MSDaRTFull.iso».

Распаковывать «WIN7PE-COMPACT.ISO» не нужно, чуть позже поясню почему.

Итак. Нужно понимать одну важную деталь. Некоторые из дисков будут запускаться только в GRUB4DOS, некоторые только в Syslinux, а некоторые только в GRUB2. Но мы с вами пропишем загрузки во всех. Будут конкретные определенные ограничения по запуску и это нужно будет учитывать. Позже в самих текстах конфигурационных файлов вы это увидете.

Вот так выглядит текущее состояние структуры папок флешки.

Теперь поясню по каждому диску.

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

Чтобы правильно перенести «Alkid-Live-DVD» надо проделать несколько операций.

  1. Во первых переименовать папку «A386» в «minint».
  2. А во вторых скопировать из переименованной папки «minint» файл «NTDETECT.COM» в корень флешки.

Иначе диск попросту не запустится.

Теперь просто перенесите все файлы «Alkid-Live-DVD» тоже в корень флешки.

Из диска «MSDaRTFull» нам нужна только одна единственная папка «ERDC», из которой надо удалить только один единственный файл «BCD». Скопируйте папку в корень флешки.

Можете сразу скопировать на флешку в папку «isoimage» 3 образа дисков «gparted-live-1.6.0-10-i686.iso», «gparted-live-1.7.0-8-amd64.iso» и «WIN7PE-COMPACT.ISO».

А вот с «Linux Mint»-ом все немного сложнее.

Вы уже заметили по скриншоту, что в корне флешки имеется отдельная папка для Linux систем. Так и есть. Но тут есть нюансы по их копированию, вставке, прописываю параметров загрузки и запуску в разных режимах - BIOS и UEFI.

клик для увеличения клик для увеличения

Обратите внимание на то, что я скопировал далеко не все папки и файлы. А самое главное в том, что в директории «casper» с файлами лежит сам образ диска и отсутствуют файлы «filesystem.*» самой файловой системы Linux Mint диска - это важно!

Так надо делать далеко не у всех Linux систем. И это важно!

Дело в том, что именно Linux Mint не может напрямую загрузить «filesystem.*» файлы. Это конкретно прописано в загрузочном меню «boot/grub/grub.cfg»:

iso-scan/filename=${iso_path}

Именно этот параметр нам и понадобится для корректной и BIOS и UEFI загрузки этой системы. Если бы его не было, в таком случае мы просто бы скопировали распакованные файлы «filesystem.*» и прописали бы более длинную загрузку, точнее бы по большей части просто скопировали ее из указанных ранее файлов.

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

Для простой загрузки системы нужна только папка «casper». А вот для установки и обновления уже нужны будут пара других важных папок локальных репозиториев информации обо всех пакетах системы: «dists», «pool», «efi.img», «md5sum.README», «md5sum.txt».

Для Debian скорее всего вы будете копировать все файлы целиком. Я имею введу папку «casper» или другую для указанного диска, включая файлы «filesystem.*».

Теперь отредактируем следующие файлы наших загрузчиков через редактор Geany.

«menu.lst»

timeout 30
gfxmenu /boot/Rainbow
/boot/unifont --all-font /boot/CONSOLA_U16.bin 
default 0

title Load HDD
find --set-root --ignore-floppies --ignore-cd /bootmgr || find --set-root --ignore-floppies --ignore-cd /ntldr
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
rootnoverify (hd0)
chainloader (hd0)+1

title Windows Utilites
find --set-root --ignore-floppies --ignore-cd /bootmgr
map --unmap=0:0xff
map --unhook
root (hd0,0)
chainloader (hd0,0)/bootmgr

title Alkid Live CD
find --set-root /minint/setupldr.bin
chainloader /minint/setupldr.bin

title Alkid Live CD (without SCSI/RAID)
find --set-root /minint/setuplns.bin
chainloader /minint/setuplns.bin

title WIN7PE COMPACT
find --set-root /isoimage/WIN7PE-COMPACT.iso 
map /isoimage/WIN7PE-COMPACT.iso  (0xff) || map --mem /isoimage/WIN7PE-COMPACT.iso  (0xff)
map --hook
chainloader (0xff)

title Linux Mint 22.2 Xfce 64-bit
find --set-root /linux/linuxmint-22.2-xfce-64bit/casper/linuxmint-22.2-xfce-64bit.iso
map /linux/linuxmint-22.2-xfce-64bit/casper/linuxmint-22.2-xfce-64bit.iso  (0xff) || map --mem /linux/linuxmint-22.2-xfce-64bit/casper/linuxmint-22.2-xfce-64bit.iso  (0xff)
map --hook
chainloader (0xff)

title GParted live 1.7.0-8 AMD64
find --set-root /isoimage/gparted-live-1.7.0-8-amd64.iso
map /isoimage/gparted-live-1.7.0-8-amd64.iso  (0xff) || map --mem /isoimage/gparted-live-1.7.0-8-amd64.iso  (0xff)
map --hook
chainloader (0xff)

title GParted live 1.6.0-10 I686
find --set-root /isoimage/gparted-live-1.6.0-10-i686.iso
map /isoimage/gparted-live-1.6.0-10-i686.iso  (0xff) || map --mem /isoimage/gparted-live-1.6.0-10-i686.iso  (0xff)
map --hook
chainloader (0xff)

title Acrnois 2012 Utilites >>>
configfile /boot/acronis.lst

title SYSLINUX 
find --set-root --ignore-floppies /boot/syslinux/ldlinux.sys
chainloader +1

title Kon-Boot (CURRENT VERSION)
map --mem /boot/konboot.img (fd0)
map --hook
chainloader (fd0)+1
map (hd1) (hd0)
map --hook
rootnoverify (fd0)

title Kon-Boot v2.1 (OLD VERSION)
map --mem /boot/konbootOLD.img (fd0)
map --hook
chainloader (fd0)+1
map (hd1) (hd0)
map --hook
rootnoverify (fd0)

title Kon-Boot (CURRENT VERSION) CD
find --set-root /boot/kon-bootCD.ISO
map --mem /boot/kon-bootCD.ISO (hd32)
map --hook
chainloader (hd32)

title Kon-Boot v2.1 (OLD VERSION) CD
find --set-root /boot/kon-bootCD_old.ISO
map --mem /boot/kon-bootCD_old.ISO (hd32)
map --hook
chainloader (hd32)

title Symantec Ghost v11.0
find --set-root /boot/Ghost.IMA
map --mem /boot/Ghost.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1
 
title Plop Boot Manager
ls /usbdrive.tag || find --set-root --ignore-cd /usbdrive.tag
kernel /plpbt.bin

title Comand Line
commandline

title Else Utilites >>>
configfile /boot/menu_u.lst

title
root

title CD/DVD-ROM
cdrom --init
map --hook
chainloader (cd0)

title Reboot
reboot

title Shutdown
halt

«boot/menu_u.lst»

timeout 30
gfxmenu /boot/Moonlight
/boot/unifont --all-font /boot/CONSOLA_U16.bin 
default 0

title <<< Back to Start Menu" 
configfile /menu.lst

title FreeDOS - Load comand line and DOS-Navigator and VC  
find --set-root /boot/FreeDOS.IMA
map --mem /boot/FreeDOS.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title Universal MultiBoot Disk v3.7 - NTFS on DOS
find --set-root /boot/UniversalDisk.IMA
map --mem /boot/UniversalDisk.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title NT Password & Registry Editor - edit password and regedit
find --set-root /boot/NtPasRec.IMA 
map --mem /boot/NtPasRec.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title Active@ Boot Disk Professional v2.1 - Recovery files
find --set-root /boot/ActiveCD.WBT
map --mem /boot/ActiveCD.WBT (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title QuickTech Pro v5.8 - Test for Hardware  
find --set-root /grldr 
kernel /boot/memdisk 
initrd /boot/Qtpro580.IMG

title MemTest86+ v4.20 
find --set-root /boot/MemTest.IMG
map --mem /boot/MemTest.IMG (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title MHDD v4.6 
find --set-root /boot/MHDD.IMA
map --mem /boot/MHDD.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title Victoria v3.52 - IDE, ATA, HDD  
find --set-root /boot/Victoria.IMA
map --mem /boot/Victoria.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title HDD Regenerator v2011
find --set-root /boot/HDDReg.IMG
map --mem /boot/HDDReg.IMG (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title abrsw
find --set-root /IMG/abrsw.iso
map /IMG/abrsw.iso (0xff) || map --mem /IMG/abrsw.iso (0xff)
map --hook
chainloader (0xff)

title atiesdds
find --set-root /IMG/atiesdds.iso
map /IMG/atiesdds.iso (0xff) || map --mem /IMG/atiesdds.iso (0xff)
map --hook
chainloader (0xff)

title ghost
find --set-root /IMG/ghost.iso
map /IMG/ghost.iso (0xff) || map --mem /IMG/ghost.iso (0xff)
map --hook
chainloader (0xff)

title hddreg2011
find --set-root /IMG/hddreg2011.iso
map /IMG/hddreg2011.iso (0xff) || map --mem /IMG/hddreg2011.iso (0xff)
map --hook
chainloader (0xff)

title mt420
find --set-root /IMG/mt420.iso
map /IMG/mt420.iso (0xff) || map --mem /IMG/mt420.iso (0xff)
map --hook
chainloader (0xff)

title active
find --set-root /IMG/active.IMA
map --mem /IMG/active.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title victoria
find --set-root /IMG/victoria.IMA
map --mem /IMG/victoria.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title vmtce
find --set-root /IMG/vmtce.IMA
map --mem /IMG/vmtce.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title win98
find --set-root /IMG/win98.IMA
map --mem /IMG/win98.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title
root

title CD/DVD-ROM
cdrom --init
map --hook
chainloader (cd0)

title Reboot
reboot

title Shutdown
halt

«boot/acronis.lst»

timeout 30
gfxmenu /boot/Moonlight
/boot/unifont --all-font /boot/CONSOLA_U16.bin 
default 0

title <<< Back to Start Menu" 
configfile /menu.lst

title Acronis Disk Director Server 10.0.2169 Full version
find --set-root /acronis2012/ADDS10/DAT3.DAT
kernel /acronis2012/ADDS10/DAT3.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ADDS10/DAT2.DAT

title Acronis Disk Director Advanced 11.0.12077
find --set-root /acronis2012/ADDA11/DAT3.DAT
kernel /acronis2012/ADDA11/DAT3.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ADDA11/DAT2.DAT

title Acronis Disk Director Home Update 2 11.0.2343
find --set-root /acronis2012/ADDH11/DAT4.DAT
kernel /acronis2012/ADDH11/DAT4.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ADDH11/DAT3.DAT

title Acronis Snap Deploy Server 3.0.3470 with UR Master Image Creator
find --set-root /acronis2012/ASDS3/66A6188E
kernel /acronis2012/ASDS3/66A6188E vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ASDS3/720018DC

title Acronis Snap Deploy Server 3.0.3470 with UR Standalone deployment
find --set-root /acronis2012/ASDS3/3FE01872
kernel /acronis2012/ASDS3/3FE01872 vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ASDS3/98FE18F8

title Acronis Snap Deploy Server 4.0.540 with UR Master Image Creator
find --set-root /acronis2012/ASDS4/DAT5.DAT
kernel /acronis2012/ASDS4/DAT5.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ASDS4/DAT4.DAT

title Acronis Snap Deploy Server 4.0.540 with UR Standalone deployment
find --set-root /acronis2012/ASDS4/DAT3.DAT
kernel /acronis2012/ASDS4/DAT3.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ASDS4/DAT2.DAT

title Acronis True Image Home 2011 Plus Pack 14.0.6942
find --set-root /acronis2012/ATIH2011PP/DAT3.DAT
kernel /acronis2012/ATIH2011PP/DAT3.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ATIH2011PP/DAT2.DAT

title Acronis True Image Home 2012 Plus Pack 15.0.7133
find --set-root /acronis2012/ATIH2012PP/DAT3.DAT
kernel /acronis2012/ATIH2012PP/DAT3.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ATIH2012PP/DAT2.DAT

title Acronis True Image Home 2013 Plus Pack 16.0.5551
find --set-root /acronis2012/ATIH2013PP/DAT3.DAT
kernel /acronis2012/ATIH2013PP/DAT3.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ATIH2013PP/DAT2.DAT

title Acronis Backup & Recovery 10.0.13762 with UR
find --set-root /acronis2012/ABR10UR/DAT3.DAT
kernel /acronis2012/ABR10UR/DAT3.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ABR10UR/DAT2.DAT

title Acronis Backup & Recovery 11.5.32308 with UR (32-bit)
find --set-root /acronis2012/ABR11UR/DAT3.DAT
kernel /acronis2012/ABR11UR/DAT3.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ABR11UR/DAT2.DAT

title Acronis Backup & Recovery 11.5.32308 with UR (64-bit, with UEFI support)
find --set-root /acronis2012/ABR11UR/DAT5.DAT
kernel /acronis2012/ABR11UR/DAT5.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/ABR11UR/DAT4.DAT

title Acronis vmProtect 8.0.8128
find --set-root /acronis2012/AvmP8/DAT3.DAT
kernel /acronis2012/AvmP8/DAT3.DAT vga=788 ramdisk_size=28672 acpi=off quiet
initrd /acronis2012/AvmP8/DAT2.DAT

title
root

title CD/DVD-ROM
cdrom --init
map --hook
chainloader (cd0)

title Reboot
reboot

title Shutdown
halt

«boot/syslinux/syslinux.cfg»

PROMPT				0
TIMEOUT				300
NOESCAPE			1
ALLOWOPTIONS		0

DEFAULT /boot/syslinux/vesamenu.c32
FONT /boot/syslinux/866_8x16.psf
MENU BACKGROUND /boot/syslinux/bg-2.jpg

MENU WIDTH 42
MENU MARGIN 0
MENU ROWS 14
MENU TIMEOUTROW 17
MENU TABMSGROW 24
MENU CMDLINEROW 24
MENU HSHIFT 2
MENU VSHIFT 1
menu helpmsgrow 19
menu helpmsgendrow 28

#== Ќ §ў ­ЁҐ Ї а ¬Ґва  =  ?? ===== ЏҐаҐ¤ жў. = ”®­ жў. = ?? == Ї®¤бЄ §Є  ==== >

	menu color screen	37;40      #ffffffff #00000000 none
	menu color border	30;44      #00000000 #00000000 none # ђ ¬Є 
	menu color title	7;37;40    #ffffffff #00000000 none # ‡ Ј®«®ў®Є
	menu color unsel	37;44      #ff60CA00 #00000000 none # Џг­Євл § Јаг§ЄЁ
	menu color hotkey	1;37;44    #ff60CA00 #00000000 none
	menu color sel		37;44      #ffffffff #00000000 none # Љгаб®а
	menu color hotsel	1;7;37;40  #ffffffff #ff60CA00 none
	menu color scrollbar	30;44      #ffffffff #00000000 none # Џа®ЄагвЄ 

	menu color tabmsg	31;40      #ffffffff #00000000 none
	menu color cmdmark	1;36;40    #ffff0000 #00000000 none
	menu color cmdline	37;40      #ffffffff #00000000 none
	menu color pwdborder	30;47      #ffff0000 #00000000 std
	menu color pwdheader	31;47      #ffff0000 #00000000 std
	menu color pwdentry	30;47      #ffff0000 #00000000 std
	menu color timeout_msg	37;40      #aae1ff6a #00000000 std # ’ҐЄбв в ©¬Ґа 
	menu color timeout	1;37;40    #ffff0000 #00000000 none # –лдал в ©¬Ґа 
	menu color help		37;40      #ffffffff #00000000 none # Џ®¤бЄ §Є 
	menu color msg07	37;40      #90ffffff #00000000 std



# =================================== >  ‡ Ј®«®ў®Є Ё в ©¬ гв

MENU TITLE Њг«мвЁ§ Јаг§®з­ п д«ҐиЄ  maximalisimus121
MENU AUTOBOOT Ђўв®ўлЎ®а зҐаҐ§ # ᥪ.


# =================================== >  ‡ Јаг§Є  б ¦сбвЄ®Ј® ¤ЁбЄ 

LABEL boot_hdd
MENU DEFAULT
MENU LABEL ‡ Јаг§Є  б HDD
LOCALBOOT 0x81
TEXT HELP
‡ Јаг§Є  ЏЉ б ЇҐаў®Ј® ¦сбвЄ®Ј® ¤ЁбЄ .
ENDTEXT

LABEL GRUB4DOS 
MENU LABEL Grub4dos
BOOT /grldr
#KERNEL /boot/grub.exe
#APPEND --config-file=/menu.lst
TEXT HELP
Grub4dos
ENDTEXT

# =================================== >  Џ®¤¬Ґ­о Win32

MENU BEGIN Windows System
MENU TITLE Windows System
TEXT HELP
Menu Windows system
ENDTEXT

LABEL Exit
MENU LABEL  Back
MENU EXIT
TEXT HELP
Back to Main Menu
ENDTEXT

MENU SEPARATOR # < ============  ђ §¤Ґ«ЁвҐ«м

LABEL title Windows Utilites
MENU LABEL Windows Utilites
KERNEL /boot/syslinux/chain.c32 hd0 1 ntldr=/bootmgr
TEXT HELP
Menu Windows Utilites
ENDTEXT

LABEL Alkid Live CD
MENU LABEL Alkid Live CD
COM32 chain.c32
APPEND ntldr=/minint/setupldr.bin
TEXT HELP
Alkid Live CD
ENDTEXT

LABEL Alkid Live CD (without SCSI/RAID)
MENU LABEL Alkid Live CD (without SCSI/RAID)
COM32 chain.c32
APPEND ntldr=/minint/setuplns.bin
TEXT HELP
Alkid Live CD (without SCSI/RAID
ENDTEXT

LABEL WIN7PE COMPACT
MENU LABEL WIN7PE COMPACT
KERNEL /boot/memdisk iso
APPEND initrd=/isoimage/WIN7PE-COMPACT.iso
TEXT HELP
Menu WIN7PE COMPACT
ENDTEXT

LABEL Win 98
MENU LABEL Win 98
KERNEL /boot/memdisk
APPEND initrd=/IMG/win98.ima
TEXT HELP
Windows 98
ENDTEXT

LABEL XP Inst
MENU LABEL XP Inst
KERNEL /boot/memdisk
APPEND initrd=/IMG/xp_inst.gz
TEXT HELP
XP Instalation
ENDTEXT

MENU END

# =================================== >  Џ®¤¬Ґ­о Linux

MENU BEGIN Linux System
MENU TITLE Linux System
TEXT HELP
Menu Linux system
ENDTEXT

LABEL Exit
MENU LABEL  Back
MENU EXIT
TEXT HELP
Back to Main Menu
ENDTEXT

MENU SEPARATOR # < ============  ђ §¤Ґ«ЁвҐ«м

LABEL Linux Mint 22.2 Xfce 64-bit
MENU LABEL Linux Mint 22.2 Xfce 64-bit
kernel /linux/linuxmint-22.2-xfce-64bit/casper/vmlinuz
APPEND boot=casper iso-scan/filename=/linux/linuxmint-22.2-xfce-64bit/casper/linuxmint-22.2-xfce-64bit.iso uuid=6e72f523-dc09-4880-8910-93ffa64401c5 username=mint hostname=mint quiet splash --
INITRD /linux/linuxmint-22.2-xfce-64bit/casper/initrd.lz
TEXT HELP
Menu Linux Mint 22.2 Xfce 64-bit
ENDTEXT

MENU END

LABEL Shutdown PC
MENU LABEL  Shutdown PC
COM32 /boot/syslinux/poweroff.c32
TEXT HELP
Shutdown the PC
ENDTEXT

LABEL Restart PC
MENU LABEL  Restart PC
COM32 /boot/syslinux/reboot.c32
TEXT HELP
Restart the PC
ENDTEXT

«boot/grub/grub.cfg»

insmod part_gpt
insmod part_msdos
insmod efi_gop
insmod efi_uga
insmod gfxterm
insmod loopback
insmod all_video
insmod gzio
insmod ext2
insmod fat
insmod iso9660
insmod ntfs
insmod efi_gop
insmod efi_uga
insmod memdisk
insmod png

loadfont "${prefix}/fonts/unicode.pf2"

GRUB_GFXMODE=1024x768

color_normal=black/black
menu_color_normal=white/cyan
menu_color_highlight=yellow/light-magenta
background_color gray

set timeout=60
set default=0
set pager=1
efitextmode 0
--------------------------------------------------------------------------------------------------
menuentry 'boot from hd1' {
set root=hd1
chainloader +1
}
--------------------------------------------------------------------------------------------------
menuentry "Windows Utilites" {
  search --file --no-floppy --set=root /EFI/boot/win10x64.efi
  chainloader /EFI/boot/win10x64.efi
}
--------------------------------------------------------------------------------------------------
menuentry "Windows 10 22H2 x64 Ru cdboot" {
  search --file --no-floppy --set=root /EFI/microsoft/boot/cdboot.efi
  chainloader /EFI/microsoft/boot/cdboot.efi
}
--------------------------------------------------------------------------------------------------
menuentry "Windows 10 22H2 x64 Ru cdboot noprompt" {
  search --file --no-floppy --set=root /EFI/microsoft/boot/cdboot_noprompt.efi
  chainloader /EFI/microsoft/boot/cdboot_noprompt.efi
}
--------------------------------------------------------------------------------------------------
menuentry "Linux Mint 22.2 Xfce 64-bit (UEFI)" {
    search --set=root --file /linux/linuxmint-22.2-xfce-64bit/casper/vmlinuz
    linux /linux/linuxmint-22.2-xfce-64bit/casper/vmlinuz boot=casper iso-scan/filename=/linux/linuxmint-22.2-xfce-64bit/casper/linuxmint-22.2-xfce-64bit.iso uuid=6e72f523-dc09-4880-8910-93ffa64401c5 username=mint hostname=mint quiet splash --
    initrd /linux/linuxmint-22.2-xfce-64bit/casper/initrd.lz
}
--------------------------------------------------------------------------------------------------
menuentry "KonBootDxeIA32" {
  search --file --no-floppy --set=root /EFI/BOOT/KonBootDxeIA32.efi
  chainloader /EFI/BOOT/KonBootDxeIA32.efi
}
--------------------------------------------------------------------------------------------------
menuentry "KonBootDxeX64" {
  search --file --no-floppy --set=root /EFI/BOOT/KonBootDxeX64.efi
  chainloader /EFI/BOOT/KonBootDxeX64.efi
}
--------------------------------------------------------------------------------------------------
menuentry "Memtest" {
  search --file --no-floppy --set=root /boot/memtest.efi
  chainloader /boot/memtest.efi
}
--------------------------------------------------------------------------------------------------
menuentry "" {
 echo " "
}
--------------------------------------------------------------------------------------------------
menuentry "abrsw" {
  set isofile="/IMG/abrsw.iso"
  linux16 /boot/memdisk iso
  initrd16 $isofile
}
--------------------------------------------------------------------------------------------------
menuentry "atiesdds" {
  set isofile="/IMG/atiesdds.iso"
  linux16 /boot/memdisk iso
  initrd16 $isofile
}
--------------------------------------------------------------------------------------------------
menuentry "" {
 echo " "
}
--------------------------------------------------------------------------------------------------
menuentry "Grub4Dos" {
  linux /boot/grub.exe --config-file=/menu.lst
}
--------------------------------------------------------------------------------------------------
menuentry "(F1) Info Disk System and Video" --hotkey="f1" {
  echo "                       www.BootDev.ru"
  echo ""
  echo "[---------------- Info disk system ----------------]"
  ls -l
  echo "[---------------- Info video system  ----------------]"
  videoinfo
  echo ""
  echo "Press ESC for Main Menu..."
  sleep --interruptible 9999
}
--------------------------------------------------------------------------------------------------
menuentry "" {
  echo " "
}
--------------------------------------------------------------------------------------------------
menuentry "(r) Reboot" --hotkey="r" {
  reboot
}
--------------------------------------------------------------------------------------------------
menuentry "(h) Shutdown" --hotkey="r" {
  halt
}
--------------------------------------------------------------------------------------------------

Если вы думаете, что это всё, то вы забыли про BCD загрузчики!

Я уже проанализировал BCD меню и BIOS и UEFI диска «MSDaRTFull». Вот основные наиболее важные параметры, которые нам понадобятся.

Windows-10-22H2-x64-Ru

BIOS
\ERDC\boot.sdi
\Windows\system32\boot\winload.exe
\Windows
ru-RU
HAL Kernel
WinPE
Test
Не проверять целостность
UEFI
\Windows\system32\boot\winload.efi

Запуск Windows (с локального HDD)
\ERDC\start_os.bin

ДОС утилиты HD DaRTs
\ERDC\HDDARTS.BIN

Erd Commander for Windows XP (x86)
\ERDC\GRLDR

Plop Boot Manager
\ERDC\PLOP.BIN

Перезагрузка
\ERDC\RESTART.BIN

MS-DaRT for Windows Vista (x86)
\ERDC\ERD6X86.WIM

MS-DaRT for Windows Vista (x64)
\ERDC\ERD6X64.WIM

MS-DaRT for Windows 7 (x86)
\ERDC\ERD7X86.WIM

MS-DaRT for Windows 7 (x64)
\ERDC\ERD7X64.WIM

MS-DaRT for Windows 8 (x86)
\ERDC\ERD8X86.WIM

MS-DaRT for Windows 8 (x64)
\ERDC\ERD8X64.WIM

MS-DaRT for Windows 8.1 (x86)
\ERDC\ERD81X86.WIM

MS-DaRT for Windows 8.1 (x64)
\ERDC\ERD81X64.WIM

MS-DaRT for Windows 10 (x86)
\ERDC\ERD10X86.WIM
Загрузчик Metro Win8

MS-DaRT for Windows 10 (x64)
\ERDC\ERD10X64.WIM
Загрузчик Metro Win8

Запускаем утилиту «BOOTICEx86_ru».

Перейдите на вкладку «Редактирование BCD» и выберите «Другой BCD файл», а затем откройте BIOS BCD по пути вашей флешки - «/boot/BCD», а затем нажмите кнопку «Простой режим».

Начинаем редактировать BIOS BCD вашей флешки.

Во первых обязательно, обязательно снимите галочку «Загрузчик Metro (Win8)» со всех систем. И прежде чем переключаться в списке слева - обязательно нажимайте «Сохранить текущую систему». И в левой части меню поставте галочку напротив «Показать меню загрузки».

Для загрузки файлов «*.bin» или просто файла загрузки «GRLDR» - выбирайте меню: «Добавить» затем «Новая запись Windows XP / 2003».

Для всех остальных меню выбирайте «Добавить» затем «Новая запись WIM boot».

Слева кнопками «Вверх» и «Вниз» перемещайте меню как вам нравится. А кнопкой «Умолчание» выставьте конкретно на Windows-10 загрузку по умолчанию спустя 30 сек.

Параметр «OS GUID» выставляется автоматически, его нельзя поменять, да и не стоит даже пытаться во избежании проблем. Все остальное выставьте согласно скриншотам или приложенному конфигурационному файлу. Или тому, который получится у вас, когда вы также проанализируете такой же BCD файл точно также как мы сейчас редактируем его.

клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения

Закройте этот BCD.

Теперь нажмите на три точки в строке с путем к BCD файлу и выберите UEFI BCD по пути «efi/microsoft/boot/bcd». Все также нажмите на кнопку «Простой режим».

Начинаем редактировать UEFI BCD вашей флешки.

Во первых обязательно, обязательно снимите галочку «Загрузчик Metro (Win8)» со всех систем. И прежде чем переключаться в списке слева - обязательно нажимайте «Сохранить текущую систему». И в левой части меню поставте галочку напротив «Показать меню загрузки».

Для загрузки файлов «*.bin» или просто файла загрузки «GRLDR» - выбирайте меню: «Добавить» затем «Новая запись Windows XP / 2003».

Для всех остальных меню выбирайте «Добавить» затем «Новая запись WIM boot».

Слева кнопками «Вверх» и «Вниз» перемещайте меню как вам нравится. А кнопкой «Умолчание» выставьте конкретно на Windows-10 загрузку по умолчанию спустя 30 сек.

Параметр «OS GUID» выставляется автоматически, его нельзя поменять, да и не стоит даже пытаться во избежании проблем. Все остальное выставьте согласно скриншотам или приложенному конфигурационному файлу. Или тому, который получится у вас, когда вы также проанализируете такой же BCD файл точно также как мы сейчас редактируем его.

клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения

И теперь все что нам остаётся это проверить запуск нашей флешки. Но меня больше волнует запуск Linux Mint-а в двух режимах - BIOS и UEFI.

Как видите выполне успешный запуск в обоих режимах.

Перейти к оглавлению.


3.3.4. Деление флешки на несколько разделов.

Бывают случаю, когда наши загрузочные файлы могут превышать объем файловой системы FAT32 - 4,7 GB. И в этом случае флешку необходимо разбивать на несколько разделов, но не более 4.

Например.

В Linux-е мы бы воспользовались уитилитами вроде «Gparted», «parted», или «cfdisk».

В любом Windows-е, к сожалению, встроенный редактор дисков не позволит нам это сделать. И мы можем воспользовать только утилитой «BOOTICE».

И первое с чем надо определиться - это на сколько делить флешку для «fat32» и сколько для «ntfs». Например флешка 16 ГБ. И стоит оставить 8 ГБ для «fat32» и столько же для «ntfs».

Рассмотрим в качестве наиболее наглядного примера как «Windows 11». Да. Именно его, т.к. у него внутри в папке «source» файл «install.wim» (или если у вас некая другая Windows, например, пусть даже переделанная в nlite или vlite, в которой некий файл «install.wim» или «install.esd») вдруг превышает объем 4,7 ГБ и сжать его хотя бы на 100...200 МБ даже не представляется возможным.

Открываем «BOOTICE», выбираем нужную правильную флешку для редактирования. Убедитесь, что выбрали верную, потому что все файлы и разделы с неё будут полностью стерты.

Затем откройте «Управление разделами», далее «Переразбить разделы», выставьте параметры как на скриншоте и согласитесь со всплывающим окном.

В итоге у вас должно получится нечто такое.

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

Разница в том, что объем для «fat32» выбран минимальный в 1 ГБ, т.к. больше и не требуется, но в конкретном этом случае. Были бы на флешке и другие диски, тогда да, размер «fat32» был бы значительно больше. Всё остальное я отдал под «ntfs», решив что пусть все образы или диски храняться именно на втором разделе.

Теперь обратите внимание вот на что. Второй раздел флешки практически всегда во всех ОС будет недоступным, кроме Linux-ов. Просто так его увидеть и что-то туда записать не выйдет. Видите кнопку «Установить доступным»?

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

После деления на несколько разделов на каждый из них необходимо установить и «MBR GRUB4DOS» и «PBR syslinux». Для этого делаете нужный раздел доступным как указано выше и согласно «пункту 2.8» записываете оба загрузчика. Снова возвращаете к управлению разделами, делаете следующий раздел доступным и снова записываете оба загрузчика.

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

Сначала рассмотрим теорию GRUB2, потому что без этого правильные переходы сделать не получится.

У него есть так называемая строка поиска загрузчика, а затем сама загрузка.

search --file --no-floppy --set=root /efi/Microsoft/Boot/bootx64.efi
chainloader /efi/Microsoft/Boot/bootx64.efi

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

Вы вполне можете создать отдельную директорию и положить туда некий уникальный файл для данной системы, просто для того, чтобы именно этот раздел флешки сделать корневым. При этом не обязательно, чтобы этот уникальный файл был загрузочным или настройками. Это может быть абсолютно любой файл. Смысл строки поиска («search --file --no-floppy --set=root файл-с-путем-поиска») в том, чтобы это был уникальный файл нужной ОС в том же разделе, что и файл загрузчика строки «chainloader» или других параметров, если это другая ОС. Вы просто можете скопировать файл загрузчика «/efi/Microsoft/Boot/bootx64.efi» пусть, например, сюда «/efi/win11/win11.efi», не забыв создать директорию. И таким образом определить вашу записываемую на флешку ОС.

Таким же образом можно определиться и с любыми другими ОС и разделами, если их вдруг гораздо больше.

Загрузчики Grub4dos и Syslinux значительно отличаются.

Посмотрим на Syslinux. У него нет таких инструментов поиска и установки конкретного раздела корневым. Поэтому он всегда будет считать корневым относительно самого себя. Ну а чтобы можно было это хоть как-то изменить мы как раз и записали на оба раздела флешки в качестве «PBR syslinux» как раз решая эту проблему.

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

Есть и другой способ, но он немного сложнее, т.к. всегда требует конкретный файл самого загрузчика - будь то «bootmgr», «grldr» и другие. У самого Syslinux такого вообще нет.

И для последнего есть конкретная команда.

KERNEL /boot/syslinux/chain.c32 hd0 0 ntldr=/grldr

Где:

А соответственно «ntldr=/grldr» - передать управление загрузчику в этом разделе с указанным наименованием и путем до него, в данном случае «/grldr».

Пусть для наглядного примера будет меню для Windows 11 в режиме BIOS, т.е. MBR.

LABEL Win11 24H2 Ru x64
MENU LABEL Win11 24H2 Ru x64
KERNEL /boot/syslinux/chain.c32 hd0 1 ntldr=/bootmgr
TEXT HELP
Menu Win11 24H2 Ru x64
ENDTEXT

Теория Grub4dos.

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

Например, с поиском это выглядело бы так.

find --set-root --ignore-floppies --ignore-cd /bootmgr

У нас на флешке 2 раздела. Да, мы могли бы осуществить такой поиск, а могли бы и принудительно передать управление. Тогда наше grub4dos меню выглядело бы для Windows 11 следующим образом.

title Win11 24H2 Ru x64
root (hd0,1)
map --unmap=0:0xff
map --unhook
chainloader (hd0,1)/bootmgr

Тоже самое относительно определения разделов.

С теорией разобрались. Можно приступать к распределению файлов.

Стоит уделить внимание еще одному моменту - это тому, чтобы в каждом из загрузчиков были разные фоновые изображения, чтобы мы могли точно понимать, что переходы между ними точно отрабатывают на все 100%. Если в Grub4dos это легко изменить, то для Syslinux чутка сложнее. Для него нужна картинка размером «640 X 360». Например, пусть будет «Такая», которую необходимо поместить в «/boot/syslinux/» флешки второго раздела. Ниже в примерах будет приведен полный код каждого загрузчика.

Фоновые изображения для GRUB4DOS вроде используемых, т.е. встроенных в архивы «EFI-Grub4Dos-SysLinux-....7z», («Moonlight» и «Rainbow») можно изготовить с помощью утилиты «GFX-Editor1.0.exe.7z» из «пункта 2.5».

Распакуйте «Win11_24H2_Russian_x64.iso» в отдельную папку и также распакуйте в отдельную папку «EFI-Grub4Dos-SysLinux-Full.7z» как в «пункте 3.3.1».

Сделайте доступным первый раздел флешки Fat32. Скопируйте туда все распакованный «EFI-Grub4Dos-SysLinux-Full.7z» файлы как есть.

Содержимое файла «/menu.lst» первого раздела.

timeout 30
gfxmenu /boot/Rainbow
/boot/unifont --all-font /boot/CONSOLA_U16.bin 
default 0

title Load HDD
find --set-root --ignore-floppies --ignore-cd /bootmgr || find --set-root --ignore-floppies --ignore-cd /ntldr
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
rootnoverify (hd0)
chainloader (hd0)+1

title Win11 24H2 Ru x64
root (hd0,1)
map --unmap=0:0xff
map --unhook
chainloader (hd0,1)/bootmgr

title Syslinux (fat32)
root (hd0,0)
chainloader +1

title Syslinux (ntfs)
root (hd0,1)
chainloader +1

title Grub4dos (NTFS)
root (hd0,1)
chainloader /grldr

title Kon-Boot (CURRENT VERSION)
map --mem /boot/konboot.img (fd0)
map --hook
chainloader (fd0)+1
map (hd1) (hd0)
map --hook
rootnoverify (fd0)

title Kon-Boot v2.1 (OLD VERSION)
map --mem /boot/konbootOLD.img (fd0)
map --hook
chainloader (fd0)+1
map (hd1) (hd0)
map --hook
rootnoverify (fd0)

title Kon-Boot (CURRENT VERSION) CD
find --set-root /boot/kon-bootCD.ISO
map --mem /boot/kon-bootCD.ISO (hd32)
map --hook
chainloader (hd32)

title Kon-Boot v2.1 (OLD VERSION) CD
find --set-root /boot/kon-bootCD_old.ISO
map --mem /boot/kon-bootCD_old.ISO (hd32)
map --hook
chainloader (hd32)


title Symantec Ghost v11.0
find --set-root /boot/Ghost.IMA
map --mem /boot/Ghost.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1
 
title Plop Boot Manager
ls /usbdrive.tag || find --set-root --ignore-cd /usbdrive.tag
kernel /plpbt.bin

title Comand Line
commandline

title Else Utilites >>>
configfile /boot/menu_u.lst

title
root

title CD/DVD-ROM
cdrom --init
map --hook
chainloader (cd0)

title Reboot
reboot

title Shutdown
halt

Содержимое файла «/boot/menu_u.lst» первого раздела.

timeout 30
gfxmenu /boot/Moonlight
/boot/unifont --all-font /boot/CONSOLA_U16.bin 
default 0

title <<< Back to Start Menu" 
configfile /menu.lst

title FreeDOS - Load comand line and DOS-Navigator and VC  
find --set-root /boot/FreeDOS.IMA
map --mem /boot/FreeDOS.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title Universal MultiBoot Disk v3.7 - NTFS on DOS
find --set-root /boot/UniversalDisk.IMA
map --mem /boot/UniversalDisk.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title NT Password & Registry Editor - edit password and regedit
find --set-root /boot/NtPasRec.IMA 
map --mem /boot/NtPasRec.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title Active@ Boot Disk Professional v2.1 - Recovery files
find --set-root /boot/ActiveCD.WBT
map --mem /boot/ActiveCD.WBT (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title QuickTech Pro v5.8 - Test for Hardware  
find --set-root /grldr 
kernel /boot/memdisk 
initrd /boot/Qtpro580.IMG

title MemTest86+ v4.20 
find --set-root /boot/MemTest.IMG
map --mem /boot/MemTest.IMG (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title MHDD v4.6 
find --set-root /boot/MHDD.IMA
map --mem /boot/MHDD.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title Victoria v3.52 - IDE, ATA, HDD  
find --set-root /boot/Victoria.IMA
map --mem /boot/Victoria.IMA (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title HDD Regenerator v2011
find --set-root /boot/HDDReg.IMG
map --mem /boot/HDDReg.IMG (fd0) 
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title
root

title CD/DVD-ROM
cdrom --init
map --hook
chainloader (cd0)

title Reboot
reboot

title Shutdown
halt

Содержимое файла «/boot/syslinux/syslinux.cfg» первого раздела.

PROMPT				0
TIMEOUT				300
NOESCAPE			1
ALLOWOPTIONS		0

DEFAULT /boot/syslinux/vesamenu.c32
FONT /boot/syslinux/866_8x16.psf
MENU BACKGROUND /boot/syslinux/bg-2.jpg

MENU WIDTH 42
MENU MARGIN 0
MENU ROWS 14
MENU TIMEOUTROW 17
MENU TABMSGROW 24
MENU CMDLINEROW 24
MENU HSHIFT 2
MENU VSHIFT 1
menu helpmsgrow 19
menu helpmsgendrow 28

#== Ќ §ў ­ЁҐ Ї а ¬Ґва  =  ?? ===== ЏҐаҐ¤ жў. = ”®­ жў. = ?? == Ї®¤бЄ §Є  ==== >

	menu color screen	37;40      #ffffffff #00000000 none
	menu color border	30;44      #00000000 #00000000 none # ђ ¬Є 
	menu color title	7;37;40    #ffffffff #00000000 none # ‡ Ј®«®ў®Є
	menu color unsel	37;44      #ff60CA00 #00000000 none # Џг­Євл § Јаг§ЄЁ
	menu color hotkey	1;37;44    #ff60CA00 #00000000 none
	menu color sel		37;44      #ffffffff #00000000 none # Љгаб®а
	menu color hotsel	1;7;37;40  #ffffffff #ff60CA00 none
	menu color scrollbar	30;44      #ffffffff #00000000 none # Џа®ЄагвЄ 

	menu color tabmsg	31;40      #ffffffff #00000000 none
	menu color cmdmark	1;36;40    #ffff0000 #00000000 none
	menu color cmdline	37;40      #ffffffff #00000000 none
	menu color pwdborder	30;47      #ffff0000 #00000000 std
	menu color pwdheader	31;47      #ffff0000 #00000000 std
	menu color pwdentry	30;47      #ffff0000 #00000000 std
	menu color timeout_msg	37;40      #aae1ff6a #00000000 std # ’ҐЄбв в ©¬Ґа 
	menu color timeout	1;37;40    #ffff0000 #00000000 none # –лдал в ©¬Ґа 
	menu color help		37;40      #ffffffff #00000000 none # Џ®¤бЄ §Є 
	menu color msg07	37;40      #90ffffff #00000000 std



# =================================== >  ‡ Ј®«®ў®Є Ё в ©¬ гв

MENU TITLE Њг«мвЁ§ Јаг§®з­ п д«ҐиЄ  maximalisimus121
MENU AUTOBOOT Ђўв®ўлЎ®а зҐаҐ§ # ᥪ.


# =================================== >  ‡ Јаг§Є  б ¦сбвЄ®Ј® ¤ЁбЄ 

LABEL boot_hdd
MENU DEFAULT
MENU LABEL ‡ Јаг§Є  б HDD
LOCALBOOT 0x81
TEXT HELP
‡ Јаг§Є  ЏЉ б ЇҐаў®Ј® ¦сбвЄ®Ј® ¤ЁбЄ .
ENDTEXT

LABEL GRUB4DOS FAT32 
MENU LABEL GRUB4DOS FAT32
KERNEL /boot/syslinux/chain.c32 hd0 0 ntldr=/grldr
TEXT HELP
Menu GRUB4DOS FAT32
ENDTEXT

LABEL GRUB4DOS NTFS
MENU LABEL Grub4dos NTFS
KERNEL /boot/syslinux/chain.c32 hd0 1 ntldr=/grldr
TEXT HELP
Menu Grub4dos NTFS
ENDTEXT

# =================================== >  Џ®¤¬Ґ­о Win32

MENU BEGIN Windows System
MENU TITLE *nix is Windows System
TEXT HELP
Menu Windows system
ENDTEXT

LABEL Exit
MENU LABEL  Back
MENU EXIT
TEXT HELP
Back to Main Menu
ENDTEXT

MENU SEPARATOR # < ============  ђ §¤Ґ«ЁвҐ«м

LABEL Win11 24H2 Ru x64
MENU LABEL Win11 24H2 Ru x64
KERNEL /boot/syslinux/chain.c32 hd0 1 ntldr=/bootmgr
TEXT HELP
Menu Win11 24H2 Ru x64
ENDTEXT

MENU END

LABEL Shutdown PC
MENU LABEL  Shutdown PC
COM32 /boot/syslinux/poweroff.c32
TEXT HELP
Shutdown the PC
ENDTEXT

LABEL Restart PC
MENU LABEL  Restart PC
COM32 /boot/syslinux/reboot.c32
TEXT HELP
Restart the PC
ENDTEXT

Содержимое файла «/boot/grub/grub.cfg» первого раздела, он же UEFI загрузчик, т.к. работает только на FAT32 и только по указанному пути.

insmod part_gpt
insmod part_msdos
insmod efi_gop
insmod efi_uga
insmod gfxterm
insmod loopback
insmod all_video
insmod gzio
insmod ext2
insmod fat
insmod iso9660
insmod ntfs

loadfont "${prefix}/fonts/unicode.pf2"

GRUB_GFXMODE=1024x768

color_normal=black/black
menu_color_normal=white/cyan
menu_color_highlight=yellow/light-magenta
background_color gray

set timeout=60
set default=0
set pager=1
--------------------------------------------------------------------------------------------------
menuentry 'boot from hd1' {
set root=hd1
chainloader +1
}
--------------------------------------------------------------------------------------------------
menuentry "Win11 24H2 Ru x64 efi" {
  search --file --no-floppy --set=root /efi/Microsoft/Boot/bootx64.efi
  chainloader /efi/Microsoft/Boot/bootx64.efi
}
--------------------------------------------------------------------------------------------------
menuentry "Win11 24H2 Ru x64 cdboot" {
  search --file --no-floppy --set=root /efi/Microsoft/Boot/cdboot.efi
  chainloader /efi/Microsoft/Boot/cdboot.efi
}
--------------------------------------------------------------------------------------------------
menuentry "Win11 24H2 Ru x64 cdboot noprompt" {
  search --file --no-floppy --set=root /efi/Microsoft/Boot/cdboot_noprompt.efi
  chainloader /efi/Microsoft/Boot/cdboot_noprompt.efi
}
--------------------------------------------------------------------------------------------------
menuentry "KonBootDxeIA32" {
  search --file --no-floppy --set=root /efi/Boot/KonBootDxeIA32.efi
  chainloader /efi/Boot/KonBootDxeIA32.efi
}
--------------------------------------------------------------------------------------------------
menuentry "KonBootDxeX64" {
  search --file --no-floppy --set=root /efi/Boot/KonBootDxeX64.efi
  chainloader /efi/Boot/KonBootDxeX64.efi
}
--------------------------------------------------------------------------------------------------
menuentry "Memtest" {
  search --file --no-floppy --set=root /boot/memtest.efi
  chainloader /boot/memtest.efi
}
----------------------------------------------------------------------------------------------
configfile /EFI/boot/grub.cfg
--------------------------------------------------------------------------------------------------
menuentry "" {
 echo " "
}
--------------------------------------------------------------------------------------------------
menuentry "(F1) Info Disk System and Video" --hotkey="f1" {
 echo "                       www.BootDev.ru"
 echo ""
 echo "[---------------- Info disk system ----------------]"
 ls -l
 echo "[---------------- Info video system  ----------------]"
 videoinfo
 echo ""
 echo "Press ESC for Main Menu..."
 sleep --interruptible 9999
}
--------------------------------------------------------------------------------------------------
menuentry "" {
 echo " "
}
--------------------------------------------------------------------------------------------------
menuentry "(r) Reboot" --hotkey="r" {
 reboot
}
--------------------------------------------------------------------------------------------------
menuentry "(h) Shutdown" --hotkey="r" {
 halt
}
--------------------------------------------------------------------------------------------------

Сделайте активным второй раздел флешки «NTFS».

Скопируйте туда все распакованные файлы диска «Win11_24H2_Russian_x64.iso» как есть.

А вот копировать распакованные файлы архива «EFI-Grub4Dos-SysLinux-Full.7z» нужно будет на второй раздел не все.

Вот список файлов и папок, которые необходимо скопировать БЕЗ ЗАМЕНЫ на второй раздел флешки из указанного архива.

Теперь поправим все меню-ки загрузок второго раздела.

Содержимое файла «/menu.lst» второго раздела.

timeout 30
gfxmenu /boot/Moonlight
/boot/unifont --all-font /boot/CONSOLA_U16.bin 
default 0

title Load HDD
find --set-root --ignore-floppies --ignore-cd /bootmgr || find --set-root --ignore-floppies --ignore-cd /ntldr
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
rootnoverify (hd0)
chainloader (hd0)+1

title Win11 24H2 Ru x64
root (hd0,1)
map --unmap=0:0xff
map --unhook
chainloader (hd0,1)/bootmgr

title Grub4dos (fat32)
root (hd0,0)
chainloader /grldr

title Syslinux (fat32)
root (hd0,0)
chainloader +1

title Syslinux (ntfs)
root (hd0,1)
chainloader +1

title Comand Line
commandline

title
root

title CD/DVD-ROM
cdrom --init
map --hook
chainloader (cd0)

title Reboot
reboot

title Shutdown
halt

Содержимое файла «/boot/syslinux/syslinux.cfg» второго раздела.

PROMPT				0
TIMEOUT				300
NOESCAPE			1
ALLOWOPTIONS		0

DEFAULT /boot/syslinux/vesamenu.c32
FONT /boot/syslinux/866_8x16.psf
MENU BACKGROUND /boot/syslinux/bg-1.jpg

MENU WIDTH 42
MENU MARGIN 0
MENU ROWS 14
MENU TIMEOUTROW 17
MENU TABMSGROW 24
MENU CMDLINEROW 24
MENU HSHIFT 2
MENU VSHIFT 1
menu helpmsgrow 19
menu helpmsgendrow 28

#== Ќ §ў ­ЁҐ Ї а ¬Ґва  =  ?? ===== ЏҐаҐ¤ жў. = ”®­ жў. = ?? == Ї®¤бЄ §Є  ==== >

	menu color screen	37;40      #ffffffff #00000000 none
	menu color border	30;44      #00000000 #00000000 none # ђ ¬Є 
	menu color title	7;37;40    #ffffffff #00000000 none # ‡ Ј®«®ў®Є
	menu color unsel	37;44      #ff60CA00 #00000000 none # Џг­Євл § Јаг§ЄЁ
	menu color hotkey	1;37;44    #ff60CA00 #00000000 none
	menu color sel		37;44      #ffffffff #00000000 none # Љгаб®а
	menu color hotsel	1;7;37;40  #ffffffff #ff60CA00 none
	menu color scrollbar	30;44      #ffffffff #00000000 none # Џа®ЄагвЄ 

	menu color tabmsg	31;40      #ffffffff #00000000 none
	menu color cmdmark	1;36;40    #ffff0000 #00000000 none
	menu color cmdline	37;40      #ffffffff #00000000 none
	menu color pwdborder	30;47      #ffff0000 #00000000 std
	menu color pwdheader	31;47      #ffff0000 #00000000 std
	menu color pwdentry	30;47      #ffff0000 #00000000 std
	menu color timeout_msg	37;40      #aae1ff6a #00000000 std # ’ҐЄбв в ©¬Ґа 
	menu color timeout	1;37;40    #ffff0000 #00000000 none # –лдал в ©¬Ґа 
	menu color help		37;40      #ffffffff #00000000 none # Џ®¤бЄ §Є 
	menu color msg07	37;40      #90ffffff #00000000 std



# =================================== >  ‡ Ј®«®ў®Є Ё в ©¬ гв

MENU TITLE Њг«мвЁ§ Јаг§®з­ п д«ҐиЄ  maximalisimus121
MENU AUTOBOOT Ђўв®ўлЎ®а зҐаҐ§ # ᥪ.


# =================================== >  ‡ Јаг§Є  б ¦сбвЄ®Ј® ¤ЁбЄ 

LABEL boot_hdd
MENU DEFAULT
MENU LABEL ‡ Јаг§Є  б HDD
LOCALBOOT 0x81
TEXT HELP
‡ Јаг§Є  ЏЉ б ЇҐаў®Ј® ¦сбвЄ®Ј® ¤ЁбЄ .
ENDTEXT

LABEL GRUB4DOS NTFS
MENU LABEL Grub4dos NTFS
KERNEL /boot/syslinux/chain.c32 hd0 1 ntldr=/grldr
TEXT HELP
Menu Grub4dos NTFS
ENDTEXT

LABEL GRUB4DOS FAT32
MENU LABEL GRUB4DOS FAT32
KERNEL /boot/syslinux/chain.c32 hd0 0 ntldr=/grldr
TEXT HELP
Menu GRUB4DOS FAT32
ENDTEXT

# =================================== >  Џ®¤¬Ґ­о Win32

MENU BEGIN Windows System
MENU TITLE *nix is Windows System
TEXT HELP
Menu Windows system
ENDTEXT

LABEL Exit
MENU LABEL  Back
MENU EXIT
TEXT HELP
Back to Main Menu
ENDTEXT

MENU SEPARATOR # < ============  ђ §¤Ґ«ЁвҐ«м

LABEL Win11 24H2 Ru x64
MENU LABEL Win11 24H2 Ru x64
KERNEL /boot/syslinux/chain.c32 hd0 1 ntldr=/bootmgr
TEXT HELP
Menu Win11 24H2 Ru x64
ENDTEXT

MENU END

LABEL Shutdown PC
MENU LABEL  Shutdown PC
COM32 /boot/syslinux/poweroff.c32
TEXT HELP
Shutdown the PC
ENDTEXT

LABEL Restart PC
MENU LABEL  Restart PC
COM32 /boot/syslinux/reboot.c32
TEXT HELP
Restart the PC
ENDTEXT

Как видите, ничего особо сложного. Таким же образом можно разобраться и с любыми Linux-ами и другими ОС дисками и образами дисков.

Перейти к оглавлению.


3.4. Новое поколение материнский плат UEFI-NON-CSM.

Что такое fTPM, Secure Boot и CSM, и как они связаны?

fTPM (Firmware TPM) — это реализация модуля TPM (Trusted Platform Module) в прошивке процессора или материнской платы, а не отдельный физический чип. TPM отвечает за аппаратное обеспечение безопасности: хранение криптографических ключей, проверку целостности системы и т.п. В современных системах с Windows 11 и некоторыми играми требуется включённый TPM 2.0 (в вашем случае — fTPM) для обеспечения безопасности и совместимости.

Secure Boot — это функция UEFI, которая проверяет цифровую подпись загрузочных компонентов (загрузчика, драйверов и ОС) перед их запуском. Это предотвращает загрузку неподписанного или вредоносного кода. Secure Boot требует, чтобы загрузчик был подписан и соответствовал политике безопасности. В BIOS у вас есть выбор между "MS Windows UEFI" (включает Secure Boot с проверкой ключей) и "Other OS" (отключает Secure Boot).

CSM (Compatibility Support Module) — это модуль в UEFI, который обеспечивает поддержку загрузки в режиме Legacy BIOS, то есть позволяет загружаться с устройств, использующих старый MBR-разметку и BIOS-загрузчики. В современных платах с UEFI и Secure Boot CSM часто отключён или заблокирован, чтобы не допустить загрузку устаревших и потенциально небезопасных загрузчиков.

В новых поколениях материнских плат AM5 / DDR5 CSM отключён по умолчанию и заблокирован, потому что:

Что такое Platform Key (PK) и зачем он нужен?

Platform Key (PK) — это ключ, который используется для управления Secure Boot. Он устанавливается производителем или пользователем и служит для подписания и проверки загрузочных компонентов.

В состоянии Standard ключи Secure Boot отсутствуют или используются стандартные ключи производителя.

В режиме Custom вы можете вручную управлять ключами Secure Boot (добавлять, удалять, сбрасывать), что даёт полный контроль над политикой загрузки и безопасностью.

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

Почему не загружаются флешки с MBR-загрузчиками (Grub4Dos, Syslinux), а только GRUB2 с FAT32?

В современных материнских платах CSM (т.е. старый вариант запуска BIOS MBR) нельзя включить из-за политики производителя и архитектуры AM5. Поэтому единственная возможность устанавливать ОС остаётся только записывать флешки утилитой «Rufus» (для старых ОС типа Windows 7. Для более старших используйте версию с официального сайта). Поэтому все новые и современные материнские платы типа «AM5 / DDR5» и старше поддерживают только один единственный UEFI, правильнее говоря «UEFI-NON-CSM». Старые назывются «UEFI-CSM».

Поэтому попытка сбросить или удалить ключи Platform Key (PK) никакого результата толком не даст и ваша настройка «CSM» всё равно не включится!
А из-за удалённых или сброшенных ключей у вас наверняка возникнут проблемы с самим UEFI Биосом.

Рассмотрим несколько вариантов записей уже известных образов дисков для записи для MBR BIOS флешек, т.е. CSM вариантов запуска, и записи GPT UEFI флешек, т.е. UEFI-NON-CSM без CSM MBR как такового.


«MSDaRTFull.iso» - MBR - «BIOS + UEFI-CSM». А также проверка запуска через «QemuBootTester».

клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения

«MSDaRTFull.iso» - GPT - «UEFI-NON-CSM». А также проверка запуска через «QemuBootTester».

клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения

«Win11_24H2_Russian_x64.iso» - GPT - «UEFI-NON-CSM». А также проверка запуска через «QemuBootTester».

клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения

«linuxmint-22.2-xfce-64bit.iso» - MBR - «BIOS + UEFI-CSM». А также проверка запуска через «QemuBootTester».

клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения клик для увеличения

Самое забавное в том, что последний диск с «linuxmint-22.2-xfce-64bit.iso», не смотря на то, что записан «Rufus»-ом и в MBR работает как в «BIOS + UEFI-CSM», так и в «UEFI-NON-CSM».

Перейти к оглавлению.


3.5. Тестирование

Рассмотрим коды запуска для самой утилиты «Qemu» и для «Windows» и для «Linux».

Для этого вам понадобится сама утилита «Qemu» для вашей ОС, а также архив «edk2-ovmf-202505-1-any.pkg.tar.gz» из того же пункта «2.7».

Архив нужен и в «Windows» и в «Linux». Потому что его надо будет распаковать и достать из него 2 файла - «usr/share/edk2/ia32/OVMF_CODE.4m.fd» и «usr/share/edk2/x64/OVMF_CODE.4m.fd».

Можете даже переименовать их по очереди например так: «OVMF_CODE.4m.x64.fd» и «OVMF_CODE.4m.x86.fd» просто для удобства использования.

Эти два файла как раз и будут имитировать нам полноценную среду UEFI при запуске любого современного ПК. Для проверки в режиме BIOS они будут не нужны.

Windows. Убедительная просьба устанавливать утилиту «Qemu» на любой диск так, чтобы в путях установки не было никаких пробелов и знаков препинания!

Например, «C:\Qemu\».

Теперь создайте файл, например, «Qemu-test.bat» в любом удобном для вас месте, но главное в том же месте где и лежат ваши распакованные «OVMF_CODE.4m.fd» файлы.

@echo off
SET PATH=C:\Qemu\;%PATH%
qemu-system-x86_64 ^
-vga std ^
-cpu qemu64 ^
-smp cores=1 ^
-m 1024 ^
-machine q35 ^
-device intel-iommu ^
-device e1000,netdev=net0 ^
-netdev user,id=net0,hostfwd=tcp::2222-:22 ^
-boot menu=on ^
-L . ^
-drive file=OVMF_CODE-x64.fd,if=pflash,format=raw,unit=0,readonly=on ^
-usb --device usb-host,vendorid=0x8564,productid=0x1000

Пока не запускайте этот файл. Нам еще нужно определить «vendorid» и «productid» вашей флешки. Как видите, мы здесь сразу подключили 64 битный вариант имитации UEFI системы, а также подключили сетевую карту с пробросом с 2222 порта на 22 внутрь виртуальной машины. Остальные параметры выставлены согласно утилите «QemuBootTester». Для замены UEFI на 32 битную - просто перепешите файл «OVMF_CODE.4m.x64.fd» на «OVMF_CODE.4m.x86.fd» внутри этой команды.

Без UEFI код запуска выглядел бы следующим образом.

@echo off
SET PATH=C:\Qemu\;%PATH%
qemu-system-x86_64 ^
-vga std ^
-cpu qemu64 ^
-smp cores=1 ^
-m 1024 ^
-machine q35 ^
-device intel-iommu ^
-device e1000,netdev=net0 ^
-netdev user,id=net0,hostfwd=tcp::2222-:22 ^
-boot menu=on ^
-usb --device usb-host,vendorid=0x8564,productid=0x1000

Для определения «vendorid» и «productid» вашей флешки скачайте архив cmd утилит «bash-cmd-variant.7z».

Распакуйте этот архив куда-нибудь, зайдти в полученную папку и запустите файл «cmd-x86.bat». Затем используйте несколько последовательных комманд.

listdisk
blkid
lsblk
lsusb

«listdisk».

Остальные команды.

Все эти команды помогают понять где именно ваша флешка и какие у нее «vendorid» и «productid». В моем случае виртуальные диски просто не отображаются, т.к. это всё таки Windows.

Есть и другой вариант кода запуска проверки любой флешки или виртуального диска.

@echo off
SET PATH=C:\Qemu\;%PATH%
qemu-system-x86_64 ^
-vga std ^
-cpu qemu64 ^
-smp cores=1 ^
-m 1024 ^
-machine q35 ^
-device intel-iommu ^
-device e1000,netdev=net0 ^
-netdev user,id=net0,hostfwd=tcp::2222-:22 ^
-boot menu=on ^
-L . ^
-drive file=OVMF_CODE-x64.fd,if=pflash,format=raw,unit=0,readonly=on ^
-hda \\.\PhysicalDrive2

Исходя из скриншотов выше, вы сами можете убедиться, что в качестве имитации флешки здесь выступает физический носитель «\\.\PhysicalDrive2», что в коде я и выставил.

Есть еще один вариант определения номера драйва.

Запусте управление дисками вашей Windows. И все что нужно - это посмотреть в списке какой номер у диска.

В данном случае исходя из скриншота выше - диск номер 6. Т.е. команда «\\.\PhysicalDrive6».

Linux.

Здесь всё намного проще!

Флешкой может быть любое «/dev/sdX» устройство. Наша задача определить букву этого устройства.

df -h
lsblk
blkid
lsusb

Обычно чаще всего одной команды «lsblk» достаточно.

В данном случае мы видим на скриншоте что это конкретное устройство «/dev/sdc».

Теперь создайте в том же месте где и ваши распакованные файлы «OVMF_CODE.4m.x64.fd» и «OVMF_CODE.4m.x86.fd» файл запуска, например, «linux-qemu.sh» для UEFI режимма проверки. Не забудьте заменить «/dev/sdX» на вашу флешку, например, для примера из скриншота выше «/dev/sdc».

qemu-system-x86_64 \
-enable-kvm \
-cpu host \
-smp cores=1 \
-m 1024 \
-machine q35 \
-device intel-iommu \
-vga virtio \
-device e1000,netdev=wan \
-netdev user,id=wan \
-hda /dev/sdX \
-boot d \
-device e1000,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::22-:22,hostfwd=tcp::80-:80,hostfwd=tcp::443-:443 \
-L . \
-drive file=/usr/share/ovmf/x64/OVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on

Прописывать путь к файлу «OVMF_CODE.4m.fd» обязательно полностью в Linux формате. При этом не важно, установили ли вы «edk2-ovmf» или скачали и распаковали вручную из скачанного архива.

Соответственно для проверки флешки в режиме BIOS.

qemu-system-x86_64 \
-enable-kvm \
-soundhw ac97 \
-cpu host \
-smp cores=1 \
-m 1024
-machine q35 \
-device intel-iommu \
-vga virtio \
-device e1000,netdev=wan \
-netdev user,id=wan \
-hda /dev/sdX \
-boot d \
-device e1000,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::22-:22,hostfwd=tcp::80-:80,hostfwd=tcp::443-:443

Вот так выглядят различные варианты запуска bios в Qemu из кода.

-bios OVMF_CODE.fd

-L .
-drive file=OVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on

Не забывайте про переносы в разных ОС. В Linux это косой слеш - «/», а в Windows - это «^».

А вот так выглядят различные варианты подключения дисков и съемных устройств в Qemu.

-cdrom my-iso.iso
-hda /dev/sdX
-hda ubuntu.qcow
-hda \\.\PhysicalDrive1
-drive format=raw,file=raw.img
-drive format=vmdk,file=disk.vmdk
-drive format=vhdx,file=disk.vhdx
-drive format=vpc,file=image_vhd.vhd
-drive format=vdi,file=image_vdi.vdi
-usb --device usb-host,vendorid=0x125f,productid=0xdb8a

Перейти к оглавлению.

Ну а сегодня на этом всё. Всем Добра и Удачи!

Copyright © 14.11.2025 by Mikhail Artamonov