Multiboot-флешка на GRUB2 с несколькими разделами под Ubuntu

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

  • Медленная загрузка с iso-образов
  • Путаница в файлах нескольких систем(попробуйте разделить Ubuntu и BackTrack без костылей!)
  • Невозможность поставить несколько однотипных систем(опять же, не используя костыли)
  • И конечно, весь этот балаган мешается под рукой, когда нужно просто перекинуть несколько файлов.


Сегодня я вам расскажу, как избежать все эти минусы удобно и относительно быстро.



Итак, приступим. В качестве подопытного зверька я выбрал Transcend JetFlash 16G; модель флешки не принципиальна, только в разбивке 512 мегабайт памяти смысла нет :)

Для начала форматируем память, создаём чистую MBR и разделы. Под линуксом средств масса, я использовал стандартную утилиту Ubuntu.

image

Устанавливаем GRUB2:
sudo grub-install --no-floppy --root-directory=/media/ALKID /dev/sdd
sudo grub-mkconfig -o /media/ALKID/boot/grub/grub.cfg

В примере /media/ALKID — подмонтированный раздел флешки (любой кроме NTFS; первый раздел будет использоваться для личных файлов, так что предпочтительно ставить, скажем, на второй раздел);
/dev/sdd — сама флешка.

Если груб отвечает примерно так:
utrack@utrack ~ $ sudo grub-install --no-floppy --root-directory=/media/fpart2 /dev/sdd
[sudo] password for utrack:
/usr/sbin/grub-setup: предупр: Your embedding area is unusually small. core.img won't fit in it..
/usr/sbin/grub-setup: предупр: Встраивание невозможно. При имеющихся параметрах GRUB можно установить только с помощью списка блоков (blocklists). Однако, список блоков является НЕНАДЁЖНЫМ механизмом и его лучше не использовать..
/usr/sbin/grub-setup: ошибка: не будет продолжена с использованием blocklists.

то значит что для бутлоадера не хватает места и нужно перенести начало первого раздела, скажем, на 1 мб вперед.
Затем просто копируем файлы систем на флешку, iso-образы можно распаковать обычным архиватором.

А теперь сложная часть :)

Дело в том, что для каждой системы настройки немного, да отличаются. Для некоторых дистрибутивов вам придётся подбирать параметры самим, но я помогу с наиболее популярными системами.

Для любого дистрибутива Linux на отдельном разделе:

menuentry 'BackTrack 5 R1' --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
search --no-floppy --fs-uuid --set=root BC1B-344D
linux /casper/vmlinuz file=/preseed/custom.seed boot=casper text splash vga=791 --
initrd /casper/initrd.gz
}


, где BC1B-344D это UUID раздела (узнать его можно командой 'ls -l /dev/disk/by-uuid').

image

Из-за сходной структуры с ними есть одна закавыка: для каждого придётся изменить имя папки casper, например BT5 в примере находится в папке casper, а вот на соседнем разделе будет Mint, причём в папке casper2. Подключить её можно так:

menuentry 'Mint Default' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
search --no-floppy --fs-uuid --set=root 1E1F-DD84
linux /casper2/vmlinuz live-media-path=/casper2/ nopersistent boot=casper initrd=/casper2/initrd.lz quiet splash --
initrd /casper2/initrd.lz
}


Далее, Dr.Web на втором разделе в папке drweb:

menuentry "Dr.Web" {
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
search --no-floppy --fs-uuid --set=root 8614-5FEE
linux /drweb/boot/vmlinuz ID=HOpnMxLPodF82zUr usbroot root=/dev/ram0 realroot=/dev/sd[a-z][0-9]/drweb init=/linuxrc init_opts=4 quiet vga=791 splash=silent,theme:drweb CONSOLE=/dev/tty1 dokeymap looptype=squashfs usbroot=/dev/sd[a-z][0-9]/drweb slowusb vga=791 CONSOLE=/dev/tty1 SDELAY=12 USBWAIT=15
initrd /drweb/boot/initrd
}


Касперский рядом с ним в папке kav:

menuentry "Kaspersky RD 10" {
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
insmod ntfs
search --no-floppy --fs-uuid --set=root 8614-5FEE
linux /kav/boot/rescue subdir=/kav root=/dev/ram0 vga=791 init=/linuxrc looptype=squashfs loop=/kav/image.squashfs nodevfs kav_lang=en udev aufs quiet noresume doscsi kav_lang=en cdroot=/dev/sd[a-z][0-9]
initrd /kav/boot/rescue.igz
}


