Void Linux: Into the Void
michaelwashere.net
michaelwashere.net
- Everything is remarkably simple, (mostly) well-documented and straightforward.
- Friendly, dedicated and very knowledgeable community
- Open development, very few hooks to jump through if you have something to contribute
- No systemd, so: rebooting your system isn't a lottery where, if you lose, you get to wait for 90 seconds for some service to stop, your system doesn't start doing strange new things after every update because something that's been working fine since the 1980s has recently been declared broken, no binary logs to get corrupted (and no need to tweak your system and sidestep this brilliant scheme). Of course, you can't do much DevOps on Void Linux, but I'm pretty sure that's about as relevant as the fact that you can't run macOS on low-power embedded systems.
- Completely community-ran and independent. Some things don't happen as quickly as in corporate-backed projects, but you're also not beta testing for their LTS or enterprise-grade releases, either. Also, no bureaucracy, no priority mismatch, no one to shove alpha-quality software down your throat.
It's basically like OpenBSD with more drivers but based on slightly worse and less cohesive technology :-).
Void Linux has made me say a good "wow" more than any other Linux.
I love that I can use many of my favorite bits of OpenBSD, even doas.
xbps takes just a minute to learn, and is surprisingly ("wow") fast and robust.
Who knows why it's not more popular, but it doesn't matter. It's awesome.
How so? How is DevOps linked or dependent on systemd in your view? Personally, I find systemd gets in the way of devops.
Whenever the line between a technical discussion and a systemd bashing thread becomes blurry, someone who does DevOps for a living invariably pops up to say how much they like systemd -- usually for pretty valid reasons.
It's also ubiquitous enough that, by this point in time, some of my younger colleagues who do DevOps for a living have never used anything but systemd. Doing Stack Overflow-driven (aka copy-paste) DevOps without systemd is pretty challenging nowadays.
Hence the joke.
Otherwise, yes, of course you can do DevOps on Void. I can't imagine what you couldn't do DevOps on; I know folks who were doing it on Novell Netware before the whole thing even had a name.
Certain in-terms tend to acquire ironical undertones quite quickly, such as "agile" now meaning certified scrum masters(tm) doing half hour standups.
http://www.commitstrip.com/en/2015/07/08/true-story-fixing-a...
you can't do much DevOps on Void Linux
Why is that ???I can't edit my post anymore :-)
Void Linux uses runit a descedent of djb's daemontools which does automatically restart services and provides a way to check if it's running by starting the daemons themselves and keeping them as direct childs.
Void Linux uses runit, which was released in 2004, so I guess they agree.
Why not? runit is really great - it's an implementation of daemontools from djb - it's a powerful system - including socket activation, log handling, you can even run custom check scripts for your services. I'd even say it's more poweful than systemd and better for devops once you go beyond systemctl enable apache2
Now, now, that's really down to the way you write your RC scripts. Plenty of distros over the years have had timeout-based prereq-waits in their init.d scripts.
(Heck, I currently have a prereq-wait of some kind going on in the early-stage init of a macOS system, because it happens to contain a non-Apple-manufactured NVMe SSD formatted as APFS. Seems like TRIMing APFS volumes gets deferred to boot-time.)
It has many binary packages, out of the box musl images, images for many of my arm boards (raspberry pi *, c2 and cubieboard for instance) and a nice packagemanager with source support and arch like syntax (it's splitted like the debian apt-get/apt-cache but worse... I still like it)
If someone knows where I can report bugs for the live system I would appreciate a link (or I have to do it over the forum/mailing list).
It uses runit as init system and I nearly forgot how nice a system without systemd could be.
I have a little project on the backburner where I started porting arch to musl, but since I found voidlinux I completly stopped.
It has an arch package to install void in a chroot and it has void packages for an arch like init system (mkinitcpio). The packages are updated regulary and even thought it's a larger distribution than alpine linux (it doesn't start with a barebone busbox base, but without wget and curl :D),but has a way larger precompiled package list than it (it even has some precompiled packages missing from other distributions like toybox the bsd licensed busybox like tool)
Anyway since it still offers 32bit x86 binaries I will maybe use it in time for my old hardware. Up until now void Linux has made me very happy and I wonder why I didn't see it 10 years ago when it's first release was born. If you haven't yet give it a try.
I'm still using arch as well, but I guess I always try to choose the right distro for my use case.
But I think I will give nixos a spin again some time. I like the idea of the package manager very much
Also, each boot is a clean boot (tempfs overlay). This ensures you capture your OS changes through your build script.
This gives me what I love about Nix (scripted setup) with OSs I love (Arch and Void).
I like the idea of having "images" with tempfs overlay. Is it possible to combine Salt with the image feature from Darch?
Does Salt allow you to run from an already-built (but minimal) Arch installation? The base Darch images (godarch/arch) is bootstrapped manually.
Would I have to create a godarch/arch-salt image that is bootstrapped from salt files, so that you could further salt the image?
How would salt handle the inheritance that Docker provides?
All you have to do is install Salt, and then you can run salt-call to apply states.
Yes, Salt states can depend on other states, and you could choose to apply only selected states.
1) Create a root image for your use that installs Salt in your Arch image. See here: https://github.com/pauldotknopf/darch-recipes/blob/master/ba...
2) For the rest of your recipes/layers, create a script/bash file like you would normally, but just pass execution to Salt.
I'll look into Salt more. Maybe there is a way to extend Darch to support different "executors" to support things like bash/Salt/Puppet/etc.
For the live system probably here: https://github.com/voidlinux/void-mklive/issues And issues related to packages https://github.com/voidlinux/void-packages/issues
I also couldn't get it to boot in UEFI, had to switch back to legacy bios. The partition manager is also a little confusing, i can't figure out which sizes to use or how to create them, i like debians ui here alot for this.
I stopped after seeing all that.
If you are going to use Void Linux I would strongly recommend not picking the musl version unless you are specifically interested in improving musl support by filing and/or fixing bugs.
https://wiki.musl-libc.org/functional-differences-from-glibc...
Similar to the dependence between the linux kernel and GCC. Clang should work but linux also has the 'GNUisms' so deep there a big project called LLVMlinux to correct it.
The only thing I've seen is that WebKit on musl has broken JavaScript, which I suppose would be a big issue for some people.
My first impression is that it feels really snappy. I am not sure if I like the cli interface of the package manager. But I will give this one a try.
Can someone share their experiences regarding Void's stability? I am currently using openSUSE Tumbleweed on my desktop and primary laptop, and while I am mostly happy, things sometimes kind of break after installing a batch of updates.
[0] Not sure what caused it; F2FS may have been less stable than I thought, or the cheap SSD might have lost a bit.
Otherwise, I probably would have stayed with Void for a while more. It was pretty nice.
Oh, and steam can't remember to keep me logged, but I'd probably blame Valve rather than void for this (very minor) inconvenience.
By 'successor' do you mean 'works in a similar way and I happen to like it better' or is there something that you think Void has got that slackware and arch don't have?
PS: downloading the void live .iso now for a bit of distro-hopping on a spring morning.
I don't know what the story is for Arch, but I find that Void strives to make the system dead simple: it is even more minimalist than Slackware (it feels more like a BSD). It isn't just small, though: it has good defaults. There isn't a whole lot of documentation beyond the well-written man pages, and I believe this is in part because it isn't necessary.
Like Arch, though, it is a rolling release system: an update may break your system, and package indices quickly become stale as old packages are deleted from the server. You can easily fix this by updating the index.
Ran the installer script from a terminal in the live session - result is an ncurses dialogue that walks you through the steps. Disk already partitioned and skipped the network set-up stage and selected install from local. Rebooted into (graphical, xfce4) installed system in a few minutes. Network manager up and running, needed to log-in to local wifi again.
Probably because I skipped the network stage in the installer, I needed to set a repository for updates.
echo 'repository=http://repo.voidlinux.eu/current/' \ >
/etc/xbps.d/00-repository-main.conf
(somewhat reminiscent of OpenBSD's 6.2 new installurl)Now installing some applications. LibreOffice is version 6 'fresh'. A bit like OpenBSD, installing Libreoffice brings a metric tonne of dependencies.
Edit: you need to install alsa to get sound
xbps-install alsa-utils
gets you basic sound functionality. The 'stem matches package name' logic is very reminiscent of OpenBSD pkg_add (I've never used NetBSD).http://www.troubleshooters.com/linux/void/voidtips.htm
More articles on Void from the same author, including an install guide:
I worked out that root defaults to /bin/sh before reading the voidtips page above. Also worth mentioning here that Firefox-esr (52) is installed by default from the xfce4 live iso. Firefox release (59) is also available as is Chromium (65). Some font-puggling is needed (fontconfig stuff) to get sub-pixel rendering.
In all, quite nice. I'll see how long it takes me to break this.
My only critique is that most packages will install everything but the kitchen sink, so even if I only need "Writer" I have to install every single component of LibreOffice and this makes the system a little bloated.
Also, you have to build your recipes on the same target arch that you are going to deploy to. Irrelevant to your question, but something to note.
What issues are you running into? The AUR and VoidLinux package don't have an issue. Skype (paul.knopf1) me?
I'm trying to clean up the Void package to make it more maintainable.
Are you having a problem with the Void package script? The go build template for Void is very naive, I wouldn't use it. It uses symlinks which doesnt place nice with vendoring tools. Things will be a lot smoother when vgo is done and their template is updated accordingly.
I think it's still the recommended way for dependency management reasons and missing glibc-packages. If you can get your program running with the alpine glibc you should probably do that
* Alpine is lighter-weight. As at least one point, Alpine packages are split into small parts (usually at least app, app-dev, and app-doc, respectively containing the actual program, the development headers, and the manpages/docs). Alpine also defaults to using Busybox for coreutils.
* Void is rolling release with regular updates and a surprisingly large repo. Alpine has a rolling "edge" release and stable releases that are supported for 2 years.
* Void works on a traditional install to a writable root filesystem; Alpine can do that ("sys" install), or can run in RAM, optionally persisting state).
* Alpine uses hardened kernels. They used to use grsec, not sure what code they use now. Additionally, they configure the system to be locked down; for instance, on the laptop I'm using to type this comment, I can only check the battery status as root, and powertop outright doesn't work (as I understand it, they completely killed off the debugfs interface it needs).
* Void seems to be more into cutting-edge tech; ZFS and wireguard come to mind.
In general, Alpine is designed for embedded, Void is a general-purpose system. Both can do the others' job, but that's their tendencies.
my LXC container basically runs up DHCP to get an IP and a SSH server to provide a remote shell, everything else is per-server setup like webservers and stuff, compared to the ubuntu containers I run Alpine uses a LOT less memory and CPU.
Edit stupid autocorrect. Also further research indicates xbps is way more traditional. Sigh...
I would rather love something that explains me how to setup Nix on Alpine Linux and then deploy Nginx + PHP 7.1 with several websites. For desktop usage I enjoy tinkering with edge and upstream releases too much to consider Nix anyway.
err..... what
When he stepped away from NetBSD, I remember reading that it was because he wanted to work on a package manager.
It might be that the entire raison d'etre for Void Linux is a package manager consisting of shell scripts.
Not sure what he thinks of pkgsrc but IMO their work has made things so easy that, e.g., one can easily use a set of shell scripts instead of pkg-add, etc. I do this to save space on small systems. IME, the pkgsrc bootstrap scripts are a very reliable way to build a gcc toolchain. (build.sh as well)
One project I have had on the list for many years is to build Linux on BSD. Could it be done? Has it been tried?
Also, maybe S6 deserves a mention as another daemontools clone, with the added bonus that it may lead one to discover execline.
Nothing against runit. I use socklog and occasionally udpsvd by the same author.
How do you mean? Compiling the Linux kernel on a BSD machine? Using GNU on BSD (if so, the answer is yes; see Debian GNU/kFreeBSD)? Linux kernel with BSD userland?
Started from base FreeBSD install, installed gcc and gmake, pulled down a tarball from kernel.org. Did a `gmake x86_64_defconfig` to get started. First problem: FreeBSD calls it "amd64", Linux calls it "ia86". Exported ARCH=ia86 and retried. It gets further now but appears to blow break trying to build some .S files (FreeBSD uses as from GNU binutils, but it's like a decade old). I couldn't figure out how to fix, so gave up:)
I suspect it would work in a Linux jail, though, since that's a GNU userland with a Linux ABI from the kernel. Didn't try, though.
I also won't speak to whether it would work on netbsd/openbsd/etc.
There are probably obvious reasons this wont work but without trying I do not know what they are.
/bootstrap scripts/s/scripts/utility/
apologies for being a bit sloppy here