FreeBSD system configuration is absurdly easy.

virtually every aspect of the system is configured from a single file, /etc/rc.conf. (check out the one from my system at home here) it's a simple set of key-value pairs that is sourced by the startup scripts, and you can configure virtually everything from there. the default settings for all the values can always be found in /etc/defaults/rc.conf (again, a sample is right here).

so for example, if i wanted to stop running sendmail because it's a buggy, insecure piece of crap, i'd just add a line that says: sendmail_enable="NO" and the next time the system boots, it won't start sendmail. (ok, that's a bad example because, as all you FreeBSD junkies in the room know (yes i mean you dave) sendmail_enable doesn't have to start sendmail. if you're smart, and installed another MTA (such as postfix) from the ports tree, which we'll get to later, that'll get started instead. but anyway, you get the idea.)

if you want to add something weird that isn't covered by the multitude of options in rc.conf, you can stick your custom stuff in /etc/rc.local and it'll get started from there.

if you're really hip and with it though, you'd know that rc.local is old and leads to poor maintainablity, so you'd just stick a script in /usr/local/etc/rc.d and that would also get run at startup. isn't that neat?

the other thing you'll probably want to do (in fact, you'll probably do it before you care about things starting and stopping at boot) is to build a custom kernel. this is, of course, blindingly easy.

assuming you installed the kernel source during installation (if you didn't, i'll tell you how to get it in the next section) you just go to /usr/src/sys/i386/conf (assuming you're on an intel machine) and there will be some files there with their names all in caps. GENERIC is the configuration file for the stock kernel installed with FreeBSD. LINT is a long list of all the possible configuration options, with some notes as to what each of them do. NEWCARD (if it's there) is a configuration file for the new PCCARD code that is being ported from NetBSD. don't mess with this, it doesn't work yet. for the curious, here's a kernel config from my home machine, lyta. yes she's named after Lyta Alexander in Bab 5, and if you've ever seen the show you'll know why.

all you have to do to build your own kernel is to edit the config file, run a perl script to set things up for you, and type make (ok, there's one or two other steps, but we'll get to that).

so first, copy GENERIC to some other file (name it all in caps, since everyone else does it, and you want to be cool like everyone else). open this file in an editor, and start playing around. it's pretty self explanetory. you'll probably want to get rid of devices you don't have (i don't have SCSI on my laptop, so it doesn't need to SCSI support for instance), and you may want to modify some of the entries in there (on my laptop i turned on APM by changing the 'disable' in the apm0 line to 'enable').

now that you've got a kernel config file all made up, you type /usr/sbin/config KERNELNAME where KERNELNAME is the config file. this sets up the directories for the build of the kernel. now cd to the build dir (it'll output the name of the dir, but it's something like /usr/src/sys/compile/KERNELNAME). now you type make depend so it can set up your options for the build, and then make to actually have it do the build. then you can type make install to actually install the kernel. now you reboot and see if it worked. if not, you can select your old kernel from the boot prompt (it's been conveniently moved to kernel.old, assuming you haven't built twice in a row and coppied over it like an idiot, in which case you'll have to boot GENERIC, which is installed as kernel.GENERIC).

some more info on configuring FreeBSD is available from the online handbook;