应用操作系统-PicoBSD
2010-01-30 11:10:58 阿炯

软件方式的防火墙系统的一大问题就是由于系统本身能够安装丰富的软件,因此常常同时被用作其他用途,当用作其他用途时就有可能对本身的安全性造成影响。而硬件防火墙使用专有操作系统,只用作网络服务,这保证了它不会受到其他方面的影响。对于用作防火墙的计算机,通常应该专用而不要兼作其他用途。因为防火墙的安全性非常重要,内部网络安全要依赖防火墙的安全来保障,一旦防火墙被入侵,网络安全也就无法保证了。

通常安装的FreeBSD系统都具备硬盘,并用做防火墙系统时,一方面免不了想提供多种复杂的服务,这样系统可能会具备潜在的安全漏洞,另一方面入侵者入侵这个系统之后,可以在系统硬盘上隐藏入侵程序以进一步入侵网络内部。

PicoBSD is a one floppy version of FreeBSD 3.0-current, which in its different variations allows you to have secure dialup access, small diskless router or even a dial-in server. And all this on only one standard 1.44MB floppy. It runs on a minimum 386SX CPU with 8MB of RAM (no HDD required!).


因此对于用作防火墙的FreeBSD系统,最好直接修改系统的rc文件,屏蔽所有的网络服务。另一种方法是可以尝试使用软盘上的BSD系统,这样计算机本身不具备硬盘,可以从管理上 杜绝它用作其他使用的机会,同时也节约了资源。此时FreeBSD系统可以不使用硬盘、显示器、键盘,通过串口进行设置,这样的系统可以安装在网络设备的 机架上,专门用作防火墙提供安全服务。

特性

*diskless workstation
*portable dial-up access solution
*custom demo-disk
*embedded controller (flash or EEPROM)
*firewall
*communication server
*replacement for commercial router
*diskless home-automation system
*and many others....


PicoBSD就是这样的一个小型FreeBSD系 统,能够安装在一张软盘上。其提供了四个不同的版本:dial、isp、net和router,dial为拨号访问Internet的版本, isp为接受拨号访问的版本,net和router是用于网关和路由器的版本,它们都能够在386处理器和10M内存下运行(dial版本仅仅需要8MB 内存)。虽然从FreeBSD的主页上,可以得到预定制好的多种PicoBSD的磁盘镜像,然而由于计算机使用的硬件差异很大,定制好的磁盘镜像不一定适 合使用者的计算机硬件,由于软盘容量很小,不能容纳尽可能多的硬件驱动,每个磁盘镜像也不能支持太多的硬件设备,因此就需要根据自己计算机的具体硬件环境来定制。

要定制PicoBSD,就需要一个安装了全部源代码的FreeBSD系统,并且这个系统的内核要支持伪设备vn及具备对应的设备文件,以便PicoBSD的设置程序能完成磁盘镜像文件的创建工作。其源代码位于系统的/usr/src/release/picobsd目录下,这个目录中包含编译、配置PicoBSD的说明,以及不同版本的配置。定制PicoBSD系统要使用的该目录的子目录build中的build脚本,为了制作一个PicoBSD的磁盘镜像,就需要在这个目录下启动build命令:
# cd /usr/src/release/picobsd
# cd build
# ./build

build命令使用菜单将让使用者选择不同的PicoBSD的基本版本,如dial、isp、net和router,根据不同的目的进行选择,此后选择n(no change)就能继续进行制作镜像文件的处理。当这个执行过程结束之后,build子目录下就产生了一个1.44MB的磁盘镜像文件 picobsd.bin。此后可以在FreeBSD下,或者在DOS下将镜像文件写入软盘,则一个单软盘的PicoBSD系统就制作完毕了。

build进程将使用/mnt来装载vn0设备,因此必须保证/mnt没有装载其他文件系统,而且vn0设备没有被占用。否则就会遇到错误。

然而这样制作的PicoBSD使用的还是缺省的设置,如果要定制就需要更改缺省设置;首先应该根据具体的需要,选择功能相近版本的PicoBSD,再进一步更改硬件设置。

