Here I'm republishing an old blog post of mine originally from January 2017. The article has been slightly improved.
Ah, weekend. And it's a nice day, too: The sun shines on the snowy landscape! A perfect day to go out with the children - or to embark on a vastly different kind of adventure... Yes, you read that title right. This is _not_ about four FreeBSD 11 machines. It's about one FreeBSD 4.11 machine in 2017!
Why even bother with FreeBSD 4.11 today? Well, most people would probably respect historical interest and in fact I was keen on tinkering with a legendary old 4.x release to see if you can have some fun with it (spoiler: Oh yes, you can!). But this would be a task for times when I have absolutely nothing else to do. So it's fairly obvious that there's another reason.
"Old habits die hard" they say and there's definitely truth to it. Another truth, however, is that in the IT world things often don't go away easily. There's still a considerable number of machines out there that run DOS. In production. Doing important stuff. Sometimes just because it works sufficiently well. But often they have special tasks that for some reason or another cannot be migrated as nobody has any idea clue how you'd do this.
You want examples? Sure. The first example is "Game of Thrones" author George R.R. Martin writing his books using _WordStar 4.0_ on a _DOS_ machine. A lot of companies use DOS, too, but you usually don't hear about that. And less than a month ago a new version of FreeDOS (v. 1.2) was released.
Cnet article about R.R. Martin
FreeDOS 1.2 release announcement
Or do you remember the French airport that was having trouble due to using Windows 3.11? That was in 2015 and they announced that they were planning to migrate their system officially by 2017 (but expectedly by 2019 or even 2021)!
Vice article about Windows 3.11 killing a French airport
One such case of a formerly very popular operating system that just won't go away is FreeBSD 4.11. From the version number alone you can see that this is a very special one: Usually FreeBSD has three to four point releases in a release's life cycle. FreeBSD 4 obviously was different. The main reason for that was that version 5 kind of was to FreeBSD what version 4 had ben for MS-DOS: Innovative in its day but disappointing especially in terms of stability (and performance) among other things.
I have to take up the cudgels for FreeBSD 5, though. It blazed a trail for important technology that we rely on today like the _GEOM framework_, porting the system to _amd64_, and so on. Implementing things like that meant digging deep into the system and doing pretty invasive changes. It totally paid off in the long run but back in the day people tended to avoid the early 5.x releases or the whole release cycle altogether.
There are many reasons why some companies still have FreeBSD 4.11 running: Critical systems that cannot be migrated, installed programs to which the source code was lost, etc. Things like that. Most of these systems are probably used internally only but I'm pretty sure that there's also quite some 4.11 machines still serving data on the net...
Now what others do (and what their reasons for it might be) is not my primary concern - I can't do anything about it anyway. However the company that I work for has its share of legacy systems, too. Especially younger admins hate them. Actually they are impressively stable and rarely if ever have problems. In fact they keep running, silently doing their job. But now and then you have to do some changes to them and that's where the trouble starts: They simply cannot be compared to the modern-day Linux systems that we're used to administer daily!
I kept wondering if that situation could be improved. It wouldn't be worth the effort to do this during work time but I was curious enough about the legendary 4.11 release to give it a try at home. There'd surely be enough to learn. And should I succeed in bringing a test system into a more modern state there would also be a benefit for us at work.
We still have all those old CDs at work but I made my decision impulsively on Saturday. Fortunately ISOs of the old _Walnut Creek CD-ROMs_ are available for free download. Thanks, Archive.org! I burned it to a CD and was able to boot from it.
I actually installed the OS on real hardware. First on an old HP compaq nx9010 laptop that I got for free a while ago. Things worked pretty well, but since what I'm trying to do is almost all about compiling software, the compilation times proved to be a bit long. Therefore I decided to redo the previous steps on faster hardware - and since amd64 PCs are capable of running i386 programs, all was well. I just had to disable AHCI in the BIOS since FreeBSD 4.11 doesn't know what to do with that.
The actual installation was interesting enough (for people like me who enjoy history) and therefore I decided to redo it again in VirtualBox to take screenshots and describe the installation process for the remainder of this post.
Quite some time has passed since FreeBSD 4.11 was released in 2005. More than a decade is a lot in a man's life - but it's a hell of a lot when it comes to software and operating system development! I had never before installed any version of FreeBSD older than 7.4 and even thinking about the differences between 7.x and 11, many things changed. But what would 4.11 look like? Would I be able to install it without difficulties (I tried a very old version of OpenBSD once and quickly gave up because I didn't really like the idea of manual partitioning of the drives...)?
FreeBSD 4.11's Kernel Configuration Menu (PNG)
I was surprised to run into something that I had never seen even before the installer started! There's this _Kernel Configuration Menu_ where you can choose to either boot the standard kernel or to customize it. Of course I was curious and so I decided to take a look at it.
FreeBSD 4.11 kernel drivers selection (PNG)
This brings up a friendly little tool that allows for easy navigation through the driver tree. The screen is basically split into two parts: Active drivers and inactive drivers. Each one consists of several categories which are collapsed and can be expanded for a list of drivers.
Browsing FreeBSD 4.11's additional network drivers (PNG)
The standard kernel worked on both of my machines and so I didn't play around with this after exploring it briefly. When the kernel had booted, I found myself in the good old _Sysinstall_ utility. Yes, it's pretty ugly and it looks a bit complicated - which is due to the fact that despite it's name it does a lot more than just handle the installation. Yet in fact it's really easy to navigate through.
I like the _Express_ option that lets you perform an installation as quickly as possible by asking you only the absolute minimum of necessary questions. This goes as far as not asking for a root password and leaving it blank on your first login! Fair enough, it's easy to set one yourself. Current versions of FreeBSD do not have this option. That may be due to the fact that it's not terribly helpful for setting up a serious system. And the use case that I have for it here is definitely more of an exception!
FreeBSD 4.11's Sysinstall: Main Menu (PNG)
The first thing that's essential is of course disk partitioning. If you don't require any special setup, you can simply use the whole disk. I was glad to see that this can be done by simply pressing "A"!
Installing FreeBSD 4.11: Disk partitioning (PNG)
Just like today, FreeBSD 4.11 allows you to choose if you want to install a boot manager, just write the boot loader or don't do anything. The first option can be used for dual-boot systems where you want to load either FreeBSD or another OS. The last option won't work by itself; if you choose that, you need to work with an external boot manager that supports FreeBSD. In my case just installing the standard loader makes most sense.
Installing FreeBSD 4.11: Choosing boot options (PNG)
Then there's creating the disklabels. This is another thing where I'm happy to find an _auto defaults_ option (simply pressing "A" again) because I just wanted a quick test system anyways and didn't want to think too much about the disklabel layout!
Installing FreeBSD 4.11: Editing disk labels (PNG)
Finally we have to select what to install. To make things easy, sysinstall offers several distribution sets to choose from. _Minimal_ is all that I need for my experiments, but back in the day a lot of the other options were definitely quite handy. Two things stand out: You can choose to install FreeBSD + X11 for example. Current versions of FreeBSD don't let you do that. You'll always get a console only system and have to install X11 yourself (which IMO is something that leaves the barrier unnecessarily high for new users who don't know FreeBSD nor its packaging system, yet!).
Sysinstall also allows for custom distribution selection. This gives you access menu that allows for really fine-grained choices. Again, FreeBSD's installer cannot do that today. While it's probably nice to have that option, it's not a must-have. People who have use cases for that will probably know what they do and install FreeBSD manually, anyway. Still I like having it in the installer!
Installing FreeBSD 4.11: Choosing distribution sets (PNG)
The only thing left is selecting what medium to install from - the CD in my case. Formatting a large drive takes quite a moment because we're talking UFS1 here! Don't start looking for a way to use UFS2, it’s not available in FreeBSD 4. The actual "minimal" installation is quite quick and just a moment later I can reboot and the system comes up just like you'd expect it to. Now that was the easy part of my adventure. Next stop: Brushing the dust away and updating that beast(ie)!