Minutes turn to hours, hours to days, days to weeks and months and years
and generations. Somewhere in there I'd like to finish a project I
start.
Many moons ago, back when I was using dial-up, I had created a FreeBSD
box to handle all the stuff you normally get from a appliance from
Linksys or D-Link. As small as my free time may be, my free cash is
smaller. So I built this thing to handle PPP, routing, NAT, DHCP,
firewalling, etc. It was pretty sweet, considering I hadn't messed with
any of it before, including FreeBSD.
So it was mostly good--I kept it patched, but not updated, and it lacked
some nice extras. I eventually took the time to set up a local NTP
service, but I still wanted to upgrade to a newer base OS and set up a
DNS server for both caching and local hosts. A few weekends ago,
however, I took the time.
Because the box was my router, a lengthy downtime was a no-no. CD
upgrade was out. I wanted to cvsup the box, but I kept having trouble
getting the sources. I had written the supfile properly, but I think the
problem was I hadn't properly "gotten" the source via sysconfig.
I started over, nuking my /usr/src directory (saved my kerner configs
first) and re-running sysconfig. I let it use all the defaults,
as I think one of my tweaks is what kept it from ever updating properly.
Once sysconfig was finished, I ran cvsup and my source
tree was solid. I thought the make buildworld was lengthy, but I
had no idea. I ran make buildkernel and make
installkernel (just a default kernel, to test), but it complained
because I didn't have an smmsp user. I had to run make
mergemaster to modify the /etc config files; what a pain
in the ass.
I feel the need to note that make mergemaster sucks balls. In
Debian, apt knows if the file is the one that was installed as
part of the old package; FreeBSD can't tell you if you've modified it or
not so it PROMPTS YOU EVERY TIME to compare the files.
SLOW.
So after the quick make mergemaster, make
kernelinstall went through properly; reboot. System comes up, all
good. Reboot into single-user mode, run the full make
mergemaster and wait, then make installworld.
mergemaster is slow because you have to run through every
config file under the sun, but I can't imagine what the excuse was here.
It took a good hour. Once this was done, I booted into multi-user mode
and things were good. All in all, it didn't take much time outside when
I was running installworld in single-user mode.
So now I have a nifty FreeBSD 4.10 box (because upgrading to 5.3 wasn't
in my game plan). Next step was DNS. There is a port of BIND (two
actually, one v8 and one v9), but there is also one installed by
default. I pretty much followed the FreeBSD manual word for word, set up
caching to start and then wrote forward and reverse DNS records for my
local domain. The only problem I had was that named wouldn't
start, but I wasn't getting any real errors. Apparently, named
fails if it can't log; no errors, nada. I had to strace and
take some educated guesses. It didn't like my syslog config so it
puked. I wrote an entry into my config file to log to it's application
directory and all was kosher.
Writing this up took an incredible amount of time on its own. But I feel
very accomplished that I could cross these two items off my "Get to it
eventually" list.