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

Модератор: adventurer

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

Автор темы
adventurer
Супермодератор
Сообщения: 2944
Зарегистрирован: 15 июн 2011, 18:24

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

#1

Сообщение adventurer » 20 июл 2011, 20:50

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

Для создания мультизагрузочной флешки нам понадобится сама флешка объёмом не менее 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
Обратите внимание! Устанавливаем загрузчик именно на устройство (/dev/sdb), а не на раздел (/dev/sdb1)!
Получили сообщение, что инсталляция завершена. Сообщений об ошибках нет.

Изображение

Загрузчик установили. Создаём конфигурационный файл:

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

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/
Теперь, для разнообразия воспользуемся графическим интерфейсом архиватора File Roller. Щёлкаем мышкой на иконке файла memtest86+-4.20.bin.gz, нажимаем кнопку "Распаковать", указываем каталог /media/multiboot/boot/img/ и опять нажимаем "Распаковать".

В файл grub.cfg добавляем пункт с утилитой memtest:

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

menuentry "Memtest 86+" {
	linux16 /boot/img/memtest.bin
}
Добавляем ОС Lubuntu. В корень флешки любым возможным образом копируем файл lubuntu-11.04.iso.
В файл 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
}
Обратите внимание на параметры locale=ru_RU.UTF-8 и console-setup/layoutcode=ru, передаваемые ядру при загрузке. Они позволяют загрузить iso-образ Lubuntu c русской локалью и поддержкой соответствующей раскладки клавиатуры. Для других языков эти параметры нужно отредактировать.

На этом шаге опять нужно проверить работоспособность флешки. ОС 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
Перемещаем созданный файл в корень флешки. Теперь, у нас там должны находится файлы lubuntu-11.04.iso, casper-rw и каталог boot.
В файл 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
}
Обратите внимание! Мы не изменяем существующий пункт, а добавляем новый (хотя он отличается от существующего только названием и наличием нового параметра persistent). Старый пункт у нас оказывается на втором месте (чтобы не запутаться, меняем комментарий пункта с #0 на #1, напомню, нумерация пунктов в меню grub2 начинается с нуля).
У нас появился выбор режима загрузки 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
}
И, наконец, скопируем в корень флешки iso-образы ubuntu-11.04-desktop-i386.iso, kubuntu-11.04-desktop-i386.iso, xubuntu-11.04-desktop-i386.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!

Использованные источники: Слишком длинно получилось. Но хотел всё подробно описать.
Последний раз редактировалось adventurer 22 июл 2011, 11:37, всего редактировалось 1 раз.

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

keha
Администратор
Сообщения: 860
Зарегистрирован: 16 дек 2010, 18:11
Откуда: Красноярск

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

#2

Сообщение keha » 21 июл 2011, 08:50

сделать простую флешку
этож насколько гигов получится?
PS советую сделать образ с помощью dd, если планируется активная раздача :)

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

Автор темы
adventurer
Супермодератор
Сообщения: 2944
Зарегистрирован: 15 июн 2011, 18:24

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

#3

Сообщение adventurer » 21 июл 2011, 11:08

Не-не. Это не сборка.
Это флешка, на которую можно устанавливать и другие дистрибутивы, которые загружаются с iso-образов. Для этого достаточно скопировать iso-образ в корень флешки и добавить несколько строк в файл grub.cfg.

Эту флешку можно будет использовать ещё и для демонстрации дистрибутивов Ubuntu. Кому-то понравится Ubuntu, кому-то Kubuntu, а кому-то Lubuntu. Их все можно поместить на одну флешку.

Хотя, если флешка объёмом в 1ГБ, то на неё тоже можно записать Lubuntu (или другой дистрибутив). Но тогда флешка будет называться просто загрузочной. :)

На всякий случай уже добавил черновик how-to в первый пост.

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

Автор темы
adventurer
Супермодератор
Сообщения: 2944
Зарегистрирован: 15 июн 2011, 18:24

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

#4

Сообщение adventurer » 22 июл 2011, 11:41

