After a drive failed in my build server caused me to lose all the work I did to build packages for Home Assistant, I finally got motivated to rebuild it again. It took a long time to figure it all out again and never wanted to have to start from scratch so all of it is pushed into a git repo 1 that can be used as a poudriere ports overlay.
Recently support for armv7 from Rust has been annoying to build, so I have decided to switch to arm64 for my Raspberry Pis. This makes building all of HomeAssistant much easier so I can get back to working on my setting up my Z-Wave switches again.
After creating a brand new AMI from the latest and greatest FreeBSD, we would be remiss if we did not properly test that it boots and can do a basic build.
Currently one of my customers is using the FreeBSD 13.0-RELEASE AMIs that are provided by the FreeBSD Release Engineering team. While at first these AMIs made our lives easier, as we have grown there are a couple of problems and opportunities for optimization that have become apparent:
After getting my new MacBook Pro with the new M1 Pro CPU and running the Migration Assistant I started seeing the following error: Error calling protect() Unfortunately I didn’t take a screenshot so this might not be the exact error, but it is pretty close. The solution is kind of silly, but just download the latest version of OpenVPN from their website and reinstall it over the top of the…
One of my customers needs to have builds done on arm64 hosts, but they lack the necessary hardware to do so in house and procuring such hardware can be very difficult due to vendors EoL some hardware without the replacement hardware being ready to ship. Currently they already have Jenkins configured with a couple of amd64 build agents that do most of the building, so we wanted something we could…
Building a new FreeBSD poudriere jail, sometimes runs into the following error: awk: can't open file /usr/local/poudriere/jails/aarch64/usr/include/sys/param.h source line number 1 This is a bug in poudriere-devel-3.3.99.20210907_1 and it is fixed in main already but not in a package yet. Update : New package has been published with the fix.
Vault works well on FreeBSD, but there are a couple of quirks to be aware of. This guide will help take care of those. Installing Vault Follow the normal install method: pkg install vault Settings for use in Jail Using vault in a jail requires the option allow.mlock to be set. Using ezjail and a jail called vault just modify the config file /usr/local/etc/ezjail/vault on the host and set:
To make it easier to upgrade the various Raspberry Pis that are around, lets PXE boot them so they can be upgraded easily. In this article we will use the following tools to create a shared base system and then individual mounts for each RPi: NFS Poudriere PXE TFTP ZFS To make cable management easier, each Raspberry Pi is connected to a PoE switch using one of these Adafruit PoE Splitter . Using…
Setting up FreeBSD to run cloudinit to make custom images is pretty easy. The first step is to boot a basic image or the install ISO and install FreeBSD. Once it is up and running then install cloudinit: pkg install net/cloud-init And enable cloudinit: sysrc cloudinit_enable=YES Currently there is a bug in cloud-init where it does not try to mount the correct filesystem with the correct type on…
For awhile now I have been meaning to evaluate Nomad and Consul for managing servers as well as batch jobs. It has lots of features that are attractive and would make managing services very easy using the Consul service mesh and health checks. One of the downsides is that it takes some configuration and setup to get it configured for maximum success, with multiple copies of the Nomad Server and…
Previously it has not been possible to use the camera module on FreeBSD due to the RPi tools not working on 64-bit architectures. I have recently added a version of the u-boot port for the Raspberry Pi 3 that is built in 32-bit mode.
For the past few years I have been operating a small number of Arduino Ethernets with DHT22 sensors, push data into Graphite. They have worked reasonably well, but had one major issue. Graphite required that the data flow include the Unix Epoch time and the Arduino time counter over flows every ~50 days.
For awhile I have been using a Tarsnap backup script written by Tim Bishop . It is very handy but recently I was setting up Tarsnap again on a new machine and I noticed that it is not designed to be run more frequently than daily. So I decided to take a stab at making it handle being run more often and keeping the number of daily/weekly/monthly backups that are actually desired. Changing the…
In the past we had to use the old SysV IPC sysctls and change the UID that each PostgreSQL server ran as under in each Jail. Which was annoying and error prone.