/r/MidnightBSDOS
The official home of the MidnightBSD operating system on Reddit.
The official home of the MidnightBSD operating system on Reddit.
/r/MidnightBSDOS
Some of you may know that MidnightBSD was named after my cat Midnight. Let me tell you a little about how that came to be.
I started using FreeBSD in 2003. I initially used it on a dedicated server with a provider in San Fransisco. It was the first time I successfuly used FreeBSD. I had used BSDi a little at a previous job and had run NetBSD on a sun sparc system for a bit. I had tried to install FreeBSD on my desktop a few years before but it couldn't handle my scsi cd-rom and ide hard drive combination at the time. ('m guessing around 4.3 or 4.4?) The first version I used was 4.7.
I started dual booting it on my PC so it was easier to test changes on the server before deploying them. Then I got interested in using it as a desktop. I worked on a project to update an existing HFS+ port to FreeBSD 6 current from a 5.x version. I didn't have a backup and lost it when the hard drive failed. That was my first development experience on FreeBSD. I then managed to get the SATA controller working on a nvidia nforce 2 chipset for my amd sempron CPU. I submitted the patch and it was applied! I was jazzed.
I started trying different desktop environments including gnome 2, KDE, windowmaker, and others. I then saw a thread in the FreeBSD mailing lists that was between folks suggesting desktop friendly changes and a lot of pushback. I realized that the community wasn't all ready for BSD on the destkop. So I decided to start my own project. I learned CVS in late 2005 and began working on a patchset in December 2005. I started looking at names and went through a lot. I thought of PC-BSD but the domain had been purchased already (not live yet). I kept looking and came up with some crazy ideas like SharkBSD and TigerBSD. I liked the latter but was worried apple wouldn't be thrilled as Mac OS X tiger was a thing at that point. So I decided to name it after our cat MidnightBSD. The first few logos were all cat designs. I had one that was based on some clip art that was a black cat face with some BSD daemon style horns. I was worried about copyright on that so I made another with midnight's eye. That stuck around for a bit. Then someone contacted me who also happened to be named Lukas (vs Lucas for me) and he designed the current MidnightBSD logo. He incorporated the moon in it because a lot of people didn't get the cat connection.
The first MidnightBSD servers were that old AMD Sempron box and a used dell server I bought for 50 dollars at the western michigan university depot. I started the project in Kalamazoo Michigan and was a student at WMU at the time. I upgraded the sempron to my then dell precision 650 workstation and bought a used Sun ultra 10 box to use for mail/dns. it died on me pretty fast though and I somewhat gave up on the sparc64 port then.
(this gets us through 2006)
MidnightBSD 3.2.1 is coming soon. It's tagged in git and we're uploading i386 ISO to the primary FTP. We still need to build an amd64 ISO and update the website and mirrors. It includes the following: security fixes for fetch and bhyvenproc(1)mport 2.6.4atlantic(4) nic drv
In the process of migrating the install location for manual pages from /usr/local/man/ to /usr/local/share/man
So far, about 2350 mports have been migrated.
I'm also taking the opportunity to update a number of mports.
For folks in the FreeBSD community, poudriere is their go-to for building packages. In MidnightBSD, we have magus.
Magus is a series of perl scripts and a postgresql database that allow users to manage a package build. The code for Magus is included in the mports repository inside the Tools directory. There is a indexer in mports/Tools/magus/master that allows you to index a copy of the ports tree into the postgresql database. Inside the magus database, there's a machines table that lists all the build nodes you want to setup/run. You specify architecture and os version for each build node. Then the nodes run on a MidnightBSD instance, often VMs. You run a script to build a base image for a staged root in mports/Tools/magus/make_chroot_tarball.pl to build a tar file. This is then configured in the magus node config.yaml, traditionally in /usr/magus/config.yaml along with the database credentials. To start up a node, you run mports/Tools/magus/slave/magus.pl You can use the -v flag to get verbose output or -j n flag to specify how much paralellism you want for the build. For instance, -j 2 would build two packages at once on the same system. Each one will require it's own chroot space.
To monitor the builds, there is a few CGI scripts that can be setup on a webserver to view the build output. You can also check the postgresql database.
There are also some administrative scripts to manage different tasks in mports/Tools/magus/master
dead_run.pl delete_run.pl nuke_internals.pl top_blockers.pl
delete_result.pl make_index_db port_depends.pl update_cluster.pl
For instance, ./update_cluster.pl new amd64 3.2 would start a 3.2 build for amd64 wih an index. top_blockers.pl tells you a weighted value on how bad a port failure is in terms of blocking other ports from building. It's not an exact count of blocked ports, due to how dependencies work.
There's also the bless utility which is a program that allows you to take a directory of built packages, and use the postgresql database to build a sqlite index.db file with all the available packages for the mport command to use. It also includes the list of mirrors and checksums for packages.
Here is a new community where you can ask questions about MidnightBSD.