I’ve found that depends on the use case and distribution…
Sometimes an SD Card will appear as /dev/mmcblk0 (that could be wrong) or /dev/sda, /dev/sdb et cetera… I prefer it when the device indicates what type of storage :
/dev/sda
/dev/nvme
/dev/mmcblk
Here’s my Pi3 (I can jump to it via from the internet vi my home wifi router and Pi4 over SSH) :
╭─x@telesto ~
╰─➤ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 59.5G 0 disk
├─mmcblk0p1 179:1 0 42.9M 0 part /boot
└─mmcblk0p2 179:2 0 59.4G 0 part /
My main Pi (4) system that I keep on 24x7 (that I use as a jumphost) doesn’t have an SD Card - it boots off a USB 3 SSD, and has a 6 TB USB hard drive mounted (for backups) :
╭─x@frambo /mnt/BARGEARSE/BNZ/LINUXISO/LinuxMint
╰─➤ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 512M 0 part /boot/firmware
└─sda2 8:2 0 465.3G 0 part /
sdb 8:16 0 5.5T 0 disk
└─sdb1 8:17 0 5.5T 0 part /mnt/BUNGER00
zram0 253:0 0 9.5G 0 disk [SWAP]
The reason I like things like Balena Etcher is that it actually presents the Vendor string - e.g. “Sandisk 250 GB” as a target - so it’s more human friendly - it does also offer the option of e.g. “KINGSTON SNVS1000GB NVMe” - i.e. the main system disk … So it’s easier to NOT make an unforgiving mistake - yeah - you still choose the internal system desk - “Kingston SNVS1000GB” - but - even after that - it presents you with an “Are you sure?” and then it prompts you for your password to run it with sudo…
So if you do manage to screw up and write to the wrong device - the system did EVERYTHING it could to prevent that in several steps - however “sudo dd if=file.iso of=/dev/sda” is instant and unforving - you might have intended to do the second disk “sudo dd if=file.iso /dev/sdb” - but you got one character wrong - and your system is hosed - so new users should probably not be using dd…
Here’s my Lenovo ThinkPad with Ubuntu 24.04 (I hadn’t realised I’d left it powered up while away) :
╭─x@fenrixii ~
╰─➤ lsblk --output NAME,VENDOR,MODEL |grep -v loop
NAME VENDOR MODEL
nvme0n1 KINGSTON SNVS1000GB
├─nvme0n1p1
├─nvme0n1p2
└─nvme0n1p3
└─dm_crypt-0
└─ubuntu--vg-ubuntu--lv
The single dd command you run with sudo - is expedient - but fraught with risk.
And earlier - you (@nevj) mentioned --progress and --conv=fsync - I’ve found they aren’t 100% reliable - I have used both those - and - I’ve seen a “dd” finish (too quickly to be 100% complete) and run “sync” anyway before removing the drive - and it’s taken minutes - so there’s still some background writing going on…
So I’ll keep using balena etcher because it presents a confirmation before writing, and, it has a reliable progress indicator…
And I usually use the RaspberryPi Imager tool for writing an O/S to a device (SD Card or USB drive) - it’s very useful - similar to Balena Etcher but even more sophisticated - you can select boot options (to TTY or DE), WiFi network, user name, and SSH key - which it will do when writing the image - and I’ve used it to do both Raspbian (Debian) and Ubuntu and it works… This versus using “dd” to write an IMG file to SD-Card, ejecting it, re-inserting it and mounting it, find the “/boot/” folder (probably on /dev/sdb1) and editing a few files here and there, and then creating a file to enable sshd (touch /media/x/SD-Card/boot/ssh) and maybe editing the WiFi parameters file - Pi imager does all that for you at “the time of writing”…
30 years ago - I mostly used DD to get a tar file from a raw “tar” floppy disk, or magnetic tape… not always necessary with a tape (and slow) - but e.g. vendor ships something on a floppy - insert the floppy into a Windows PC - and shows “unformatted”… Insert it in a UNIX or Linux system - and “tar tvf /dev/fd0” (if your floppy is “fd0” - it’s been so long I don’t remember the floppy device name format) to get a content list - or - easier still “dd if=/dev/fd0 of=/home/dan/floppy-image.tar” - then I could put that tar file on a network shared drive…
I can’t remember if Balena Etcher has a Windows version (most Windows users use Rufus - and Windows doesn’t even have “dd” naturally enough), but it does have a MacOS version, and RaspberryPi Imager (from the RPi foundation) is available on Linux desktop, MacOs and Windows…