Мультизагрузочная флешка с Ventoy

Модератор: adventurer

Ответить
Аватара пользователя

Автор темы
serg666
Сообщения: 735
Зарегистрирован: 26 фев 2013, 21:15

Мультизагрузочная флешка с Ventoy

#1

Сообщение serg666 » 27 ноя 2020, 03:21

Современный швейцарский нож

Объемы USB накопителей растут, SSD дешевеют и пришла пора обновить свой швейцарский нож в соответствии с новыми веяниями и компьютерными технологиями.
Я купил себе SSD M.2 (NGFF) с интерфейсом SATA и коробочку-адаптер к нему с внешним интерфейсом USB 3 и из этого собрал компактный внешний накопитель на 512 GB. Выглядит он вот так
Изображение

Что я хотел бы получить от своей мультизагрузочной флешки:
  1. загрузка флешки на компьютерах с UEFI (обязательно)
  2. загрузка флешки на компьютерах с BIOS (очень желательно)
  3. загрузка с ISO образов без лишней возни/подготовки с этими образами (обязательно)
  4. загрузка с VHD/WIM образов дисков (очень желательно)
  5. передача загрузки на загрузчик локального диска компьютера (очень желательно)
  6. загрузка линукса, установленного на этой флешке (обязательно)
  7. загрузка windows, установленного на этой флешке (очень желательно)
Скажу сразу, все эти задачи я реализовал за исключением п. 7, но и его можно было бы реализовать, только я решил установить windows в VHD диск и грузить его из образа этого диска, таким образом я могу его загрузить хоть напрямую, хоть через виртуальный компьютер, что добавляет еще больше гибкости моему швейцарскому ножу, да и перенести эту винду при необходимости станет исключительно легкой задачей - скопировал один файл вот и весь перенос.

Я сразу решил что от всяких триков, которые я использовал при создании предыдущей флешки как то использование гибридного разбиения диска MBR+GPT, надо уходить и вообще процесс должен быть автоматизирован. Диск желательно разбивать в стиле GPT. Для создания мультизагрузочной флешки можно поработать головой и руками, раскидав требуемые загрузчики в положенные им места и создав для них конфиги, а можно воспользоваться какой нибудь утилитой автоматизирующей этот процесс. Таковых утилит у нас две - Ventoy и easy2boot. Повозившись с обоими, я остановился на Ventoy, хотя изначально мне показалось что я не смогу решить все задачи, используя Ventoy. Easy2boot как мне показалось обладает гораздо большим потенциалом, но не факт что он мне нужен, а вот то что он отказывался грузить некоторые тестовые образы отвратило меня от него.
Итак наш выбор Ventoy.

Создание мультизагрузочной флешки

1) Скачайте последнюю версию Ventoy
У меня стоят рядом компьютер и ноутбук, поэтому часть работ я делал в windows, а часть в linux, но все можно сделать только в linux.
Я скачал файл ventoy-1.0.29-windows.zip, распаковал его и запустил Ventoy2Disk.exe
Изображение
Теперь надо задать язык и параметры разбиения диска
Изображение
- кликните в меню на Language и выберите нужный вам язык.
- кликните на Стиль разметки разделов и выберите GPT
- кликните на Дополнительный раздел - здесь надо будет ввести число сколько гигабайт оставить пустыми а конце диска.
Как понять сколько? Ventoy при установке на диск создаст два раздела - первый для хранения образов дисков, некоторых настроек самого ventoy и его плагинов, второй раздел в котором будет расположен загрузчик ventoy и опционально оставит пустое место для того что бы пользователь мог создать свои разделы (а они нам понадобятся для установки линукса на эту же флешку). Второй раздел имеет маленький размер - всего 32 MB, размер первого раздела рекомендуется сделать менее 137 GB, потому что некоторые старые биосы не могут работать с разделами расположенными дальше 137 GB. Заложим размер 132 GB для нашего первого раздела - там будут образы и файлобменник, потому что Windows XP может видеть только первый раздел на флешке (не помню как там дела с этим у Windows 7). Общий объем моей флешки 512 GB, отнимаем от него 132 и получается нам нужно оставить 380 GB свободного пространства.
- в выпадающем списке дисков выберите вашу флешку (у меня там на картинке флешка на 65 GB)
Теперь если нажать кнопку Установить ventoy удалит всё с вашей флешки, переразобьет ее режиме GPT и создаст новые разделы.

2) Попробуйте загрузиться вашей флешки, она уже должна загружаться в меню ventoy на компьютерах с UEFI и BIOS
Можно попробовать на реальных компьютерах или на виртуальном:
- для загрузки в режиме BIOS подойдет команда
sudo qemu-system-x86_64 -machine type=q35 -m 512 -cpu core2duo -hda /dev/sdd
sudo нам требуется только потому что иначе мы не получим доступ к флешке, /dev/sdd это ваша флешка, исправьте букву в соответствии с вашей флешкой.
- для загрузки в режиме UEFI подойдет команда
sudo qemu-system-x86_64 -bios /usr/share/ovmf/OVMF.fd -machine type=q35 -m 512 -cpu core2duo -hda /dev/sdd
но предварительно вам надо установить в линуксе пакет omvf это UEFI для виртуальных машин.

