终极 Linux/Windows 系统

作者:Kevin Farnham

我最近将我的东芝笔记本电脑转换成了一个双启动系统,运行 Windows XP Pro 和 Ubuntu Linux。我希望我能够透明地使用跨平台应用程序,如 Mozilla Firefox、Mozilla Thunderbird、AbiWord、Gnumeric 和 SciTE,无论当前启动的是哪个操作系统。本文描述了我为实现这一目标而采取的步骤。

用于共享应用程序数据的双启动计算机配置

在下文中,我假设您已经拥有一台双启动计算机,其中安装了可工作的 Linux 和 Windows 操作系统。您还必须有一个足够大的额外磁盘分区,用于存储共享应用程序数据。此分区必须可由两个操作系统读取和写入。FAT32 (VFAT) 是合乎逻辑的选择。

我的笔记本电脑预装了 Windows XP Pro 在一个 30GB 的硬盘上。在我决定将其转换为双启动系统之前,这台电脑已经被充分使用,磁盘几乎已满。我卸载了大量数据,并使用 Windows 磁盘碎片整理程序将我的 Windows 总大小减少到 15GB 以下。然后,我使用了 Linux System Rescue CD 上的实用程序来调整原始 Windows 分区的大小,并创建了如下的新分区

  • 分区 1:Windows NTFS 主分区,18.5GB。

  • 分区 2:Linux ext3 主分区,5GB。

  • 分区 3:Linux 交换分区,1GB。

  • 分区 4:FAT32 分区,用于共享应用程序数据,5GB。

使用仅 30GB 总磁盘空间的双启动系统并不理想。一旦我加载了存档的电子邮件、工作文档和各种正在进行的跨平台软件开发项目,我的共享应用程序数据分区就已使用了 80%。为了更理想的设置,我建议至少 60-80GB 的磁盘空间。在这种情况下,我会为 Windows 分配 20GB,为 Linux 分配 10GB,为 Linux 交换分区分配 1-2GB,并将剩余空间作为 FAT32 共享分区。

配置和访问共享磁盘分区

Windows 将 FAT32 分区视为单独的磁盘驱动器,并为其分配一个驱动器盘符。分配的盘符取决于连接到系统的存储设备,例如,软盘或 CD/DVD 驱动器。在我的系统上,Windows 将 FAT32 分区识别为驱动器 E:。使用 Windows 资源管理器验证您的 FAT32 分区的 Windows 驱动器盘符。

当我安装 Ubuntu Linux 时,我选择了在启动时挂载 FAT32 分区,使用挂载点 /share。在 Linux 启动后,您可以使用 UNIX df 命令(清单 1)验证 FAT32 分区是否已挂载。

清单 1. 显示已挂载 /share 分区的 UNIX df 命令

kevin@lyratoshibaubuntu:~$ df -k
Filesystem   1K-blocks      Used Available Use% Mounted on
/dev/hda2      5036316   1748816   3031668 37%  tmpfs
/dev/shm        184936         0    184936  0%  tmpfs
/dev/hda1       184936     12588    172348  7% /lib/modules/2.6.12-9-386/volatile
/dev/hda1     18427896   9955608   8472288 55% /media/hda1
/dev/hda4      4713876    417898   4295978  9% /share

虽然 /share 分区已挂载,但存在一个问题。默认情况下,root 用户拥有 /share 分区。标准用户将没有读取或写入权限,并且无法运行访问共享数据的程序。幸运的是,UNIX mount 命令提供了选项,允许分区以 root 用户以外的用户拥有的所有权进行挂载。这是允许您使用您的正常登录名读取和写入共享分区的一种方法。

如果只有一个人使用计算机,或者只有一位用户需要访问共享分区,那么最好的计划是在启动时挂载 /share 分区,但要为您的登录名提供所有权和完全访问权限。要配置此项,您需要知道您的用户 ID 和组 ID。/etc/passwd 文件存储此信息。以下是我的用户名 (kevin) 在我的 /etc/passwd 文件中的条目

kevin@lyratoshibaubuntu:~$
cat /etc/passwd | grep kevin
kevin:x:1000:1000:kevin,,,:/home/kevin:/bin/bash

用户 ID 是第二个冒号后的数字。组 ID 是第三个冒号后的数字。示例显示,在我的系统上,用户 kevin 被分配了用户 ID 1000 和组 ID 1000。

