Несколько лет назад я написал эту статью для почившего сайта lubuntu.ru, к счастью я успел ее сохранить и теперь выкладываю тут на пользу вам, на память себе, ради ссылок и файлов использованных в статье. В принципе ничего кардинально нового в статье не изложено, просто все упорядочено, разжевано, разукрашено, актуализировано на сегодняшний день и подано в виде понятном для новичков.
Совсем небанальное название статьи:Современный швейцарский нож сисадмина
Объемы USB накопителей растут, SSD дешевеют и пришла пора обновить мой швейцарский нож сисадмина в соответствии с новыми компьютерными веяниями и технологиями. Для этого я купил себе SSD M.2 (NGFF) с интерфейсом SATA и коробочку-адаптер к нему с внешним интерфейсом USB 3 и из этого собрал компактный высокоскоростной внешний накопитель на 512 GB. Выглядит он вот так:
Что я хотел бы получить от своей мультизагрузочной флешки:
- загрузка флешки на компьютерах с UEFI (обязательно)
- загрузка флешки на компьютерах с BIOS (обязательно)
- загрузка с ISO образов без лишней возни/подготовки с этими образами, просто кинул его в нужное место на флешке и все (обязательно)
- загрузка с VHD/WIM образов дисков (очень желательно)
- передача загрузки на загрузчик локального диска компьютера (обязательно)
- загрузка линукса, установленного на этой флешке (обязательно)
- загрузка windows, установленного на этой флешке (желательно)
Скажу сразу, все эти задачи я реализовал за исключением последнего пункта, но и его можно было бы реализовать, только я решил установить windows в VHD диск и грузить его из образа этого диска, таким образом я могу его загрузить хоть напрямую, хоть через виртуальный компьютер, что добавляет еще больше гибкости моему швейцарскому ножу, да и перенести эту винду при необходимости станет исключительно легкой задачей - скопировал один файл вот и весь перенос.
Я сразу решил что от всяких триков, которые я использовал при создании предыдущей флешки, как то использование ручного гибридного разбиения диска MBR+GPT, надо уходить и вообще процесс должен быть автоматизирован. Диск желательно разбивать в стиле GPT. Для создания мультизагрузочной флешки можно поработать головой и руками, раскидав требуемые загрузчики в положенные им места и создав для них конфиги, а можно и лучше воспользоваться какой нибудь утилитой автоматизирующей этот процесс. Таковых утилит у нас две: ➔
Ventoy и ➔
Easy2boot, хотя может и больше, но на слуху именно эти две. Повозившись с обоими, я остановился на Ventoy, правда изначально мне показалось что я не смогу решить все задачи, используя Ventoy. И хотя Easy2boot, как мне показалось, обладает гораздо большим потенциалом, но не факт что он мне нужен, а вот то что он отказывался грузить некоторые тестовые образы отвратило меня от него.
Итак наш выбор Ventoy.
Создание мультизагрузочной флешки1) Скачайте последнюю версию ➔
VentoyУ меня стоят рядом компьютер и ноутбук, поэтому часть работ я делал в windows, а часть в linux, но все можно сделать только в linux.
Я скачал файл ventoy-x.y.z-windows.zip, распаковал его и запустил Ventoy2Disk.exe, в линуксе надо будет запустить VentoyGUI.x86_64 или запускайте Ventoy2Disk.sh (но там командная строка, так что почитайте файл README)
Теперь надо задать язык и параметры разбиения диска
- кликните в меню на Language и выберите нужный вам язык.
- кликните на Стиль разметки разделов и выберите GPT
- кликните на Дополнительный раздел - здесь надо будет ввести число сколько гигабайт оставить пустыми в конце диска.
Как понять сколько? Ventoy при установке на диск создаст два раздела - первый для хранения образов дисков, некоторых настроек самого ventoy и его плагинов, второй раздел в котором будет расположен загрузчик ventoy и опционально оставит пустое место для того чтобы пользователь мог создать свои разделы (а они нам понадобятся для установки линукса на эту же флешку). Второй раздел имеет маленький размер - всего 32 MB, размер первого раздела рекомендуется сделать менее 137 GB, потому что некоторые старые биосы не могут работать с разделами расположенными дальше 137 GB. Заложим размер 132 GB для нашего первого раздела - там будут iso, vhd, wim образы и файлобменник, потому что Windows XP может видеть только первый раздел на флешке (не помню как там дела с этим у Windows 7, с более свежими версиями виндоуз все хорошо). Общий объем моей флешки 512 GB, отнимаем от него 132 и получается что нужно оставить 380 GB свободного пространства.
В выпадающем списке дисков выберите вашу флешку (у меня там на картинке для примера флешка на 65 GB)
Теперь, если нажать кнопку
Установить, ventoy удалит всё с флешки, переразобьет ее режиме GPT и создаст новые разделы.
2) Попробуем загрузиться с нашей флешки, она уже должна загружаться в меню ventoy на компьютерах с UEFI и BIOS
Можно попробовать на реальных компьютерах или на виртуальном (установите пакеты qemu-system-x86 и ovmf):
- для загрузки в режиме BIOS подойдет команда
sudo qemu-system-x86_64 -machine type=q35 -m 512 -cpu core2duo -hda /dev/sdX
sudo нам требуется только потому что иначе мы не получим доступ к флешке, /dev/sdX это ваша флешка, исправьте букву в соответствии с вашей флешкой.
- для загрузки в режиме UEFI подойдет команда
sudo qemu-system-x86_64 -bios /usr/share/ovmf/OVMF.fd -machine type=q35 -m 512 -cpu core2duo -hda /dev/sdX
но предварительно вам надо установить в линуксе пакет ovmf, это UEFI для виртуальных машин.
3) Итак вы убедились, что флешка грузится и настало время добавить ей еще возможностей, положить туда образы и проверить реальную загрузку с образов и других мест, например с локального диска компьютера.
Ventoy создал первый раздел отформатированный в ExFAT, если мы предполагаем использовать образы виртуальных жестких дисков этот раздел лучше переформатировать в NTFS.
- переформатируем в NTFS и дадим ему красивое и понятное имя, я свой раздел назвал USB-SHARE
- на этом разделе создаем папку ventoy (именно так, маленькими буквами), туда мы будем класть конфиг и плагины ventoy
- можно создать папки для ISO и VHD образов, ventoy без разницы где будут лежать образы, он просканирует все папки, поскольку этот же диск у меня будет использоваться как файлопомойка для переноса файлов, я решил не плодить папки в корне флешки и создал внутри папки ventoy еще две папки ISO_IMAGES и VHD_IMAGES
- скачиваем плагины ➔ ventoy_vhdboot.img для загрузки с VHD образов и ➔ ventoy_wimboot.img для WIM образов соответственно и кладем их в папку ventoy, которую мы создали в предыдущем пункте
- теперь добавим мощнейший boot manager rEFInd, скачайте ➔ A CD-R image file и положите его в ту же папку ventoy
- для еще большей совместимости с различными компьютерами и образами добавим еще один загрузчик совмещенный с файловым менеджером grub2-filemanager, скачайте ➔ grubfm_multiarch.iso и положите в ту же папку ventoy
- запишите ISO образы ваших любимых дистрибутивов (если есть VHD образы их тоже) в соответствующие папки и можно тестировать
Как пользоваться этим комбайномСразу после загрузки вы увидите меню ventoy:
- grub2-filemanager, это ваш второй шанс загрузить негрузящиеся образы и вообще полазить по файлам на флешке если забыли где что лежит
- менеджер загрузок rEFInd, он нужен для загрузки с локального диска компьютера и вообще с чего угодно что он сможет найти при старте, а он очень находчивый
- далее идут образы которые вы накидали
Теперь тестируете это все.
Собственно на этом всё, швейцарский нож готов к применению.
Можно кастомизировать ventoy, всякими точными настройками на конкретные образы, прикрутить к нему более красивую тему.
Можно на оставшееся пространство на флешке установить линукс или два
ОграниченияВозможно вы не сможете загрузить образы созданные для компьютеров с BIOS на компьютере с UEFI, но это проблема скорее архитектурная, а не проблема с ventoy. (Это утверждение надо проверять)
Пару слов о VHDГде взять, как создать?
Если у вас есть виртуальная машина с установленной windows то у вас уже есть заготовка, если нет
то можете почитать вот эту заметку Увы, статья почила в бозе вместе с сайтом lubuntu.ru
Погуглите как установить виндоуз в qemu и используйте например вот такую командную строку в качестве базовой для qemu
/usr/bin/qemu-system-x86_64 -m 768 -vga std -machine pc,accel=kvm -usb -device usb-tablet -rtc base=localtime -hda /home/qemu/sda/windows7-sda.qcow2
в соответствии с ней установить windows в виртуалке. Теперь у вас есть какой то виртуальный диск с установленной windows и он скорее всего в формате qcow2, надо просто его сконвертировать в формат VHD, это делается командой:
qemu-img convert -f qcow2 -O vpc wirtual-10.qcow2 wirtual-10.vhd
Наведем красоту, добавим утилит и упорядочим всеСкачайте с Google Drive ➔
вот этот архив или с Dropbox ➔
если Google Drive кочевряжится или с Hightail ➔
если предыдущие две ссылки не сработали, который я приготовил для вас 29-марта-2023г, если вы будете читать и применять эту статью значительно позднее указанной даты будет иметь смысл обновить программное обеспечение использованное в этом архиве.
Распакуйте его и замените на флешке папку ventoy новой папкой из архива.
Теперь ваша флешка будет выглядет вот так при загрузке в UEFI режиме:
и вот так при загрузке в BIOS режиме:
Накидайте образов в соответствующие папки и всё готово.
Внутри есть текстовый файл ReadMe.txt с полезными ссылками.
Продолжаем продолжать.
Добавим полноценный linux на эту флешкуДля начала я покажу вам как разбита моя флешка:
1-й раздел (с меткой USB-SHARE) для хранения iso и vhd образов, для файлового обмена с Windows XP (если такие у вас еще остались).
2-й раздел - загрузочный, содержит ventoy со всеми его потрохами (обратите внимание я ему сменил флаги на boot, hidden, esp чтобы операционки скрывали этоn раздел).
3-й раздел - архив, там я буду держать музыку, фильмы, софт, игры и т.д., для большей совместимости отформатирован в ntfs.
4, 5, 6 разделы содержат полноценный линукс.
Вот о том как установить линукс на эти разделы флешки мы и поговорим. Казалось бы, а что тут такого сложного, бери да устанавливай линукс на флешку как на обычный жесткий диск и все дела. Да, в случае обычной флешки на которой был бы только линукс мы бы поступили именно так, но у нас не простая флешка, а имеющая довольно сложный двухрежимный EFI/BIOS загрузчик ventoy и есть опасение такой установкой линукса поломать процесс загрузки ventoy (хотя наверно есть два варианта - первый просто не устанавливать grub в процессе установки линукса, второй переустановить ventoy по окончании). Но я поступлю по другому.
- Определитесь с размерами разделов 4, 5, 6 и создайте пустые разделы на флешке.
- Установите линукс на другую флешку или на свободный жесткий диск создав раздел для root именно такого размера каким будет размер 4 раздела (тот что предназначен для будущего root на флешке). Можно даже взять ваш рабочий линукс
- Используя команду 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 будет вот такое меню для загрузки полноценного линукса:
Вот и всё! Все поставленные задачи решены. Теперь наша флешка грузится и на UEFI и на BIOS компьютерах, с нее можно загружаться с iso образов, в vhd файле есть установленная windows, на флешке есть два линукса - полноценный и OneFileLinux (этот правда можно загрузить только на EFI компьютерах), тетрис, разные UEFI утилиты, мемтест.
Добавить свежевышедший дистрибутив линукса или винды - это просто закинуть iso в папку и все.
Ну и наконец это просто красиво!