Можно сменить язык на русский директивой kav_lang=ru.

Partition Editor на нтфс-разделе в папке /sys/pwizard:

menuentry 'pwhe6 - Partition Editor' {
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
insmod ntfs
search --no-floppy --fs-uuid --set=root 01CCC7C26FA774D0
linux /sys/pwizard/BZIMAGE ramdisk_size=102400 root=/dev/ram0 rw
initrd /sys/pwizard/tinycore.gz
}


В принципе с ним проблем никаких, к тому же из всего образа можно оставить только файлы BZIMAGE и tinycore.gz.

Partition Doctor:

menuentry 'Partition Doctor'{
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
search --no-floppy --fs-uuid --set=root BC1B-344D
linux /partdoc/memdisk
initrd /partdoc/partdoc.ima
}


memtest86:

menuentry "Memory test (memtest86+)" {
insmod part_msdos
insmod ext2
insmod fat
search --no-floppy --fs-uuid --set=root 8614-5FEE
linux16 /memtest.bin
}


И загрузка с первого жёсткого диска, если вы случайно оставили флешку в разъёме:

menuentry "hd0"{
insmod part_msdos
insmod ntfs
insmod fat
insmod ext2
set root='(hd0)'
chainloader +1
}


Некоторые BIOS воспринимают карту как hd0, поэтому желательно рядом оставить загрузку hd1 аналогичным способом.

Если вы нашли нужную систему в статье- можете удалить из скопированных образов папки syslinux, isolinux, boot/grub и др., если же не нашли-то ищите в них подсказки :)
Например для того же Linux Mint в файле /isolinux/isolinux.cfg:

label live
menu label Start Linux Mint
kernel /casper/vmlinuz
append file=/cdrom/preseed/mint.seed boot=casper initrd=/casper/initrd.lz quiet splash --


Всё что нам нужно сделать-это подключить insmod'ом нужные для ФС модули, заменить kernel на linux и перенести секцию append после имени ядра и указать раздел системы. Вот так:

menuentry 'Mint Default' --class ubuntu --class gnu-linux --class gnu --class os {
insmod ext2
insmod fat
search --no-floppy --fs-uuid --set=root 1E1F-DD84
linux /casper/vmlinuz boot=casper initrd=/casper/initrd.lz quiet splash --
initrd /casper/initrd.lz
}


Готово, можно перезагружаться и испытывать новую систему!
Share post

Similar posts

