SDB:安装其他发行版

跳转到:导航搜索
多重 Linux 安装可以安装到同一台计算机上,甚至可以安装到同一块硬盘上。本 HOWTO 将帮助您确保它们正确启动、按需共享数据,并且不会相互覆盖设置。


Linux 多重启动的陷阱

Linux 安装需要一个来启动,如果同一台计算机上需要安装多个系统——尤其是在同一块硬盘上——则必须注意确保它们各自拥有自己的启动加载器,或者它们共享的启动加载器已为所有系统正确配置。

通常,在不同的安装之间共享数据也是可取的,尽管这可以通过共享一个“home”分区来实现,但这可能会导致严重且难以检测的问题,当一个安装的配置文件(例如 dotfiles [1])被另一个覆盖时。最好使用一个中性的“数据”分区,然后在启动时自动挂载,并为用户账户设置所需的读写权限。另外,用户的“文档”和“音乐”等数据目录,或浏览器书签等特定文件,可以放置在共享数据分区上,然后使用符号链接(symlinks [2])透明且安全地访问它们。本 HOWTO 将解释所有这些步骤。


布局和策略

在安装任何东西之前,请决定您打算如何在安装之间划分磁盘,以及如何控制哪个系统启动。尽管存在许多控制启动的策略,但这里将详细描述两种策略——您选择哪种策略将部分取决于您的硬件设置。

策略一:BIOS 弹出菜单

何时使用:如果您有足够的空间将每个 Linux 安装的根分区放在单独的磁盘上,并且您的 BIOS 支持弹出启动菜单。

如果您可以将每个 Linux(或类似的类 Unix 操作系统)安装在单独的磁盘上,那么确定哪个系统启动的最简单方法是使用 BIOS 弹出菜单——通常在启动期间按下 Esc 等键即可访问。如果您的系统有这样的菜单,这是一个完全可行且简单的解决方案。请查阅您的主板或计算机手册以进行确认。

  • 为每个 Linux 根分区分配一个单独的磁盘。
  • 其他 Linux 分区(如 home、data 或 swap 分区)和 Windows 安装不需要单独的磁盘。

策略二:使用主启动加载器

何时使用:如果您打算将多个 Linux 安装的根分区放在任何单个磁盘上,或者您的 BIOS 不支持弹出启动菜单。

如果您需要在任何给定磁盘上放置多个 Linux(或类似的类 Unix 操作系统)安装,一种有效的策略是使用一个启动加载器来链式加载 [3] 其他系统。

  • 指定一个您将用于控制启动的 Linux 安装。我们称之为您的主 Linux,它所在的磁盘称为您的主磁盘。
  • 分区可以放置在系统允许的任何位置。

替代策略

如果您有许多 Linux 安装,您可以考虑使用 GRUB 分区。请参阅 [4]


分区和安装

首先,必须为额外的 Linux 安装(以及可选的数据分区)创建空间。您可以使用 GParted Live [5] 等专业工具,或 openSUSE LiveCD 等标准 Linux 实时系统在安装前创建分区,或者您可以在安装过程中在安装例程中创建它们。

准备

Icon-warning.png
警告:编辑分区可能导致永久性数据丢失,并且只有在整个物理磁盘上的所有重要数据都已备份到另一个物理磁盘后才能尝试。

如果您需要缩小 Windows 分区,首先多次对其进行碎片整理以避免数据丢失非常重要。然后使用 Windows 分区工具调整分区大小——请查阅您的 Windows 文档。Linux 分区通常不需要碎片整理。

一般注意事项

  • 分区大小以及可启动分区在磁盘中的位置,都存在系统相关的限制。这在现代系统上不应该成为问题,但如果安装无法启动,则将其移近磁盘起始位置可能会有所帮助。
建议:为每个安装分配一个 15 - 25 GB 的根分区。如果空间不足,也可以少一些,但您将无法安装太多软件。
  • 许多人共享一个交换分区以节省不同 Linux 安装之间的空间,但这可能会在您休眠一个系统然后启动另一个系统时导致问题。如果您在从休眠状态恢复时遇到问题,请考虑尝试单独的交换分区。