Смотрим how-to и если есть замечания, пишем.
Получается слишком длинное, да и ладно.
Обнаружил, что у себя могу поменять текст, а здесь оставить по старому. Вроде пока всё исправил. :)


ProGanjaSmoke
Сообщения: 84
Зарегистрирован: 28 дек 2010, 10:43

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

#5

Сообщение ProGanjaSmoke » 22 июл 2011, 12:07

Можно еще дополнительно туда залить Super Grub Disk. Для восстановления\ редактирования Grub/Grub2

http://www.supergrubdisk.org/

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

Автор темы
adventurer
Супермодератор
Сообщения: 2944
Зарегистрирован: 15 июн 2011, 18:24

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

#6

Сообщение adventurer » 22 июл 2011, 13:29

К сожалению, у меня не работает.
Потерпите пару дней и я допишу полностью. И отдельно приведу меню с SuperGrub2Disk.
Не работает на моей живой машине. При выборе SuperGrub2Disk что-то происходит, но через 5 секунд компьютер перезагружается.
При проверке на MobaLiveCD (это такая программа под Windows, для проверки флешки без перезагрузки) всё нормально.
Не могу понять, почему.

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

Автор темы
adventurer
Супермодератор
Сообщения: 2944
Зарегистрирован: 15 июн 2011, 18:24

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

#7

Сообщение adventurer » 23 июл 2011, 17:29

Дописал.
Осталась только косметическая правка.
Слишком длинная статья получилась. Хотел всё подробно описать.
Источники укажу позже.
С помощью grub2 можно загружать ещё другие iso-образы. Попробую попозже написать, какие.

Источники указал.
Удалил из описания установку флажка "Загрузочный". Для загрузчика grub2 этот флажок не нужен.

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

vanyok
Супермодератор
Сообщения: 748
Зарегистрирован: 13 июл 2011, 18:19
Откуда: Haarlem, NL
Контактная информация:

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

#8

Сообщение vanyok » 18 авг 2011, 12:17

adventurer, супер! Сам писал? Очень доходчиво и понятно.
Прежде я использовал графическую утилиту MultiSystem (бывшая MultiBoot). Но теперь попробую сделать всё сам вручную.
Спасибо!

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

Автор темы
adventurer
Супермодератор
Сообщения: 2944
Зарегистрирован: 15 июн 2011, 18:24

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

#9

Сообщение adventurer » 20 авг 2011, 08:08

После пользования MultiSystem я и написал эту статью. Это, практически, то же самое. Просто я хотел во всём разобраться.
MultiSystem у меня при загрузке выдавала ошибку, но, тем не менее, всё равно работала. Я почему-то решил убрать всё лишнее. :)
И программа SuperGrub2Disk на одной флешке работала, на другой - нет (с этой программой я так и не разобрался).
Как я уже писал, подготовку флешки можно сделать и без использования Дисковой утилиты. Если воспользоваться консолью (терминалом), то можно уложиться в 10 строк (в ссылках есть пример использования консоли). Просто мне нравятся картинки. :)


Ramil
Сообщения: 3
Зарегистрирован: 15 сен 2011, 02:42
Контактная информация:

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

#10

Сообщение Ramil » 28 авг 2012, 04:18

ТС, можешь ещё написать как грузить pmagic, winXP и win7?

Виндовая утилита WinSetupFromUSB всё делает здорово, только зараза выдает ошибку при установке Grub4Dos на новую 32 гиг USB3 флешку, ну и вообще виндовая утилита, а хочется делать флешки в рабочей ОС.

* memtest
* pmagic
* ubuntu-12.04-alternate
* ubuntu-12.04-desktop
* ubuntu-12.04-server
* winXP
* win7

Создается целая куча файлов, неужели так сложно грузить винду?

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

autorun.inf  BOOTWS   memtest86-3.5a.iso  setup.exe  upgrade       winsetup.lst
boot         default  menu.lst            sources    usbdrive.tag
bootmgr      efi      plpbt.bin           support    windefault
bootmgr.efi  grldr    pmagic              UBUNTU     WINSETUP
Последний раз редактировалось Ramil 28 авг 2012, 05:30, всего редактировалось 1 раз.

Ответить