m0n0wall Developers' Handbook

Manuel Kasper

Edited by

Chris Buechler

Additional Contributors listed in the m0n0wall Handbook.

m0n0wall Version 1.2, October 2005

All rights reserved.

Redistribution and use in any form, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Neither the name of the m0n0wall Documentation Project nor the names of its contributors may be used to endorse or promote products derived from this documentation without specific prior written permission.

THIS DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION OR THE ASSOCIATED SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

September 2005

Abstract

A guide for m0n0wall developers.


Table of Contents

1. The complete guide to building a m0n0wall image from scratch
1.1. Installing FreeBSD
1.2. Using cvsup to get the latest FreeBSD patches
1.3. make world
1.4. Building the m0n0wall root file system
1.5. Applying m0n0wall patches for FreeBSD
1.6. Building the kernel
1.7. Building the software packages
1.8. Installing supplementary tools
1.9. Building the boot loader
1.10. Adding the libraries
1.11. Adding the PHP-based configuration scripts
1.12. Adding the webGUI
1.13. Creating mfsroot
1.14. Putting it all together: creating the image
1.15. Creating a bootable CD-ROM version
2. m0n0wall Hacker's Guide
2.1. Setting Up a Host Development Environment
2.2. PXE Booting
2.3. Setting up m0n0wall on the host
2.4. NFS
2.5. Unpacking/Editing/Packing the Source
2.6. Writing a CF Image
2.7. Submitting Changes
3. Other Documentation
4. Development Frequently Asked Questions
4.1. I don't have a FreeBSD box to develop new features for m0n0wall, is there an easier way?
4.2. What patches have been applied to the FreeBSD source that is used in m0n0wall, and are they available?
4.3. Where can I find the m0n0wall source code?
4.4. Is there any information available on the unsupported extensions support?