К основному контенту

Мультизагрузочная флешка с несколькими ОС Linux

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

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

Содержание статьи: Multisystem Установка Multisystem Создание мультизагрузочной флешки в Multisystem Создание мультизагрузочной флешки вручную Мультизагрузочная флешка из образов Выводы Multisystem

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

Установка Multisystem

Установить в Ubuntu можно с помощью PPA. Для этого просто используйте следующие команды:

sudo apt-add-repository 'deb http://liveusb.info/multisystem/depot all main' $ wget -q -O - http://liveusb.info/multisystem/depot/multisystem.asc | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install multisystem

Если у вас другой дистрибутив, или вы не хотите использовать PPA, можете скачать программу, распаковать ее в любое подходящее место и запускать командой:

sudo ./install-depot-multisystem.sh

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

После завершения установки, можно начинать создание мультизагрузочной флешки linux. Подключите вашу USB флешку, и запустите MultiSystem из главного меню системы или через терминал:



При первом запуске программа будет выглядеть примерно вот так:



Выберите нужный USB диск и нажмите кнопку Confirm. Может появиться такое сообщение об ошибке:



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

После этого подтвердите установку на нее загрузчика Grub2:



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



Это делается очень просто. Просто перетащите нужный ISO образ в окно программы. Если это не сработает вы можете кликнуть на иконке CD и выбрать нужные образы в файловой системе:



Потом MultiSystem извлечет файлы из этих образов на флешку и сделает ее загрузочной.



Вы можете добавить несколько дистрибутивов, какие захотите, например, в этом примере добавлены CentOS и Android.

После добавления образов вы увидите их в меню программы:



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



Также Multisystem имеет ряд дополнительных функций: Настройки Grub Обновление загрузчиков Grub и Brug Загрузка Live CD из сети Установка VirtualBox Форматирование USB флешки И многие другие

Для того чтобы получить доступ к этим опциям перейдите на вкладку Menus:



Также вы можете проверить как будет выглядеть загрузочное меню с помощью qemu или VirtualBox:



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

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

Вот что нам понадобится: Gparted - отличный редактор разделов с графическим интерфейсом. Можно использовать любой другой, лишь бы вы знали как им пользоваться Установленный загрузчик Grub2. Эмулятор qemu для проверки работоспособности флешки

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

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

Начнем с того что отформатируем флешку и сделаем ее загрузочной. Форматировать флешку желательно в fat32. Можно использовать и другую файловую систему, кроме NTFS.

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



Удалите все существующие разделы и создайте один с файловой системой vfat:



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

Теперь в контекстном меню для раздела, на который будут записаны образы выберите пункт Manage flags и установите галочку напротив пункта Bootable:



Теперь осталось нажать кнопку Применить:



Операция записи изменений на диск может занять кое-какое время.

Переходим к установке загрузчика. Сначала смонтируем флешку в папку /mnt/USB, здесь /dev/sdx - ваша флешка:

mkdir /mnt/USB

$ mount /dev/sdx1 /mnt/USB

mkdir /mnt/USB/iso/

Скопируйте необходимые файлы ISO в папку /mnt/USB/iso. Теперь установим загрузчик Grub2, следующей командой:

grub-install --root-directory=/mnt/USB/ /dev/sdx

Теперь осталось создать конфигурационный файл загрузчика. Создайте файл /mnt/USB/boot/grub2/grub.cfg приведенной ниже командой и в нем добавьте нужные пункты для каждого iso образа:

vi /mnt/USB/boot/grub2/grub.cfg

Пункт должен выглядеть вот таким образом:

menuentry "Ubuntu" { loopback loop /iso/ubuntu-15.04-desktop-i386.iso root=(loop) linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso /ubuntu-15.04-desktop-i386.iso noeject noprompt splash root=(loop) initrd (loop)/casper/initrd.lz }

