First of all, check that hardware virtualization is enabled in your UEFI setup.
You need to have packages virtualbox-dkms and linux-headers installed (together with all their dependencies, but you don’t have to check them manually). linux-headers must be of the same version as linux-image. That’s all that you need to get driver properly built. Don’t listen those users who recommend you to remove and reinstall these packages or install additional packages manually, this kind of magic doesn’t work.
Also note that you cannot use kvm and virtualbox simultaneously. If you are using some kvm-based virtualization system, it causes a conflict.
And that’s exactly what happened in your case David. Which is why I’m so happy (also because I fixed the tools from an author I like and already had the books at home :-P):
Really detailed and cool response from the kernel developer. I also found the use of the recent BPF feature to provide a workaround until a proper kernel fix lands really interesting.
I set it up this way so that if I need to reinstall Linux, I can just overwrite / while preserving /home and just keep working after a new install with very few hiccups.
Even with a single partition for / and /home you can keep the contents of /home during a reinstall by simple not formatting the partitions again. I know when I tried years ago with Ubuntu years ago the installed asked if I wanted to remove the system folders for you. But even if the installer does not you can delete them manually before hand. Installers wont touch /home contents if you don’t format the drive (or any files outside the system folders they care about).
Though I would still backup everything inside /home before any attempt at a reinstall as mistakes do happen no matter what process you decide to go with.
There was no option per say, at least on the ubuntu installed I tried many years ago. Just a popup that happened sometime before the install but after the manual partitioning if the root partition had folders like /etc /usr /var etc that were needed by the installer. Not sure if all installers do this - but I would suspect if they didnt you can just delete the folders manually before you enter the installer and pick manual partitioning option and opt to not format any partitions.
Lots of great answers here already so I will only address a couple of things that haven’t been mentioned:
Regarding Fedora Silverblue:
Currently, Fedora Atomic Desktops are in a major shift to accept OCI container images for delivery of packages. This means that the built image becomes one compliant to OCI and that we boot into an OCI container as our system. As OCI images are relatively declarative (not to the extent that NixOS does (yet)), it becomes possible to have a set of config files (most importantly, the so-called Containerfile) in which your system is ‘declared’/‘configd’. In case you’re interested into how this looks/works, consider taking a look at uBlue’s startingpoint or if you’re more interested in the scope of configuration into Bazzite and/or Bluefin.
apx is available as a COPR on Fedora Atomic Desktops.
Nix can be installed on Fedora Atomic Desktops using Determinate Systems’ installer.
Regarding Vanilla OS:
They’re also moving to a model that’s very close to where Fedora Atomic Desktops is heading towards. So, expect a similar way to config/‘declare’ your system.
What are your thoughts on the three four distros mentioned above?
It’s a question of polish if you’d ask me. With Fedora Atomic Desktops and NixOS being advantageous due to being more established and better funded. I wouldn’t write off Vanilla OS yet as they seem to know what they’re doing. Though, I wouldn’t keep my hopes up for blendOS as its main developer was unaware of which MAC was configured by default on blendOS (spoiler alert: none, at least at the time).
Furthermore, NixOS is literally its own thing and unfortunately infamous for its steep learning curve. If you can afford to learn and conquer NixOS, then NixOS should be the recommendation; unless (like me) you seek SELinux on your systems.
Between Fedora Atomic Desktops and Vanilla OS; Vanilla OS is still in its major rewrite/revamp. The alpha builds are there, but I wouldn’t recommend using those on production machines. Fedora Atomic Desktops, on the other hand, has been going strong for a while now and the uBlue-team has even succeeded in making the OCI-stuff accessible for the general (Linux) public. So if you want to switch now and NixOS is/seems too hard; then Fedora Atomic Desktops it is. On that note, I recommend to check out the uBlue project.
Which ones are the most interesting, and for what reasons?
Honestly, all of them are really interesting, but NixOS does the most unique stuff; with only Guix doing something similar within the Linux landscape. To give you a taste of some of the wild stuff found on NixOS; there’s the so-called Impermanence module which -to my knowledge- happens to be the closest thing to a usable stateless system we’ve got; period. Consider reading this excellent blog post in case you’re interested to know what this entails.
I don’t think having a swap partition or file would be all that useful because I have plenty of memory. I’ve never had to reinstall Linux so I’m not sure why I would need a separate home. If I did bork my OS somehow I’m fairly confident I could repair it from a live distro. And even if I did end up having to save my home I could just copy the files I want to another drive if it really came to that.
In this case you could view a swap partition as a safety net. Put 20-30GB in a swap partition in case something goes wrong. You won’t miss the disk space.
I’ve never understood why people run without swap. There’s basically no downside to having it. If you’re running a high spec, high RAM machine you probably also have a big SSD/HDD and are very unlikely to be squeezing it to the last GB (and if you are you should probably look into upgrading that). And if you’re on a machine with very limited SSD/HDD capacity, you’re probably not in an “ample RAM” situation anyway.
Even on high RAM systems, a few GB of swap can enable better caching and more graceful memory management. But heck, even if the thing sits there like an 8GB lump of nothing, were you really going to miss that last 8GB?
I'm very excited about how the Linux community generally seems to be moving towards various approaches to immutable systems - all of them having in common that system updates are going to be a lot less likely to break. The future is looking good!
is pretty vague. Do you mean locked down, with features like SafetyNet which locks people in to Google Services? Or do you mean locked down in the sense that installing packages doesn’t just directly change the files in / ?
Systems like rpm-ostree still allow modifications to the OS, it just requires other steps. OpenSUSE MicroOS even allows for arbitrary modifications to the root fs through transactional-update (it even allows for dropping in to a transactional-update shell, so it’s not necessary to prefix each command with transactional-update).
Especially OpenSUSE MicroOS feels more like OpenSUSE Tumbleweed, compared to Fedora rpm-ostree’s limitations compared to Fedora dnf.
Using Fedora Silverblue has gone a long way to dispel that concern for me. It goes out of its way to be much more user-centric than that. I can’t speak for the others yet.
I had the same problem (running Fedora 38), and this post really helped me - it goes through the whole MOK generation/enrollment and then provides a script to automatically sign the modules. I had to make a couple of adjustments to make it work on my system and to automatically load the modules with modprobe , but now I just run /sbin/vboxconfig; /root/bin/sign-vbox-modules each time my kernel gets updated and can use VBox fine again.
Well technically, if you’re using BTRFS, you might want to check out subvolumes. Here’s my subvolume setup:
Subvolume 1, named @ (root subvol)
Subvolume 2, named @home (/home subvol)
Subvolume 3, named @srv (/srv subvol)
Subvolume 4, named @opt (/opt subvol)
Subvolume 5, named @swap (which is - you guessed it - the swap subvol)
You then set up fstab to reflect each of the subvolumes, using the subvol= option. Here’s the kicker: they are all in one partition. Yes, even the swap. Though caveat, swap still has to be a swapfile, but in its own separate subvolume. Don’t ask me why, it’s just the way to do it.
The great thing about subvolumes is that it doesn’t do any size provisioning, unless specified by the user. All subvolumes share the space available within the partition. This means you won’t have to do any soul searching when setting up the partitions regarding use of space.
This also means that if I want to nuke and pave, I only need run a BTRFS command on my @ subvolume (which contains /usr, /share, /bin), because it won’t be touching the contents of @home, @srv, or @opt. What’s extra cool here is that I’ll lose 0% FS metadata or permission setup, since you’re technically just disassociating some blocks from a subvolume. You’re not really “formatting”… which is neat as hell.
The only extra partitions I have is the EFI partition and an EXT4 partition for the /boot folder since I use LUKS2.
Have you had any luck with hibernation with a BTRFS swapfile? My computer still does not start from hibernation, and I am not sure why, even though I followed the Arch wiki to set it up.
Can’t say I have. Haven’t used hibernation mode for years even. Sleep mode is just too good nowadays for me to use it, so I guess we could chalk that up to a fault of the setup.
According to ReadTheDocs (BTRFS, swapfile) it’s possible under certain circumstances, but requires the 6.1 kernel to do it in a relatively easy way.
In tools like lsblk? Nope. They appear as directories, usually in the top-level subvolume, which typically isn’t mounted anywhere in the system.
Then you just create mount entries in /etc/fstab just like you would with partitions, this time just using the subvol= option as mentioned above. I don’t know if there are any installers that do this for you. Archwiki – as usual – has good documentation on this.
So, it doesn’t sound like it would be useful for me, since the reason why I have separate partitions in the first place is so that I can re-install a distro or install a new distro without having to back up /home first.
When I started with Linux, I was happy to learn that I didn’t need a bunch of separate partitions, and have installed all-in-one (except for boot of course!) since. Whatever works fine for you (-and- is easiest) is the right way! (What you’re doing was once common practice, and serves just as well. No disadvantage in staying with the familiar.)
After I got up to 8GB memory, stopped using swap … easier on the hard drive -and- the SSD. (I move most data to the HD … including TimeShift … except what I use regularly.)
I use Mint as well; for me this keeps things as simple as possible. When I install a new OS version (always with the same XFCE DE) I do put THAT on a new partition (rather than try the upgrade route and risk damaging my daily driver) using the same UserName. A new Home is created within the install partition (does nothing but hold the User folder.)
To keep from having to reconfig -almost everthing- in the new OS all over again I evolved a system. First I verify that the new install boots properly, I then use a Live USB to copy the old User .config file (and the apps and their support folders I keep in user) to the new User folder. Saves hours of reconfiguring most things. The new up-to-date OS mostly resembles and works like the old one … without the upgrade risks.
In my next reinstall, can I combine the / and swap partitions (they’re next to each other so I can do this) and will swap files just be automatically created instead?
They won’t be automatically created but you can create your own swap file on /, no need for a dedicated partition:
Use dd to create a file filled with zeros of appropriate size.
Format the file with mkswap.
Activate the swap file instantly with swapon.
Add it to /etc/fstab so it will be automatically used on reboot.
Appropriate size will vary but I suggest starting with something like 100 MB and check once in a while to see how much is actually used. If it fills up you can replace it with a larger swap file or you can simply create another one and use it alongside the first.
Why do you have a btrfs volume and an ext4 volume? I went btrfs and used sub volumes to split up my root and home but I’m not sure if that’s the best way to do it or not
I use btrfs for my / because I can use Linux Mint’s Timeshift tool to make snapshots, but I don’t want snapshots of /home to be included. Am I doing this wrong?
As long as you don't re-format the partition. Not all installers are created equal, so it might be more complicated to re-install the OS without wiping the partition entirely. Or it might be just fine. I don't really install linux often enough to know that. ¯_(ツ)_/¯
Not sure if that’s wrong or not tbh, I use snapper instead of timeshift and I wanted /home included in the snapshots anyway (I think it let me set them up as 2 separate jobs). The reason I went with subvolumes instead of separate partitions is that I didn’t have to worry about sizing. I also know I can reinstall to my root subvolume without affecting the others, depending on the installer for your distro I don’t know how easy that is vs just having separate partitions. I played around with it in a VM for a while to see what the backup and restore process is like before I actually committed to anything!
I have BTRFS on /, which lives on an SSD and ext4 on an HDD, which is /home. BTRFS can do snapshots, which is very useful in case an update (or my own stupidity) bricks the systems. Meanwhile, /home is filled with junk like cache files, games, etc. which doesn't really make sense to snapshot, but that's, actually, secondary. Spinning rust is slow and BTRFS makes it even worse (at least on my hardware) which, in itself, is enough to avoid using it.
I have a 120 gig SSD. The system takes up around 60 gigs + BTRFS snapshots and its overhead. A have around 15 gigs of wiggle room, on average. Trying to squeeze some /home stuff in there doesn't really seem that reasonable, to be honest.
I routinely 100% my root volume accidentally (thanks docker), but my machine has never crashed, it does tend to cause other issues though. Does having a full /usr, /var or /tmp not cause other issues, if not full crashes?
Of course it does, it’s actually filling those that crashes the machine, not /.
When space runs out it runs out, there’s no magical solution. Separating partitions like that is done for other reasons, not to prevent runaway fill: filesystems with special properties, mounting network filesystems remotely etc.
It depends, if your docker installation uses /var, it will surelly help to keep it separated.
For my home systems, I have: UEFI, /boot, /, home, swap.
For my work systems, we additionally have separate /opt, /var, /tmp and /usr.
/usr will only grow when you add more software to your system. /var and /tmp are where applications and services store temporary files, log files and caches, so they can vary wildly depending on what is running. /opt is for third-party stuff, so it depends if you use it or not.
Managing all that seems like a lot of effort, and given my disk issues havent yet been fatal, ill probably not worry about going that far. Thanks for the info though.
Last time i used LVM was way back in fedora 8 days, when it was the default partition. It was super annoying to use, as gparted didnt support it, and live cds often had trouble with it. Having to read doco to resize it was pretty not good for a newbie to linux. Has it improved since?
It’s not wrong, as such, but simply not right. Since you’re using btrfs, having a separate partition for home makes little sense. I, personally, also prefer using a swapfile to a swap partition, but that’s potato/potato.
Alright, but actually I don’t think I’m maximizing my use of btrfs. I only use btrfs because of its compatibility with Linux Mint’s Timeshift tool. Would you be implying if I used btrfs for the whole partition, I can reinstall / without overwriting /home?
BTRFS has a concept called a subvolume. You are allowed to mount it just like any other device. This is an example /etc/fstab I’ve copied from somewhere some time ago.
/efi (or /boot, or /boot/efi, whatever floats your boat) still has to be a separate vfat partition, but all the other mounts are, technically speaking, the same partition mounted many times with a different subvolume set as the target.
Obviously, you don’t need to have all of them separated like this, but it allows you to fine tune the parts of system that do get snapshot.
linux
Hot
This magazine is from a federated server and may be incomplete. Browse more on the original instance.