首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

操作系统

Windows 9X | Linux&Uinx | Windows Server | 其它操作系统 | Vista | FreeBSD | Windows 7 |
首页 > 操作系统 > FreeBSD > 制作可以随身携带的FreeBSD系统 > 正文

制作可以随身携带的FreeBSD系统

出处:5DMail.Net收集整理 作者: 时间:2006-12-14 11:42:00

  前言

  大家可能见到过很多在软盘上运行的Linux系统,可在软盘上运行的FreeBSD反而比较少,虽然有PICOBSD,然而很多时候PICOBSD并不能满足我们的需要,那么可不可以自己制作一个在软盘上运行的FreeBSD系统呢?答案是肯定的。我在维护着一个Floppy Firewall的Project,它是一个基于FreeBSD和IPFilter的运行在软盘上的防火墙系统,很多网友在使用了Floppy Firewall之后发邮件来询问如何使FreeBSD运行在一张小小的软盘上。但由于前段时间事情太多一直没有时间,今天终于找到时间,所以把制作在软盘上运行的FreeBSD的过程写出来与大家分享,由于时间仓促,文中难免有错误之处,还请大家指教。   

  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!]

  options MFS #Memory Filesystem

  options MD_ROOT #MD is a potential root device

  options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]

  options NO_SWAPPING #Disable swap   

  device isa

  device pci   

  # Floppy drives

  device fdc0 at isa? port IO_FD1 irq 6 drq 2

  device fd0 at fdc0 drive 0
 # atkbdc0 controls both the keyboard and the PS/2 mouse

  device atkbdc0 at isa? port IO_KBD

  device atkbd0 at atkbdc? irq 1 flags 0x1

  device vga0 at isa?   

  # syscons is the default console driver, resembling an SCO console

  device sc0 at isa? flags 0x100   

  # Floating point support - do not disable.

  device npx0 at nexus? port IO_NPX irq 13   

  # PCI Ethernet NICs that use the common MII bus controller code.

  # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!

  device miibus # MII bus support

  device fxp # Intel EtherExpress PRO/100B (82557, 82558)

  device rl # RealTek 8129/8139

  device xl # 3Com 3c90x

  device lnc0

   at isa? port 0x280 irq 10 drq 0 # VMware Nic   

  # Pseudo devices - the number indicates how many units to allocate.

  pseudo-device loop # Network loopback

  pseudo-device ether # Ethernet support

  pseudo-device md # Memory "disks"

  上面的内核基本上是一个系统要运行的最小配制了,当然如果你的机器不同具体也不同,大家按自己的情况来定,我的机器配制是:  

  CPU: Pentium III 733Mhz

  MotherBoard: Via 693A Chipset

  NIC: Realtek 8139c

  # atkbdc0 controls both the keyboard and the PS/2 mouse

  device atkbdc0 at isa? port IO_KBD

  device atkbd0 at atkbdc? irq 1 flags 0x1

  device vga0 at isa?   

  # syscons is the default console driver, resembling an SCO console

  device sc0 at isa? flags 0x100   

  # Floating point support - do not disable.

  device npx0 at nexus? port IO_NPX irq 13   

  # PCI Ethernet NICs that use the common MII bus controller code.

  # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!

  device miibus # MII bus support

  device fxp # Intel EtherExpress PRO/100B (82557, 82558)

  device rl # RealTek 8129/8139

  device xl # 3Com 3c90x

  device lnc0

   at isa? port 0x280 irq 10 drq 0 # VMware Nic   

  # Pseudo devices - the number indicates how many units to allocate.

  pseudo-device loop # Network loopback

  pseudo-device ether # Ethernet support

  pseudo-device md # Memory "disks"

  上面的内核基本上是一个系统要运行的最小配制了,当然如果你的机器不同具体也不同,大家按自己的情况来定,我的机器配制是:  

  CPU: Pentium III 733Mhz

  MotherBoard: Via 693A Chipset

  NIC: Realtek 8139c

  # $FreeBSD: src/release/picobsd/router/crunch.conf,

  v 1.1.2.2 2001/02/20 02:53:35 luigi Exp $

  #

  # NOTE: the string "/usr/src" will be automatically replaced with the

  # correct value set in 'build' script - you should change it there

  # Default build options

  buildopts -DNOPAM -DRELEASE_CRUNCH -DNOSECURE -DNOCRYPT -DNONETGRAPH -DNOIPSEC
 # other sources

  srcdirs /usr/src/bin

  srcdirs /usr/src/sbin/i386

  srcdirs /usr/src/sbin

  srcdirs /usr/src/usr.bin

  srcdirs /usr/src/usr.sbin

  srcdirs /usr/src/gnu/usr.bin

  srcdirs /usr/src/gnu/usr.sbin

  srcdirs /usr/src/libexec

  # sources for ns & vm

  srcdirs /usr/src/release/picobsd/tinyware

  以下为你所需要在crunch包含的程序列表,以空格分隔。   

  progs dmesg ping ifconfig route hostname

  progs cp rm ls cat test mkdir less

  progs uname sysctl

  progs init sh reboot

  ln是表示建立一个别名,如ln less more,表示当执行more的时候实际上是执行less,ln less more。以下是指定编译时需要的库:   

  libs -lncurses -lmytinfo -lipx

  libs -lz -lpcap -lalias

  libs -ledit -lutil -lmd -lcrypt -lmp -lgmp -lm -lkvm

  libs -lgnuregex -ltelnet

  当编辑好crunch.conf之后,你就可以开始编译crunch了:

  bsd# make

  这时会生成一个名为crunch1的程序,我们要的就是它了。

  5、建立内存磁盘

  大家可以看到crunch1加上我们刚才编译的内核和loader程序,已经超出了软盘的容量,同时为了加速程序的运行我们需要使用MD(内存磁盘)来解决这个问题,MD将作为系统的根文件系统和用来存放系统程序。对于内存磁盘的大小一般不易太大,因为这样会占用过多的内存,下面我们就以建立一个3M的内存磁盘为例说明如何建立内存磁盘:   

  bsd# cd /root

  bsd# dd if=/dev/zero of=bsd bs=1k count=3072 # 生成一个3M的文件,用来做MD

  bsd# vnconfig -c -s labels vn0c bsd

   # 使用bsd来创建一个vn设置,以便在其中存放程序

  bsd# disklabel -w -r vn0c auto # 建立disklabel

  bsd# disklabel -B vn0c # 安装启动代码

  bsd# newfs vn0c # 创建UFS文件系统

  bsd# mount /dev/vn0c /mnt # 将vn0c即bsd mount到/mnt

  接下来要做的就是建立目录结构,具体建立哪些目录这要视需要决定,本例中需要建立如下目录:   

  bsd# mkdir /mnt/etc

  bsd# mkdir /mnt/sbin

  bsd# mkdir /mnt/bin

  bsd# mkdir /mnt/dev

  然后将crunch1复制到/mnt/sbin中,再将刚才编译进crunch1中的那些命令分别做上symbol link:   

  bsd# cp /usr/src/release/picobsd/custom/crunch1/crunch1 /mnt/sbin

  bsd# cd /mnt/sbin

  bsd# ln -s ./crunch1 init # init必须在/mnt/sbin目录中

  bsd# ln -s ./crunch1 reboot

  bsd# ln -s ./crunch1 sysctl

  bsd# ln -s ./crunch1 ifconfig

  bsd# ln -s ./crunch1 route

  bsd# ln -s ./crunch1 ping

  bsd# ln -s ./crunch1 dmesg

  bsd# cd /mnt/bin

  bsd# ln -s ../sbin/crunch1 sh # sh必须在/mnt/bin目录中

  bsd# ln -s ../sbin/crunch1 hostname

  bsd# ln -s ../sbin/crunch1 cp

  bsd# ln -s ../sbin/crunch1 rm

  bsd# ln -s ../sbin/crunch1 ls

  bsd# ln -s ../sbin/crunch1 cat

  bsd# ln -s ../sbin/crunch1 test

  bsd# ln -s ../sbin/crunch1 mkdir

  bsd# ln -s ../sbin/crunch1 less

  bsd# ln -s ../sbin/crunch1 uname

  bsd# ln -s ../sbin/crunch1 more

  6、编写启动脚本

  因为我们的系统只是为了测试在软盘上运行FreeBSD,因而这里的启动脚本非常简单只是让系统可以工作,没有做其它的工作,其内容如下:   

  #!/bin/sh

  # Floppy BSD init script

  PATH=/sbin:/bin

  HOME=/

  export PATH HOME   

  echo

  echo "Hello, it's my Floppy BSD"

  echo

  因为没有使用登录验证,所以这里只是简单的一直运行shell   

  while : ; do

  /bin/sh

  done