建议:分配一个单一的交换分区,不大于您的 RAM 大小。如果您的 RAM 很大,小一些也可以,但您可能无法休眠您的系统。
  • 通常建议您在安装 Linux 时创建一个单独的 home 分区,而不是将用户的主目录留在根分区上。这会将用户数据与系统文件隔离开来,并允许更轻松地备份和重新安装,或在版本之间进行升级。如果您并行安装许多不同的 Linux 系统,您最终会得到许多分区,这可能会造成混淆,但在现代系统上通常本身不会导致问题。另外,请记住,如果您使用数据分区,您的用户数据文件将不会占用带有主目录的分区上的空间。因此,将主目录留在根分区上问题较少。
  • 如果您希望使用数据分区,您应该确保将其格式化为所有 Linux 安装都可以读取的文件系统。如果您不确定,ext3 和越来越多的 ext4 是安全的选择。
建议:如果您不使用数据分区,请将所有可用空间分配给每个 Linux 安装的 home 分区。如果您使用数据分区,请为其分配大部分空间,并将其格式化为 ext4:您将不需要创建 home 分区,但如果您创建,请将其设为小尺寸——任何超过 5GB 的空间可能都是不必要的。

安装

Icon-warning.png
警告:替换操作系统的主引导记录 (MBR [6]) 可能会阻止访问加密的、预安装的诊断或恢复分区。它还可能使 Windows Service Packs 的安装更加复杂。尽管以下说明不要求您替换 MBR,但其他一些 Linux 发行版可能会在未经许可的情况下这样做。请查阅您正在安装的发行版的文档,如果不确定,请在非关键驱动器上进行试验。

安装每个系统(有关如何在已安装的系统上移动引导加载器的提示,请参阅下一节)。

  • 对于已安装有其他操作系统(如 Windows)的磁盘上的任何 Linux 安装,请将引导加载器安装到分区。MBR 很可能包含允许磁盘上其他系统启动的引导代码,不应不必要地更改它。请参阅下一节获取提示。
  • 对于尚未安装其他操作系统的每个磁盘,请将一个 Linux 引导加载器安装到 MBR(这必须包括主 Linux 的引导加载器,如果它位于此类磁盘上)。将任何其他引导加载器安装到其分区。
  • 请注意,某些 Linux 安装程序可能会在未经许可的情况下安装到第一个磁盘的 MBR。如果需要,请参阅

以相同的顺序为每个 Linux 安装创建用户帐户,以简化数据共享——有关详细信息,请参阅下面的共享数据访问。


修复启动

现在确保每个系统都能启动,并且默认情况下启动正确的系统。

策略一:BIOS 弹出菜单

使用 BIOS 弹出菜单尝试启动每个 Linux 系统。对于任何无法启动的系统;

策略二:使用主启动加载器

启动系统。如果您的主 Linux 未能启动;

  • 您可能需要在 BIOS 中将主磁盘设置为首先启动。请查阅您的主板或计算机手册。

主 Linux 系统现在应该启动。根据您的主 Linux 使用的引导加载器,使用以下说明准备它以启动其他 Linux 安装。

LILO

以 root 身份,编辑文件/etc/lilo.conf

为每个安装添加以下行;

other=/dev/hdXY
 label="<name>"

将磁盘号替换为 X,分区号替换为 Y,并为 替换为适当的名称。要链式加载磁盘 MBR 上的引导加载器,只需使用 hdX。保存文件,然后运行;

# lilo

更新 LILO。

GRUB

GRUB(有时称为 GRUB 1 或 GRUB legacy)是 1.9 版本之前的任何 GRUB 版本。以 root 身份编辑文件/boot/grub/menu.lst

在包含菜单条目的部分,为每个安装添加以下行;

title <name>
    rootnoverify(hdX,Y)
    chainloader +1

将磁盘号替换为 X,分区号替换为 Y,并为 替换为适当的名称。请记住 GRUB 从零开始计数,因此磁盘一、分区一将称为 (hd0,0)。要链式加载磁盘 MBR 上的引导加载器,只需使用 (hdX)。保存文件。