Comments 29

    +1
    Можете объяснить, для чего переименовывать папки casper? Эти на разных разделах, как они конфликтуют?
      +1
      Конечно :) без этого минт путает файлы себя и бэктрека; должно быть это актуально для всего убунту-подобного
      0
      Непонятно, зачем городить каждую систему в отдельный раздел, если все равно приходится переименовывать каталоги с ядрами.

      > Помните, что FAT32 не держит более 4 гигабайт!

      Это вы FAT16 имели в виду? FAT32 поддерживает разделы > 4ГБ.
        0
        Сдается мне, человек писал про файлы на FAT32.
          +3
          Похоже у меня на новый год помутнился рассудок :) Я имел ввиду разделы, сейчас исправлю.
          +1
          > Непонятно, зачем городить каждую систему в отдельный раздел, если все равно приходится переименовывать каталоги с ядрами.

          Юзер-френдли, чтобы при обновлении не перепутать файлы и если захочется, скажем, вин7 и хп то придётся городить костыли, а это ни к чему
        • UFO just landed and posted this here
            0
            Присоединяюсь, вся статья умещается в одну строку — закиньте iso-образы в папку iso на вашем залмане. Безумно удобная и прикольная штука, и стоит она чуть больше тысячи рублей, разве это деньги за такую пользу? Одна перестановка винды.
              +2
              Я не могу понять, сарказм это или нет )
                0
                В чём тут может быть сарказм? Я серьезно, вся эта возня с образами, переименованиями папок, грубами и тд просто исчезает за стоимость ужина в ресторане, какой тут сарказм?
                  0
                  Стоимость времени возни с образами и т. п. меньше стоимости ужина (особенно если возня в свободное время), не говоря о фане? Плюс ещё сам винт нужно покупать.
                    +1
                    Стоимость бокса меньше стоимости ужина =) а возня с образами — бесценна.
              0
              А файловая система на диске, который устанавливает в этот корпус, при этом важна? В смысле, можно ли отформатировать диск в ntfs и кидать на диск образы >4gb?
                0
                *который устанавливается
                • UFO just landed and posted this here
                    0
                    На самом деле не все так просто и прозрачно. Вот оригинальный производитель www.i-odd.com/tiki-index.php?page=iodd2511 и у него есть разные прошивки, под разные файловые системы. У меня винт отформатирован под ExtFAT, чтобы можно было на MacOS монтировать и на Win7, как-то с NTFS медленно все на маке. Еще у оригинальной прошивки чуть больше функционала.
                    0
                    Zalman очень удобный инструмент. Работать просто и приятно… но за углом как всегда притаилось НО: биос. Да-да встречаются экземпляры, которые не умеют грузиться с юсб-сд. И кстати это не какие-то доисторические компы, а ноуты 2007-2008 годов (в моем случае это был dell, который видел Zalman только как внешний хард). В итоге все равно нужно ставить груб
                      0
                      т.е. Залмановский USB-HDD с бутом превращается в USB-CD?
                        0
                        Zalman опазнается в системе как 2 устройства: Zalman VE CDROM и Zalman VE HDD.
                        Если биос нормальный то есть возможность загрузиться с обоих
                    0
                    Похоже, никто тут не в курсе, но есть ещё один очень простой способ делать флешки с кучей систем.

                    1. Качаете вот эту утилиту: www.pendrivelinux.com/yumi-multiboot-usb-creator/
                    2. Запускаете, указываете, какой дистрибутив хотите засунуть на флешку.
                    3. Подсовываете исошник, выбираете диск, на который хотите его закинуть.
                    4. Ждёте минут 5-10.

                    Во время загрузки с этой флешки будет доступен список дистрибутивов, причём у большинства сохранится их собственное меню выбора параметров.

                    Недостатки:
                    1. Почему-то утилита есть только под винду
                    2. Не очень часто обновляется, так что некоторые дистрибутивы в списке отсутствуют
                    3. Нельзя выбрать сразу много исошников пачкой, только по одному за раз

                    В остальном работает идеально
                      +2
                      UUID ещё можно узнать командой
                      # blkid

                      PS. Спасибо за статью.
                        0
                        А почему бы не заливать на 1 большой раздел много .iso? Как-то так (по-крайней мере для ядра linux):
                        loopback loop /boot/iso/ubuntu-11.04-desktop-amd64.iso
                        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-11.04-desktop-amd64.iso noeject noprompt --
                        initrd (loop)/casper/initrd.lz
                        
                          +1
                          Бубунта поддерживает исо-скан, а во многих ядрах такого нет + не знаю как с grub2, но на первом эта связка ужасно тормозила по сравнению с запуском из системы.
                          0
                          Я делаю так:
                          готовлю DOS(утилиты, конфиг.сис, автоекзек), потом форматирую с помощью HPUSBFW, затем копирую DOS на подготовленную флэшку.

                          Туда кидаю программы, которые пускаются из под DOS.

                          Далее кидаю grub4dos.
                          Добавляю нужные образы.

                          При загрузке вылазит меню, если выбираю Common Boot грузится обычный DOS, если Grub, грузится grub4dos.

                          Я понимаю, что на вкус и цвет товарищей нет, но я уж очень люблю поковыряться в DOS :D
                            0
                            Мсье...)
                            Дос тоже можно засунуть, правда пока не знаю как обойтись без бутсектора. Завтра покопаюсь, с ним и с виндой)
                              0
                              Как раз с DOS'ом всё гораздо легче — можно в ОЗУ загрузить образ и передать ему управление, подменив таблицу прерываний. Grub2 умеет так:
                              linux16	/boot/memdisk
                              initrd16	/boot/Dos6.22.img
                              
                                0
                                *Ну и для .iso аналогично, только «linux16 /boot/memdisk iso». Для полноценных .iso грузить 700мб из (не)реального режима — обождёшься, да и переход в защищённый режим всё испортит. Хотя ходили слухи о том, что можно с нужными модулями ядра подмонтировать RAM -> / и тогда такая связка будет работать. Но я в этом не вижу практического смысла.
                                Как по мне, так лучше иметь внешний HDD с полноценными ubuntu и windows 7, а не одноразовыми live-cd.

                          Only users with full accounts can post comments. Log in, please.