这145个系统是:-
3 Dos
5 Windows
137 Linux
我也在一台 Darwin x86 电脑上安装了大多数的基于PC的BSD和Solaris系统,但是这些系统不喜欢和其他一大堆的系统共存,所以我只有把它们装到另一台电脑上直到我找到一个解决这个技术问题的方法为止。
这个指南只有三个步骤。
第一步 -一个简单的软件方案
一 个操作系统需要住在一个家里面。对我来说那就是一个分区。我使用一块 2×300Gb Pata 硬盘和一块 2×200 Sata 硬盘,并分了152个分区。通常我把一个操作系统放在一个分区里。作为扩展分区的每个硬盘没有自己的存储空间,一个纯数据分区放置我的个人数据,另一个纯数据分区放置公共引导装载器,还有所有Linux需要的一个Swap分区,最后我除去7个分区留下145个分区放置那145个操作系统。
在电脑上隐藏一个分区就不是物理的把分区隐藏起来。只是改变了它的分区类型号。通常是添加一个数字“1”。这样,如果一个FAT32和NTFS分区的类型号分别为 c 和 7,当改变为 1c 和17时,在微软系统中就会被得不可见。不隐藏它就是把数字“1”去掉。这是一个电脑中最古老的诀窍,还是在 Dos 是事实上的操作系统时被发明的,它允许用户引导多个操作系统。
安装微软系统可能需要它自己的MBR。引起我注意的是微软系统共享一个公共的MBR。这个MBR的功能是搜索4个主分区中的每一个,并启动引导标志打开的系统。
作为例子,这里有我在 hdc3 安装 Windows Vista 的简要步骤。
把硬盘 hda,sda 和 sdb 移走,把 hdc 插入先前被 hda 占据的机架位置。现在原来的 hdc3 对 Grub 来说就是 (hd0,2) 了。
启动 Dos 软盘,通过命令在硬盘恢复微软 MBR
命令:
fdisk /mbr
复制代码
启动 Grub 软盘,隐藏开头两个分区,然后用 geometry 检查硬盘
命令:
hide (hd0,0)
Hide (hd0,1)
Geometry (hd0)
复制代码
geometry 命令是在安装之前检查所有的东西是否状况良好。Hda3 应该已经为NTFS文件系统创建好足够的类型为7的空间。
安装 Windows Vista 并选择第三分区作为它的家。
安装后重启确认 Vista 是否正常工作。
关机,插上打算供给 Vista 永久的家的硬盘,也就是说有一个叫 hdc 的奴隶硬盘已经在第三主分区位置有一个和 hda3 一样大的分区,插放 Live CD,启动系统,在根用户终端通过命令把 Vista 系统克隆出去
命令:
dd if=/dev/hda3 of=/dev/hdc3 bs=32768
复制代码
然后我又关机,恢复所有的硬盘,又一次启动 Live CD,用它修正 hda3 中的 /boot/grub/menu.lst,通过下面的入口引导 hdc3 分区
命令:
title Vista @ hdc3
root (hd1,2)
hide (hd0,0)
hide (hd0,1)
hide (hd0,2)
hide (hd1,0)
hide (hd1,1)
unhide (hd1,2)
makeactive
map (hd1) (hd0)
map (hd0) (hd1)
chainloader +1
复制代码
两 个map声明指示 Grub交换 (hd0) 和 (hd1)的位置,以便当 Vista 启动时它会发现自己仍然按照原来的安装一样处于第一可引导硬盘的位置。5个 hide 声明是必需的,隐藏5个 Dos 和 Windows分区,防止 Vista 看到扰乱它的“C”盘状态。
我对其他微软系统使用相同的原理,设法在同一台电脑里搞上了3个版本的 Dos 和5 个版本的 Windows。更多微软系统能被容纳但是我所有能搞到的就这些了。 结尾注意事项
我 的初衷是学习 Linux,理解它如何工作并会引导它。当看到在 Linux 的世界是这是多么容易和有逻辑,我感觉巨大的惊奇。在使用了这么多年微软系统以后,看起来所有我不能理解的电脑如何工作的问题在 Linux 里面突然变得可以理解,因为 Linux 的系统内部工作是一个公开发表的知识。
人们可以对 Linux 说任何他喜欢的话,但是我2.5年的使用 Linux 教会我使用一个最古老的分区(FAT16)去安置一个陈旧的引导装载器(这里描述的 Grub就是当我开始学习 Linux时,GNU/Grub维护者已经公告停止转移他们的努力到新的 Grub 2去的支持的那个 Grub)去引导我能访问的145操作系统。而方案可笑的简单。
我很感激那些无私的维护和开发开源软件的 GNU/Linux 志愿者。我知道他们中有一些人冒着被抓钱公司起诉的风险工作,因为他们的努力减少了我们对商业软件的依赖。
2.5年以来我见证了 Linux 功能和易用性的巨大飞跃。我也从那么多国家贡献于把这些操作系统带给大众的努力中得到灵感。它们中的很多发行版在技术上很突出。 4# [size=+0]引导方案的说明注解
(1) 在一般情况下一个Linux用户能用任何一个发行版中的得到的第一个Grub和使用它的 menu.lst 引导剩下的144个系统。
(2) 标准的 Grub 执行程序使用 menu.lst 作为菜单文件,它不在/boot 就在/boot/grub 目录下。很少部分,特别是那些属于红帽家族的,使用一个指向 Grub.conf的符号链接。我只遇到一个或两个只使用 Grub.conf 而没有 menu.lst 的发行版。
(3) 那个简单的 Grub 引导方案使任何一个操作系统立即变得可引导当它的安装完成时,只要根分区被灌进了引导文件。一些早期发行版本比如 Suse 和 Debian运行一个两段式安装程序,需要重启来完成安装。这种安装方式不会影响我提出的引导方案。只要在第一阶段结束后引导要求的分区,安装程序会完成剩余的工作。
(4) 建议的引导方案是了解一般引导和特别是Grub 是如何工作的很好的范例。
(5) 不可能用 NTLDR,类NT Windows 比如 Win2k 和 XP 使用的引导程序,去引导我表单里那么多的 Dos 和 Windows,更不用说 Windows 启动时会影响的那么多 Linux,ini配置文件最多允许10个入口的静态界面。我从没试过所以也不能评论我认为它和NTLDR有区别的 Vista 新引导程序,。
(6) 从技术上说也没有可能用 Lilo 作这么一个引导方案,因为(a)Lilo会检查每一个入口,并且拒绝执行如果发现那不是一个有效的可引导分区,所以不要希望Lilo 接受一个为引导做准备的空分区。(b)Lilo也使用一个最大数目为27个引导镜像的静态引导界面。因此如果谁想要引导大量的系统,Grub 是唯一的选择。
(7) Grub 根据版本发布有很多不同的特性。明智的选择是在引导方案中使用最新版本0.97。Grub 可能会失败当你叫一个低版本的小弟去“链启动”它的大哥。
(8) 在我提议的简单引导方案使用时,Grub是最精力充沛的引导程序。这是因为引导过程完全不依赖于任何系统包括Linux 内核。一旦Grub 被Linux 创建进程,就是当在Bash 命令行调用 Grub shell时,它会承受任何内核可能带来的不足。比如在 Linux 启动之前Grub 会看到从BIOS那时得来的所有分区设备。可是当一个老的Linux 启动后它的内核可能不会预见大数字的分区,可能不会装载所有设备导致Grub无权使用那些大数字的BISO设备。因此用户相要在一个大数字的分区比如 hda60 恢复 Grub,这个Linux 命令可能会失败
命令:
它也证明了 Grub 能用同一命令引导操作系统而不必关心他们的类型。Grub 能在不需要被安装到操作系统里的情况下做到这一点,虽然对大多数用户来说他们只简单的使用从随便一个 Linux 或 Solaris那里搞来的 Grub。
作为系统的一部分,我也引导了一些BSD 和 Solairs 系统,但是我并没有把它们包含在我的计划里,因为安排上有一些复杂,以致于我要嵌套多层 Grub 菜单和隐藏整个扩展分区以防止 Linux 系统们的抱怨。
这个思路可能有点过时了,因为 Linux 已经停止使用 Pata 磁盘设备名称了,所以63个分区在一个 Pata 硬盘上已经不被2.6.20以后的内核支持了。所有SCSI/Sata/Pata/USB 磁盘都只能有15个分区,也可以在一个硬盘上搞出44个分区来但需要一些特别的安排。你也可以使用LVM但这可能对非 Linux 系统不怎么友好。
虽然你很熟练的完成了任务,可能通过使用虚拟化技术更容易(比如...你想开发跨平台软件,保留原始代码/内核作为对比校验),或者也许一台带 PC-on-a-card 附加的SUN 工作站。(虽然你可能不能在上面运行 Vista ,但我不认为有太多人会错过他如果他上面有145个 Linux 在运行)。 14#