相关文章 热门文章
  • freebsd 安装邮件系统extmail 防毒 防垃圾
  • FreeBSD上建立一个功能完整的邮件服务器(POSTFIX)
  • Freebsd环境下基于qmail系统的反病毒反垃圾邮件系统构建
  • 用Postfix架设FreeBSD下中小规模邮件系统
  • FreeBSD 服务器上彻底禁用 sendmail
  • 门户级反垃圾邮件系统KBAS发布FreeBSD版本
  • 在 FreeBSD 上彻底禁用 sendmail
  • FreeBSD安装配置E-mail服务器
  • RSYNC ON FreeBSD 5.2 HOWTO V1.0
  • 浅谈FreeBSD 5.2常用操作的改变
  • FreeBSD 6.0-下建立高速DNS缓存服务器
  • FreeBsd5.4+pf+squid反向代理实战笔记
  • 制作U盘启动的RAMDISK为根目录的FreeBSD
  • 打造FreeBSD桌面系统
  • 菜鸟学装FreeBSD5.1图解(一)
  • Free BSD常用指令简述
  • 使用FreeBSD的SNMP+MRTG网络流量分析
  • 菜鸟学装FreeBSD5.1图解(二)
  • 使用FreeBSD配置基于ADSL的VPN网关+防火墙
  • 安装实战:FreeBSD6.1桌面安装指南
  • 制作软盘上运行的FreeBSD系统
  • FreeBSD 5.0 硬盘安装指南
  • 给FreeBSD新手的一些建议
  • 新兴桌面软件 Ubuntu叫板 Windows
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号