Для создания мультизагрузочной флешки нам понадобится сама флешка объёмом не менее 2ГБ. На ней хватит места для двух iso-образов по 700МБ каждый и для файла casper-rw.
Ничто не мешает нам записать всего один iso-образ, тогда хватит и флешки объёмом в 1ГБ. Но эту флешку нельзя будет назвать мультизагрузочной. Она будет просто загрузочной.

Сначала нам нужно подготовить флешку.
Внимание! В процессе подготовки (при форматировании), все данные, хранящиеся на флешке будут утеряны. Если на флешке хранятся важные файлы, переместите их в другое, безопасное место!
Вставляем флешку в разъём. На экране появляется окошко с надписью "Подключён сменный носитель" и предложением "Открыть в файловом менеджере". Нажимаем "Отменить".
Далее, идём в Меню_Приложений/Системные/Дисковая утилита.
В списке устройств выбираем нашу флешку.

Нажимаем кнопку "Размонтировать раздел".

Нажимаем кнопку "Форматировать устройство".
Оставляем схему "Таблица разделов MBR".

Нажимаем "Форматировать", подтверждаем.
Нажимаем кнопку "Создать раздел".

Выбираем файловую систему FAT.
Можно задать название (метку) раздела. Я назвал раздел "multiboot".

Ждём окончания процесса форматирования.
Нажимаем кнопку "Монтировать раздел". Запоминаем точку монтирования:

Закрывать программу "Дисковая утилита" пока не будем, просто свернём окно.
Теперь нам нужно установить на флешку загрузчик grub2. Для этого нам понадобится терминал.
Идём в Меню_Приложений/Стандартные/LXTerminal.
Можно ещё раз открыть окно программы "Дисковая утилита" и убедиться, что наша флешка определилась как устройство /dev/sdb, а точка монтирования /media/multiboot.
Для установки загрузчика в LXTerminal выполняем команду:
Код: Выделить всё
sudo grub-install --no-floppy --root-directory=/media/multiboot /dev/sdb
Получили сообщение, что инсталляция завершена. Сообщений об ошибках нет.

Загрузчик установили. Создаём конфигурационный файл:
Код: Выделить всё
sudo leafpad /media/multiboot/boot/grub/grub.cfg
Код: Выделить всё
#Первый, простой вариант меню.
#Чтобы понять, работает ли. И чтобы настроить цвета меню.
# таймаут меню
set timeout=10
# выбранный пункт по умолчанию
set default=0
# разрешение
set gfxmode=1024x768,800x600
# загружаем модуль файловой системы ext2
insmod ext2
# загружаем шрифт и включаем графическое меню
loadfont /boot/polices/unicode.pf2
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else terminal gfxterm; fi
# настройка цветов
set color_normal=white/black
set menu_color_normal=white/black
set menu_color_highlight=light-blue/black
menuentry "Boot from first hard disk" {
set root=(hd1)
chainloader +1
}
menuentry "Reboot" {
insmod reboot
reboot
}
menuentry "ShutDown PC"{
halt
}
Несколько комментариев к этому файлу.
Выбранное разрешение будет работать, только если загружено графическое меню.
Можно указать глубину цвета.
Можно указать больше разрешений, через запятую, без пробелов. Если grub2 не сможет применить первое, будет использовано второе разрешение и т. д.
Файл шрифтов нужен не только для отображения символов кириллицы в меню, но и для отрисовки рамки меню.
Дополнительную информацию можно найти в вики по grub2.
Добавим файл шрифтов. Возьмём его из каталога /usr/share/grub/. Скопируем на флешку в каталог /boot/polices/, который надо создать.
Код: Выделить всё
mkdir /media/multiboot/boot/polices/
cp /usr/share/grub/unicode.pf2 /media/multiboot/boot/polices/

