this post was submitted on 23 Aug 2023
105 points (92.7% liked)
Linux
48328 readers
78 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I swear to God this is my biggest gripe with Linux, not being able to choose where stuff gets installed. Like yeah cool I want to have the OS on a SSD but that doesn't mean I also want my packages to go to it too, the HDD is for that
You could set it up so that your root is on one drive and your home directory is on another
But doesn't APT or Pacman install to root folders? Like when I say I want just the OS on the SSD I really mean it.
Usually each distro decides which packages go in / and which in /usr based on how critical, more or less, a package is to the system. It's often not very easy to configure these choices because it affects other distro decisions, including filesystem structure and paths, and boot sequence. Beware that "just the OS" on a typical distribution is usually a lot less functionality than you get with "just" Windows NT.
There's also /usr/local for packages you install on your own, apart from the distro package manager, and /opt, for closed source binary only packages or for anything else that doesn't want to conform to the bin, lib, include, share schema.
Yeah, they’re installing software.
Everything below / is the OS. There isn’t an analog to C:\Windows in *nix-like operating systems.
The closest thing to a pure separation would be an immutable distro like Silverblue or MicroOS.
What are you trying to separate from the OS files? If it's just personal documents and stuff like that, I don't see why you can't just keep those in your home directory. Or are you saying you want your installed programs separate from the Linux kernel? Then you can just put the boot partition on one drive and have the root partition on the other (including home). I guess I'm just a little confused as to what it is you're trying to separate here. What do you mean when you say "separate from the OS"?
@Ozzy @rtxn I just thought of this, could one, create symbolic links that point to /lib (for ex.) to "repoint" the directory a package gets installed to?
Not sure if this would work, but was curious if someone's attempted it before.
Yeah I was thinking the same thing too, technically if we would recreate the file structure on the second drive, move everything there and set up soft links to those folders instead it might work? I need to try it out in a vm
Some directories can be moved, but you risk messing up your boot process if /lib, /etc, /bin, /sbin, and /dev are not on your root partition. Having /usr on a separate partition is sort-of possible, but even on Gentoo that's an uncommon configuration, and I'd expect less flexible distros not to allow it at all. /var, /opt, /root, and /home can be wherever, though.
It may be possible to put only selected files in your /lib and so on, and then mount another partition on a different drive on top of the minimal one late in the boot process, or even to stopgap things with a carefully-designed initramfs, but I think you'd be looking at some trial and error (and make it more difficult to update basic system packages).
Also, defining what is "just the OS" on Linux is not as easy as you may think. The smallest possible configuration that will get you a running system is a Linux kernel + busybox (a set of cut-down system tools that includes a simple init system, a shell, and a basic device manager). Most of what your distro packages is not part of the OS, strictly speaking—it's optional add-ons that the people making the distro think most users will find useful.
Take a look at this, might be interesting: https://wiki.archlinux.org/title/Overlay_filesystem
I had no idea this exists and it looks like it might just work, thank you
@Ozzy Exactly what I was thinking. Kind of a PiTA if everyone needed to do that, but maybe an excuse to throw up an open-source script on github for it.
Is that really an issue, though? My entire install is only 38GB (not including swap), and I've never even gotten close to filling the root partition.
If you really want to, you could mount the HDD to
/usr
or make symlinks pointing to a directory on the HDD.I am more concerned about the life of the SSD than it filling up. I'd like to minimize the amounts of write operations and since I have a perfectly capable HDD that doesn't suffer from such a thing I want to offload all of that work.
Also thanks for mentioning mounting, completely forgot about that and it might actually be easier to do
I wouldn't worry too much about SSD wear. It's not nearly as big an issue for PCs, and wear balancing can stretch that ~10000-write lifetime to many years, especially if most of the SSD is empty. I bought my oldest SSD around 2015 and it still works perfectly. SMART barely reports any errors.
If you want frequently written files to be on the HDD, start with
/var
,/run
, and~/.cache
. Those files are likely far bigger contributors to wear than anything inside/usr
.