如果您在查找分区时遇到问题,请尝试以 root 身份运行以下命令;

# grub
# find /etc/lilo.conf
# find /boot/grub/menu.lst
# find /boot/grub/grub.cfg
# quit

GRUB 应该返回一个可启动分区列表,分别带有 LILO、GRUB 和 GRUB 2。

GRUB 2

GRUB 2(1.9 及更高版本)旨在自动检测其他操作系统。以 root 身份运行以下命令;

# update-grub

希望在重启后,您的系统将检测到您的其他安装。如果任何安装未正确检测到,请编辑文件/etc/grub.d/40_custom以 root 身份。为每个要链式加载的安装添加以下行;

menuentry "<name>" {
    set root=(hdX,Y)
    chainloader +1    
}

将磁盘号替换为 X,分区号替换为 Y,并为 替换为适当的名称。请记住 GRUB 2 从零开始计数磁盘,从一开始计数分区,因此磁盘一、分区一将称为 (hd0,1)。要链式加载磁盘 MBR 上的引导加载器,只需使用 (hdX)。保存文件。

另外,如果您正在链式加载所有其他操作系统,您可以禁用尝试自动检测它们的脚本,以减少菜单混乱。以 root 身份;

# chmod -x /etc/grub.d/30_os-prober

在重启之前,您需要更新 GRUB 2。以 root 身份;

# update-grub

共享数据访问

本节包含可选建议。

用户标识符

Linux 使用用户标识符 (UID [7]) 确定文件系统权限。通常,每个用户的 UID 都应该是唯一的,并且大于 999。如果您在每个系统上以相同的顺序设置用户,它们可能不需要调整。通过启动每个系统,并为每个用户运行以下命令进行检查;

# su <username>
$ id

替换用户名,并在请求时输入其密码。对于任何不正确的,以 root 身份使用以下命令更改它们;

# usermod -u <UID> <username>

替换所需的 UID 和用户名。属于用户但位于用户主目录之外的文件可能需要将其所有权更改为新的 UID,尽管新安装不应该出现此问题。

自动挂载数据分区

要在启动时自动挂载数据分区,请启动到每个安装中。以 root 身份运行以下命令创建一个挂载点;

# mkdir /mnt/data

编辑文件/etc/fstab,也以 root 身份。添加以下行;

/dev/sdXY            /mnt/data    <filesystem>       defaults      0  2

将数据分区的磁盘号替换为 X,其分区号替换为 Y,并替换为您已将其格式化的文件系统。根据您的发行版的安全模型,您可能需要使用“umask”更改权限。请查阅本地的“man fstab”或您的发行版说明。

共享用户数据目录

您还可以将用户的“音乐”和“文档”等数据目录放在数据分区上,以便在不同的安装之间共享。

Icon-warning.png
警告:您需要删除用户的数据目录。请先将其内容移动到安全的地方!

确保您的数据分区已挂载。以 root 身份;

# mount -a

在数据分区上为每个要使用共享目录的帐户创建一个目录;

# mkdir /mnt/data/<username>

创建每个共享目录;

# mkdir /mnt/data/<username>/

确保原始数据目录为空;

# ls -a /home/<username>/

如果存在任何内容(除了“.”和“..”),请将其移动到安全的地方。删除目录;

# rmdir /home/<username>/

创建指向其新位置的符号链接;

# ln -s /mnt/data/<username>/ /home/<username>/

启动到将使用共享目录的每个 Linux 系统中。重复“确保原始数据目录为空”中的步骤。最后,确保目录具有正确的权限;

# chown <username> /mnt/data/<username> -R

共享其他文件

其他文件,例如浏览器的书签,也可以通过相同的方式共享。何时可以安全地执行此操作是判断性问题;始终保持良好的备份,因为从同一软件的两个不同版本访问文件可能会导致程序或系统不稳定以及数据丢失。


参见


外部链接

  • 如果您遇到问题,请搜索论坛,如果仍然遇到问题,请发帖:[8]
  • 对于 GRUB 分区:[9]