GRUB на USB-накопителе - добавление ОС

9

Немного предыстории:

  • Исходя из в значительной степени Windows (хотя я знаком с Ubuntu и т. Д.) И использую компьютер с Windows 7 для выполнения этой задачи
  • Вы успешно установили GRUB на MBR USB-накопителя (8 ГБ FAT32):
  • Создали базовую структуру на диске: / boot / grub, / boot / img, / boot / kernel

Вопрос:

У меня есть некоторые базовые вопросы для начинающих, но у меня возникли проблемы с поиском ответов через Google / StackExchange и т. Д.

  • Я понимаю, что в папке / boot / img / [SystemName] будет храниться образ для конкретной системы, которая может использовать различные (или одни и те же) версии ядер Linux, хранящиеся в каталоге / boot / kernel (по крайней мере, так я хотел бы его настроить)
  • Однако большинство этих систем просто имеют ядро ​​в своих каталогах, называемое «linux» (без указания версии). Я могу выяснить, какое ядро ​​они все используют, но какое самое лучшее место, чтобы заставить сами ядра копировать в / boot / kernel?
  • После того, как я получу ядра, я думаю, что остальное в основном копирует устройство в / boot / img / и создает соответствующую запись в menu.lst, правильно? Я могу сделать это на основе системы, как только я смогу получить ссылки на ядра.

Общая цель:

Я пытаюсь создать 8 ГБ флэш-накопитель USB, который позволит мне загружать несколько ОС из меню загрузки GRUB. Чтобы добавить или вычесть операционные системы, я хотел бы только скопировать соответствующие файлы в папку / boot / img / [SystemName] и / boot / kernel в зависимости от ситуации, а затем отредактировать файл menu.lst. Итак, этот первый шаг - поиск ядер, которые разделяют многие из этих ОС, так как я надеюсь уменьшить дублирование.

SeanKilleen
источник
А что вы хотите иметь после добавления ядра? Хотите рабочую ОС, с которой вы можете загрузиться?
Phunehehe
@phunehehe, спасибо! Я обновил пост, чтобы включить мою общую цель.
SeanKilleen
Похоже, вы пытаетесь записать образы LiveCD для различных дистрибутивов на USB-накопитель, а затем сможете загрузить их. Это правильно?
Водин
@ Водин: По сути, да. LiveCD (но с возможностью записи, поскольку он будет на записываемых носителях), с одним унифицированным загрузчиком для всех необходимых мне дистрибутивов / инструментов.
SeanKilleen

Ответы:

4

То, что вы пытаетесь достичь, это растягивать загрузочную технологию :) Однако я думаю, что это возможно, хотя я недостаточно осведомлен, чтобы дать полное представление.

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

Я бы порекомендовал использовать GRUB4DOS в качестве загрузчика. Посмотрите эту ссылку, как использовать его с USB (потому что он имеет команду find --set root -, которая важна, если у вас есть мобильное устройство, такое как USB).

Затем вы должны решить, сколько разделов вы будете использовать. Стандартная «Полная установка» всегда в одном разделе. Так что если у вас есть 8 ГБ USB-накопитель и занимает 4 ГБ раздела (что позволяет минимальную установку), вы будете ограничены 2 различными «Полными установками» основных дистрибутивов, таких как Debian или Fedora.

Тем не менее, есть несколько небольших и специализированных дистрибутивов Linux. Например, «Puppy Linux» очень маленький и имеет специальный режим «Frugal Installation». Он поставляется во многих вариантах (например, есть MacPup с попытками реализовать Apple, такой как Desktop, или Fatdog64, который является 64-битным Linux).

В этом режиме «Frugal Installation» он просто использует ровно 1 каталог и может быть установлен параллельно с существующим Linux или Windows на жестком диске (или USB). Я уверен, что есть другие дистрибутивы, которые поддерживают подобные режимы.

Поскольку Puppy Linux имеет небольшой размер (<150 МБ) и при условии, что вы резервируете небольшой файл сохранения для каждой установки (512 МБ), вы можете легко установить на USB-накопитель 10 различных операционных систем. Есть даже более мелкие Linux (Slitaz, Tinycore), которые вы можете использовать.

