科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在双引导Linux系统上实现OS自动切换 (2)

在双引导Linux系统上实现OS自动切换 (2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

利用本文中介绍的这些技巧,我们可以在一个双引导的机器上自动从一个操作系统切换到另外一个操作系统,无需任何人工干预。您可以使用本文提供的脚本在自己的机器上复制这种同时运行 Linux? 和 Windows? 的设置。

作者:shanya 来源:赛迪网技术社区 2007年10月21日

关键字: 操作系统 切换 Linux 引导

  • 评论
  • 分享微博
  • 分享邮件
 

挂载 Linux 分区

在为控制分区创建好空间之后,需要将其挂载到 Linux 中,这样就可以在 Linux 中看到这个分区。在本例中,我们将以下内容添加到了 /etc/fstab 中:

# /dev/hda8 /boot/control vfat umask=022,dmask=022,fmask=022 0 2然后使用下面的命令来创建挂载点并挂载这个文件系统:mkdir /boot/control mount /boot/control还需要更新 GRUB 在分区结果上维护的信息。在这个测试系统上,我们使用下面的命令:grub-install /dev/hda.

挂载 Windows 分区

通过(手工)重新启动到 Windows,验证上面的分区编辑步骤不会破坏 Windows 的引导过程。 然后为刚才创建的 Bootcontrol 卷分配一个驱动器字符。在现代版的 Windows 上,可以使用 Computer Management MMC snap-in(右键点击 My Computer,然后选择 Manage)。在以前的版本上,可以选择 Start > Administrative Tools.

图 1. 为 Bootcontrol 分区分配一个 Windows 驱动器字符

步骤 2. 重定向 GRUB 引导菜单

将 GRUB 配置文件 /boot/grub/menu.lst 放入 Bootcontrol 分区中,Windows 和 Linux 都可以对其进行写入操作。这让我们可以使用一个在两种操作系统上都可以运行的脚本来修改默认的引导设置。默认情况下,GRUB 不会在这个位置来寻找配置文件,因此我们必须在初始位置上通过一个小技巧来使用该文件。

打印原始文件的一个硬拷贝。如果 GRUB 加载失败,那么可以手工键入所需的命令来引导系统。有关的更多信息,请参阅 GRUB 的信息页。

在这个示例系统上,我们首先复制文件 cp /boot/grub/menu.lst /boot/control/menu.lst,然后将下面的内容(参见清单 2)添加到原始 /boot/grub/menu.lst 文件中,并将其放到现有引导选项之前。

清单 2. 让两个操作系统都可以访问引导文件

title BOOTCONTROL REDIRECT : PLEASE WAIT
root (hd0,7)
configfile /menu.lst
boot

确保 root 命令的参数对于您的系统来说是正确的。通常,驱动器是从 0 开始编号的(而不是采用从 a 到 z 的字母),分区也是从 0(而不是 1)开始编号的。因此对于我们的例子来说,/dev/hda8 变成了 (hd0,7)。我们从其他所有地方中删除 savedefault 命令,并更新以下设置,确保 10 秒种之后 Bootcontrol 选项会被选中。在 GRUB 文档中可以找到更多这方面的信息。default 0 timeout 10现在已经完成了 GRUB 配置的重定向,接下来将重新启动系统,检查菜单显示是否仍然正确。此处最常见的错误是确定分区时出现错误。请检验 parted 中的分区号(“Minor”)是否与 /etc/fstab 匹配,GRUB 在 /boot/grub/menu.lst 中使用的分区号是该编号减 1。

步骤 3. 配置 Bootcontrol

从后面的 下载 一节中下载 zip 文件,并将其展开到 Bootcontrol 分区中。这个 zip 文件包含了一个 Perl 脚本,用来以一种通用的方式处理切换操作系统的问题;还有几个用来在 Windows 和 Linux 之间实现切换的示例脚本。这些脚本期望将当前的工作目录设置成 Bootcontrol 分区。

以下是使用的脚本:

bootcontrol.pl,grub-config-file 参数是要编辑的配置文件的路径。通常应该修改 menu.lst,但是我们可能会希望通过使用 menu.lst 副本来测试所有的修改是否都像我们所期望的那样。

platform-title 参数被用作一个子字符串(技术上是一个正则表达式),以便与 /boot/control/menu.lst 中的标题字段进行匹配。该参数是不区分大小写的,bootcontrol.pl 会选择第一个匹配的实例。如果为 platform-title 指定的是一个数字,那么该数字会被当作是要引导的菜单选项(而不是要匹配的平台)。菜单文件中的第一项是 0.

辅助脚本与 bootcontrol.pl 一起提供的还有另外两个小脚本,它们是作为模板提供的,可以促进 Windows 与 Linux 之间的切换。在任意一个操作系统上,都可以输入 to_linux.pl 或 to_windows.pl.这些脚本只在需要时才重新启动,但是它们通常都会更新 GRUB 的默认设置。

步骤 4. 维护系统

对已经安装的操作系统进行任何修改或更新都可能对 Bootcontrol 使用的设置产生影响,因此在对系统进行任何可能会影响 GRUB 或 Linux 内核的更新操作之后,需要检查系统的重新启动能力。这些更改可能会在不更改 /boot/control/menu.lst 的情况下更改 /boot/grub/menu.lst.

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章