3) Итак вы убедились, что флешка грузится и настало время добавить ей еще возможностей, положить туда образы и проверить реальную загрузку с образов и других мест, например с локального диска компьютера.
Ventoy создал первый раздел отформатированный в ExFAT, если мы предполагаем использовать образы виртуальных жестких дисков этот раздел лучше переформатировать в NTFS.
- переформатируем в NTFS и дадим ему красивое и понятное имя, я свой раздел назвал USB-SHARE.
- на этом разделе создаем папку ventoy, туда мы будем класть конфиг и плагины ventoy
- можно создать папки для ISO и VHD образов, ventoy без разницы где будут лежать образы, он просканирует все папки. Поскольку этот же диск будет использоваться как файлопомойка для переноса файлов я решил не плодить папки и создал внутри папки ventoy еще две папки ISO и VHD
- скачиваем плагины ventoy_vhdboot.img для загрузки с VHD образов и ventoy_wimboot.img для WIM образов соответственно и кладем их в папку ventoy, которую мы создали в предыдущем пункте
- теперь добавим мощнейший boot manager rEFInd. Cкачиваете A CD-R image file и положите его да хотя бы в ту же папку ventoy
- для еще большей совместимости с различными компьютерами и образами добавим еще один загрузчик совмещенный с файловым менеджером grub2-filemanager, скачайте grubfm_multiarch.iso и положите в ту же папку ventoy
- закидываете ISO образы ваших любимых дистрибутивов (если есть VHD образы их тоже) и можно тестировать

Как пользоваться этим комбайном

Сразу после загрузки вы увидите меню ventoy
Изображение
  1. загрузка grub2-filemanager, это второй шанс загрузить негрузящиеся образы и вообще полазить по файлам на флешке
  2. загрузка менеджера загрузок rEFInd, он нужен для загрузки с локального диска компьютера и вообще с чего угодно что он сможет найти при старте
  3. а далее идут образы которые вы накидали
Теперь тестируете это все.
Собственно на этом всё, швейцарский нож готов к применению.

Можно кастомизировать ventoy, всякими точными настройками на конкретные образы, прикрутить к нему более красивую тему.
Можно на оставшееся пространство на флешке установить линукс или два :)
Но это всё уже выходит за рамки данного howto.

Ограничения

Вы скорее всего не сможете загрузить образы созданные для компьютеров с BIOS на компьютере с UEFI, но это проблема архитектурная, а не проблема с ventoy.

Пару слов о VHD

Где взять, как создать? Если у вас есть виртуальная машина с установленной windows то у вас есть заготовка, если нет то можете почитать вот эту заметку QEMU для начинающих и в соответствии с ней установить windows в виртуалке.
Теперь у вас есть какой то виртуальный диск с установленной windows и он скорее всего в формате qcow2, надо просто его сконвертировать в формат VHD, это делается командой:
qemu-img convert -f qcow2 -O vpc wirtual-10.qcow2 wirtual-10.vhd


Наведем красоту, добавим утилит и упорядочим все

Скачайте с Google Drive вот этот архив, который я приготовил для вас.
Распакуйте его и замените на флешке папку ventoy новой папкой из архива.
Теперь ваша флешка будет выглядет вот так при загрузке в UEFI режиме:
Изображение
или вот так при загрузке в BIOS режиме:
Изображение
Накидайте образов в соответствующие папки и всё готово.
Внутри есть два текстовых файла, в обоих полезные ссылки.
UPD Забыл положить второй файл, вот его содержимое:
----------------Reset Windows Password.txt----------------
Скачайте iso образ отсюда - https://www.passcape.com/download/rwp.zip
Работает в режиме UEFI.

Для режима BIOS и более старых версий windows скачайте iso образ
Offline NT Password & Registry Editor - https://pogostick.net/~pnh/ntpasswd/
-----------------------------------------------------------------------
Последний раз редактировалось serg666 04 дек 2020, 22:50, всего редактировалось 4 раза.

Аватара пользователя

zhart
Администратор
Сообщения: 1919
Зарегистрирован: 16 дек 2010, 13:09

Re: Мультизагрузочная флешка с Ventoy

#2

Сообщение zhart » 27 ноя 2020, 14:50

serg666, спасибо за такой наглядный и детальный мануал :good:

Аватара пользователя

Автор темы
serg666
Сообщения: 735
Зарегистрирован: 26 фев 2013, 21:15

Re: Мультизагрузочная флешка с Ventoy

#3

Сообщение serg666 » 05 дек 2020, 00:11

Продолжаем продолжать.

Добавим полноценный linux на эту флешку.

Для начала я покажу вам как разбита моя флешка
Изображение
1-й раздел (с меткой USB-SHARE) для хранения iso и vhd образов, для файлового обмена с Windows XP (если такие у вас еще остались).
2-й раздел - загрузочный, содержит ventoy со всеми его потрохами (обратите внимание я ему сменил флаги на boot, hidden, esp чтобы операционки скрывали это раздел).
3-й раздел - архив, там я буду держать музыку, фильмы, софт, игры и т.д., для большей совместимости отформатирован в ntfs.
4, 5, 6 разделы содержат полноценный линукс.

Вот о том как добавить линукс на эти разделы флешки мы и поговорим. Казалось бы, а что тут такого сложного, бери да устанавливай линукс на флешку как на обычный жесткий диск и все дела. Да, в случае обычной флешки на которой был бы только линукс мы бы поступили именно так, но у нас не простая флешка, а имеющая довольно сложный двухрежимный EFI/BIOS загрузчик ventoy и есть большое опасение такой установкой линукса поломать процесс загрузки ventoy. Поэтому мы поступим немного по другому.
  1. Определитесь с размерами разделов 4, 5, 6 и создайте пустые разделы на флешке.
  2. Установите линукс на другую флешку или на свободный жесткий диск создав раздел для root именно такого размера каким будет размер 4 раздела (тот что предназначен для будущего root на флешке). Можно даже взять ваш рабочий линукс.
  3. Используя команду dd скопируйте новый root на флешку
Теперь надо добавить возможность загрузки этого нового линукса, у нас просто куча всяких загрузчиков на диске :)
Ventoy базируется на grub2 и в нем заложена возможность подсунуть ему пользовательский конфиг (промотайте страницу вверх и посмотрите на скриншоте, там есть F6:ExMenu) по нажатию кнопки F6 в grub2 передается этот пользовательский конфиг. И все что нам осталось это написать такой конфиг для загрузки линукса из 4-5-6-го разделов.
Конфиг я уже написал, его надо положить в файл /ventoy/ventoy_grub.cfg на первом разделе, рядом с файлом ventoy.json

Код: Выделить всё

# Extra config for Ventoy to boot linux from a partition on this disk
# This is GRUB config and it is called by pressing F6:ExMenu
# Location: /ventoy/ventoy_grub.cfg

# Label of your linux root partition installed on this USB disk
# You have to set this variable according to your partition label
set usblinuxrootpart="USB-ROOT"

# Timeout for menu
#set timeout=30

# Default boot entry
set default=1

menuentry "<--  press <ESC>" {
    echo
}

menuentry "Boot Linux from partition: $usblinuxrootpart" {
    search --no-floppy --label --set=root $usblinuxrootpart
    linux   /boot/vmlinuz root=LABEL=$usblinuxrootpart ro quiet splash
    initrd  /boot/initrd.img
    boot
}

menuentry "Boot Linux from partition: $usblinuxrootpart (recovery mode)" {
    search --no-floppy --label --set=root $usblinuxrootpart
    linux   /boot/vmlinuz.old root=LABEL=$usblinuxrootpart ro recovery nomodeset dis_ucode_ldr 
    initrd  /boot/initrd.img.old
    boot
}

menuentry "CPU info" {
    bit="x32"
	pae="No"
	if cpuid -l; then
        bit="x64"
	fi
	if cpuid -p; then
		pae="Yes"
	fi
    echo -n -e "\n\n    This is $bit CPU, Physical Address Extension (PAE): $pae \n\n\n\n    press <ESC>"
	sleep --interruptible 9999
}

menuentry "Reboot" {
    reboot
}
Вам надо только подправить строку set usblinuxrootpart="USB-ROOT" и вписать в нее метку раздела rootfs вашего линукса.
Еще останется отредактировать файл /etc/fstab в вашем линуксе на флешке что бы подключить home, swap и другие разделы флешки. Мой файл fstab выглядит вот так:

Код: Выделить всё

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# rootfs partition
LABEL=USB-ROOT 		/               ext4    errors=remount-ro 0       1
# homefs partition
LABEL=USB-HOME 		/home           ext4    defaults        0       2
# swap partition
LABEL=USB-SWAP 		none            swap    sw              0       0
# ntfs partitions
LABEL=USB-SHARE 	/USB-SHARE        ntfs    defaults,umask=007,gid=46 0       0
LABEL=USB-ARCHIVE 	/USB-ARCHIVE      ntfs    defaults,umask=007,gid=46 0       0
Теперь по нажатию F6 будет вот такое меню для загрузки полноценного линукса:
Изображение

Вот и всё! Все задачи решены. Теперь наша флешка грузится и в EFI и в BIOS компьютерах, с нее можно загружаться в iso образы, в vhd файле есть установленная windows, на флешке есть два линукса - полноценный и OneFileLinux (этот правда можно загрузить только на EFI компьютерах).

Ответить