Review of Alpine Linux
2017 March 30

I've recently started using Alpine Linux for a school project and its a really neat little distro. It's designed to be very small, and secure. It uses an alternative C standard library known as musl, and it's the new default for docker images. This post will detail the installation and my thoughts regarding this distro and what needs to be improved. This review is for Alpine Linux 3.5.2 released on March 2, 2017.

Installation

I installed the standard image on to an Intel NUC. I installed as a standard full drive installation or as they call it a "sys" install. It took me several tries to get it installed as the drive in the NUC was formated weirdly from previous distributions that I installed on it, but a quick fsck to rewrite the tables and it was ready to go. They provide a fairly automated and easy to use installation script that walks you through the installation. It is called setup-alpine. They also provide other setup scripts for various parts that are included in the install. These scripts allow you to setup the network and other things that are rarely used, but sometimes needed to setup

First Boot

After the first boot, it started up nicely and I started adding the tools I needed. The package manager is impressively fast, and it does dependency resolution. I got sshd setup, and fiddled with some init scripts. I added the servers that I needed for my project, like redis. The names used for packages do not always match up as I would expect them to, like with sqlite3 being named just sqlite, but I've been living in the fedora world for a while with all the backwards support that must be included with these long lived distros.

I then installed my favorite version of top called htop. to look at what was running and low and behold the memory usage was really low, and I looked at what was running, and it was just the bare minimum. This is really refreshing without all the garbage tools like packagekit and trackerstore being included in everything.

Memory and Utilization after some setup

Configuring it for my project

I will not say what my project is as of right now, but I will say that it involves serial ports, embedded systems, and analytics. The number one issue I encountered was serial ports over USB do not belong to the typical group of dialout, but to root. This is a problem as I do not want my application user to be in the root group but I see no other option as of right now. The other issue I encountered was getting R installed, as the packages in the repos are misnamed or not available, but some kind soul has provided apks of the latest version of R. The next issue came with the alternative C library used, and how npm needs to know to build the packages from source when certain packages are used.

I also encountered issues with the lack of certain common management tools, a big one is not including sudo by default, and just including su. They might allow one to do the same thing, but most newbie guides will not mention that leading to them getting frustrated. Additionally, the common user management tool known as usermod is not included, which means that certain files that aren't supposed to be edited by hand will be edited by hand. Finally, it hides other users processes from non root users, as in you will not be able to see what processes root or anyone else is running. Although this is a plus for security, it can be inconvenient at times with debugging certain things, and checking that things are running.

Conclusion

Overall, I can say that I really enjoy working with Alpine Linux. It's a pleasant distro to work with, and I can see it going places. The package manager is one of the fastest I've found. Minor issues aside, I really like it and think you should give it a try in your next embedded project.

*****
Written by Henry J Schmale on 2017 March 30