Например, я прикрепляю файл menu.lst (GRUB4DOS) из моей текущей установки на ПК. Первые 8 записей - это разные установки Puppy Linux на hd0,2 (т.е. 3-й раздел на 1-м жестком диске), затем минимальный Установка Debian в небольшом дополнительном разделе, а также оригинальная Windows-XP.

timeout=10
default=0  

  title Linux Buero (on /dev/sda3)
  root (hd0,2)
  kernel /puppy431-de/vmlinuz psubdir=puppy431-de pkeys=de ro vga=normal
  initrd /puppy431-de/initrd.gz

  title Live CD build (on /dev/sda3)
  root (hd0,2)
  kernel /puppylivecdbuild/vmlinuz psubdir=puppylivecdbuild ro vga=normal
  initrd /puppylivecdbuild/initrd.gz

  title sage developement(on /dev/sda3)
  root (hd0,2)
  kernel /Sage46dev/vmlinuz psubdir=Sage46dev pfix=nocopy ro vga=normal
  initrd /Sage46dev/initrd.gz

  title sage developement test and fun
  root (hd0,2)
  kernel /Sage-test/vmlinuz psubdir=Sage-test pfix=nocopy,noram ro vga=normal
  initrd /Sage-test/initrd.gz

  title Lupq 511
  find --set-root --ignore-floppies /lupq511/initrd.gz
  kernel /lupq511/vmlinuz psubdir="lupq511" pfix=nocopy pkeys=de ro vga=normal
  initrd /lupq511/initrd.gz 

  title Lupu 520 - New kid on the block
  find --set-root --ignore-floppies /lupu-520/initrd.gz
  kernel /lupu-520/vmlinuz psubdir="lupu-520" pfix=nocopy pkeys=de ro vga=normal
  initrd /lupu-520/initrd.gz 

  title wary beta (on /dev/sda3)
  root (hd0,2)
  kernel /wary/vmlinuz psubdir=wary ro vga=normal
  initrd /wary/initrd.gz

  title spup (on /dev/sda3)
  root (hd0,2)
  kernel /spup/vmlinuz psubdir=spup ro vga=normal
  initrd /spup/initrd.gz

  title Debian (on /dev/sda2)
  find --set-root --ignore-floppies /initrd.img
  kernel /vmlinuz root=/dev/sda2 ro
  initrd /initrd.img

  title Windows NT/2K/XP\nStart Windows if installed on HDD
  fallback 7
  find --set-root --ignore-floppies /ntldr
  chainloader /ntldr

boot

Menu.lst на вашем USB может выглядеть примерно так же, команда GRUB4DOS find --set-root --ignore-floppies /lupq511/initrd.gz (ищет этот файл на всех дисках) может быть очень полезна, если вы используете USB, поэтому вам не нужно использовать фиксированные записи для вашего диска.

С вышеупомянутой информацией некоторые комментарии на ваши оригинальные вопросы:

Q: * Я понимаю, что в папке / boot / img / [SystemName] будет храниться образ для конкретной системы, которая может использовать различные (или одинаковые) версии ядер Linux, хранящиеся в каталоге / boot / kernel (по крайней мере, вот как бы я хотел это настроить)

A: Я не уверен, что это сработает, так как большинство крупных дистрибутивов ожидают получить исключительное право на свой раздел и установить определенную структуру каталогов для своих файлов. На мой взгляд, лучше соблюдать настройки по умолчанию и предоставлять то, что ожидает дистрибутив, то есть некоторым нужен эксклюзивный раздел, а другим будет просто каталог в общем разделе. Я не говорю, что невозможно установить несколько операционных систем на один раздел не по умолчанию, но это напрашивается на неприятности и, на мой взгляд, не практично для новичка в Linux. Возможный обходной путь, который я упоминаю в нижней части моего поста («Wubi-like» установки).

Q: * Тем не менее, большинство этих систем просто имеют ядро ​​в своих каталогах под названием "linux" (без указания версии). Я могу выяснить, какое ядро ​​они все используют, но как лучше всего заставить сами ядра копировать в / boot / kernel?

