在一台电脑上安装有freebsd和linux两个系统时,可以让这两个系统使用同一个硬盘分区作为swap区,节省一定的硬盘空间。这里介绍一种实现共享swap区的方法,当然可能有其他方法也可以解决这一问题。这一方法在redhat linux release 4.1和4.1(linux kernel 版本2.0.29 和2.0.30)和freebsd2.2.2上通过测试,高版本的系统应该同样可以实现。首先安装哪个系统都无所谓,只需要注意一下freebsd的slice分区的次序。
第一步,安装linux。
按照正常的步骤安装linux,注意为安装freebsd留出硬盘空间。安装linux时不必设定swap分区,如果你想加一个swap分区,那么把swap分区放到为freebsd留出的硬盘空间上。这样可以删除掉这个swap分区,然后安装freebsd。
安装完linux,必须重新编译内核,加入ufs文件系统支持和bsd disklabel(freebsd分区表)支持。
ufs filesystem support (read only) (config_ufs_fs) [n/y/m/?] y
bsd disklabel (freebsd partition tables) support (config_bsd_disklabel) [n/y/?]
(new) y
安装新kernel并重新启动机器。注意如果你设定了swap分区,删除/etc/fstab文件中包含swap的一行。确定你有一张可以启动新内核的启动盘。然后安装freebsd。
第二步,安装freebsd。
按照正常步骤安装freebsd,如果为linux分配了swap分区,可以用freebsd的fdisk删除掉。注意freebsd的slice分区的次序,如果使用默认分区,那么第二个分区是freebsd的swap分区。完成freebsd安装后重新启动到linux。
第三步,在linux中设定使用freebsd的swap分区。
重新启动到linux中后,运行dmesg,在输出信息中可以看到如下的信息:
partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
这表示/dev/hda4是你的freebsd slice,/dev/hda5、/dev/hda6、/dev/hda7、/dev/hda8是freebsd的分区。如果freebsd的swap分区在这个slice上的第二个分区,那就是/dev/hda6。
那么就把下面一行加入/etc/fstab中:
/dev/hda6 none swap sw 0 0
由于freebsd可以使用任何形式的分区作为swap分区。而linux需要在swap分区上设定一个特殊标识。这个标识是是用mkswap生成的。freebsd在使用swap分区时破坏了这个标识。所以在每次启动linux时都要运行mkswap来重新设定这个标识。为自动完成这个工作,找到启动时执行swapon的script文件。在redhat linux中这个文件是/etc/rc.d/rc.sysinit,将下面一行加在swapon -a 的前面。
awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab
这样在每次启动linux时就会在/etc/fstab中设定的swap分区上运行mkswap。
好了,完成了设定,可以重新启动到freebsd看看swap分区是否工作,再重新启动到linux看看是否工作。但愿你能顺利的设定完成。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器