Skip to main content

A More Simple Busybox Rootfs

Overview

For several reasons I have a need for a simple/minimal system that can be used in an existing userspace or as its own userspace. Usually I would jump to tools like buildroot or openwrt for such things. I've used buildroot several times in my other articles for building cross toolchains, rootfs environments, and kernels for several use cases. Instead of going with an end-all-be-all solution like buildroot, I'd like to take a more simple approach that leans more on the tools readily available by the Ubuntu/Debian distribution.

Why so hard?: Access OSX over SSH with non-admin account.

The Problem

I recently ran into an issue where my Raspberry Pi file share server fell over because of hardware currosion due to some unfortunate moisture exposure. In response, I had planned to replace the file share server with a Mac Mini that was available until I could get a replacement RPi. The service is basically SFTP and the users are responsible for having SFTP clients that meet their needs.

Process: Who is it good for?

For years now I've always found process to be a facinating area of software engineering. But please don't misunderstand my meaning ... most processes in my experience not only feel painful to the individual contributors but also seem wastful to the overall organization.

Why so hard?: Building Firmware Images without GNU

Overview

By far, the most common use case for a toolchains (compiler, assembler, linker) is for building applications that run on top of an Operating System. A lesser used use case, but still common is to use toolchains for building drivers or modules for the Operating System. What I can only assume is one of the more rare uses cases is using the toolchain to build firmwares that do not have an Operating System. This has become abundantly apparent to me while exploring the possibilities of building firmwares outside of the GNU ecosystem. (Note: I'm focusing on big toolchain suites like LLVM, GNU, and MSVC. I'm aware of other tools like Keil and other proprietary toolchains.)

Use Case: Running Application Containers With Different Credentials per Project

Situation

Its a common pattern to store user authentication tokens in a user's home directory. This way we can login to a service that has a command line interface without having to enter credentials each time we use the command. The one service I know that has done this for me for decades is Subversion. Recently, I've also been logging into services like Firebase, Google Cloud Engine, and Expo.io. All of these services store their user authentication tokens in the user's home directory.

Use Case: You're Away From Home And Your Windows VM Host Reboots

Situation

When I work from home, I often find myself working from my laptop for the portability. My laptop doesn't have all the resources that my desktop has, so I normally SSH into a Virtual Box VM that runs from my desktop PC. This works great when I am home, but I've found that on several occasions that I am on the road or not within physical reach of the PC hosting the VMs. Unfortunately, between Microsoft Updates happening more often now, and other things that potentially can cause my PC to reboot itself, I'll wake up to find that I have no connection to the VM I planned to work from.

Why so hard?: Remote Tmux Copy/Paste

Overview

Started using tmux this year in an attempt to streamline some of my typical workflows. It also is handy to make up for the lack of terminal tab support in VS Code. When I first started using tmux, it became quickly apparent that copy/paste actions are a little more involved. Since I only ever did horizontal splits, I quickly just fell back to holding Shift for everything.

Build Systems for Embedded Development: From 30000 feet.

Overview

I've been developing software for over 20 years. In that time I've used make more than any other build system tool. It is the grand ol' build system that many developers find themselves cursing, regardless of the fact that OSS has been riding make for much of its existance. Over the past 10 years, I've also used variants of Autotools, SCons, CMake, and other custom solutions. I've even, twice, rolled my own build systems (and not just wrappers around make or scons).

Case Styles

Case Styles

Reading through Google news, I came across a term I never heard before that really stuck with me. "kebab-case". This is often what I use when naming files that are composed up multiple words. Others were suggesting that this is the best convention for git branch names as well. To recap, here is a list of the different case types: