как сделать мультизагрузочную флешку linux
IT Blog. Code Inside
MultiBoot USB: Создаем мультизагрузочную флешку с Windows, Linux и утилитами
В этой статье приведена инструкция по созданию мультизагрузочной флешки с помощью программы MultiBoot USB. Программа работает с NTFS и FAT32, так что можно использовать не только флешку, но и внешний жесткий диск.
Подготовка к установке
1. Для начала возьмем флешку такого размера, чтоб на нее поместились все запланированные образы.
2. Скачиваем программу MultiBoot USB и устанавливаем.С программой в комплекте идет наглядная инструкция на русском языке: Readme.pdf.
В образе, создаваемом данной программой, предустановлены следующие программы:
Кроме перечисленных выше утилит, в состав пакета можно добавить ISO-образы (для них уже созданы необходимые пункты меню, и файлы-пустышки, которые нужно заменить на настоящие образы):
Процесс установки и создания мультизагрузочной флешки
1. Для начала запускаем утилиту HP USB Disk Storage Format Tool, выбираем устройство, ставим галочку «QuickFormat» и форматируем (желательно под NTFS, чтобы в случае чего не возникло проблем с большими файлами образов).
2. Далее устанавливаем grub4dos. Запускаем Grub4Dos Installer, в поле «DeviceName» выбираем Disk, и своё устройство (название устройства не отображается, только размер в мегабайтах). Жмем «Install«.
3. Далее следует распаковать на флешку набор файлов и утилит. Через кнопку «Обзор…» указываем путь к флешке и нажимаем «Извлечь». На вопрос: «Вы хотите заменить существующий файл?» отвечаем «Да».
Технически флешка уже стала мультизагрузочной, но кроме утилит, которые мы распаковали, на ней ничего нет.
Дополним комплект образами операционных систем. Для удобства можно создать в корне папку «iso», где будут расположены все образы дисков.
Для систем семейства Windows
Для установки Windows 7, Windows 8, Windows 8.1, следуем пункту 4.1 инструкции, выбирая соответствующий (2й) чекбокс:
Для Linux-based образов
Открываем на флешке файл menu.lst (в корне) блокнотом и заменяем пункты по умолчанию на желаемые, например:
title Загрузка Ubuntu 11.10 — i386 // название пункта меню
Проверка работоспособности флешки
Для проверки работы запускаем WinSetupFromUSB, в поле с устройством выбираем созданную флешку, и ставим галочку «TestinQEMU». По нажатию на «GO» будет произведен запуск загрузки с флешки в вииртуальной среде без перезагрузки системы.
Как сменить фоновую картинку под меню загрузки
1. Вам понадобится макет фоновой картинки в PSD и архив для перепаковки скинов. Отредактируйте PSD файл и сохраните в BMP (возможно придется пересохранить сторонней программой).
2. Готовый файл копируем в папку «Files» из архива «SkinsRepack», и запускаем файл «Упаковать.cmd». Получаем файл Skins без расширения. Этот файл копируем на флешку, и в файлах menu.lst и /boot/menu_u.lst во второй строчке указываем путь к скину:
Проверить как выглядит ваш новый скин также можно в эмуляторе.
После всех действий на флешке будут две папки и четыре файла, впрочем их можно пометить как скрытые, что никак не отразится на работе устройства.
Проверка в эмуляторе не даёт 100% гарантии того, что конкретный образ заработает в реальных условиях. Проверки на виртуальных машинах VirtualBox или VMWare также не всегда могут сработать корректно, так что лучше всего проверять на реальном железе.
Для примера вы можете скачать готовый файл menu.lst с прописанными в загрузке:
Создаём мультизагрузочную USB флешку в Linux и Windows с помощью Ventoy
Достоинства Ventoy
Уникальными особенностями Ventoy являются:
Как работает Ventoy?
Просто и логично, как и все удачные решения. В первый раз пользователь устанавливает Ventoy на USB Flash накопитель, в процессе чего на нём создаются 2 раздела: 1 скрытый (в Windows) раздел в фс FAT16 со служебными файлами Ventoy и загрузчика, и 2 с файловой системой exFAT, куда нужно кидать ISO файлы с образами ОС или любые другие данные. Во время загрузки с USB Flash запускается загрузчик Grub, меню которого состоит из списка всех найденных на накопителе ISO образов. Пользователь стрелками выбирает нужный, жмёт ENTER — загрузка образа началась.
Установка в Linux
Arch Linux/Manjaro
В Arch установить Ventoy можно с помощью AUR:
Другие дистрибутивы
Я не нашёл собранных пакетов Ventoy для какого-либо дистрибутива, поэтому в Ubuntu, Debian, Linux Mint и других дистрах можно воспользоваться официальной инструкцией для Linux, а именно скачать архив, распаковать и запустить в «портативном» режиме. Например, для версии 1.0.33, так:
Установка в Windows
Создание загрузочного USB Flash накопителя
Внимание! На этом этапе все данные с USB накопителя будут безвозвратно удалены!
Сохраняйте нужные данные с флешки на любой другой носитель.
Данная операция проводится только один раз.
Повторить её нужно будет только если отформатируете флешку в каком-либо другом приложении.
Linux
Вставляем флешку, на которую собрались ставить Ventoy в ПК/ноут. Внимательно смотрим какой буквой /dev/sdX в системе называется наш носитель:
Например, в моём случае это /dev/sdg. Ставим на него Ventoy. В Arch Linux/Manjaro:
В остальных дистрибутивах Linux, где версия Ventoy «портативная»:
Замените X на букву носителя в вашем случае. Дважды подтверждаем выполнение операции. Готово!
можно посмотреть ключи запуска Ventoy. Например, с помощью ключа -L можно изменить название видимого раздела, которое по умолчанию будет. «Ventoy» 🙂 Вот полный вывод справки:
Windows
Добавление/удаление ISO образов
Вставляем флешку, копируем на раздел файлы .iso либо удаляем их оттуда. Само собой, делать это можно из любой операционной системы. Можно раскидать образа по каталогам, тогда и в интерфейсе Ventoy они будут рассортированы по соответствующим разделам.
Созданный Ventoy раздел без ограничений можно использовать для хранения любых других файлов.
Использование
Загружаемся как с любого другого загрузочного USB Flash накопителя. В меню выбираем нужный образ, жмём ENTER. Бутимся.
Мультизагрузочная Linux-флешка
Тут описана процедура создания флешки для загрузки множества iso-образов на компьютерах с BIOS. На компьютерах с UEFI она не работает. Для компов с UEFI я делал Универсальную загрузочную флешку для BIOS/UEFI.
Хорошо иметь под рукой флешку, с которой можно загрузиться для восстановления или установки системы. Также хорошо бы чтобы на ней помещались несколько разных образов ISO, доступных из меню. Создать такую флешку можно с помощью специализированных программных средств как под Linux ( Multisystem) так и под Windows (XBOOT), и даже мультиплатформенных (Yumi). Но можно пойти true linux way™ и использовать GRUB.
Создание и форматирование раздела
Сначала нужно создать на флешке раздел и сделать его загрузочным. Запускаем fdisk и натравливаем его на нашу флешку. Нижеприведенные команды делаем с правами root. Список дисков смотрим командой:
Запускаем fdisk (указав свою флешку):
Если на диске есть разделы, то ликвидируем их. Для этого жмем d
После удаления разделов жмем n и создаем новый.
В процессе создания указваем что раздел p (primary).
После создания жмем a, чтобы сделать раздел активным.
Затем жмем t, чтобы задать тип раздела и вводим тип c (FAT32).
Жмем w и записываем изменения на флешку.
Теперь надо отформатировать созданный раздел в FAT32:
Установка загрузчика GRUB
Дальше ставим GRUB2 на флешку.
Создаем точку монтирования и монтируем флешку (не забываем sdx менять на актуальные буквы, соотвествующие флешке):
Устанавливаем GRUB (выполняем с правами root):
Старые версии GRUB вместо –boot-directory используют -root-directory. Если что-то не так, то установщик GRUB скажет что “Installation is impossible. Aborting”.
Создаем на флешку файлик grub.cfg
И заполняем его примерно так:
Этот содержит конфигурацию для загрузки с флешки KNOPPIX 7.2, SystemRescueCd 4.6.1, различных вариантов Ubuntu и CentOS 7. А дальше осталось просто положить указанные в grub.cfg образы ISO в корневую директорию флешки и переименовать их как указано в файле.
Еще немного примеров
Добавление других образов ISO
Для добавления других образов ISO нужно в файлик /boot/grub/grub.cfg прописывать параметры, которые обычно можно найти в файлах grub.cfg, syslinux.cfg и других, входящих в состав образа ISO.
То есть создаем новый раздел меню в /boot/grub/grub.cfg (копируя уже существующий), затем указываем файл ISO в строке loopback, а в строку linux указываем путь к ядру (то что append из syslinux.cfg). В строке initrd указываем путь к файлу initrd.
Скорее всего, в строке linux после пути к файлу ядра придется указать параметры загрузки ядра, которые позволят ядру работать с loop-устройством, на которое монтируется файл ISO. Для систем со схожим ядром, параметры, как правило, одинаковые. Например, для загрузки Fedora подойдут параметры от CentOS.
Много обновляемой информации о загрузке ISO образов с помощью GRUB можно тут: https://wiki.archlinux.org/index.php/Multiboot_USB_drive
Загрузка установочных образов Windows 7 и Windows 10 c помощью GRUB
Монтируем iso-образ Windows 7 или Windows 10, копируем с него все файлы на флешку с помощью cp или rsync и дописываем в grub.cfg такое:
Создать мультизагрузочную флешку в Linux
Практически многие наверное встречали в интернете фразу «мультизагрузочная флешка» и заинтересовавшись захотели заполучить сходственную в свой инвентарь? Со мной такая же история. Сегодня я расскажу свой способ как досоздать мультизагрузочную флешку. Для начала немного теории: мультизагрузочная флешка позволяет загружать немного операционных систем конкретно с самой себя. То есть даже отсутствие в компьютере безжалостного диска не станет помехой. Утилизируются такие флешки чаще всего как спасательные — для возобновления работоспособности испорченной системы. И операторные системы, загружаемые с них могут быть самыми различными: от любого линукса, до windows (впрочем ее лицензия такого не позволяет). Кроме ОС могут запускаться вдобавок и разные служебные програмки, например проверка оперативной памяти или жесткого диска. Или, популярные сейчас, антивирусные live-системы для испытания на вирусы и лечения ОС Windows. Помимо сказанного заслуживает упомянуть и дистрибутив для работы с разделами безжалостного диска Clonzilla. В общем вариантов толпа и такая флешка должна быть, что именуется, must have.
Вариантов реализации подобной флешки как минимум два.
Первый — установить на нее одну или немного ОС как обычно. То есть используя флешку как твердый диск и применяя некоторые хитрости, дабы флешка не «сносилась» раньше времени (подобные как использование файловой системы без журналирования, монтирование преходящих каталогов в оперативную память, используя специальные опции монтирования и т. д.). Как вы догадались стиль в статье идет только о независимых, linux-based ОС.
И второй — скопировать на флешку iso-образы и занимать ОСи прямо из них при помощи загрузчика grub2, какой позволяет это делать.
Второй способ безусловно предпочтительнее, аккуратнее и технически грамотнее, но необходимо хорошо разбираться с конфигами груба. На тот момент мне появилось что создание какой-то там мультизагрузочной флешки не заслуживает тщательного изучения grub2, поэтому я решился пойти первым путем — установил archlinux на флешку (-флеш-накопитель (сленг) как на обыкновенный жесткий диск.
Мне подобная флешка нужна была в первую очередь как спасательная, но еще и для демо целей (показывать способности разных дистрибутивов с разными рабочими окружениями). Как спасательная она вышла на 100%: все загружается и трудится, но как демонстрационная — не очень. Вернее она получилась демонстрационной, но только для одной системы. И то, необходимо было всегда обновлять ОС на ней, чтобы появлялись все новые «свистелки», что очень плохо отражается на «здоровье» флешки. А дабы сделать для нескольких систем (множество элементов, находящихся в отношениях и связях друг с ином, которое образует определённую целостность, единство), под каждую нужно отсоединять кусочек от флешки, что неловко, да и флешка будет выглядеть как очень фрагментированный ntfs-диск в виндовсе.
Потому было зачислено решение все-таки сделать флешку по второму способу. Тем более пред этим как раз в нужное время на глаза попалась статья о Grub2 пользователя русскоязычного форума Archlinux, Natrio, за что ему огромное спасибо.
Для реализации этой задумки, я разбил свою 32 Гб флешку на 2 раздела: начальный (22 Гб) — для файлов т. е. чтобы оставить возможность пользоваться такой флешкой как обычной, к этому же обязательно этот раздел должен быть первым, так как ОС Windows не может себе познакомить что флешки (-флеш-накопитель (сленг) бывают с несколькими разделами (Раздел (Раздел — действие по глаголу разделять) — действие по глаголу делить) и видит всегда только первый ее раздел. И другой (10 Гб) — для конфигов груба и iso-образов. Данный раздел в винде виден не будет (что сможет быть и к лучшему), то есть такая флешка в виндовсе снаружи ничем не будет различаться от обычной. Все разделы я сделал с родной для флешек файловой системой fat32 (тем больше что она нежурналируемая).
Дальше я примонтировал второй раздел (допустим это /dev/sdb2) в папку /boot и водворил на флешку grub2 (все бригады выполняются от рута):
mount /dev/sdb2 /boot
grub-install /dev/sdb
Обратите вниманье, что во второй строке, при аппарате груба на флешку, номер раздела не указывается! После данных манипуляций во втором разделе флешки возникла папка grub. Рядом с ней я создал папку iso и зашвырнул в нее скаченные заранее iso-образы многих дистрибутивов. В моем случае (для примера) это: Archlinux, Ubuntu, Linux Mint и Elementary OS.
Теперь осталось только создать правильный конфиг груба. У меня он такой:
Помимо загрузки различных дистрибутивов есть возможность перезагрузки и выключения компьютера.
Для обработки имен iso-образов в конфиге используются регулярные выражения (в этом помогает модуль regexp). Также можно добавить в список загрузки и свои созданные live-образы как описано в одной из ранешных статей.
Для меню груб можно применять различные темы оформления или вручную обменивать шрифты, фон и т. д. В приведенном конфиге я использую тему оформления Archxion. Для использования какой-либо нахождения оформления нужно скопировать в папку grub папку с темой офрмления (ее можно поселить в свою обычную систему на компьютер, скопировать нужную папку с темой на флешку и затем удалить эту тему если вы борец за чистоту системы) и указать имя темы. Кроме этого загрузить необходимые модули, шрифты и запустить графический терминал:
Для бойцов за минимализм — можно не пользоваться всеми этими «рюшечками» и покинуть только обычное текстовое меню. Для этого достаточно закомментировать блок кода отсрочивающийся к графическому меню. Вся красота такой флешки в том что меню создается динамически и вам остается лишь копировать новые образы в папку iso или устранять старые, меню будет выдаваться лишь для тех образов, которые существуют на данный момент в папке iso. Один-единственное условие, это непереименовывание данных образов или переименование по маске (где указано). Иначе придется менять регулярные выражения для отделки имен образов (Образ — визуальный образ, зрительный образ, изображение). Но и это можно делать (если нужно).
Как создать мультизагрузочную Linux флешку используя скрипт MultiCD
К тому же под Линукс есть все инструменты для решения подобных и даже более сложных задач, было бы только желание разбираться, учиться и читать документацию.
YUMI – Multiboot USB Creator, программа для создания мультизагрузочных USB-накопителей с множеством дистрибутивов на основе Линукс на борту.
Для установки Yumi из пакета *.deb нужно сначала установить gambas3, делается это командой:
А вот теперь можно установить из пакета сам Yumi:
Если напишет что есть проблемы с зависимостями то это можно исправить командой:
Запустить программу можно отыскав ее ярлык со значком в меню установленных программ или же просто введя в лаунчер «yumi».
Не будем останавливаться на ковырянии Юми и попытках исправить бинарный файл программы. Дальше мы продолжим искать решение где сможем держать все под своим полным контролем и в случае чего будем иметь возможность все исправить подручными средствами.
MultiSystem
MultiSystem – Create a MultiBoot USB from Linux. Из названия понятно для чего эта программа, предназначение то же самое что и у Yumi.
Первый раз встретил этот дистрибутив в виде загрузочного iso-образа, запустил его под VirtualBox, поклацал немного и отложил в хранилище к другим полезным образам. Сейчас же решил не использовать образ для загрузки, а установить саму программу MultiSystem под рабочей системой Debian Linux для эксперимента.
Перед установкой нужно поставить пакет zenity(поддержка графических диалоговых окон для использования в консольных скриптах), делается это командой:
Полезно знать! Если вы знаете имя пакета но не знаете зачем он нужен, то краткое описание можно посмотреть в кеше пакетов, используя следующую команду, приведу пример для того же пакета «zenity»:
В выводе команды получим что-то наподобие этого текста:
Если не знаете английского или с трудом понимаете что происходит, то пользуйтесь GoogleTranslate!
Распаковываем инсталяционный скрипт при помощи архиватора tar :
Скрипт запросит пароль пользователя для получения привилегий на установку пакетов и через несколько секунд все будет установлено и готово к использованию.
Ярлык для запуска MultiSystem появится в списке установленных программ, можем пробовать запускать.
Запустил запись на флешку, все прошло успешно, извлек ее и попробовал загрузиться с другого компьютера. В результате загрузки черный экран и тишина. MBR(Master Boot record, основная загрузочная запись) на флешке была на месте, хотя не уверен что именно та которая должна была прописать системой Multisystem. MBR расположен в первых 512-ти байтах диска, его можно считать в файл вот такой командой:
Смотрим содержимое файла:
В выводе увидим много разных символов среди которых можем наблюдать фрагменты читаемого текста:
В любом случае можно загрузиться с загрузочного CD на который залит проверенный и рабочий образ MultiSystem, сбросить на жесткий диск компьютера нужные для записи iso-образы, воткнуть подопытную флешку и произвести все необходимые операции.
MultiCD
Итак, после опыта с Yumi и MiltiSystem, которые в свою очередь базируются на пакете syslinux, я уже набрался решительности разобраться с syslinux и написать свой набор скриптов для генерации мультизагрузочного образа с несколькими ОС. Поиски документации привели меня на один интересный сайт:
Подумал про себя: вот и удача подоспела, теперь еще и нашел готовые мануалы как запилить свои скрипты, но оказалось не совсем так.
Бегло оглянув содержимое сайта стало понятно что вся работа, которую я планировал проделать с syslinux уже сделана и в готовом вмде лежит на этом сайте, к тому же к многим образам операционных систем уже написаны готовые скрипты. Первые тесты показали что все работает и запись сгенерированного образа с несколькими тестовыми ОС дала свой рабочий результат.
Перейдем к установке и использованию скрипта. Для начала нам нужно установить GIT (распределённая система управления версиями), с помощью его мы скачаем репозиторий со всеми скриптами от MultiCD, выполняем установку командой:
Ок, теперь перейдем к скачиванию репозитория, по ссылке с сайта. Переходим в удобную для нас директорию, где будет распакованы скрипты и выполняем команду:
Открываем новое окно Терминала и переходим в папку со скриптом, пробуем запустить главный скрипт:
Теперь все готово для работы, пробуем создать мультизагрузочный образ из нескольких нужных нам дистрибутивов. Список всех поддерживаемых дистрибутивов и правила переименования файлов-образов вы можете найти на странице: http://multicd.us/supported.html
Не все образы скрипт сможет распознать так как необходимо, тому желательно все же перед запуском скрипта переименовать все образы дистрибутивов по правилам для плагинов. Как называть файлы дистрибутивов вы можете найти на сайте на странице поддерживаемых дистрибутивов.
Допустим что мы скачали Puppy Linux (Lucid), Clonezilla AMD64 и Finnix Linux. Переименовываем образы исходя из приведенных выше рекомендаций:
Общий размер трех файлов примерно 500МБ. Теперь кладем файлы-образы clonezilla.iso, finnix.iso и puppy.iso в папку со скриптом и запускаем процесс сборки:
Как видим все собралось но не был обнаружен и обработан образ дистрибутива Puppy Linux, размер результирующего файла-образа получился 331 МБ.
После переименования снова запускаем скрипт и видим следующий результат:
Вот это уже то что нужно, размер образа примерно сопоставим с размером трех дистрибутивов которые мы подготовили скрипту. Теперь можем приступать к тестированию образа в VirtualBox или в QEMU, а также записать образ на флеш-накопитель о проверить его работу на реальном компьютере. В предыдущей статье я подробно рассказал как записать образ на флешку.
Из данного опыта можем сделать вывод: имена файлов для переименования образов лучше всего смотреть в исходных кодах плагинов, в блоке (if [ = links ];then) и дальше по скрипту, а не на странице со списком поддерживаемых дистрибутивов!
Вот так будет выглядеть меню выбора загрузки с нашими тремя системами и memtest86 в дополнение:
Все должно грузиться и работать как в виртуальной машине, так и на компьютере.
Важно заметить что не обязательно копировать все образы в папку со скриптом (образы могут быть большими), можно просто создать для каждого образа файл-символическую ссылку (Symbolik Link), это делается командой (для примера):
Для некоторых нужных мне дистрибутивов я все же написал свои плагины, ничего сложного в этом нет. Системы развиваются, структура обновляется, а автор скрипта и плагинов для MultiCD может не успеть за всеми 100+ дистрибутивами и это есть нормальное явление.
Плагины что я заменил и дополнил от себя:
Скрипт на Питоне + мои плагины + сборка MultiCD на момент написания статьи = multicd_ph0en1x.net_26_06_2015.zip (1.1МБ)
В завершение
В статье я описал свой удачный и не очень опыты с программами, которые есть в свободном доступе.