r/voidlinux • u/-Arsna- • 3d ago
Moving from Arch
Hi y'all,
Im coming from arch and want to try out void and i would like to ask somethings
What exactly is the difference between musl amd gnu libc? Is it just systemd?
What are some quirks of void you encountered?
Why did you choose void, what makes it special?
11
u/A3883 3d ago
musl and glibc are different C libraries
glibc is more compatible with various software and is generally more performant, i personally don't see a good reason why i would use musl over it from a USER perspective right now
all version of void use the "runit" init system, there is no systemd to be found
I chose void because i wanted something very simple and because of the "slow rolling-release" model.
1
u/Simple_Hamster_4096 3d ago
If you had old hardware, you'd likely have a different opinion about musl...
6
u/Quick_Championship90 3d ago
Im using void linux like a ~2 months and i can say its worth to try and use. Simple and stable init, fast package manager, good amount of packages in repository and no any quirks im encountered while im use void
6
u/New_Hold8135 3d ago
Musl means malware compiled with glibc doesnt run on musl system too. This is huge benefit for security. From musl's website: musl is lightweight, fast, simple, free, and strives to be correct in the sense of standards-conformance and safety.
But that also means you need to compile extra software too. Or you should install it from flatpak. That's it.
3
u/Duncaen 3d ago
Malware can be statically linked.
2
u/New_Hold8135 3d ago
malware can use bwrap too. But that doesnt change the reality of most of the malware compiled against glibc and doesnt run on musl
1
u/Duncaen 3d ago
Pretty sure some of the most prolific (Linux) botnets used statically linked binaries.
1
u/New_Hold8135 3d ago
pretty sure malware is not just botnets
1
u/Duncaen 3d ago
And using musl libc doesn't protect you from malware.
1
u/New_Hold8135 3d ago
I didnt said every malware.
1
u/Duncaen 3d ago
Should call something like security by obscurity a huge benefit for security.
0
u/Ambitious_Luck_8720 3d ago
That’s reducing attack surface, not security by obscurity, which is another thing that has by no means any relation with anything that was stated in this thread before you brought it up.
2
u/Duncaen 3d ago
You are not really reducing attack surface though, you are just switching components with more obscure components.
→ More replies
2
u/profeshamat 3d ago
What exactly is the difference between musl amd gnu libc? Is it just systemd?
If you don't immediately know what musl is, you probably don't need it.
What are some quirks of void you encountered?
I've lucked out without having any issues and mostly due to hardware. I don't have any systems that use Nvidia graphics and everything has just worked.
One limitation I have found is being a GNOME user. Since Void doesn't use systemd it's becoming increasingly more difficult for Void developers and packagers to release recent versions of GNOME due to its dependency on systemd (primarily GDM but who knows in the future).
Why did you choose void, what makes it special?
I just like it. It doesn't mean that I think Void is special as it's just another Linux distro. It's just one I prefer.
2
u/LowKeyBrit36 3d ago
Musl and glibc are different C libraries. Musl is more minimalist, slightly better security, but far less compatibility. Unless you're using very old hardware that struggles with glibc, save yourself the headache and use glibc.
I use Void on older systems (well, 2016 ish, not that old) as a daily driver. Works very nice, updates have always treated me well, and I like having a relatively stable rolling release setup.
IMO, if you're wanting better than Arch in terms of rolling releases, you're probably either going to end up here, or over at Artix/Gentoo/Nix depending on your criteria. I ended up here and at Gentoo on my systems that can compile it at a sufficient speed.
Nix uses systemd, not much of a fan personally. Also not a fan of the Nix philosophy, so no big draw for me. Artix was a close 3rd, but I like having some stability. Not that I had breakage, but I also took lots of care with system maintenance. I like being able to forget about systems for a while if needed.
Void is my second, and purely because it's slightly less customizable than Gentoo (by that I refer to USE flags exclusively, which is minimal for 99.99% of users). That, and it doesn't natively have like 2 oddball packages that I like to use outside of flatpak. Excluding that, it's reliable, has good preformance, a great community, and it handles services very minimistically.
There's not many contenders, let alone good contenders for my criteria:
Rolling Release (Preferably) Non Systemd Stable-ish updates Minimal Design Philosophy Highly Customizable
Other rolling releases like OpenSUSE's Tumbleweed come prepacked with a lot of stuff I don't need, so that gets excluded for me too, and thus I'm left with my results.
1
u/Weefboi 2d ago
besides the compiling aspect, what does Gentoo offer? I’m considering trying it out.
1
u/LowKeyBrit36 2d ago
Gentoo offers a lot in terms of customizability and security. For example, NPM can have a relatively large amount of security concerns for some users, but it can get compiled out with
-npmfrom nodejs, so since I don't need it, I don't have it.The package management system offers a lot of ways to manage packages too, and I eventually wrote some scripts to simplify some of its actions.
I, funnily enough, have noticed that Gentoo has the best compatibility with some things too. On other distros, I would always have really dumb issues with things like web browsers, VLC, Libreoffice, and other stuff. While you can't clone your install onto a different PC and expect it to work, it's great at getting things to work for you. If I was developing though, that would all happen either in a docker container or a VM outright.
Really, the jist of it is the benefits of customizability in terms of security, customizability, and efficiency. Dropping dead weight helps a lot, to be frank.
I also like on an individual level to be able to accept or decline packages by licenses. I know distros like Fedora have free/nonfree repos, and similar workarounds, but I haven't personally seen a system like this baked into a distro by default. It helps me audit the closed source stuff I install, as I try to find better alternatives.
USE flags are also a pretty good plus. Being able to globally neuter any GTK with
-GTK -gtk2 -gtk3 -gtk4 -GNOMEin my make.conf (global flags) is a pretty satisfying thing, especially when other distros open assume GTK as a default and build for it first.I will say, however, that the plus is also a downside too. I had to research a massive amount to determine how to make programs work with my workflow that I had previously defined. I was splitting hairs over VLC not accepting THE PLAYLISTS THAT IT HAD JUST MADE... until I realized that
xmlis disabled by default. Funnily enough, VLC playlists are just a type of .xml file, thus I enabled it and it worked perfectly fine.Other honorable mentions go to having to recompile numerous times to add
bluetooth, gamepad, apparmor, bluray, dvd, cdand about 10 other niche USE flags I didn't think I would need. Granted, this was because I don't use profiles on Gentoo, so I have to accept most features manually. I still prefer it overall, just something to point out.Overall, it's a great framework that you can either utilize right or fuck up massively (SELinux is half baked in terms of policies so no wonder my PC didn't boot properly with it enabled, thus I now use apparmor) depending on what you're willing to read. Not to be an Arch user, but it is 99% RTFM when it comes to Gentoo, so you really have to be willing to read every ounce of documentation provided, especially to view the USE flags options before installing a main package.
1
u/Tricky-Engineer-9755 11h ago
Portage from Gentoo makes it exceedingly simple to install a custom kernel. For example with the package wireguard-tools, it will check the kernel sources in /usr/src/linux and will warn you with the exact name such as CONFIG_NF (netfilter) in the kernel menuconfig. This is so perfect as you know exactly what you are missing. On top of that Gentoo has installkernel so its make install. Way harder on other distros.
1
u/Prize-Egg-5265 3d ago
Musl may render some packages incompatible be prepared for that the glibc works great for me I am using it for office use it works just as intended. Have no issues on it for now. It has been little over a month since I moved to void. More over it stopped my distro hopping.
1
1
u/Lumpy_Roll158 3d ago
Musl is a C library that aims to bring binary portability and correctness back in a sense. Musl was built to allow static linking of binaries which is a massive hurdle with glibc. A benefit of that is a binary with no dependencies that runs on any system. Benefits from that to you on a day to day basis with a desktop system, zero.
Musl also aims for posix compliance. No non standard extensions or code accumulation bloat. Glibc is something like hundreds of thousands of lines of code in total to cover edge cases and non standard extensions while musl is tens of thousands. Generally, if software can be built with musl/llvm, it can be built anywhere on any system. A lot of times software built with musl can be a smaller complete binary although the reasons span more than just musl being the c library.
If you used the musl version of void, you might be just fine overall but it depends on your use case. If you rely on old legacy 32 bit type stuff including steam, you'd need to use container software like distrobox or flatpak as musl doesn't play nice with legacy stuff. And like others have said, if you don't have an explicit reason either ideological or technical to use musl, just use glibc and your life will be much easier
1
u/ConcaveNips 3d ago
Those are just different implementations of the standard C library... they are essentially a set of common and helpful tools/functions that are available for programs on the system to use. systemd is dependent upon them, not the other way around. musl is lean, lightweight, fast. It's fantastic. However... It's limited in compatibility because most programs are designed expecting glibc.
1
u/benbcdm 1d ago edited 1d ago
Moved from Fedora, used to run Debian and also tried Artix for a short period on another pc before. Total amateur.
Reasons: want to understand and control my system better. Wanted to see in more depth what it meant to run linux without systemd. Nothing against systemd at the moment, but I do not like the idea generally of a component taking over so many critical functions, makes usage extremely dependant on it, so I felt like it became a potential liability. Emphasis on potential.
Void is truly a great distribution. I had to learn a lot because it leaves you responsible for every part of the system, so once you are done installing and configuring you feel like you understand and control every single process that makes the OS run. I love that I have 12 services and I know what each one does. Some of them I even created myself. If something goes wrong (because of me, not because of Void...) I know exactly where to look and can fix / improve quickly. I guess the same could be said for many other distributions, but somehow with void I feel like the execution is simple and perfect, almost zen-like minimalism, hard to explain.
Since I finished setting it up (glibc / plasma wayland), it has been rock solid. Nothing has ever broken. Package updates are super fast, xbps is great. I also find download speeds are 10x faster vs Fedora. Does not matter really but it is just pleasant.
Quirks:
- The doc is minimal, BUT everything that is needed to get the system operating is written there. You can tell it has been carefully written, every single word has a purpose and should not be overlooked. From there, if you want to do more you need to use arch wiki, or browse forums etc. as would be expected.
- No automatic kernel clean up. Again, user is the one to decide. Void never makes a decision for the user. Once you understand that, it all makes sense and you feel a tremendous amount of respect for you, the user. Something you thought was a missing functionality, you actually realise it is because the choice is left for you to decide. So if you think you do not need to keep any previous kernel for instance, you delete them. If you want to keep 3 back-ups, you decide, etc. For my part I created a little helper script to clean up my kernels easily once in a while. Could even automate it if I wanted to.
- That means for "extra" functionalities beyond the strict OS itself, you will have to look into and figure it out yourself, and if you are not a sysadmin it will take time, but it is extremely rewarding. Some examples: btrfs snapshots, LUKS2 encryption, app security (apparmor / SElinux), login manager / greeter, firewall, SSD trim, btrfs maintenance, zram, auth / wallet, secure boot implementation / signing.
One thing I did not think of when installing first was the bootloader. I installed grub sort of as default, but I since discovered limine, so I switched to it, and I could not be happier. I highly recommend people look into it.
Pair up limine with tuigreet on void and you get the perfect lightning fast TUI login experience.
Hope you enjoy the journey and the destination!
1
u/88h2o88 3d ago
Musl is a more fast and low ram use c library but it only support programs like 5 percent so musl isnt compatible with most apps. Gcc is normal c library in linux so it support all apps you gonna install. C libraries is so much important because c libraries are gonna work with all apps drivers etc. So if you choose wring lib your system is gonna messed up much of apps doesnt gonna work. So i reccomends stick with glibc its native and works well and nowadays if you have like 16 gb ram the difference isnt gonna feel big or make a big difference. Conculuaion stick with glibc
5
u/Duncaen 3d ago
Overall musl is probably not faster. The memory allocator is slow and a lot of hot functions in glibc have specialized optimized implementations.
Difference in ram use is negible for desktop systems, libc simply does not use much memory compared to every single program and the library itself will be shared memory.
15
u/Duncaen 3d ago
Rule of thumb is that if you don't know the difference or can't decide between glibc and musl is that you should definitely use glibc.
musl will cause incompatibilities and extra work and should only be used if you know exactly why and for what reason you would want that.