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.

    • wantonviolins [they/them]
      ·
      4 years ago

      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!

      • dpg [he/him]
        ·
        4 years ago

        Guix is usable on something like a thinkpad IME. It's really fun to learn Guile Scheme too and I ended up submitting patches.