dr_magnus 19.11.2009 02:04
How-to`s — Multiboot USB + GRUB + ISO
Ура, друзья мои! Свершилось! Спешу поделиться своей радостью!Мне наконец-то удалось создать мультизагрузочный ЮСБ!
А теперь немного предистории.
Я загорелся мыслью создать для себя мультизагрузочную флешку. Да такую, что бы можно было ISO-образы грузить. Немного погуглив нашел только одно толковое руководство, да и то в нем описывается не совсем мой случай. Для тех, кто не любит ходить по ссылкам - там на флэшке создаются отдельные разделы для каждого образа, который хотите загрузить и с помощью бут-манагера Gujin они загружаются.
Меня этот вариант не устроил из-за релегиозных убеждений.
Я продолжил гуглить.
Моей целью стало:
1. Создать на флешке строгую иерархию папок, желательно без бардака.
2. Загрузить Live Ubuntu 9.10, распакованную из iso-образа в папку /media/usb/ubuntu
3. Создать мультизагрузочную флешку с помощью GRUB
Я не буду описывать все свои мытарства в поисках рабочей конфигурации. Скажу только, что перепробовал уже и GRUB, и GRUB4DOS, и SYSLINUX. О количестве переразбиений/переформатирований флешки я скромно умолчу. Добавлю для тех, кто так же как и я, мается подобной х..ней - папка casper может находится только в корне.
Итак, приступим.
Предупреждение! Все, что вы делаете - вы делаете на свой страх и риск! Скорее всего ваша система не сможет загрузиться после применения этого руководства! Подводные камни я опишу в конце. Не выполняйте никаких действий, пока не дочитаете до конца!
Дано: Arch Linux, USB 4G, прямые руки и пытливый ум.
1. Устанавливаем GRUB2 в систему (!)
# magnus@laptop % yaourt -S grub2
2. Готовим флешку (каждый готовит кошек, как ему нравится)
# magnus@laptop % fdisk -l /dev/sdb
1 |
|
3. Устанавливаем GRUB2 на флешку
# grub-install --no-floppy --root-directory=/media/usb /dev/sdb
4. Создаем конфиг для GRUB'а
# magnus@laptop % cat /media/usb/boot/grub/grub.cfg
5. Теперь нам осталось создать на флешке директорию /iso и скопировать туда iso-образ Ubuntu.
6. Перезагружаемся и загружаемся с флешки.
Ура! У нас получилось!
А теперь снова перегружаемся в свою родную систему, и вот тут-то нас ожидает облом - когда мы устанавливали GRUB2, он нежно переименовал файлик menu.lst в menu.lst.pacsave (ладно хоть MBR не переписал), а вместо него подложил нам grub.cfg. Поэтому снова грузимся с нашей свежеприготовленной флешки, монтируем наш /boot-раздел и переименовуем файл назад.
Вот вроде и всё.
З.Ы. Написано по мотивам MultiBoot USB with Grub2
З.З.Ы. Интересно знать, какие утилиты/инструменты/дистры и т.д. держат на флешках жители welinux'а.
гхм. Мне одному всегда казалось, что на флешку можно установить образ тупо при помощи dd?
на своей - рабочие файлы и какое-то музло
на своей - рабочие файлы и какое-то музло
Таким образом можно держать на флешке несколько исошников разных ОС, на самом деле очень удобно.
Я пользовался этим ресурсом. К сожалению, я не нашел там все ответы на мои вопросы.
Интересная статья. Раньше всегда ставил grub на флешку, потом осознал, что чаще всего подопытный компьютер-то у меня один. Поэтому в mbr этого компьютера стоит grub, одна из строк которого дефолтом нацелена на умолчанные ядро и рамдиск флешки, просто редактирую на лету.
а в грабе втором есть консоль как в первом по команде grub? что-то я не нашел способа в линуксе запустить консоль.
зы. а вообще на флешке grub4dos понравился но после использования на десктопе grub2 поглядываю что бы его на флешку лепить
menu.lst.pacsave
мда. а ниче чтобы yaourt -S grub2 отработало надо первый граб удаляеть? отсюда и menu.lst в pacsave ушло и весь первый граб (кроме некоторых файлов который при установке граба на диск легли в /boot/grub) удалился =)зы. а вообще на флешке grub4dos понравился но после использования на десктопе grub2 поглядываю что бы его на флешку лепить
З.З.Ы. Интересно знать, какие утилиты/инструменты/дистры и т.д. держат на флешках жители welinux'а.
раньше slitaz и tinycore(с модулями) и win pe в оперативку грузившуюся - но в последнее время мне это нафиг не надо и не держу ничего кроме фоток музыки видео при переносе с одного компа на другой =)
а в грабе втором есть консоль как в первом по команде grub? что-то я не нашел способа в линуксе запустить консоль
Есть. Вызывается по CTRL+C
мда. а ниче чтобы yaourt -S grub2 отработало надо первый граб удаляеть?
На мой взгляд ничего страшного не происходит. Вернуть первый GRUB можно так же легко, как и поставить второй.
Есть. Вызывается по CTRL+C
так это в самом грабе при загрузке меня интересует виз загруженной системы консоль граба вызвать - в первом была команда grub
На мой взгляд ничего страшного не происходит. Вернуть первый GRUB можно так же легко, как и поставить второй.
ну я о том же, просто "А теперь снова перегружаемся в свою родную систему, и вот тут-то нас ожидает облом" покоробило - он нас там не ожидает, мы сами снесли граб и хотим что бы он грузился с нашими удаленными файлами
Ура! Это именно то, что я давно искал :) Раньше делал себе такой загрузочный диск на базе какого-то популярного менеджера загрузки, не помню точно название. А теперь всё пытался сделать это же на флешке, и никак не получалось.
Спасибо!
Есть только одно замечание - в пунктах 1-6 не хватает следующего:
6.1 Открываем iso образ в менеджере архивов и распаковываем оттуда файлы в созданную нами директорию casper в корне флешки (может, их можно взять и из своей инсталляции Linux, не подумал сразу):
/casper/vmlinuz
/casper/initrd.lz
Если initrd называется initrd.gz а не initrd.lz, то соответственно корректируем grub.cfg
И всё работает :)
Спасибо!
Есть только одно замечание - в пунктах 1-6 не хватает следующего:
6.1 Открываем iso образ в менеджере архивов и распаковываем оттуда файлы в созданную нами директорию casper в корне флешки (может, их можно взять и из своей инсталляции Linux, не подумал сразу):
/casper/vmlinuz
/casper/initrd.lz
Если initrd называется initrd.gz а не initrd.lz, то соответственно корректируем grub.cfg
И всё работает :)
Именно в данном случае нет необходимости в распаковке casper'а в корень. Достаточно одной таблэтки, а именно - iso-образа. Как раз в этом прелесть данного способа.
А, тогда я понял в чём была моя проблема. Достаточно было посмотреть, как внутри ISO называются vmlinuz и initrd - у меня ведь ISO убунты, и в нём initrd.gz, а не initrd.lz. И исправить это в grub.cfg. То-то он ругался на не найденный файл...
З.З.Ы. Интересно знать, какие утилиты/инструменты/дистры и т.д. держат на флешках жители welinux'а.
Мое меню выглядит так:
title find and load NTLDR of Windows NT/2K/XP
title find and load BOOTMGR of Windows VISTA
title Alkid Live CD (2009)
title Dos Live
title MS DOS
title Active Password Changer
title Victoria 3.51
title Hiren`s BootCD 9.6 RU
title Memtest86+ v2.01
title Acronis True Image
title Acronis Disk Director
title Partition Magic
title Android
title Pmagic..
title Puppy 4.2.1
title xPUD 0.8.9
title Xubuntu
title Ubuntu Netbook Remix
title GeeXboX
title MoviX
title -----------------Antivirus---------------------------
title AVIRA Live Antivirus
title BitDefender Rescue
title Panda Software Rescue
title Kaspersky Rescue
title Dr.Web LiveUSB
title Reboot
title ShutDown
PS: Антивирусы по моему уже не работают.. Флешка USB-HDD 100Gb
Сэр, а не могли бы вы выложить полный скрипт меню - у меня трудности с этим новым грабом... linux16 для memtest я уже сделал, Slitaz вроде как тоже заработал, а с остальным не всё понятно... Offline NT Password Editor не хочет грузиться, говорит Load kernel first, Windows LiveCD вообще не понятно как грузить (надо попробовать наверное chainloader (loop)/setupldr.bin или типа того). Поделитесь, что чем может, плиз :)
Спасибо.
Спасибо.
Вот что у меня работает:
menuentry \"Slitaz\" {
loopback loop /iso/slitaz-cooking.iso
linux (loop)/boot/bzImage boot=boot iso-scan/filename=/iso/slitaz-cooking.iso lang=C kmap=uk rw root=/dev/null autologin
initrd (loop)/boot/rootfs.gz
}
menuentry \"Memory Test\" {
loopback loop /iso/linuxmint8.iso
linux16 (loop)/isolinux/memtest
}
А вот это - нет (Boot kernel first говорит, или что-то типа того):
menuentry \"Offline NT Password Editor\" {
loopback loop /iso/cd080802.iso
linux (loop)/vmlinuz boot=casper iso-scan/filename=/iso/cd080802.iso noeject noprompt --
initrd (loop)/initrd.gz,(loop)/scsi.cgz
}
menuentry \"Slitaz\" {
loopback loop /iso/slitaz-cooking.iso
linux (loop)/boot/bzImage boot=boot iso-scan/filename=/iso/slitaz-cooking.iso lang=C kmap=uk rw root=/dev/null autologin
initrd (loop)/boot/rootfs.gz
}
menuentry \"Memory Test\" {
loopback loop /iso/linuxmint8.iso
linux16 (loop)/isolinux/memtest
}
А вот это - нет (Boot kernel first говорит, или что-то типа того):
menuentry \"Offline NT Password Editor\" {
loopback loop /iso/cd080802.iso
linux (loop)/vmlinuz boot=casper iso-scan/filename=/iso/cd080802.iso noeject noprompt --
initrd (loop)/initrd.gz,(loop)/scsi.cgz
}
В общем, интересующихся направляю сюда:
http://mgerards.net/blog/?p=16
Отсюда становится понятно, что GRUB2 может конечно передать управление любому загрузчику с ISO образа, но вопрос только в том, сможет ли потом этот загрузчик работать с ISO или нет. Виндовый - не может. Для линуксов - надо изучать параметры загрузки каждого конкретного ядра.
http://mgerards.net/blog/?p=16
Отсюда становится понятно, что GRUB2 может конечно передать управление любому загрузчику с ISO образа, но вопрос только в том, сможет ли потом этот загрузчик работать с ISO или нет. Виндовый - не может. Для линуксов - надо изучать параметры загрузки каждого конкретного ядра.
Стесняюсь спросить - а может ли GRUB-Legacy загружать iso-образы? С этим вопросом я так толком и не разобрался. Конкретно интересует загрузка Ubuntu из iso.
GRUB4DOS - может, наверное и GRUB Legacy сумеет. Но надо разбираться. Он передаёт управление ISO образу, тот грузит ядро и initrd. Если больше там ничего и нету (типа Acronis, Tiny Core Linux) - то по идее всё будет нормуль. Если же в образе ещё какие-то файлы для загрузки есть - то надо чтоб он их сам нашёл внутри этого образа (тут может помочь iso-scan/filename, fromiso или какой там параметр есть у данного дистра), либо же вытаскивать эти файлы из ISO наружу. Ниже работающие примеры из Sever CD Repair 12 May 2009 (там GRUB4DOS):
title Acronis DiskDirector Suite 10.0.2161 RU
map --mem /acronis/ADDS_10.0.2161.iso (hd32)
map --hook
chainloader (hd32)
title Frenzy Live CD v.1.1
map /boot/frenzy-1.1-boot-ru.iso (hd32)
map --hook
chainloader (hd32)
для Frenzy нужные файлы из ISO вытащены наружу.
title Acronis DiskDirector Suite 10.0.2161 RU
map --mem /acronis/ADDS_10.0.2161.iso (hd32)
map --hook
chainloader (hd32)
title Frenzy Live CD v.1.1
map /boot/frenzy-1.1-boot-ru.iso (hd32)
map --hook
chainloader (hd32)
для Frenzy нужные файлы из ISO вытащены наружу.
Спасибо, работает!
Только я сделал два пункта, для загрузки в режиме LiveCD, и в режиме установки соответственно. И еще добавил параметры для русской локали и раскладки.
Вот мой grub.cfg:
Только я сделал два пункта, для загрузки в режиме LiveCD, и в режиме установки соответственно. И еще добавил параметры для русской локали и раскладки.
Вот мой grub.cfg:
menuentry "Ubuntu 9.10 LiveCD" {
loopback loop /iso/ubuntu-9.10-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-9.10-desktop-i386.iso locale=ru_RU.UTF-8 console-setup/layoutcode=ru noeject noprompt --
initrd (loop)/casper/initrd.lz
}
menuentry "Ubuntu 9.10 Install" {
loopback loop /iso/ubuntu-9.10-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper only-ubiquity iso-scan/filename=/iso/ubuntu-9.10-desktop-i386.iso locale=ru_RU.UTF-8 console-setup/layoutcode=ru noeject noprompt --
initrd (loop)/casper/initrd.lz
}
в пятницу искал как бы такое сделать, спасибо, прямо праздник какой-то!
товарищи подскажите как быть.
флешка разбита на два раздела, граб ставил из под ленни, поставился нормально, грузится. пытаюсь сделать загрузку кубунты для нетбуков,мой grub.cfg:
menuentry "Kubuntu 9.10 netbook" {
loopback loop /iso/kubuntu-9.10-netbook-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/kubuntu-9.10-netbook-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.lz
}
при загрузке показывает меню, пытается грузиться и сразу говорит
error: You need to load the kernel first.
нагуглить ничего внятного не смог
флешка разбита на два раздела, граб ставил из под ленни, поставился нормально, грузится. пытаюсь сделать загрузку кубунты для нетбуков,мой grub.cfg:
menuentry "Kubuntu 9.10 netbook" {
loopback loop /iso/kubuntu-9.10-netbook-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/kubuntu-9.10-netbook-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.lz
}
при загрузке показывает меню, пытается грузиться и сразу говорит
error: You need to load the kernel first.
нагуглить ничего внятного не смог
А как сделать чтоб 2 разных дистра грузились с этой флешки?
В статье написано только способ с 1.
В статье написано только способ с 1.
по аналогии. в моем посте просто дан пример.
на вскидку - ложите необходимый iso-образ на флешку, прописываете параметры загрузки и в добрый путь :-)
на вскидку - ложите необходимый iso-образ на флешку, прописываете параметры загрузки и в добрый путь :-)
Спасибо за реактивный ответ.
Я уже через Unetbootin по старинке закинул iso и поставил Arch Linux.
Я уже через Unetbootin по старинке закинул iso и поставил Arch Linux.
папка casper может находится только в корне.
А если в корне, но переименовать, к примеру, в casper1?
$ sudo grub-install --no-floppy --root-directory=/media/usb /dev/sdb
/sbin/grub-setup: warn: Your embedding area is unusually small. core.img won't fit in it..
/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and its use is discouraged..
/sbin/grub-setup: error: if you really want blocklists, use --force.
имею такую ошибку. =( что я делаю не так?
вопрос снят. надо было форматнуть флешку по этому ману
http://rlab.ru/doc/repair_usb_flash_linux.html
http://rlab.ru/doc/repair_usb_flash_linux.html
/usr/sbin/grub-bios-setup: предупреждение: Попытка установить GRUB на диск с несколькими разметками разделов. Это пока не поддерживается..
/usr/sbin/grub-bios-setup: предупреждение: Встраивание невозможно. При имеющихся параметрах GRUB можно установить только с помощью списка блоков (blocklists). Однако, список блоков является НЕНАДЁЖНЫМ механизмом и его лучше не использовать..
/usr/sbin/grub-bios-setup: ошибка: не будет продолжена с использованием blocklists.
Я так понимаю что это ненормально, тавлю на флешку 8гиг.
/usr/sbin/grub-bios-setup: предупреждение: Встраивание невозможно. При имеющихся параметрах GRUB можно установить только с помощью списка блоков (blocklists). Однако, список блоков является НЕНАДЁЖНЫМ механизмом и его лучше не использовать..
/usr/sbin/grub-bios-setup: ошибка: не будет продолжена с использованием blocklists.
Я так понимаю что это ненормально, тавлю на флешку 8гиг.
Я для себя нашёл отличную тулзу которая может делать мультбут USB сразу с iso-файлов, причем как linux так и windows и других животных грузить умеет, качать её вот тут: http://www.pendrivelinux.com/multiboot-create-a-multiboot-usb-from-linux/
Потом просто открываешь приложение, выбираешь iso-файл и она сама всё правит. При желании потом можно руками поковырять так как нужно.
Потом просто открываешь приложение, выбираешь iso-файл и она сама всё правит. При желании потом можно руками поковырять так как нужно.
ещё мультибут:
Gooplusplus YUMI-based Multiboot 650MB MINI
http://www.gooplusplus.com/multiboot-2013-mini/
Gooplusplus YUMI-based Multiboot 2/4/8GB
http://www.gooplusplus.com/multiboot-2013/
Gooplusplus YUMI-based Multiboot 650MB MINI
http://www.gooplusplus.com/multiboot-2013-mini/
Gooplusplus YUMI-based Multiboot 2/4/8GB
http://www.gooplusplus.com/multiboot-2013/
Варёз :)