每一个PicoBSD版本的设置都位于具有相同名字的子目录下,例如net版本的目录为 /usr/src/release/picobsd/net/ ,在这个目录之下的conf子目录为其内核的定制目录,而crunch1目录中为最后复制到PicoBSD系统中的应用程序的名字列表。

当需要针对运行防火墙的计算机更改硬件设置时,需要更改conf子目录中的内核设置文件PICOBSD,这个文件就是PicoBSD的内核设置文件,可以删除或增加设置选项,改变对不同硬件设置的支持。如果要更改复制到软盘镜象中的执行程序的数量,就需要更改同样位于该版本目录下的crunch1子目录中的文件。只是注意软盘空间有限,因此只能装载有限的程序。

更改完这些设置之后,就可以转回build子目录重新定制PicoBSD,这样产生的镜象文件就为与硬件设置相符合的设置。将镜象文件写入软盘之后,就可以使用这个软盘启动防火墙系统,然后再使用命令行进行手工设置。需要注意的是,此时更改的只是写在内存文件系统MFS中的文件,而不是在软盘中文件,因此一旦系统重新启动,配置就不会保留下来。必须使用update命令将更改后的文件写回磁盘中之后,设置才能保留回磁盘中。


PicoBSD中文手册
skywalk <skywalk@quye.com>

目录:
· 什么是PicoBSD,他支持什么硬件?
· 从哪里能得到这个软件?
· 怎样使用这个软件?
· 定制自己特设的PicoBSD版本!
· 我能从哪里得到更多信息?
· 发行历史记录和bugs
· 将来的计划
· 应用
· 许可授权
· FAQ


什么是PicoBSD

如果你曾经设想有一个小的迷你系统,一个放在一个小小的的空间里的UNIX系统,那么,选picobsd就对啦。PicoBSD是一个一张软盘大小的 FreeBSD 3.0-current版本,并且根据不同的需求可以提供安全的拨号存取,小的无盘路由器甚至一个拨号服务器功能。所有的这些功能都是基于一个 1.44MB 软盘-不需要浪费您那宝贵的比如100MB硬盘空间。
PicoBSD是…稍稍的估量一下它的需求:-),它最少需要386SX CPU,8MB的RAM(不需要硬盘耶!)。

下面是它支持的硬件设备的详细列表。

拨号版本:
· 最低 386SX CPU (随便 Intel, AMD, Cyrix等 – 牌子是没有关系的)
· 最少 8MB 的RAM (有的人报告了在4MB RAM情况下也能运行,但是我不建议那样做)。况且现在RAM这么便宜啦。
· 一个调制解调器(使用PPP协议接入internet网络),内置的或外置的,接入从COM1到COM4的任何一个端口。注意,COM3 和COM4端口默认是关闭的-若要使用的话你需要在UerConfig中声明enable(使能)他们。
· 一个接入本地以太网的以太网卡:
o ed – 默认设置参数: port 0x280, irq 10, iomem 0xd8000
NE2000 compatible ISA and PCI cards, most SMC and 3C503
o ep -默认设置参数: port 0x300, irq 10,
3C509 ISA card
o ie -默认设置参数: port 0x300, irq 10, iomem 0xd0000
Intel EtherExpress ISA, StarLan, 3C507
o le -默认设置参数: port 0x300, irq 5, iomem 0xd0000
DEC EtherWorks 2 and 3
o lnc -默认设置参数: port 0x280, irq 10, iomem 0xd0000
Lance/PCNet
o de - DEC21040-based PCI cards,
o fxp - Intel EtherExpress Pro/100B PCI card
· 10个虚拟控制口、附加的控制设备(vidcontrol, kbdcontrol)
· 基本的网络工具:ifconfig, route, ping, ns (mini-netstat), traceroute
· 基本的远端登录工具:telnet, ftp and SSH
· 基本的系统工具:shell, mount (FreeBSD, DOS, Linux), umount, ps, kill, vm (mini-vmstat), fsck, df, 等等..
· 可编辑的配置(/etc 目录和核心配置)
· 简单的编辑器 ee
· 简单的帮助系统

类路由版本:
· 最低386SX CPU
· 最低10 MB 的 RAM(基本安装需要8MB)
· 支持ppp协议,拨号/专线线路(使用ijppp)
· 支持一些类型的以太网卡(每种两个?)-请看前面的具体描述:ed, ie, ep, de, fxp, lnc
· 网络守护进程:路由守护进程(routed), inetd, telnetd, snmpd.
· IP防火墙和NAT(natd).
· 更多的系统附件,包括:syslogd, mount_nfs, network logins via telnet
· 这个版本不包括: ssh, ftp

路由器版本:
· 最低386SX CPU
· 最小4 MB的 RAM (若要运行一些附加守护进程需要6MB)
· 支持拨号/专线PPP协议(使用内核ppp)
· 支持一些类型的以太网卡-请看前面的详细描述:ed, ie, ep, de, fxp, lnc
· 定制的init(8), 包括一个简单的命令行接口,可以在系统启动时配置系统。
· IP防火墙和NAT(natd – 它需要附加的RAM).
· 除了几个必须工具外,有很少的几个系统工具。

还有第四个版本,它可以作为一个拨号接入服务器-希望你能发现它是一个廉价而可靠的商业通信服务器:-))现在这个还在进行中,我需要一些人来测试这个拨号接入版本。PicoBSD的当前版本是0.42,这意味着我对它还是不太满意,尽管它已经经过了测试要比前面一个版本提高了很多。好啦,现在你可以试一试它啦-可不能保证它不会烧掉你的房子或是损坏你的机器哟,尽管前者好像没有可能啦:-)

从哪里得到它呢?
这儿有两个语言的PicoBSD版本-英语和波兰(polish)语(我现在在写的是中文啦,呵呵,争取搞出中文版出来)。你也许会对它的结构很感兴趣,因为不同的语言版本只是字体的样式、C语言的locale(定位)和提示信息不同罢了。你可以从www.freebsd.org或是它的镜像站点下载:
· 拨号版本: English (README) or Polish (README)
· 网络版(从前叫类路由版): English (README) or Polish (README)
· 路由版: English (README) or Polish (README)
· 拨号接入服务器版 beta testers ... :-)

(版本的详细介绍见上文介绍)
上面的软盘都是从3.0-current的源代码构建的。虽然他们提供了很多的特性,但是没有后来的发布版本稳定。Dinesh Nair在当时最新的发布版(2.2.5)的基础上,构建了一个picobsd的分支。你可以从这里或它的服务器找到基于2.2.5源代码的软盘(遗憾的是它的服务器无法通信中)。

怎么样使用它呢?
早先的版本是用PKZIP(tm)压缩程序打包-现在提供的是2进制的软盘镜像,因此你只需要拿到合适版本的文件就可以啦。假定你是用1.44MB软驱来启动系统的-其它类型的我可没试过(不过建议你尝试一下,说不定有以意外的惊喜啊,呵呵)
这个'pb_xx-X.bin'文件一定要写到空白的软盘。这并不意味着他能用DOS 'copy'命令来拷贝。你必须用一个程序比如 rawrite.exe 或 fdimage.exe来将它写入软盘。

在 DOS 下你要进行如下操作:
C:\> fdimage.exe pb_xx-X.bin a:
如果是在 Unix 系统,你需要进行如下操作:
dd if=pb_xx-X.bin of=/dev/rfd0
然后你就可以用这个软盘启动喽,好好的享受picobsd吧,哈哈!
如果你想更进一步揭开它的神秘面纱,那么就打'help'吧(不过这部分只在拨号那个版本中有)

定制你自己的picobsd版本啦!
我还制作了工具集((a.k.a the PicoBSD Development Kit -PicoBSD开发工具箱)我经常制作软盘(参见 detailed instructions)
你可以从CVS中得到全的picobsd-从最早的0.4版本开始,它在官方的FreeBSD CVS的src/release/pocobsd文位置。我也创建了这个源代码树的映射,你可以到这里下here。
现在,如果你不喜欢这个picobsd的setup,或是期望某些程序,甚至你想改善picobsd-那么你可以获取一份我创建系统的同样的工具,来自己定制版本。
如果你是ISP,你可以构建一个你自己定制的拨号版本,其中包括一些自动连接到你的站点的脚本。你也可以为你的朋友创建一个演示盘(或者是你的老板喽:-))。你也可以为自己办公室构建一个防火墙/路由器,等等。什么都可以,这只局限于你的想象力,呵呵。

你需要最少10MB空余磁盘空间来构建,同时需要安装了系统的所有源代码。我非常建议你用当前的版本来构建。当然,这里也有Dinesh Nair基于2.2.6-R版本系统构建的程序。
0.31版本是用pax(1)分包的-新一些的版本都是使用tar和gzip来打包的。
我非常有兴趣来分享你的经验-如果你认为碰到了有趣的安装过程,那么一定要告诉我哟。

能从哪里得到更多的信息呢?
几乎软盘中的所有系统都同普通的Freebsd的安装过程相同,因此只要一个普通知道页面就可以了。我没有包括manpages本身-因为他们要占用200kB的大小啊!
对一个新手,我推荐使用拨号版本,它里面有一个简短的README,能一步一步的告诉你如何建立拨号连接。同时还有一个叫'dialup'的脚本,它能尝试来配置ppp,以便在系统后台帮助你自动登录到服务器。其中还有一个小的帮助系统('help' 命令)
还有一些系统组建对picobsd来说是唯一的,现在他们的详细文档在源代码和README中。
新的发布版本将在不久的将来构建出来:请密切注意这个本文档。我将同时在freebsd邮件列表中发表声明。

将来的计划
我很希望能得到你的见解和问题,这样我会考虑在新的picobsd版本中提高以满足您的要求。我非常希望这能增加您的想象力和编程能力。
· 写一个类似Cisco IOS的命令行工具,就能配置picobsd的类路由版本成各种各样的样子。
好啦,现在你能读一个初步的系统结构啦,就叫做Unified Configuration Interface.(统一的配置界面)
· 安装一个类Xwindow 的GUI界面到拨号软盘。(升级:你里看看预览版本并且告诉我你的意见。我需要一些帮助来将Xwindows移至过来。
· 为了增加配置了硬盘的系统的能力,准备创建4MB大小的SSD,跟Cisco 的2500系列路由器比较类似的,呵呵。我想在不久的将来完成这个目标,来答谢广大的picobsd爱好者:-)
(升级:我已经对一个16MB的flash的M-System's(微系统)进行了测试,现在在开发它的DiskOnChip(电子存储芯片)的驱动。
· 可以从更多的文件系统启动而不单单是FFS-dos或是Minix就可以,而且不浪费这么多空间。
· 将可以选择当前的MFS文件系统-它浪费一些空间,因为它要在内存的顶部模拟出普通的FFS…
· 可以进一步的减少类路由版本的内存需求。我想它可以在4MB的机器上运行…这可能要要重写oinit(8)来执行进程。
· 还有很多,你可以从这里看到详细的列表。

致谢
下面这些人都是对这个项目做出过很大帮助的人,或是实实在在的帮助,或是给予我很好的点子。
· the whole FreeBSD team for this magnificent OS, and their hard work of continuous development,
· Dinesh Nair, for co-development and preparing of the version which compiled on 2.2.5-RELEASE,
· Joe Greco, for his encouraging example of XKERNEL (some parts of the scripts still bear his fingerprints :-) (you can get it here).
· Goran Hasse of Raditex AB, Sweden, for sending me M-Systems' and SanDisk flash disks to experiment with.
· Mike Smith for various tips and encouragement.
· freebsd-* mailing lists participants, which helped me with some other pieces.
· and many other people who keep encouraging me to continue this work. Thanks, guys!

版权声明
PicoBSD在BSD的版权下发行,允许你自由的使用,包括商业应用。那还等什么,快来安装吧。如果你想帮助这个项目如写代码等,可以联系mailto:abial@freebsd.org。

最后修改日期:1998年11月?
其它的?发mail给作者啦


最新版本:0.42


项目主页:https://people.freebsd.org/~picobsd/old/picobsd.html



该文章最后由 阿炯 于 2024-02-22 14:39:31 更新,目前是第 5 版。