Осталось самое простое (или наоборот, самое сложное) - добавить iso-образы.
Сначала добавим утилиту memtest для тестирования оперативной памяти компьютера. Скачать утилиту можно отсюда:
http://www.memtest.org/
Скачивать нужно архив с бинарным файлом (на момент написания статьи самая последняя версия memtest86+-4.20.bin.gz).
Создаём каталог для файла memtest:
Код: Выделить всё
mkdir /media/multiboot/boot/img/
В файл grub.cfg добавляем пункт с утилитой memtest:
Код: Выделить всё
menuentry "Memtest 86+" {
linux16 /boot/img/memtest.bin
}
В файл grub.cfg добавляем пункт с ОС Lubuntu:
Код: Выделить всё
#0
menuentry "Lubuntu 11.04" {
loopback loop /lubuntu-11.04.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/lubuntu-11.04.iso locale=ru_RU.UTF-8 console-setup/layoutcode=ru noprompt splash --
initrd (loop)/casper/initrd.lz
}
На этом шаге опять нужно проверить работоспособность флешки. ОС Lubuntu должна загружаться. Интерфейс должен быть на русском языке. Откройте программу AbiWord и попробуйте напечатать несколько слов на анлийском и русском языках. Переключение раскладки должно работать.
Если что-то не так, то ищем ошибки и исправляем их.
Как я уже упоминал, Lubuntu, кроме того, что она лёгкая и быстрая, полностью русифицирована (все файлы локализации включены в iso-образ). Эти свойства делают Lubuntu идеальной ОС для использования на флешке. Но, все программы в iso-образ поместить не возможно. А так бывают нужны программы для поиска - catfish, для резервного копирования - deja dup, для восстановления таблицы разделов - testdisk. Нужных программ, которых нет в iso-образе, великое множество. Конечно, можно их установить через интернет. Но как их сохранить?
Оказывается для этого служит режим persistent mode. В режиме persistent mode все изменения записываются на отдельный раздел, а точнее в файл casper-rw. Вообще говоря, для записи изменений, кроме файла casper-rw, можно использовать и файлы home-rw, casper-sn и home-sn. Но в файл home-rw будут сохранятся только файлы домашних каталогов. А мы хотим сохранить установленные программы, то есть хотим сохранить системные изменения. Для этого надо использовать файл casper-rw. Ну а файлы casper-sn и home-sn используются для сохранения снапшотов (о которых я имею весьма смутное представление).
Файлы casper-rw ходовых размеров 256МБ, 512МБ, 1ГБ, 2ГБ, 4ГБ можно скачать из интернета (в архивированном виде файлы, содержащие нули, занимают очень мало места). Но мы создадим файл casper-rw сами, используя команду dd:
Код: Выделить всё
dd if=/dev/zero of=casper-rw bs=1M count=512
запускается программа dd;
которая в выходной файл casper-rw (of=casper-rw);
записывает нули (if=/dev/zero);
в количестве 512 блоков (count=512);
каждый блок размером в 1 Мегабайт (bs=1M).
Создаём внутри файла casper-rw файловую систему ext3:
Код: Выделить всё
mkfs.ext3 casper-rw
В файл grub.cfg добавляем новый пункт:
Код: Выделить всё
#0
menuentry "Lubuntu 11.04 persistent mode" {
loopback loop /lubuntu-11.04.iso
linux (loop)/casper/vmlinuz boot=casper persistent iso-scan/filename=/lubuntu-11.04.iso locale=ru_RU.UTF-8 console-setup/layoutcode=ru noprompt splash --
initrd (loop)/casper/initrd.lz
}
У нас появился выбор режима загрузки Lubuntu: мы можем загрузится в режиме persistent mode (с сохранением изменений) или загрузится с "чистого" iso-образа (без сохранения изменений).
Проверим работает ли режим persistent mode. Загружаемся в этом режиме. Создаём на рабочем столе файл file1.txt и записываем в него произвольный текст, сохраняем изменения. Перезагружаемся, опять выбрав режим persistent mode. Файл file1.txt должен быть на рабочем столе.
Если же при загрузке мы выберем второй пункт, то никакого файла file1.txt на рабочем столе не должно быть.
Надеюсь, я не слишком вас запутал. Вот, как выглядит файл grub.cfg на данный момент:
Код: Выделить всё
# Загрузка Lubuntu в двух режимах.
#
# таймаут меню
set timeout=10
# выбранный пункт по умолчанию
set default=0
# разрешение
set gfxmode=1440x900
# загружаем модуль файловой системы ext2
insmod ext2
# загружаем шрифт и включаем графическое меню
loadfont /boot/polices/unicode.pf2
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else terminal gfxterm; fi
# настройка цветов
set color_normal=white/black
set menu_color_normal=white/black
set menu_color_highlight=light-blue/black
#0
menuentry "Lubuntu 11.04 persistent mode" {
loopback loop /lubuntu-11.04.iso
linux (loop)/casper/vmlinuz boot=casper persistent iso-scan/filename=/lubuntu-11.04.iso locale=ru_RU.UTF-8 console-setup/layoutcode=ru noprompt splash --
initrd (loop)/casper/initrd.lz
}
#1
menuentry "Lubuntu 11.04" {
loopback loop /lubuntu-11.04.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/lubuntu-11.04.iso locale=ru_RU.UTF-8 console-setup/layoutcode=ru noprompt splash --
initrd (loop)/casper/initrd.lz
}
menuentry "Memtest 86+" {
linux16 /boot/img/memtest.bin
}
menuentry "Boot from first hard disk" {
set root=(hd1)
chainloader +1
}
menuentry "Reboot" {
insmod reboot
reboot
}
menuentry "ShutDown PC"{
halt
}