现在,您必须编辑 /etc/fstab 文件。此文件系统表标识了启动 Linux 系统可以期望看到的 файловые системы,并指示 Linux 对每个 файловые системы 执行哪些操作。您需要切换到 root 用户帐户才能编辑该文件。

首先,制作当前工作 /etc/fstab 文件的备份副本,以便在出现问题时可以恢复到该版本。接下来,将 fstab 文件导入编辑器,例如 vi、emacs、gedit 或 scite。找到 /share 文件系统的行,并将 <options> 列中的数据更改为defaults,uid=uuuu,gid=gggg其中uuuugggg是来自 /etc/passwd 的用户 ID 和组 ID。

完成后的 /etc/fstab 文件应类似于清单 2。

清单 2. /etc/fstab 文件,其中包含共享分区的启动时挂载,并将所有权授予特定用户

kevin@lyratoshibaubuntu:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>      <options>                 <dump>  <pass>
proc            /proc           proc        defaults                   0       0
/dev/hda2       /               ext3        defaults,errors=remount-ro 0       1
/dev/hda1       /media/hda1     ntfs        defaults                   0       0
/dev/hda4       /share          vfat        defaults,uid=1000,gid=1000 0       0
/dev/hda3       none            swap        sw                         0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto                0       0

如果多个用户帐户需要访问共享分区,则需要不同的策略。一种选择是不在启动时挂载 /share 分区,而是创建一个脚本,供用户执行以挂载分区,并赋予他们自己所有权和完全访问权限。

要禁用在启动时挂载 /share,请编辑 /etc/fstab 并在 /share 文件系统行的开头放置一个 #。这将使该行成为注释。然后,在 /etc/passwd 中找到每个需要完全访问 /share 分区的用户的用户 ID 和组 ID。最后,将类似于以下内容的脚本文件放入每个用户的主目录中,在 uid= 和 gid= 后分别插入每个用户的用户 ID 和组 ID

kevin@lyratoshibaubuntu:~$ cat mountShare.csh
sudo mount -t vfat -o uid=1000,gid=1000 /dev/hda4 /share

登录 Linux 后,用户打开一个终端窗口并执行命令脚本以挂载具有所需访问设置的 FAT32 分区

bash ./mountShare.csh

无论共享分区是如何挂载的,您都可以通过路径 / 的长列表验证您是否拥有 /share 目录的所有权和完全访问权限

kevin@lyratoshibaubuntu:~$ ls -l / | grep share
drwxr-xr-x   18 kevin kevin  4096 1969-12-31 19:00 share
使用您的共享应用程序数据空间

此时,您已准备好使用在 Windows 和 Linux 上运行的应用程序来处理存储在您的共享应用程序数据空间中的文档。如果我在 Windows 下工作,我使用驱动器 E: 存储和访问我的文档。同样,FAT32 分区的驱动器盘符在您的系统上可能不同。如果我在 Linux 下工作,我会在我的 /share 分区中存储和访问相同的文档。

在开始编辑文档之前,请确保您在 Windows 和 Linux 上安装了每个应用程序的相同版本。不要仅仅希望两个不同版本的应用程序之间不会有配置或数据文件结构更改。

Mozilla 套件

我使用 Mozilla Firefox 作为我的 Web 浏览器,并使用 Mozilla Thunderbird 作为我的电子邮件客户端。在我将笔记本电脑转换为双启动系统之前,我已经运行 Firefox 很长时间了,并且它有很多书签。我还保存了多年的电子邮件消息。自然地,使用我的新双启动系统,我希望运行 Firefox 并使用我以前保存的所有书签,并且我希望能够在 Windows 和 Linux 中透明地使用 Thunderbird,并完全访问我的所有存档电子邮件。

这可能吗?感谢 Mozilla 套件开发人员采用的配置策略,答案是“是的”!Firefox 和 Thunderbird 都通过配置文件组织其配置。每个配置文件都存储在其自己的子目录中,默认情况下,该子目录位于应用程序的顶级配置目录下方。每个配置文件的名称和位置都存储在名为 profiles.ini 的索引文件中。此结构使我们能够灵活地将任何配置文件的配置数据存储在用户可访问的任何磁盘位置,例如,在我们的 FAT32 共享应用程序数据分区上。

