То, что вы пытаетесь достичь, это растягивать загрузочную технологию :) Однако я думаю, что это возможно, хотя я недостаточно осведомлен, чтобы дать полное представление.
Во-первых, как уже было сказано, требования к дистрибутивам очень разные. Во-вторых, хорошая вещь, с другой стороны, вы также можете найти дистрибутивы, которые требуют минимальных требований.
Я бы порекомендовал использовать 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.
Я надеюсь, что мог бы дать некоторые идеи, хотя это не полный проход.