Рассмотрим что значат все эти строки. Первая строка menuentry, со словом в лапках, это ни что иное, как объявление пункта и его название. Во второй строке создаем переменную loop с адресом нашего iso образа. Следующая строка задает корневую файловую систему, в нашем случае этот образ. Две последние строчки нужно взять из файла /boot/grub/grub.cfg из того образ , который нужно загрузить. Последняя будет, как правило, без изменений только нужно добавить перед адресом файла inird, адрес образ (loop), а в предпоследней мы добавляем параметр iso-scan/filename опять же с адресом нашего образ и параметр ядра root=(loop).

В примере рассмотрен код для Ubuntu. Создайте такие пункты для каждого образа. Например, еще сделаем пункт для memtest:

menuentry "Test memory" { linux16 /iso/mt86plus }

Исполняемый файл mt86plus нужно скачать и скинуть в папку iso.

Сделаем еще пункт для запуска с жесткого диска, если флешка оказалась в разъеме случайно:

menuentry "Load Hard Disk" { set root="(hd1)" chainloader +1 }

hd1 это наш первый жесткий диск, после флешки hd0, а команда chainloader передает управление загрузчику с этого жесткого диска.

Для Windows пункт меню будет выглядеть немного по-другому, вот так:

menuentry "Windows 10" {

insmod ntfs insmod ntldr loopback loop /iso/windows.iso root=(loop) ntldr (loop)/bootmgr

}

Здесь все то же самое, только вместо ядра Linux загружаем загрузчик Windows, командой ntldr.

Когда завершите настройку файла, сохраните его и можно перевеять все ли получилось. Сначала отмонтируйте флешку:

sudo umount /dev/sdx1

Затем используйте qemu для загрузки системы:

qemu-system-x86_64 -hda /dev/sdx

Вот так это выглядит:



Можно не делать меню самому, а воспользоваться скриптом autoiso. Перейдите в папку /mnt/USB, затем выполните такие команды:

$ mkdir /mnt/boot/grub2/scripts

$ cd /mnt/boot/grub2/srcipts/

$ wget https://raw.githubusercontent.com/coreos/grub/master/docs/autoiso.cfg

Создайте grub.cfg со следующим содержимым:

vi /mnt/USB/boot/grub2/grub.cfg

configfile /boot/grub2/scripts/autoiso.cfg

Скрипт обнаружит все доступные на диске iso файлы и сформирует с них меню:



Вы можете не использовать iso образы, а выделять для каждого дистрибутива отдельный раздел. Тогда просто распакуйте файлы из iso образ на этот раздел. Смонтируйте образ в любую папку, и просто скопируйте файлы с помощью cp:

sudo mount ~/ubuntu.iso /mnt/ISO

$ sudo cp -rp /mnt/ISO /mnt/USB1/

Дальше пункт меню будет выглядеть немного по-другому. Вам просто необходимо указать на каком диске находится нужный дистрибутив и его ядро. В Grub диски именуются по-другому чем в Linux. Каждый диск называется hd и имеет номер начиная с нуля, разделы именуются начиная с единицы. Например, раздел /dev/sda1 будет иметь адрес (hd0,1). Как правило, первым считается тот диск, с которого выполнена загрузка.

Таким образом, конфигурация пункта меню будет выглядеть вот так:

menuentry "Ubuntu" { root=(hd0,1) linux /casper/vmlinuz boot=casper noeject noprompt splash initrd /casper/initrd.lz }

Теперь все работает, но выглядит наше меню не так красиво как в той же программе Multisystem. Наша мультизагрузочная флешка linux должна быть красивее. Добавьте следующие строки в начало конфигурационного файла grub.cfg:

Тайм-аут по умолчанию 5 секунд:

set timeout=5

Расширение экрана:

set gfxmode="1280x800" set gfxpayload=keep

Активация режима видео:

insmod vbe insmod gfxterm terminal_output gfxterm

Установим шрифт Unicode:

font "/boot/grub2/fonts/unicode.pf2" loadfont unicode

Фоновый рисунок:

insmod jpeg background_image "/boot/fon.jpg"

И цвета текста и меню:

set menu_color_normal=red/black set menu_color_highlight=yellow/black set color_normal=yellow/black

Вот что получилось: