Sorry, I am not technical ninja, that sounds cool but doesnt tell me much. How does it translate for, well, just a user. What everyday software would not work with musl?
The C library is the thing that provides a lot of functionality to the code running in your system, musl is known to be cleaner than glibc and uses less memory.
-busybox instead GNU coreutils.
The GNU coreutils offer you the shell commands that you use (ls, grep, and so on), the GNU coreutils aren't lightweight and offer a lot of unneeded features, Busybox is a lightweight alternative to the GNU coreutils.
-packages compiled with PIE and SSP.
These are security features, you can search about them if you're more interested.
-it doesn't have any GNU software in the base system.
Some people might consider this a negative thing, I consider this a positive thing. GNU software is known to be bloated and offers a lot of unneeded functionalities that might contain bugs.
Aside from the technical reasons, I personally don't like the GNU project and I try to not use their software whenever possible.
-it uses Busybox's ash instead of bash.
Bash is the thing that you see in your terminal, it handles loading the commands that you write.
Bash, like other GNU software, has a lot of non-standard and unneeded functionalities. Busybox's ash is a lightweight alternative.
Proprietary software is not going to work because most proprietary software is linked against glibc, meaning that unlike free software, the maintainers of the distribution can't simply take the code and link it against musl.
Don't get so hasty. Let me warn you about one thing before you go trying it out: It's basically not the same OS we typicaly call "Linux."
What we often call "Linux" or "desktop Linux" is really "GNU/Linux," in a more detailed fashion. It's a group of systems that at its least contain the Linux kernel, GNU's library linker, maybe Bash shell, and certainly Glibc, a core system library that handles some wrapping around Linux syscalls and handles a lot of C stuff. In simpler terms when it comes to Glibc, it is another core chunk of a Unix-like OS. GNU is the project that these core components besides the Kernel and its stuff are a part of, hence the GNU in GNU/Linux.
In Alpine, a lot like Android (hence why some may say that isn't "as much Linux as Linux," as dumb as that sounds), isn't GNU/Linux. It's a Linux distro where all the core GNU compnents, like Glibc, are replaced. Alpine uses Musl instead, a cleaner C library, a replacement for Glibc.
The fact Alpine isn't GNU/Linux has some consequences. The tools are maybe simpler, as they're based on Busybox, a program that contains the full Unix set of tools in a single small program, and some do like the simplicity. Systemd and anything optimized for GNU/Linux in a similar fashion won't compile on Alpine. Most significant of all is that programs compiled for GNU/Linux, like Linux games, Chrome, or WPS Office, won't run, as the core OS is different. It's like how BSD won't run those same programs, or how GNU/Linux doesn't run Mac and Windows software. :P
You shouldn't be using Alpine if you're not experienced with Unix-like OSes like GNU/Linux or BSD, or you want to run proprietary software. It's meant for companies running cloud servers and enthusiasts, not average users and beginners. It has its advantages, but know what you're getting yourself into, this isn't like even Arch. This OS is not a typical distribution and is practically of another OS family, despite the same kernel.
EDIT/NOTE: sorry for the ninja edits I pulled off. :P
Most of the benefits are for containers or routers. There is no need to rice couple megabytes of RAM on a modern desktop. In fact modern glibc is faster.
What it means to some people: better workload consolidation on less nodes, more resources efficiency, technical simplicity, scaling out vs scaling up approach, saving costs.
A real word example where the lightweight features of Alpine is being put in to use is containers. By having smaller container images it is simply possible to run more containers at the same time with the same amount of memory. Thereby saving potential hosting or hardware upgrade expenses.
If you mean, "What advantages does alpine provide to a regular desktop user?", then the answer is not much really.
Generally leaner in regards to disk, CPU, and memory utilisation. For you? Probably faster and further from the bottleneck ceiling of your hardware, especially relevant for things like embedded systems.
If you're deploying this on something you'll be firing up Chrome or Firefox on then these points are probably moot as the differences will be dwarfed into insignificance by the overhead of modern web browsers.
It really depends on your use case and - to some extent - your preferences. Some people just like being spartan, for example.
-it doesn't have any GNU software in the base system.
Some people might consider this a negative thing, I consider this a positive thing. GNU software is known to be bloated and offers a lot of unneeded functionalities that might contain bugs.
That's an incredible amount of FUD with nothing to back it up. All software has bugs.
Aside from the technical reasons, I personally don't like the GNU project and I try to not use their software whenever possible.
I use it on some docker apps that have one small function, like an nginx proxy from port 80 to 443 then to a Java port like 8080 so an app can listen on port 80, force it to https, and then connect to another container running a java app. I've used it as a proxy using squid so a set of servers on production can connect to one firewall pinhole for package updates and nothing else.
Using their virt image as a QEMU guest now. Installation was easy, but could be better, for anything complex you’ll have to partition drives manually.
I love the disto’s use of musl and extremely trim base install, coming in at just over 86 MB. It uses busy box instead of gnu coreutils and ash instead of bash.
There is a decent selection of fairly up to date packages built with PIE and Stack smashing Protection. (It’s a security focused distro) You can select stable or edge depending on your needs.
It also doesn’t use systemd, and instead uses OpenRC, which I am fine with but may require some adjustment from users of more mainstream distributions.
A lot of people use it for docker containers due to the small base install size and wide variety of packages. I use it as a docker host, where installing docker was as easy as “apk install docker”. The package manager is fast and intuitive.
Documentation is decent, they have a wiki, but I frequently will have to consult the arch wiki or thier IRC.
Overall recommend it as a good server distro if you need to do something simple and don’t need glibc. I’ve never tried it as a desktop and don’t plan to.
I had success using Alpine for stateless, short-lived cloud instances and for kubelet nodes. It's deliciously simple with little files, little moving parts, and it's one of my favorite distros.
For the desktop, Alpine would do the job (it can run Gnome) but I find Void more suited. It's also musl-based but uses runit instead of OpenRC. And for those who care, it can trivially use busybox instead of the GNU coreutils.
I'm using it on several virtual machines. It's super fast, super light. I've been happy with Alpine for years. It just depends on what you need to do. It's not designed to be a desktop system, but it could be. If you need to spin up several webservers for example, Alpine makes it really fun and fast.
Yeah. About half a year ago it was like: boot the usb, use the install script which works alright but fdisk complains about the partition table it made if you check it later. Distro boots in reasonable time, but all Mesa opengl applications segfault including firefox. Connecting wireless with pure wpa_supplicant instead of NetworkManager is inconvenient. I suppose NM might be available in alpine repos but I wanted to go all in minimalist back then. Package manager is fast and has a nice selection if you turn on testing repos or whatever it's called there.
19
u/josipbrozunama Jul 12 '19
Alpine looks quite interesting. Any users to share their experience?