您正在尝试实现的是扩展引导技术:)但是,尽管我不了解完整的演练,但我认为这是可能的。
首先,就像前面所说的,发行版有非常不同的要求。其次,另一方面,还可以找到需要最低要求的发行版。
我建议使用GRUB4DOS作为引导程序。请参阅此链接,了解如何将其与USB一起使用(因为它具有find --set root-命令,如果您拥有USB之类的移动设备,则该命令很重要)。
然后,您必须决定要使用多少个分区。标准的“完全安装”始终位于单个分区中。因此,如果您有一个8 GB的USB记忆棒并带有4 GB的分区(允许最小的安装),则您将只能使用2个不同的“完整安装”主要发行版,例如Debian或Fedora。
但是,有一些小型且专门的Linux发行版。例如,“ Puppy Linux”非常小,并且具有特殊的“节俭安装”模式。它具有多种风格(例如,MacPup尝试实现诸如台式机之类的Apple或64位Linux的Fatdog64)。
在这种“节俭安装”模式下,它仅使用1个目录,并且可以与硬盘(或USB)上的现有Linux或Windows并行安装。我确定还有其他支持类似模式的发行版。
由于Puppy Linux很小(<150 MB),并且假设您为每次安装都保留了一个小的保存文件(512 MB),因此可以轻松地在USB记忆棒上安装10种不同的操作系统。您甚至可以使用更小的Linux(Slitaz,Tinycore)。
例如,我从当前的PC安装中附加menu.lst(GRUB4DOS)文件,前8个条目都是hd0,2上不同的Puppy Linux安装(即,第一个硬键上的第三个分区),然后最小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
USB上的menu.lst看起来类似,find --set-root --ignore-floppies /lupq511/initrd.gz
如果使用USB,GRUB4DOS命令
(在所有驱动器中查找该文件)可能非常有用,因此您不必为驱动器使用固定条目。
通过以上信息,您可以对原始问题发表一些评论:
问:*我知道/ boot / img / [SystemName]文件夹将存储特定系统的映像,该系统可能使用存储在/ boot / kernel目录中的各种(或相同)Linux内核版本(至少,这就是我要设置的方式)
答:我不确定这是否行得通,因为大多数主要发行版都希望拥有其分区的专有权,并为其文件安装特定的目录结构。在我看来,最好遵循默认设置并提供分发期望的内容,即有些需要独占分区,有些只对共享分区上的目录感到满意。我不是说不可能以非默认的方式将多个操作系统安装到1个分区,但是这是麻烦的事,我认为这对Linux新手来说不切实际。我在文章底部提到了一个可能的解决方法(“类似Wubi的安装”)。
问:*但是,大多数这些系统在其目录中只有一个名为“ linux”的内核(没有说明版本)。我可以找出所有这些内核都使用哪个内核,但是让内核自己复制到/ boot / kernel的最佳位置是什么?
答:我认为内核应该准确地放在发行版通常包含它们的地方。无需将它们存储在单独的/ boot / kernel文件夹中,并且我也不建议尝试在发行版之间共享它们。内核的存储空间极小(例如2-3 MB)。确实有很多版本和子版本,有时甚至有特定的补丁应用于发行版的内核。将插件插入另一个/未试用的内核是不需要的实验。
问:*获得内核之后,我想剩下的大部分是将设备复制到/ boot / img /并在menu.lst中创建正确的条目,对吗?一旦我可以引用内核,就可以逐个系统地执行此操作。
答:如前所述,最好为需要它们的发行版创建单独的分区,并在自己的文件夹中混合一些不太贪婪的发行版。将内核,initrd和发行版的其余部分作为一个单元来对待。
最后一个想法。如果您不想使用其他分区,则可以尝试为发行版安装“ WUBI”之类的程序,要求完全安装到其自己的分区。这意味着您可以在USB上创建带有其自己的ext2 / ext3文件系统的大文件,然后将它们挂载为“驱动器”并将OS安装到其中。(我称它为WUBI,因为这是最著名的应用程序)。
以下应该是Grub4dos menu.lst条目,以启动“ Wubi安装”。
# 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
从这里。
您会看到,有2个“ set root”命令,包含Linux的“ root.disk”之后的第二个被挂载为loop0。
我希望我能提出一些想法,尽管这不是完整的演练。