How does pfSense differ from FreeBSD and why?



  • I know there are good books about how to use pfSense (the presented interface). But when I want to customize it for my own needs I find myself having no clue (and no access to good documentation) about how this thing really works.

    Why is it so different from FreeBSD? Is it just the nanobsd version that differs that much? What is going on at boot time? Why can't I just use rc.conf? Why is there php everywhere and not just for the web interface?

    Some documentation about this would be very welcome! You know, some sort of system design overview for low brains like me. :)
    Or some hint on where to start digging, some intro into the most important/basic parts like file system layouts or boot processes. I might be able to work myself around from there.
    Thanks



  • @senser:

    But when I want to customize it for my own needs I find myself having no clue (and no access to good documentation) about how this thing really works.

    If you gave a simple example of a customization you want you might get responses from people who are prepared to write a paragraph or two but not prepared to write a book.

    @senser:

    Why is it so different from FreeBSD? Is it just the nanobsd version that differs that much? What is going on at boot time? Why can't I just use rc.conf? Why is there php everywhere and not just for the web interface?

    Depending on the customizations you want, you might be better served by using FreeBSD.


  • Netgate Administrator

    There's quite a bit of interesting info in the dev wiki. It's not really laid out for easy consumption though.  ;)
    http://devwiki.pfsense.org/PfSenseDevHome

    Steve


  • Rebel Alliance Developer Netgate

    Ambiguous and yet accurate answer:
    It's as close as it can be and as different as it needs to be  ;D

    We drop some conventions like rc.conf because they aren't needed the way we use it. We use a custom rc script to do our boot-time configuration, and trying to shoehorn our methods into the default model doesn't give us the flexibility we need to get things done.

    There is PHP everywhere because the project was originally forked from m0n0wall which was using PHP. Also, we know PHP and the libraries for reading the config, etc, etc are all in PHP.

    If you're looking to run things at startup, use the shellcmd package. More detail on shellcmd can be found here: http://doc.pfsense.org/index.php/Executing_commands_at_boot_time