суббота, 22 февраля 2014 г.

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

Дабы сто раз не перезаписывать флешку для установки того или иного дистрибутива Linux, решено было сделать её мультизагрузочной.
Порядок действий таков: скачиваем нужные образы дистрибутивов, устанавливаем на флешку grub2, копируем образы на флешку.
Далее подробная инструкция.


Имеются образы.
CentOS-6.5-x86_64-minimal.iso
debian-7.4.0-amd64-netinst.iso
linuxmint-16-mate-dvd-64bit.iso
ubuntu-13.10-desktop-amd64.iso

Примечание:
/dev/sdb - имя устройства (флешки) в моём случае.

1. Форматируем флешку в FAT32:
$ sudo mkfs.vfat -n MULTIBOOT_FLASH /dev/sdb1

2. Монтируем:
$ sudo mount /dev/sdb1 /mnt

3. Устанавливаем grub:
$ sudo grub-install --no-floppy --root-directory=/mnt/ /dev/sdb
...
...
Installation finished. No error reported.

4. Создаём конфигурационный файл grub2:
$ sudo vim /mnt/boot/grub/grub.cfg
### CentOS-6.5-x86_64-minimal.iso
### debian-7.4.0-amd64-netinst.iso
### linuxmint-16-mate-dvd-64bit.iso
### ubuntu-13.10-desktop-amd64.iso

menuentry "CentOS-6.5-x86_64-minimal" {
    loopback loop /boot/iso/CentOS-6.5-x86_64-minimal.iso
    linux (loop)/isolinux/vmlinuz boot=casper iso-scan/filename=/boot/iso/CentOS-6.5-x86_64-minimal.iso noeject noprompt --
    initrd (loop)/isolinux/initrd.img
}

menuentry "debian-7.4.0-amd64-netinst" {
    loopback loop /boot/iso/debian-7.4.0-amd64-netinst.iso
    linux (loop)/install.amd/vmlinuz boot=casper iso-scan/filename=/boot/iso/debian-7.4.0-amd64-netinst.iso noeject noprompt --
    initrd (loop)/install.amd/initrd.gz
}

menuentry "linuxmint-16-mate-dvd-64bit" {
    loopback loop /boot/iso/linuxmint-16-mate-dvd-64bit.iso
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/linuxmint-16-mate-dvd-64bit.iso noeject noprompt --
    initrd (loop)/casper/initrd.lz
}

menuentry "ubuntu-13.10-desktop-amd64" {
    loopback loop /boot/iso/ubuntu-13.10-desktop-amd64.iso
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/boot/iso/ubuntu-13.10-desktop-amd64.iso noeject noprompt --
    initrd (loop)/casper/initrd.lz
}

5. Копируем образы в /mnt/boot/iso:
$ sudo mkdir /mnt/boot/iso
$ cp ~/ISO/*.iso /mnt/boot/iso

6. Размонтируем:
$ sudo umount /mnt/

7. Перезагружаемся, проверяем

P.S. Если во время загрузки будет ошибка с secure boot, его надо отключить.

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

9 комментариев:

Александр Беззубов комментирует...
Этот комментарий был удален автором.
Анонимный комментирует...

Всё понятно описано, только есть проблема:
уже давно существуют дистрибутивы на DVD (более 4-х Гб), а значит FAT32 бесполезна.

Amet Umerov комментирует...

И сколько же таких образов влезет на флешку? Действительно ли они будут нужны?
Честно говоря не помню, когда в последний раз я использовал образы, отличные от minimal.

Анонимный комментирует...

У меня большая флэшка - 32GiB. Нужно залить MacOS например, и кучу дистров типа всё "включено" для начинающих пытливых умов. Может есть решение?

Amet Umerov комментирует...

Тут я подсказать не смогу, с дистрибутивами отличными от Linux я не пользовался на таких флешках.

Анонимный комментирует...

для пробы записал 2 дистрибутива:
ubuntu-gnome-15.10-desktop-amd64.iso
debian-live-8.2.0-amd64-gnome-desktop.iso

ubuntu загружается как положено live, все хорошо
а debian загружается не live, а установка в текстовом режиме

как поправить?

а так такой способ лучший, когда ручками мульти флеш делаешь, спасибо

Amet Umerov комментирует...

Попробуйте распаковать iso и посмотреть, что там прописано в menu.lst и grub.cfg.

Анонимный комментирует...

Amet Umerov, открыл iso менеджером архивов, но файлы menu.lst и grub.cfg поиск не находит...

menuentry "debian-live-8.2.0-amd64-gnome-desktop" {
loopback loop /boot/iso/debian-live-8.2.0-amd64-gnome-desktop.iso
linux (loop)/install/vmlinuz boot=install iso-scan/filename=/boot/iso/debian-live-8.2.0-amd64-gnome-desktop.iso noeject noprompt --
initrd (loop)/install/initrd.gz
}

что здесь поправить?

Анонимный комментирует...

А как сделать такую флешку с uefi загрузкой?