首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 应用>linux技巧应用>文章内容
制作软盘上运行的FreeBSD系统
来源:www.unix5.com 作者:riechelr_hl 发布时间:2007-08-01  

前言
大家可能见到过很多在软盘上运行的Linux系统,可在软盘上运行的FreeBSD反而比较少,虽然有PICOBSD,然而很多时候PICOBSD并不能满足我们的需要,那么可不可以自己制作一个在软盘上运行的FreeBSD系统呢?答案是肯定的。我在维护着一个Floppy Firewall的Project,它是一个基于FreeBSD和IPFilter的运行在软盘上的防火墙系统,很多网友在使用了Floppy Firewall之后发邮件来询问怎么样使FreeBSD运行在一张小小的软盘上。但由于前段时间事情太多一直没有时间,今天终于找到时间,所以把制作在软盘上运行的FreeBSD的过程写出来与大家分享,由于时间仓促,文中难免有错误之处,还请大家指教。同时非常欢迎大家访问CNFUG(China FreeBSD User Group, http://www.cnfug.org/),它是一个由一些FreeBSD爱好者组织起来的自由组织,目的是为大家提供中文的FreeBSD方面的资源,目前CNFUG定期的向大家发行免费的FreeBSD中文技术期刊(http://www.cnfug.org/journal/)和维护一些 Project(http://www.cnfug.org/project/)。

1、FreeBSD的启动过程简介
当BIOS读入MBR之后,MBR中的程序读入硬盘FreeBSD Slice(FreeBSD分区)中的引导程序,引导程序默认情况下会加载/boot/loader,然后loader将加载/kernel,此时 kernel开始检测一些硬件和做一些初始化。初始化完成后kernel将mount root device,然后启动系统初始化进程/sbin/init,init将根据/etc/rc中的设置来进行初始化等。
可以看出我们需要解决的部分就是:引导程序 -> /boot/loader -> /kernel -> /sbin/init -> /etc/rc
在了解了启动过程之后和问题所在之后,我们便可以开始制作软盘上的FreeBSD了。

2、初始化软盘
首先要做的就是要将软盘初始化,包括设置disklabel和创建文件系统(格式化成ufs格式)。

bsd# disklabel -r -w fd0a fd1440
接下来是安装引导程序。
bsd# disklabel -B fd0a
现在软盘已经能够引导了,但因为我们要在它上面放置程序,所以要创建文件系统。
bsd# newfs fd0a
刚才已经做好了引导程序,因为引导程序会加载/boot/loader,所以我们还需要将系统中的/boot/loader复制到软盘中。
bsd# mkdir /fd
bsd# mount /dev/fd0a /fd
bsd# mkdir /fd/boot
bsd# cp /boot/loader /fd/boot/loader
根据FreeBSD的启动过程,现在我们已经准备好了引导程序和loader,接下来就要准备内核了。

3、定制内核
软盘的空间有限,所以我们需要定制一个小内核,而不能直接使用系统原来的内核。
由于我们只使用软盘,所以内核中的关于scsi、ata、atapi和raid等这些东西都应该删除,因为我们不需要IPv6所以INET6也应该删除,具体留下些什么要看自己的用途了,这没有什么标准。不过有几样是必须的:
options MFS              # 内存文件系统支持
options MD_ROOT      # 使用MD(内存磁盘)设备做root
options UFS              # UFS文件系统支持
options UFS_ROOT    # UFS ROOT
pseudo-device md    # MD设备支持

下面是我使用的一个内核配制文件:

#
# GENERIC -- Generic kernel configuration file for FreeBSD/i386
#
#
# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246.2.38 2002/01/25 17:41:40 murray Exp $
machine                  i386
cpu                         I386_CPU
cpu                         I486_CPU
cpu                         I586_CPU
cpu                         I686_CPU
ident                        "MINI-KERNEL"
maxusers                0                               #maxusers最好让系统自动分配,如果设得过大,会占用过多的内存。

options                   INET                         #InterNETworking
options                   FFS                           #Berkeley Fast Filesystem
options                   FFS_ROOT               #FFS usable as root device [keep this!]

共5页: 上一页 1 [2] [3] [4] [5] 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·MBR如果被覆盖了怎麽办?
·linux应用技巧集囊(新手遍)
·Linux操作系统Gaim玩转QQ与MSN--
·shell编程技巧
·简述 Linux 文件系统的目录结构
·提高Linux系统性能,加速网络应用
·优化Linux系统服务器硬盘实用技
·Linux操作系统下设置NFS共享讲解
·Linux 的带宽管理系统
·通过Linux系统引导CD排除服务器
·Linux系统下查CPU个数的方法
·精彩分享:Linux系统下使用aMsn
  相关文章
·提高Linux系统性能,加速网络应用
·Linux操作系统下设置NFS共享讲解
·用Linux操作系统构建的路由器--
·如何找回删除Linux后的Windows启
·实用技巧:Linux操作系统文件链
·Linux操作系统Gaim玩转QQ与MSN--
·实用技巧:“禁用”Linux终端输
·Linux系统下查CPU个数的方法
·Linux操作系统下网络互访管理软
·Linux系统强大的控制台、终端和s
·Linux下Apache并发连接数和带宽
·优化Linux系统服务器硬盘实用技

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!