Установим на флешку ещё одну замечательную программу - Super Grub2 Disk. С помощью этой небольшой (1,4МБ) утилиты можно найти и загрузить любые ОС, установленные на компьютере (в том числе и Windows). А также загрузить iso-образы, находящиеся на жёстком диске.
Посмотреть описание и скачать можно здесь:
http://www.supergrubdisk.org/super-grub2-disk/
Файл гибридного образа имеет довольно длинное название super_grub_disk_hybrid-1.98s1.iso. Измением его на sgdh.iso и поместим в каталог /boot/img/ на нашей флешке.
Для загрузки Super Grub2 Disk нам понадобится ещё крошечный файл memdisk, ктороый входит в пакет syslinux. Причём архив syslinux занимает 7,5МБ, тогда как файл memdisk всего 25КБ. Но так как syslinux может пригодится в дальнейшем, то лучше его скачать. Отсюда:
http://www.kernel.org/pub/linux/utils/boot/syslinux/
Создадим на флешке каталог /boot/syslinux/ и поместим туда файл memdisk.
В файл grub.cfg добавим следующие строчки:
Код: Выделить всё
menuentry "Super Grub2 Disk" {
search --set -f /boot/img/sgdh.iso
linux16 /boot/syslinux/memdisk
initrd16 /boot/img/sgdh.iso
}
Окончательный вариант файла grub.cfg:
Код: Выделить всё
# Окончательный вариант.
# Дальше меняем по вкусу.
# таймаут меню
set timeout=10
# выбранный пункт по умолчанию
set default=0
# разрешение
set gfxmode=1440x900
# загружаем модуль файловой системы ext2/3/4
insmod ext2
# загружаем шрифт и включаем графическое меню
loadfont /boot/polices/unicode.pf2
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else terminal gfxterm; fi
# настройка цветов
set color_normal=white/black
set menu_color_normal=white/black
set menu_color_highlight=light-blue/black
#0
menuentry "Lubuntu 11.04 persistent mode" {
loopback loop /lubuntu-11.04.iso
linux (loop)/casper/vmlinuz boot=casper persistent iso-scan/filename=/lubuntu-11.04.iso locale=ru_RU.UTF-8 console-setup/layoutcode=ru noprompt splash --
initrd (loop)/casper/initrd.lz
}
#1
menuentry "Lubuntu 11.04" {
loopback loop /lubuntu-11.04.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/lubuntu-11.04.iso locale=ru_RU.UTF-8 console-setup/layoutcode=ru noprompt splash --
initrd (loop)/casper/initrd.lz
}
#2
menuentry "Ubuntu 11.04" {
loopback loop /ubuntu-11.04-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-11.04-desktop-i386.iso noprompt splash --
initrd (loop)/casper/initrd.lz
}
#3
menuentry "Kubuntu 11.04" {
loopback loop /kubuntu-11.04-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/kubuntu-11.04-desktop-i386.iso noprompt splash --
initrd (loop)/casper/initrd.lz
}
#4
menuentry "Xubuntu 11.04" {
loopback loop /xubuntu-11.04-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/xubuntu-11.04-desktop-i386.iso locale=ru_RU.UTF-8 console-setup/layoutcode=ru noprompt splash --
initrd (loop)/casper/initrd.lz
}
menuentry "Super Grub2 Disk" {
search --set -f /boot/img/sgdh.iso
linux16 /boot/syslinux/memdisk
initrd16 /boot/img/sgdh.iso
}
menuentry "Memtest 86+" {
linux16 /boot/img/memtest.bin
}
menuentry "Boot from first hard disk" {
set root=(hd1)
chainloader +1
}
menuentry "Reboot" {
insmod reboot
reboot
}
menuentry "ShutDown PC"{
halt
}

Обратите внимание!
Для lubuntu-14.04 (а также ubuntu-14.04, kubuntu-14.04 и т. д.) везде в меню (файл grub.cfg) вместо "vmlinuz" надо писать "vmlinuz.efi" (без кавычек, естественно).
То же самое для семейства ubuntu-13.04 и ubuntu-13.10.
PS
В lubuntu-14.04.1 (lubuntu-14.04.2) разработчики вернулись к прежнему имени ядра vmlinuz!
Использованные источники: Слишком длинно получилось. Но хотел всё подробно описать.