[Quote]

    Ander_73
  • 15549
  • Longevity: 3 years 2 months
  • Posts: 1436
  • REPUTATION:96

    [+] [-]
-*** Лабораторная работа: мультисистемная флешка ***-
Назначение проекта:
  • Подготовка флеш-накопителя для загрузки различных загрузчиков (BIOS/UEFI x64);
  • Наполнение подготовленного флеш-накопителя дистрибутивами (Windows/Linux), сборками (загрузочными дисками), полезными утилитами.

Представляет собой:
    Набор командных бат-файлов и вспомогательных утилит.

Краткое описание принципа работы:
  • С помощью diskpart размечает флешку;
  • Форматирует в FAT32 без ограничений на размер раздела;
  • Основным загрузчиком в MBR ставит Xorboot 0.65;

Важно!


В стартовом меню Xorboot на некоторых BIOS могут не работать клавиши "вверх-вниз".
В этом случае выбор пунктов меню нужно производить через "горячие клавиши": 1-7 и P, R, S.
  • Помещает в корневую папку подготовленного флеш-накопителя командный бат-файл zrun.cmd, с помощью которого осуществляется дальнейшее управление проектом.

Список загрузчиков:
  • Syslinux 6.03
  • Syslinux 4.07
  • Bootmgr 10
  • Bootmgr 7
  • Grub4Dos 0.4.6
  • Grub4Dos 0.4.5
  • GRUB2 2.02
Поддержка EFI SecureBoot:
    Да

SecureBoot

  • Начальным загрузчиком стоит связка preloader+grub2 с ЦП KasperskyLab;
  • Может быть заменён на связку shim+grub2 с ЦП Canonical или оригинальный от Microsoft Corp.;
  • Также реализована возможность загрузки в режиме SecureBoot самоподписанного grub2 по методу ValdikSS (требует ручной установки ЦП; см. «Управление загрузчиками»)

Дополнительно

Папка с дополнительными утилитами \boot\boot\utils:
  • компилятор загрузчика grub2 (можно собрать ядро со своими модулями и своим конфигом)
  • комплект xorboot (сам установщик и мой модуль - можно перекроить и на флешку вбить)
  • комплект wimboot с примерами для загрузчиков g4d, grub2, syslinux.

Управление


Файл zrun.cmd в корне созданной флешки - это Панель управления *** Multi-loader flash ***. При запуске предлагает меню из четырёх пунктов:
  • Управление дополнениями
  • Управление загрузчиками
  • Управление конфигурациями ("ручная" правка меню загрузчиков и их бэкап/восстановление (не рекомендуется!)
  • Управление доп.возможностями (работа с x-lets и бэкап)
* В дальнейшем, количество пунктов может расти.
Управление дополнениями
Дополнение - это файл(-ы), расширяющий(-е) возможности и функционал проекта. Это могут быть загрузочные образы, сборки, набор программ и т.п.
Дополнение можно:
  • установить
  • удалить
  • проверить целостность
  • переустановить (= удалить + установить)
Установка дополнения
Требует наличия сети Интернет, откуда происходит скачивание дополнения.
* Внимание! Все операции по сохранению, распаковке, обработке происходят по пути %TEMP%. Убедитесь, что там достаточно места.
Процесс: загружаются нужные файлы, вычисляется CRC32 для каждого, файлы переписываются на флешку. Если необходимо, добавляются пункты меню в меню соответствующих загрузчиков.
Удаление дополнения
Процесс: удаляются файлы дополнения с флешки. Если необходимо, удаляются пункты меню из меню соответствующих загрузчиков.
Проверка целостности
Позволяет отследить порчу/удаление файлов дополнения из-за деградации флешки, действий вирусов/антивирусов, перекрытия файлов дополнения другими файлами.
Процесс: согласно созданному при добавлении дополнения списку CRC32, проверяются файлы дополнения.
Переустановка дополнения
Удаляет и заново устанавливает дополнение. Обычно используется для обновления дополнения.
* Сама система также является дополнением (System Core) и может быть обновлена переустановкой.
Управление загрузчиками
Загрузчик BIOS
Основным загрузчиком является Xorboot 0.65. Он записан в начальные сектора флешки и позволяет загружать все остальные загрузчики проекта. Существует возможность сменить Xorboot на:
  • GRUB2 - полностью записывается в MBR. Загружает среду GRUB2.
  • Syslinux 6.03/4.07 - оригинальные загрузчики MBR и PBR. Загружает среду Syslinux.
  • Wee63/127 - полностью записывается в MBR. Позволяет загружать некоторые загрузчики и несжатые образы FDD.
Существует возможность сразу (без меню выбора загрузчика) загружаться в среду Grub4Dos или BOOTMGR. Для этого нужно выбрать загрузчик из секции "MBR + BOOTLDR":
  • Grub4Dos - загрузчик MBR (PBR не используется).
  • USB-HDD+ - стандартный загрузчик MBR с улучшенной поддержкой загрузки с флешки.
  • USB-ZIP+ - загрузчик MBR, позволяющий эмулировать USB-ZIP устройство.
После чего появится возможность выбора среды:
  • Grub4Dos 0.4.6
  • Grub4Dos 0.4.5
  • BOOTMGR v.10
  • BOOTMGR v.7
Примечание:
  • менять загрузчик рекомендуется только в случае проблем с загружаемостью стандартного загрузчика проекта Xorboot 0.65
  • загрузчик USB-ZIP+ необратимо "смещает" рабочий раздел флешки hd0,0 -> hd0,3
  • загрузчик MBR Grub4Dos обладает высокой загружаемостью и рекомендуется в "сложных" случаях.
  • загрузчик PBR (для MBR = USB-HDD+/USB-ZIP+) соответствует выбираемой среде G4D/BMGR
Загрузчик UEFI
Существует возможность выбора начального загрузчика для UEFI режима. Это:
  • связка preloader + grub2 с ЦП от Kaspersky (по умолчанию)
  • связка shim + grub2 с ЦП от Canonical
  • комплект от ValdikSS для обхода SecureBoot (preloader выставляет политику "разрешить всё")
  • Windows Boot Manager

Как использовать метод «обход SecureBoot»


Можно менять версию используемого Windows Boot Manager: 10 (по умолчанию) или 7
Выбранная версия WBM будет грузиться:
  • как самостоятельный загрузчик bootx64.efi (при выборе WBM в качестве начального)
  • из меню GRUB2 (для загрузки WIM-ядер)

Работа с образами


Загрузчик Grub4Dos позволяет выполнять динамическую загрузку образов дисков. Папка \images в корне флешки используется для такого рода загрузки.
Порядок действий:
  • скопировать образ в соответствующую подпапку (см. ниже)
  • в основном меню Grub4Dos нажать клавишу "L"
Поддерживается работа с:
  • образы FDD/HDD
  • образы CD/DVD
  • загрузочные образы WIM
  • конфиги Grub4Dos
  • конфиги BCD
Назначение подпапок:
  • BCD:        конфиги BCD
  • CONFIG:    конфиги Grub4Dos
  • EFI:        efilets (см. ниже)
  • FLOPPY:    образы дисков без MBR (FDD)
  • HDD:        образы дисков с MBR (HDD)
  • ISO:        образы CD/DVD
  • LINUX:    образы CD/DVD маппируются в раздел (hd0,2). Образ должен быть дефрагментирован.
  • WIM:        загрузочные образы WIM
Загрузка образов
При загрузке образов FDD/HDD/ISO предлагаются варианты:
  • подождать 10 сек или нажать Esc: прямая загрузка образа с флешки
  • нажать Enter: предварительная загрузка образа в память
При загрузке образов WIM предлагаются варианты:
  • подождать 10 сек или нажать Esc: загрузка с помощью BOOTMGR ver.10
  • нажать Enter: загрузка с помощью BOOTMGR ver.7 (позволяет обходить проблемы с цифровыми подписями)
Работа с efilets
Папка \images\EFI может содержать:
  • файлы с расширением .EFI (будут добавлены как пользовательские утилиты)
  • текстовые файлы (будут добавлены как пользовательские меню GRUB2)
  • подпапки
Каждая подпапка должна содержать или:
  • файл BCD (в подпапку будет автоматически скопирован системный bootx64.efi)
или
  • файл bootx64.efi со вспомогательными файлами и подпапками
Для создания/обновления efilets в «Панели управления» (zrun.cmd) выбрать «Управление доп.возможностями» → «Обновление efilets»
* Примечания:
  • авторский BCD обычно расположен в папке \EFI\MICROSOFT\BOOT\
  • в подпапку с файлом BCD можно скопировать авторский bootx64.efi вместе с файлом(-ами) оформления .MUI в соответствующих подпапках
  • в подпапку можно скопировать содержимое авторской папки \EFI\BOOT\ (таким образом можно добавить, например, загрузку авторского rEFInd)
Специальные пункты меню
Пункт меню: Load images by MEMDISK... >
На некоторых BIOS загрузка образов средствами Grub4Dos не работает. В этом случае можно использовать загрузку образов через утилиту MEMDISK
Пункт меню: LINUX: clean (hd0,2)
Очистить раздел (hd0,2) после маппирования в него ISO-образа.
Пункт меню: Load images by swap FLOPPY/HDD, ISO/LINUX... >
Попробовать загрузить образ(-ы) из папки FLOPPY (образ без MBR) как HDD (образ с MBR) и наоборот.
Попробовать загрузить образ(-ы) из папки ISO (может быть фрагментирован) как LINUX раздел диска (должен быть непрерывным) и наоборот.
Полезно, если изначально способ работы с образом был выбран неверно.
* Примечания:
  • Имя и расширение файла образа может быть любым (без пробелов и русских букв). Зарезервировано только readme.txt
  • Образы FDD/HDD/ISO могут быть сжаты в GZ
  • Ограничения Grub4Dos 0.4.5:
    • при прямой загрузке с флешки требует дефрагментации образа
    • не работает с образами WIM
Советы:
Для загрузки сторонней сборки, если она использует в качестве загрузчика Grub4Dos, можно поместить menu.lst этой сборки в папку \images\CONFIG
Для загрузки сторонней сборки, если она использует в качестве загрузчика BOOTMGR, можно поместить BCD этой сборки в папку \images\BCD

Работа с x-lets

Создание wimlets
Образы из папки \images\WIM можно добавить в основное меню загрузчиков без создания дополнения. Порядок действий:
  • Скопировать загрузочный образ WIM в папку \images\WIM
  • Выполнить «Панель управления» (zrun.cmd) → «Управление доп.возможностями» → «Обновление wimlets»
  • Согласиться с добавлением образа в загрузочное меню
  • Ввести название пункта меню

Для удаления образа из основного меню загрузчиков:
  • Удалить образ WIM из папки \images\WIM
  • Выполнить «Панель управления» (zrun.cmd) → «Управление доп.возможностями» → «Обновление wimlets»

* Примечания:
  • образ WIM не должен содержать в названии пробелов и не-английских букв, должен иметь расширение .wim
  • образ будет добавлен в меню Windows Boot Manager UEFI только в том случае, если образ поддерживает разрядность х64
  • название меню можно вводить по-русски, но в меню GRUB2 будут отображаться знаки ??? вместо русских букв

-
Создание vhdlets
Можно добавлять в загрузку VHD-контейнеры. Поскольку для работы требуется NTFS, то располагаться VHD должны на сторонних разделах/дисках, которые будут присутствовать при загрузке MLF.
Порядок действий:
  • Выполнить «Панель управления» (zrun.cmd) → «Управление доп.возможностями» → «Обновление vhdlets»
  • Выбрать VHD на стороннем разделе/диске
  • Ввести название пункта меню
Для удаления пункта меню:
  • Удалить/переименовать VHD или отключить раздел/диск, на котором он расположен
  • Выполнить «Панель управления» (zrun.cmd) → «Управление доп.возможностями» → «Обновление vhdlets»
  • Согласиться с удалением
* Примечания:
  • выбор контейнера реализован через командлет powershell, он запускается довольно медленно, не паниковать
  • в меню UEFI добавляются только контейнеры с поддержкой х64
  • если при загрузке MLF раздел/диск с контейнером VHD будет недоступен, то BOOTMGR v7 будет вылетать с ошибкой, а BOOTMGR v10 не покажет пунктов меню с загрузкой VHD

Пример работы с vhdlet:
  • берём HDD в USB-Box
  • устанавливаем MLF и аддон BootItBM
  • загружаемся с него, с помощью BootItBM сжимаем первый раздел, на свободном месте создаём раздел NTFS
  • загружаемся в нормальную винду, переписываем на раздел NTFS контейнер(-ы) VHD в произвольную папку(-и)
  • выполняем инструкцию по добавлению

-
Управление efilets
Работа с efilets рассмотрена в разделе «Работа с образами»
-
Управление addlets
Addlet - это ещё один способ (наряду с Дополнениями) расширить возможности и функционал проекта. С помощью addlets можно загрузить утилиты, установочные дистрибутивы, наборы ПО, дистрибутивы Windows; зайти на интернет-ресурсы для самостоятельной загрузки необходимого ПО.
Как правило, загрузка происходит в папку \programs. Исключения:
  • набор драйверов SDI записывается в папку \drivers
  • дистрибутивы Windows записываются в папку \distros.
В отличии от Дополнений, addlets только скачивают и записывают ПО на флеш-носитель, но не позволяют управлять им в дальнейшем (то есть задачи контроля целостности информации и её удаления возлагаются на самого пользователя).
Функционал addlets выделен в отдельный модуль, который динамически подгружается из сети интернет. Поэтому расширение списка ПО, доступного для записи на флешку с помощью механизма addlets, происходит без необходимости обновления всего проекта.
* Примечания:
  • ПО, уже записанное на флешку (если это не ссылка на интернет-страницу ), помечается знаком «*» перед названием соответствующего addlet
  • ПО, которое скачивается непосредственно с сайта производителя, помечается как «online»; в остальных случаях приводится текущая версия

Бэкап: создание/восстановление

Бэкап: создание/восстановление
Создание
Выполнить «Панель управления» (zrun.cmd) → «Управление доп.возможностями» → «Создать резервную копию»
По умолчанию создаётся C:\mlf_backup.wim (можно в окне 7zG изменить путь и параметры архивации). По сути, просто создание архива всей флешки. Можно делать и самому, вручную.
Формат:    любой из поддерживаемых 7z (7z, ZIP, RAR, WIM, ISO, GZ и т. п.)
Имя:        mlf_backup.* (расширение может быть любым, в т.ч. нестандартным. Например: mlf_backup.maximum, mlf_backup.01_04_2019 и т.п.)
Восстановление:
  • Поместить архив/образ mlf_backup.* рядом с PrepFlash.cmd
  • Запустить PrepFlash.cmd и выбрать флеш-накопитель
  • После разметки флешки согласиться на восстановление из резервной копии. При этом:
    • архив будет развёрнут на флешку
    • удалён аддон System Core
    • установлен аддон System Core без обращения в Интернет.

Таким образом, для подготовки флешки нужны только два файла: system.7z (сама система MLF) и файл бекапа mlf_backup.* ранее созданной флешки со всеми аддонами и нужным ПО.

ЧаВо

В: Установил дополнение Х, но в режиме UEFI нет загрузки ядра(-ер) Windows. Почему?
О: Для запуска ядер Windows из загрузчика GRUB2 (в режиме UEFI) выберите пункт меню "Windows Boot Manager...    >"

Благодарности

dimo70, apostol, за активное тестирование и выявление всякого.
vovan1982, за файл справки о проекте.
[журнал]Загрузить


Last edited by Ander_73 on 2019-12-05 21:19; edited 41 times in total

[Quote]

    Ander_73
  • 15549
  • Longevity: 3 years 2 months
  • Posts: 1436
  • REPUTATION:96

    [+] [-]
74955а что, если например bcd-файл закинуть в папку images/bcd, ведь она для того и есть, чтоб пользовательские bcd сюда вставлять, затем скопировать всю папку сборки SMBB со всеми папками/файлами в корень флешки
Я вижу, Вы отлично ориентируетесь в MLF, приятно видеть! Именно так и надо поступить.
Насчёт "прописывать". Проект предполагает минимальное вмешательство пользователя. Ручная правка конфигов - это крайняя мера, супер-тонкий тюнинг, так сказать. Папки images/config и images/bcd - это полностью готовое решение проблемы. Просто поместить туда файл (конфиг G4D или BCD, соотв-но) и запускать через меню G4D клавиша "L". Никакого "прописывания". Единственно, если файлов несколько, то просто менять имена. Например, назвать его images/bcd/BCD_Smokie
* Конечно, это не будет работать в UEFI.

[Quote]

    static
  • 20290
  • Longevity: 1 year 1 month
  • Posts: 60
  • REPUTATION:-5

    [+] [-]
74956
74955а что, если например bcd-файл закинуть в папку images/bcd, ведь она для того и есть, чтоб пользовательские bcd сюда вставлять, затем скопировать всю папку сборки SMBB со всеми папками/файлами в корень флешки
Я вижу, Вы отлично ориентируетесь в MLF, приятно видеть! Именно так и надо поступить.
Насчёт "прописывать". Проект предполагает минимальное вмешательство пользователя. Ручная правка конфигов - это крайняя мера, супер-тонкий тюнинг, так сказать. Папки images/config и images/bcd - это полностью готовое решение проблемы. Просто поместить туда файл (конфиг G4D или BCD, соотв-но) и запускать через меню G4D клавиша "L". Никакого "прописывания". Единственно, если файлов несколько, то просто менять имена. Например, назвать его images/bcd/BCD_Smokie
* Конечно, это не будет работать в UEFI.
Да, попробовал, всю папку сборки SMBB скопировал в корень флешки, и bcd-файл сборки закинул в папку images/bcd/
переименовал в BCD_Smokie при загрузке меню нажал "L" увидел этот bcd, загрузился, прошла загрузка PE, проверил установку и опции "настройки установки" - всё работает. По поводу UEFI - в этой сборке Смоки, этой папки нет и в помине. А вот как нужно будет сделать, если она была бы, ну или другая подобная сборка попадется, там можно создавать подпапки Images/EFI/EFI_Smokie и в эту папку скопировать содержимое папки EFI сборки? И при обновлении EFILETS прописать название пункта меню, так, или ошибаюсь?

[Quote]

    Ander_73
  • 15549
  • Longevity: 3 years 2 months
  • Posts: 1436
  • REPUTATION:96

    [+] [-]
static, я думаю, что если скопировать папку SMBB в корень флешки, а потом добавить через wimlets загрузочные ядра, то всё заработает точно так же. Но при этом будет работать и в UEFI.
74962там можно создавать подпапки Images/EFI/EFI_Smokie и в эту папку скопировать содержимое папки EFI сборки? И при обновлении EFILETS прописать название пункта меню
Да, всё верно.
У меня там немного "заморочено" описано, но стоит один раз попробовать и понять логику, сразу всё станет ясно.
---
В основном, папка images/efi - она для утилит .efi и сторонних конфигов GRUB2 для UEFI. Запуск сторонних BCD там скорее опция, потому что запуск идёт через GRUB2, а это значит, могут быть проблемы в режиме SecureBoot. Да, у меня предусмотрены запасные варианты запуска в SecureBoot, но "железобетонным" остаётся только загрузка через bootx64 от MS (то есть пункты загрузки надо прописывать в основной BCD, то есть крайне желательно пользоваться механизмом wimlets)

[Quote]

    static
  • 20290
  • Longevity: 1 year 1 month
  • Posts: 60
  • REPUTATION:-5

    [+] [-]
74971static, я думаю, что если скопировать папку SMBB в корень флешки, а потом добавить через wimlets загрузочные ядра, то всё заработает точно так же. Но при этом будет работать и в UEFI.
Да, попробовал, ядро загружается, но интерфейс PE-среды какой-то урезанный, нет меню установленных программ, сама установка и настройка установки без изменений, пробовал в тестере в режиме EFI, ничего нет, да и видимо самой поддержки в сборках нет, т.к. у него в описании про это ничего не написано.
Да, всё верно.
У меня там немного "заморочено" описано, но стоит один раз попробовать и понять логику, сразу всё станет ясно.
---
В основном, папка images/efi - она для утилит .efi и сторонних конфигов GRUB2 для UEFI. Запуск сторонних BCD там скорее опция, потому что запуск идёт через GRUB2, а это значит, могут быть проблемы в режиме SecureBoot. Да, у меня предусмотрены запасные варианты запуска в SecureBoot, но "железобетонным" остаётся только загрузка через bootx64 от MS (то есть пункты загрузки надо прописывать в основной BCD, то есть крайне желательно пользоваться механизмом wimlets)
Да, вот здесь, прописано в readme
bootx64.efi (со вспомогательными файлами и подпапками)
Т.е. создаем подпапку, закидываем туда содержимое папки \EFI\microsoft\boot\ любой сборки, в которой есть поддержка EFI, ну соответственно эта папка, почему желательно именно этой папки, - потому что это от MS и будет использован загрузчик bootmgr и не будет проблем с Secure Boot, так?

[Quote]

    Ander_73
  • 15549
  • Longevity: 3 years 2 months
  • Posts: 1436
  • REPUTATION:96

    [+] [-]
static, ещё раз: использование efilets возможно только при загрузке GRUB2. А сама загрузка GRUB2 может быть неудачной в режиме SecureBoot.
Если же в режиме SecureBoot загрузка GRUB2 проходит удачно, то для загрузки стороннего BCD:
  • создаём папку images/efi/Smokie
  • копируем в эту папку файл BCD из авторской папки EFI/microsoft/boot/
  • запускаем обновление efilets
* В данном случае нельзя переименовывать файл BCD.

[Quote]

    static
  • 20290
  • Longevity: 1 year 1 month
  • Posts: 60
  • REPUTATION:-5

    [+] [-]
74987static, ещё раз: использование efilets возможно только при загрузке GRUB2. А сама загрузка GRUB2 может быть неудачной в режиме SecureBoot.
Если же в режиме SecureBoot загрузка GRUB2 проходит удачно, то для загрузки стороннего BCD:
  • создаём папку images/efi/Smokie
  • копируем в эту папку файл BCD из авторской папки EFI/microsoft/boot/
  • запускаем обновление efilets
* В данном случае нельзя переименовывать файл BCD.
Ага, спасибо, понятно. Немного, конечно запутанно на первый раз, но проект и не для этого, это так сказать уже обходные пути. По идее проще было бы в efilets создавать подпапки со своими именами, и туда копировать все авторские efi со всеми папками/файлами, но это уже другая концепция, и она выходит за рамки проекта, думается...

[Quote]

    Ander_73
  • 15549
  • Longevity: 3 years 2 months
  • Posts: 1436
  • REPUTATION:96

    [+] [-]
74989и туда копировать все авторские efi со всеми папками/файлами
Да просто места было жалко под "мусор" ag
Можно таким же образом цеплять загрузку авторского rEFInd. Вот тут надо в подпапку images/efi/Other_project скопировать целиком содержимое авторской папки efi/boot (предполагается, что у автора сам загрузчик rEFInd в этом случае переименован в bootx64.efi и папка содержит конфиг rEFInd + подпапки с драйверами)

[Quote]

    static
  • 20290
  • Longevity: 1 year 1 month
  • Posts: 60
  • REPUTATION:-5

    [+] [-]
Спасибо, буду переваривать, разбираться. aa

[Quote]

    Ander_73
  • 15549
  • Longevity: 3 years 2 months
  • Posts: 1436
  • REPUTATION:96

    [+] [-]
Добавил аддон «Комплект установки Windows 10 ± Office 2019 от SmokieBlahBlah»
Проверял только загружаемость!
И будьте внимательны - он здоровый, 9 Гиг...

[Quote]

    static
  • 20290
  • Longevity: 1 year 1 month
  • Posts: 60
  • REPUTATION:-5

    [+] [-]
75040Добавил аддон «Комплект установки Windows 10 ± Office 2019 от SmokieBlahBlah»
Проверял только загружаемость!
И будьте внимательны - он здоровый, 9 Гиг...
Спасибо большое, супер! Ander_73, aa

[Quote]

    Ander_73
  • 15549
  • Longevity: 3 years 2 months
  • Posts: 1436
  • REPUTATION:96

    [+] [-]
static, буду переделывать. Надо делать не так. Будем считать пробным шаром ab

[Quote]

    static
  • 20290
  • Longevity: 1 year 1 month
  • Posts: 60
  • REPUTATION:-5

    [+] [-]
Ander_73, ааа, хорошо.

Page 31 of 31


Display posts:    

Current time is: 03-Apr 20:50

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum