as promised, I have started working on m0n0BSD (= "instant miniBSD"), and
there are already some results:
(upload capped to 300 kbps, you can also try
- alternate connection (180 kbps))
Download size: about 6 MB.
It's an image for net45xx', based on FreeBSD 4.8-RELEASE, that fits on 16
MB (or larger) CF cards. The kernel supports IPsec (FAST_IPSEC), HiFn (for
the crypto accelerator cards) and wireless (awi/wi/an). ipfilter, ipfw,
netgraph and BRIDGE are compiled as modules.
The goal for m0n0BSD is simply to provide CF-card-ready binary images of
stripped (but not minimalistic) FreeBSD as a convenience to those who just
want to give FreeBSD a quick try or who don't like working through the
miniBSD guide over and over again as new versions of FreeBSD are released.
There will be no GUI, of course - that's where m0n0wall fits in (for less
Custom patches: disabled annoying (and pointless, in this case) warnings
in sys/ev/wi/if_wi.c and sys/kern/subr_diskslice.c and added a patch for
the ipfilter MSS clamping bug. /etc/rc has been modified to reload rc.conf
after calling the diskless boot script. rc.diskless2 has been modified and
renamed to rc.m0n0wall.
The rest is pretty much standard FreeBSD (everything compiled with
I also went to the trouble of writing a shell script for the initial setup
that handles the following things:
- pccardd configuration (on/off)
- root password
- network interface configuration
- interface list from ifconfig -> should work regardless of which
interfaces are present
- static IP address or DHCP
- can handle wireless interfaces (SSID/channel/hostap/IBSS/WEP)
- default gateway
- IP forwarding on/off
- DNS servers
- SSH key generation
The script is automatically run on the first boot, but can be executed
again later with sh /etc/rc.initial.
There is no homepage or documentation on m0n0BSD at the moment, but that
will change as soon as I get some feedback on whether m0n0BSD is going in
the right direction.
Install as follows:
gzcat m0n0bsd-4.8-net45xx-std-20030504.img | dd of=[CF raw device] bs=16k
get physdiskwrite 0.2:
and drag the .img file onto physdiskwrite.exe
(physdiskwrite 0.2 can now automatically detect gzipped images and
uncompress them on-the-fly)
I have decided to name the images .img (and not .bin.gz) because some
browsers try to decompress them while downloading (most notably Internet
Explorer for Windows). m0n0wall images are going to be named .img in the
Note that the image contains just the programs that I deemed necessary
(more or less the file list from the miniBSD guide), and the filesystem is
pretty much full. If you have a bigger CF card and want to add other
programs, use disklabel and growfs.
I'd really like to modularize m0n0BSD and provide something like packages
for software that is commonly used on net45xx (like MPD, DHCPD, racoon,
perl, zebra, etc.). I'm still thinking of a way to do that. I could make a
web-based image building system where you could put your custom image
together with a few clicks (probably powered by PHP), provide several
images with different options (and CF card sizes), or release a "base" CF
image and separate packages that can be installed over the network on the
net45xx. I like the first approach best, but then I'll have to solve the
bandwidth problem (I don't think I can host it all on my feeble 512 kbps.
On a side note, I went crazy and registered the domain m0n0.ch (and
m0n0.com as well, just for the sake) to host m0n0BSD and m0n0wall in the
future. I have a nice little machine (AMD 1.7 GHz) around that I will put
to new use as a server (running FreeBSD of course) soon.
Please let me know what you think!