在进行任何配置更改之前,请确保 Firefox 和 Thunderbird 未运行。然后,在共享分区上创建一个目录,用于存储您的 Mozilla 应用程序配置数据,以便 Windows 和 Linux 都可以访问。我选择创建一个 users 目录,其中包含一个名为 kevin 的子目录,这是我在两个操作系统下的用户名。如果我稍后决定在系统上拥有多个用户,这将很方便。在这种情况下,我将为每个用户的唯一配置数据创建一个单独的路径,以便登录用户可以访问和维护他或她自己的配置。

在 Windows 下,我的应用程序配置目录的路径是 E:\users\kevin。在 Linux 下,路径是 /share/users/kevin。

Mozilla Firefox 共享配置

作为参考,我使用 Firefox 1.5 版本执行了我的 Firefox 共享配置。但是,这些步骤也应该适用于 1.0.x 版本的 Firefox。

我的 Windows Firefox 安装包含了我所有的个人书签和其他配置设置,因此我首先重新配置了该 Firefox。在 Windows 中,找到您的用户名在 Documents and Settings 目录下的 Application Data 目录。您应该看到一个名为 Firefox 的目录,其中有一个名为 Profiles 的子目录。Profiles 目录将至少有一个子文件夹。以下是它在我的系统上的外观

The Ultimate Linux/Windows System

图 1. Windows Firefox 应用程序数据文件夹位置和结构

profiles.ini 文件告诉 Firefox 在哪里找到其配置数据。在编辑器中打开 profiles.ini,您应该看到类似这样的内容

[General]
StartWithLastProfile=0

[Profile0]
Name=default
IsRelative=1
Path=Profiles/z9qffpsf.default
Default=1

此 profiles.ini 文件将我的配置标识为具有单个配置文件,配置数据位于 Profiles/z9qffpsf.default 文件夹中,相对于 profiles.ini 所在的目录。查看图 1 中的文件夹树,您可以看到 Profiles/z9qffpsf.default 文件夹,其中包含各种子文件夹。这是我所有唯一 Firefox 配置信息的位置。无论我是在 Windows 还是 Linux 中启动,我都希望能够访问(读取和写入)此数据。在您自己的 Firefox 安装中,*.default 文件夹将具有不同的名称。在执行以下描述的步骤时,您需要替换您自己的配置文件目录的名称。

为了使我的配置数据可用于两个操作系统,我在我的共享 E:\users\kevin 目录下创建了一个 Firefox\Profiles 目录,然后将原始 Firefox Profiles\z9qffpsf.default 配置目录复制到该路径。图 2 显示了结果。

The Ultimate Linux/Windows System

图 2. 移动的 Firefox 配置目录

我重命名了 C: 驱动器上的原始 z9qffpsf.default 目录,以维护备份副本,以防发生意外灾难。

接下来,我编辑了 profiles.ini 以指向 Firefox 配置配置文件的新位置。我将 IsRelative 标志设置为零,并将 Path 位置设置为我复制配置文件夹的共享分区位置。在设置路径时,请确保使用 Windows 样式的反斜杠。否则,Windows Firefox 将无法识别新位置。以下是我的编辑后的 profiles.ini 文件

[General]
StartWithLastProfile=0

[Profile1]
Name=default
IsRelative=0
Path=E:\users\kevin\Firefox\Profiles\ z9qffpsf.default

我将此文件的副本另存为 profiles_new.ini,以便在第一次尝试出现问题时可以返回到该文件。

当您完成所有这些操作后,启动 Firefox。如果弹出一个窗口询问您是否要从另一个浏览器导入设置,则您的设置不正确。在这种情况下,Firefox 将覆盖 profiles.ini 文件并创建一个新的默认配置目录。检查您的新 profiles.ini 文件的备份副本以及共享分区上的目录名称,进行任何必要的更正,重新保存您更正后的 profiles.ini 文件,然后尝试再次启动 Firefox。当您拥有所有正确的配置元素时,Firefox 将像往常一样启动,并且您的所有书签都可用。

现在,必须配置 Linux Firefox 以使用相同的配置文件。启动进入 Linux 并使用描述的方法之一挂载共享分区。在 Linux 中,Firefox 将配置文件存储在用户主目录下的 .mozilla 目录中。进入此目录,然后进入 firefox 子目录,并执行ls -l。您将看到一个 profiles.ini 文件、pluginreg.dat 文件和一个配置配置文件子目录。

