实现Windows与Linux两系统间的自由切换

红薯 发布于 2009/05/07 14:17
阅读 891
收藏 1

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

既然我们可以非常简单地直接手工实现这种操作系统的切换,为什么还希望自动化此操作呢?简单的答案是自动化过程可以让使用多个操作系统变得容易得多。例如您要在多个操作系统平台上测试软件,那么这种功能就会特别有用。

本文在介绍这些技巧时假设您已经安装好了操作系统,并使用GRUB配置了多重引导。GRUB是GRand UnifIEd Bootloader 的简称,它在机器启动时加载,然后机器的控制权被转交给OS内核软件。有关部署 GRUB 的帮助信息,请参阅本文后面的 参考资料 一节。

本文介绍的技巧可以适用于:Microsoft Windows XP Professional;Microsoft Windows Server 2003;Debian Linux 3.1(Sarge);Red Hat Enterprise Server(RHES)3 GRUB 0.97;虽然使用这个版本的 GRUB 成功了,但不保证使用其他 bootloader 也会获得成功。

步骤 1. 设置磁盘分区

在开始配置系统之前,确保有一个最新的系统备份,并且手头有一张援助用的CD。如果在执行这些步骤时出现了问题,那么机器可能无法启动。如果发现自己面临的风险是无法接受的,那么最好不要继续执行以下步骤。

创建 Bootcontrol 分区

在一块硬盘上创建一个小分区。在这个分区上必须创建这样一个文件系统:要切换的所有操作系统都能够加载这个文件系统,并可以对这个文件执行写入操作。我们选择使用FAT32。尽管整个Bootcontrol 系统只需要不到1MB的磁盘空间,但是 FAT32 默认最小限制为256MB,因此这会浪费一些空间。

如果没有足够的未分配空间,可以通过缩小或删除现有分区来创建这部分空间。 在Linux 中可以使用 GNU parted 命令来实现这项功能。如果在执行 parted 操作之后,现有分区的次序发生了变化,那么可能还需要更新 /etc/fstab 文件。有关的更多信息,请参阅parted的文档。

当使用parted在测试机器上创建所需的分区时,会看到如清单1中所示的结果:

清单 1. 创建必需的分区



repton:~# cat /etc/fstab
# /etc/fstab: static file system information.
# 
proc /proc proc defaults 0 0
/dev/hda2 / ext3 defaults 0 1
/dev/hda6 /home ext3 defaults 0 2
/dev/hda7 /opt ext3 defaults 0 2
/dev/hda5 none swap sw 0 0
/dev/hdc /media/cdrom0 iso9660 ro,user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
repton:~# umount /home
repton:~# parted
Using /dev/hda
(parted) print
Disk geometry for /dev/hda: 0.000-57231.562 megabytes
Disk label type: msDos
Minor Start End Type Filesystem Flags
1 0.031 18412.734 primary ntfs boot
2 18418.271 25085.874 primary ext3
3 25085.874 57231.562 extended
5 25085.905 26458.615 logical linux-swap
6 26458.646 49999.174 logical ext3
7 49999.206 57231.562 logical ext3
(parted) resize 6 26458 49739
(parted) mkpartfs logical fat32 49739 49999
(parted) print
Disk geometry for /dev/hda: 0.000-57231.562 megabytes
Disk label type: msDos
Minor Start End Type Filesystem Flags
1 0.031 18412.734 primary ntfs boot
2 18418.271 25085.874 primary ext3
3 25085.874 57231.562 extended
5 25085.905 26458.615 logical linux-swap
6 26458.646 49740.314 logical ext3
8 49740.346 49999.174 logical fat32
7 49999.206 57231.562 logical ext3
(parted) q
repton:~# mount /home


(T002)

加载中
返回顶部
顶部