Was Sie erreichen möchten, ist die Stretching-Boot-Technologie :) Ich denke jedoch, dass dies möglich ist, obwohl ich nicht gut genug informiert bin, um einen vollständigen Durchgang zu ermöglichen.
Erstens haben Distributionen, wie bereits erwähnt, sehr unterschiedliche Anforderungen. Zweitens, das Gute ist, dass Sie auch Distributionen finden können, die nur minimale Anforderungen erfordern.
Ich würde empfehlen, GRUB4DOS als Bootloader zu verwenden. Unter diesem Link erfahren Sie, wie Sie es mit USB verwenden (da es den Befehl find --set root - enthält, der wichtig ist, wenn Sie ein mobiles Gerät wie USB haben).
Dann müssen Sie entscheiden, wie viele Partitionen Sie verwenden möchten. Die Standard-Vollinstallation befindet sich immer in einer einzelnen Partition. Wenn Sie also einen 8-GB-USB-Stick haben und eine 4-GB-Partition verwenden (was eine minimale Installation ermöglicht), sind Sie auf 2 verschiedene "Vollinstallationen" von Hauptdistributionen wie Debian oder Fedora beschränkt.
Es gibt jedoch einige kleine und spezialisierte Linux-Distributionen. Zum Beispiel ist "Puppy Linux" sehr klein und hat einen speziellen "Frugal Installation" -Modus. Es gibt viele Varianten (z. B. gibt es MacPup mit Versuchen, einen Apple wie Desktop oder Fatdog64, ein 64-Bit-Linux, zu implementieren).
In diesem "sparsamen Installationsmodus" wird nur genau 1 Verzeichnis verwendet und kann parallel zu einem vorhandenen Linux oder Windows auf der Festplatte (oder USB) installiert werden. Ich bin sicher, dass es andere Distributionen gibt, die ähnliche Modi unterstützen.
Da Puppy Linux klein ist (<150 MB) und vorausgesetzt, Sie reservieren für jede Installation eine kleine Sicherungsdatei (512 MB), können Sie problemlos 10 verschiedene Betriebssysteme auf dem USB-Stick installieren. Es gibt noch kleinere Linuxes (Slitaz, Tinycore), die Sie verwenden könnten.
Als Beispiel hänge ich die Datei menu.lst (GRUB4DOS) von meiner aktuellen PC-Installation an. Die ersten 8 Einträge sind alle verschiedene Puppy Linux-Installationen auf hd0,2 (dh die 3. Partition auf der 1. Festplatte), dann gibt es eine minimale Debian-Installation in einer kleinen zusätzlichen Partition und auch das ursprüngliche 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
Die Datei menu.lst auf Ihrem USB-Stick könnte ähnlich aussehen. Der Befehl GRUB4DOS
find --set-root --ignore-floppies /lupq511/initrd.gz
(sucht in allen Laufwerken nach dieser Datei) kann sehr nützlich sein, wenn Sie USB verwenden, sodass Sie keine festen Einträge für Ihr Laufwerk verwenden müssen.
Mit den obigen Informationen einige Kommentare zu Ihren ursprünglichen Fragen:
F: * Ich verstehe, dass der Ordner / boot / img / [Systemname] das Image für ein bestimmtes System speichert, das möglicherweise verschiedene (oder dieselben) Versionen von Linux-Kerneln verwendet, die im Verzeichnis / boot / kernel gespeichert sind (zumindest) so möchte ich es einrichten)
A: Ich bin nicht sicher, ob das funktionieren wird, da die meisten großen Distributionen erwarten, dass sie das ausschließliche Recht auf ihre Partition haben und eine bestimmte Verzeichnisstruktur für ihre Dateien installieren. Meiner Meinung nach ist es besser, das Standard-Setup zu respektieren und anzugeben, was die Distribution erwartet, dh einige benötigen eine exklusive Partition, andere sind nur mit einem Verzeichnis auf einer gemeinsam genutzten Partition zufrieden. Ich sage nicht, dass es nicht möglich ist, mehrere Betriebssysteme nicht standardmäßig auf einer Partition zu installieren, aber es bittet um Probleme und ist meiner Meinung nach für einen Linux-Neuling nicht praktikabel. Eine mögliche Problemumgehung erwähne ich am Ende meines Beitrags ("Wubi-like" -Installationen).
F: * Die meisten dieser Systeme haben jedoch nur einen Kernel in ihren Verzeichnissen namens "Linux" (ohne Angabe der Version). Ich kann herausfinden, welchen Kernel diese alle verwenden, aber was ist der beste Ort, um die Kernel selbst zum Kopieren nach / boot / kernel zu bringen?
A: Ich denke, die Kernel sollten genau dort sein, wo die Distributionen sie normalerweise haben. Sie müssen nicht in einem separaten Ordner / boot / kernel gespeichert werden, und ich würde auch nicht empfehlen, sie zwischen Distributionen freizugeben. Der Speicherplatz für einen Kernel ist minimal (wie 2-3 MB). Es gibt wirklich viele Versionen und Unterversionen und manchmal gibt es sogar spezielle Patches, die auf Kernel von Distributionen angewendet werden. Das Einstecken eines anderen / nicht getesteten Kernels ist ein nicht benötigtes Experiment.
F: * Nachdem ich die Kernel erhalten habe, stelle ich mir vor, dass der Rest das Gerät hauptsächlich nach / boot / img / kopiert und den richtigen Eintrag in menu.lst erstellt, richtig? Ich kann das System für System tun, sobald ich die Kernel erhalten habe, auf die ich verweisen kann.
A: Wie bereits erwähnt, erstellen Sie besser separate Partitionen für die Distributionen, die sie benötigen, und mischen Sie die nicht so gierigen Distributionen in ihre eigenen Ordner. Behandle Kernel, Initrd und den Rest der Distribution als Einheit.
Eine letzte Idee. Wenn Sie keine unterschiedlichen Partitionen verwenden möchten, können Sie versuchen, "WUBI" für die Distributionen zu installieren, die eine vollständige Installation auf einer eigenen Partition erfordern. Dies bedeutet, dass Sie große Dateien mit eigenen ext2 / ext3-Dateisystemen auf dem USB-Stick erstellen, diese dann als "Laufwerke" bereitstellen und das Betriebssystem darin installieren. (Ich nenne es WUBI, weil dies die bekannteste Anwendung ist).
Das Folgende sollte ein Grub4dos menu.lst-Eintrag sein, um eine "Wubi-Installation" zu starten.
# 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
Von hier aus .
Sie sehen, es gibt 2 "set root" -Befehle, der zweite nach "root.disk", der Linux enthält, wird als loop0 gemountet.
Ich hoffe, ich konnte einige Ideen geben, obwohl es kein vollständiger Durchgang ist.