Озадачился недавно созданием такой USB-флэшки, чтобы и грузиться с неё можно было бы (желательно несколько вариантов загрузки), и файлы хранить можно было.
Прогуглив как следует, было найдено решение, которым спешу поделиться (и сохранить себе на память, конечно же :) ).
Понадобятся:
Приступим к форматированию (например, в ntfs):
В Вашем случае, раздел девайса может называться и sdc1, и sdd1 - будьте внимательны.
Затем можно установить метку раздела, дабы сразу было понятно, что это. Например, так:
Для начала необходимо создать директорию, куда будем монтировать. Например,
Настало время определиться, где же будут лежать iso-образы, которые будут грузиться с флэшки. Мне представляется, что директория /iso в корне флэшки - крайне подходящий вариант. Создаём такую любым удобным способом. В моём случае:
Осталось подготовить grub.cfg, отвечающий нашим нуждам. Открываем файл любым редактором, например, nano:
В итоге, мы имеем USB-flash носитель с установленным загрузчиком, двумя директориями /boot и /iso. Эти директории нужны для загрузки с флэшки. В остальное свободное место можно совершенно спокойно складывать разные файлы: полезные и не очень. Таким образом, если носитель воткнуть до старта системы, то при разрешённой в BIOS (*EFI) загрузке с USB будут грузиться положенные iso-файлы ОС, а если же флэшка вставлена во время работы системы, то она будет открываться как файловое хранилище. Просто и удобно ;)
P.S. 20.05.2014 заметка была существенно обновлена, чтобы отражать существующие реалии.
Прогуглив как следует, было найдено решение, которым спешу поделиться (и сохранить себе на память, конечно же :) ).
Понадобятся:
- сам носитель USB-flash
- дистрибутив GNU/Linux из которого и будем производить операции
- ntfsprogs, ntfs-3g, grub2
- iso-файлы ОС, которые будут загружаться с флэшки
Приступим к форматированию (например, в ntfs):
mkfs.ntfs -f /dev/sdb1Если команда не срабатывает (такое бывает в Kubuntu 13.04, например), то вместо mkfs.ntfs нужно использовать mkntfs. В остальном - без изменений.
В Вашем случае, раздел девайса может называться и sdc1, и sdd1 - будьте внимательны.
Затем можно установить метку раздела, дабы сразу было понятно, что это. Например, так:
ntfslabel -v /dev/sdb1 MultiBootUSBПосле этого нужно примонтировать данный раздел.
Для начала необходимо создать директорию, куда будем монтировать. Например,
mkdir /media/MultiBootUSBИ после этого с чистой совестью можно монтировать:
mount /dev/sdb1 /media/MultiBootUSB/Теперь установим загрузчик на носитель. Обратите внимание, поскольку ставим на носитель, а не на раздел носителя, то цифры 1 после sdb нет:
grub2-install --boot-directory=/media/MultiBootUSB/boot /dev/sdbВажно:
- в некоторых дистрибутивах команда может вызываться как grub-install (без двойки).
- в старых версиях grub вместо --boot-directory=/media/MultiBootUSB/boot надо было писать --root-directory=/media/MultiBootUSB/
Настало время определиться, где же будут лежать iso-образы, которые будут грузиться с флэшки. Мне представляется, что директория /iso в корне флэшки - крайне подходящий вариант. Создаём такую любым удобным способом. В моём случае:
mkdir /media/MultiBootUSB/isoи складываем в неё нужные нам iso-файлы. Я положу дистрибутив Ubuntu 14.04.
Осталось подготовить grub.cfg, отвечающий нашим нуждам. Открываем файл любым редактором, например, nano:
nano /media/MultiBootUSB/boot/grub/grub.cfgИ вписываем туда нужные параметры. В рассматриваемом случае это:
set default="0"Пункт меню для Ubuntu будет справедлив и для любой другой *buntu-системы и им подобных, нужно лишь поменять переменную isofile во второй строке на подходящий, ну и само название пункта - menuentry.
set timeout=5
menuentry "ubuntu-14.04-desktop-amd64" {
set isofile="/iso/ubuntu-14.04-desktop-amd64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet splash noprompt --
initrd (loop)/casper/initrd.lz
}
В итоге, мы имеем USB-flash носитель с установленным загрузчиком, двумя директориями /boot и /iso. Эти директории нужны для загрузки с флэшки. В остальное свободное место можно совершенно спокойно складывать разные файлы: полезные и не очень. Таким образом, если носитель воткнуть до старта системы, то при разрешённой в BIOS (*EFI) загрузке с USB будут грузиться положенные iso-файлы ОС, а если же флэшка вставлена во время работы системы, то она будет открываться как файловое хранилище. Просто и удобно ;)
P.S. 20.05.2014 заметка была существенно обновлена, чтобы отражать существующие реалии.
:~$ sudo grub-install --root-directory=/media/MultiBootUSB /dev/sdb
ОтветитьУдалить/usr/sbin/grub-setup: предупр: Your embedding area is unusually small. core.img won't fit in it..
/usr/sbin/grub-setup: ошибка: встраивание невозможно, но оно необходимо для междисковой установки.
:~$
Что делать в таком случае?
прошу великодушного прощения, модерационная негодная система не уведомила меня о комментарии, а сам я вот только что забёг сюда для очередного опустошения накопившегося и заметил.
Удалитьпо существу вопроса могу сказать следующее: нужно освободить место на носителе, скорее всего. также можно попробовать добавить ключи --force --recheck
Иван, а можно вместо Ubuntu 10 добиться загрузки из iso Ubuntu 12?
ОтветитьУдалитьЯ попробовал, но пишет:
[2,836,452] Kernel panic: not syncing: VFS: Unable to mount root fs on unknown block (1,0)
Дальше идет Call Trace и все виснет...
Определённо можно, поскольку я так делал (правда, приходилось чуть-чуть править опции).
УдалитьПрошу приложить grub.cfg в том виде, в котором он используется и возникает ошибка.
Только что попробовал с 12.10 и вот такими строками:
Удалитьmenuentry "Ubuntu 12.10" {
set isofile="/iso/ubuntu-12.10-desktop-amd64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash noprompt --
initrd (loop)/casper/initrd.lz
}
Всё работает.
P.S. в отдельных случаях вместо vmlinuz в четвёртой строке придётся писать vmlinuz.efi.signed (кстати, мне как раз что-то связанное с EFI приходилось дописывать, но, к сожалению, ту флэшку я утратил и что именно там было в grub.cfg - не могу сказать)
Да в нем все то же, я только местами пункты меню поменял и изменил название дистрибутива:
Удалитьset default="0"
set timeout=5
menuentry "ubuntu-12.04.2-desktop" {
set isofile="/iso/ubuntu-12.04.2-desktop-i386.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash noprompt --
initrd (loop)/casper/initrd.lz
}
menuentry "Parted Magic" {
set isofile="/iso/pmagic-11.11.11.iso"
loopback loop $isofile
linux (loop)/pmagic/bzImage iso_filename=$isofile edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rwnomce sleep=10 loglevel=0
initrd (loop)/pmagic/initramfs
}
Еще, кругом пишут, что grub.cfg создается сам - у меня он не создается автоматически (раза три пробовал grub-install).
Создается только принудительно (когда sudo grub-mkconfig -o /media/Ubuntu 12.0/boot/grub/grub.cfg).
Но там столько всего наверчено, что я его не решился применять...
А надо было в него вставить меню для iso-шек?
Вроде всё правильно.
УдалитьПогляжу, в чём может быть дело. Ошибка GRUB это известная, но как она тут оказалась - неясно.
А железо какое? Какие диски висят в системе при загрузке?
Железо - HP7800 (http://reviews.cnet.com/desktops/hp-compaq-business-dc7800/4507-3118_7-32598385.html)
ОтветитьУдалитьДиски висят:
(hd0,msdos4), (hd1,msdos5),(hd1,msdos1),(hd2,msdos1)
1 диск с 2-мя разделами ntfs (hd1), 1 диск с одним разделом ntfs (hd2) и флешка FAT16 (hd0)
Очень и очень странно.
УдалитьТолько что попробовал загрузить ubuntu-12.04.2-desktop-i386 со скопированной выше строкой:
menuentry "ubuntu-12.04.2-desktop" {
set isofile="/iso/ubuntu-12.04.2-desktop-i386.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash noprompt --
initrd (loop)/casper/initrd.lz
}
у меня всё работает.
вопрос такого плана: а из-под какой системы с какой версией Grub проводилась, собственно, установка?
P.S. а флэшка в FAT16 - это та, с которой ведётся установка? Может тут собака зарыта, я-то с NTFS пробую (маловероятно, но всё же).