A: Я думаю, что ядра должны идти именно там, где обычно есть дистрибутивы. Нет необходимости хранить их в отдельной папке / boot / kernel, и я также не рекомендовал бы пытаться разделить их между дистрибутивами. Память для ядра минимальна (примерно 2-3 МБ). Версий и подверсий действительно много, а иногда даже и специальные патчи, применяемые к ядрам дистрибутивов. Подключить другое / непроверенное ядро ​​- ненужный эксперимент.

Q: * После того, как я получу ядра, я думаю, что остальное в основном копирует устройство в / boot / img / и создает соответствующую запись в menu.lst, правильно? Я могу сделать это на основе системы, как только я смогу получить ссылки на ядра.

A: Как упоминалось ранее, лучше создавать отдельные разделы для тех дистрибутивов, которые в них нуждаются, и смешивать их в не очень жадных дистрибутивах в своих собственных папках. Рассматривайте ядро, initrd и остальную часть дистрибутива как единое целое.

Одна последняя идея. Если вы не хотите использовать разные разделы, вы можете попробовать что-то вроде установки «WUBI» для дистрибутивов, требующих полной установки в свой собственный раздел. Это означает, что вы создаете большие файлы со своими файловыми системами ext2 / ext3 на USB, затем монтируете их как «диски» и устанавливаете в них ОС. (Я называю это WUBI, потому что это самое известное приложение).

Для загрузки «установки Wubi» должна быть следующая запись в Grub4dos menu.lst.

# Add the ntfs module - just needed for Installation on a Windows Partition
insmod ntfs
# Set root (normally would be sda1, or hd0,1 Change as necessary
set root=(hd0,1)
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz root=/dev/sda1 loop=/ubuntu/disks/root.disk ro
initrd /boot/initrd/initrd.img
boot

От сюда .

Видите ли, есть две команды «set root», вторая после «root.disk», которая содержит Linux, смонтирована как loop0.

Я надеюсь, что мог бы дать некоторые идеи, хотя это не полный проход.

Эмиль ВидманЭмиль
источник
Извините, я получил вторую ссылку на запись Grub для Wubi неправильно (поскольку это мой первый пост, моя вторая ссылка была "защищена от спама"). Правильная ссылка: blogold.chinaunix.net/u3/113851/showart_2311251.html
Эмиль ВидманнЭмиль
1

Вот два руководства:

Я думаю, что оба используют отдельные разделы для каждого ядра.

Записи в " /boot/grub/menu.lst " выглядят так:

title Unity-2010 -- With Persistence
kernel (hd0,0)/isolinux/vmlinuz vga=788 livecd=livecd fromusb
root=Label=Unity-2010 changes_dev=LABEL=Unity-2010 acpi=on fstab=rw,noauto
initrd (hd0,0)/isolinux/initrd.gz

title Unity-2010 -- No Persistence
kernel (hd0,0)/isolinux/vmlinuz vga=788 livecd=livecd fromusb
root=Label=Unity-2010  acpi=on fstab=rw,noauto
initrd (hd0,0)/isolinux/initrd.gz
oposit
источник
0

Это действительно зависит от того, какие дистрибутивы вы там ставите. Некоторые из них делают некоторые неприятные вещи в initramfs, поэтому это становится трудным. Некоторые живые дистрибутивы ищут ярлык, некоторые ищут uuid. Вы не можете предоставить это.

Решение не простое, вы должны создать новые настроенные ram-диски для ваших живых дистрибутивов.

Надеюсь, я не ошибся: D

admiral0
источник
0

Вам наверняка понадобится какое-то пользовательское пространство для каждого из этих ядер. (Программы, конфигурация, работает.) Традиционно, вы бы использовали по крайней мере один раздел для каждой отдельной ОС, а раздел GRUB сам был бы смонтирован как / boot (так что вы фактически не имели бы загрузку как подкаталог этого раздел; это будет корневой каталог с grub / в качестве подкаталога.)

Самба
источник