要使 Linux Firefox 使用放置在共享分区上的配置文件,请编辑 profiles.ini 文件。将 IsRelative 标志设置为零,并将 Path 设置为正确的 /share 位置。以下是我的修改后的 Linux profiles.ini 文件

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=0
Path=/share/users/kevin/Firefox/Profiles/ z9qffpsf.default
Default=1

启动 Firefox。如果一切正确,您将看到您的标准 Firefox 会话,其中包含您最初使用 Windows Firefox 存储的所有书签。如果这没有发生,请再次检查 profiles.ini 文件,确保 /share 分区已正确挂载,具有正确的所有权和权限,并验证共享 Firefox 配置目录的准确路径。将 profiles.ini 替换为您的更正版本,然后再次启动 Firefox。

Mozilla Thunderbird 共享配置

Thunderbird 的配置组织类似于 Firefox 的配置组织。作为参考,我使用 Thunderbird 1.0.7 版本进行了共享配置。

在 Windows 中,在您的用户名的 Documents and Settings 目录树下的 Application Data 中找到 Thunderbird 目录。您可能会认为 Thunderbird 目录会位于 Mozilla 下,与 Firefox 目录平行,但我的系统并非如此。在 Thunderbird 目录中,您将看到熟悉的 profiles.ini 文件和一个 Profiles 文件夹,与 Firefox 相同。

为了使您的所有存储电子邮件都可以从您的 Windows 和 Linux 安装中访问,必须将配置文件夹移动到共享分区。我在我的共享分区上创建了一个 \users\kevin\Thunderbird 目录,并将 Profiles 目录从默认 Windows 位置复制到新的共享目录中。在我的情况下,从 Windows 资源管理器中看到的视图如图 3 所示。

The Ultimate Linux/Windows System

图 3. 移动的 Windows Thunderbird 配置目录

我重命名了我的原始配置目录以进行备份,并确保我的操作 Windows Thunderbird 不再访问它。

接下来,我更改了 profiles.ini 文件以指向新的 Thunderbird 应用程序数据位置。我的初始 profiles.ini 看起来像这样

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=1
Path=Profiles/19ximc3t.default

我将 IsRelative 更改为零,并将 Path 设置为共享分区上的新 Thunderbird 位置,将路径目录分隔符切换为 Windows 标准反斜杠。以下是我的修改后的文件

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=0
Path=e:\users\kevin\Thunderbird\Profiles\ 19ximc3t.default

当您完成所有这些操作后,启动 Thunderbird。如果一切都已正确修改,Thunderbird 将正常启动。如果配置不正确,Thunderbird 将询问是否创建新配置文件。在这种情况下,取消并退出程序,检查您的新 profile.ini 文件以及共享分区上 Thunderbird 文件的位置。更正任何问题,然后再次运行 Thunderbird。

在 Linux 上,您将在您的主目录下的 .mozilla-thunderbird 目录中找到 Thunderbird profiles.ini 文件。编辑 profiles.ini 以识别您从 Windows 在共享分区上设置的配置作为 Thunderbird 应使用的配置文件。同样,将 IsRelative 设置为零,并将 Path 设置为共享位置。以下是我的修改后的 Linux Thunderbird profiles.ini 文件

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=0
Path=/share/users/kevin/Thunderbird/Profiles/ 19ximc3t.default
Default=1

启动 Thunderbird,您应该可以完全访问您的所有电子邮件帐户以及最初由在 Windows 上运行的 Thunderbird 保存的所有电子邮件消息。如果 Thunderbird 询问是否创建新配置文件,请退出并检查您的工作。

结论

拥有双启动 Linux 和 Windows 笔记本电脑非常方便。通过在两个操作系统之间共享应用程序数据,可以扩展这种便利性。能够从 Linux 和 Windows 透明地运行 Mozilla Firefox 和 Thunderbird 进一步增强了双启动系统的多功能性。

虽然创建共享配置需要大量步骤,但对于熟悉在 Windows 和 Linux 操作系统中查找、复制和编辑文件和目录结构的人来说,各个步骤并不困难。

本文的资源: /article/8954

Kevin Farnham 主要从事涉及文档索引、数学建模和仿真以及科学数据采集、分析和呈现的软件工程项目。他的公司 Lyra Technical Systems, Inc. 位于康涅狄格州东北部的乡村地区。

加载 Disqus 评论