So we are all familiar at some point with the advice to use the command
dd if=image.iso of=/dev/sdx
or similar. People almost religiously think of dd as the tool to do this. It certainly can do the job, but not only is it really bad at it (mostly because it doesn't let the kernel automatically select a good block size), but it is also infamous for having a very fragile command syntax that is easy to typo and destroy your data with. dd wasn't actually written as a disk copying tool and is meant to be used as a data conversion tool. People using it to copy images to disks without doing any sort of conversion are kind of just abusing the fact that it reads one file in and writes another out. A lot of people don't know this, but on Linux/UNIX systems you can interact with block devices like they are normal files. As a result it's generally faster and safer to do something like
cp image.iso /dev/sdx
instead. People frequently uselessly risk using dd in places where ordinary file commands like cat and cp work fine. Some of you nerds probably already knew this but I want to spread it because people recommending dd is way too common.
Also, regardless of what commands you are using, when you finish doing anything involving writing to block devices always remember to run the command sync to make sure the kernel has actually written the data to the disk and isn't waiting to later.
using an app that needs to take over the terminal won't help as you won't really get a feel for it. this is old school, but pick a distro that requires you to set it up through the command line and bash your way through it. you'll learn a lot about the many pieces that work together to make a modern operating system actually work and you put yourself in an environment where learning is the only choice.
That's been my experience with learning linux in general. I've learned most of what I know about linux either by breaking things and needing to fix them, or by wanting to set up something I'd never done before and diving into wiki pages and config files.
I can not tell you how much I learned about linkers a couple of days ago beating my head into the "statically compile rust with c++ libs" wall for like 12 hours while barely making progress, lol. dear god symbol resolution is complicated.
Days like that make you appreciate both how nice it is that linking works seamlessly 99% of the time, and also what an absolute mess your library setup usually is.
unfortunately, the library set up wasn't that unreasonable, it's just an unsupported and untested combination.
C++ liberals have gone too far
I appreciate the tip. Maybe i can find a junk laptop to fiddle with on craigslist or something. Any suggestions on the distro?
Arch, or if you've got a tremendous amount of time to fill, Gentoo, or if you've both got a tremendous amount of time to fill and a burning hatred of yourself, LFS.
gentoo is much, much easier these days, lol. it's a mostly scripted install process you can bail out of to customize whatever you like. the only reason I suggest arch over it is that emerge is much more complex to learn than pacman and the archwiki is the best linux documentation on the internet (from a user perspective)
Compiling still takes forever, though, doesn't it?
I mean, I'm comparing it to compiling on a first gen athlon 64 from 2004 so not really? lol. there's also build caches for most everything in the basic install process already.
lol fair enough, I haven't tried out Gentoo or Funtoo yet because I'm used to the Debian/Ubuntu ecosystem where compiling anything more complex than a few hundred lines is often a bad time, and haven't had a whole weekend to devote to tinkering with something in years
I wouldn't bother, there's literally no advantage. nixos is a much more interesting source based distribution because it largely delivers on its promise of a fully reproducible installation - meaning you configure stuff once and (if you've pinned versions correctly), you will get the exact same results on any other computer you take that configuration to.
NixOS is the one that inspired Guix, right? I've been really interested in Guix.
yeah, I think nix is better supported, though.
Makes sense, it's older and doesn't have the ideological baggage of a GNU project. Not that I'm against free software, far from it, but it's often completely impractical to run a fully libre system. I'll check it out sometime, thanks for the recc!
Guix is usable on something like a thinkpad IME. It's really fun to learn Guile Scheme too and I ended up submitting patches.
yea, I second arch. way back in the day, a stage 1 gentoo install was the most thorough way to learn but it took literally two weeks of beating your head into a wall and watching code fail to compile. your biggest problem now is that arch actually automates a lot of the install process - but enough of the core is still exposed that there's plenty to learn.
also, I suggest a VM. easier to work with than a whole separate laptop.
I'd say go with arch, it has a really detailed guide on the wiki for setting everything up.
Used Ivy Bridge Thinkpads are very affordable on eBay, have a huge wealth of spare parts available, and are still very capable performers despite being seven years old.
I picked up an i7 X230 a while back and fully outfitted it - 16GB RAM, brand new extra large battery, large SSD, dock, etc, for $450USD total. If you just want a functional laptop you can get one for $150.