So this post was supposed to be how I [yet again] fixed an issue with a USB
flash drive that I use for installing Linux.
The USB flash drive in question is “the blue one” that I picked up back in 2016
because I wanted to have a handful of smaller sized thumb drives laying around
while I did some soul searching to find the best Linux distro for me.
The blue one has always housed a copy of Arch Linux. The red one had Debian
Stretch on it from back when it was still in testing.
There was also a black one I gave the wife to hold some dance music for the
kiddo, a purple one that had Ubuntu on it, that I think also went to the wife
and a green one that I gave my buddy Justin last time he was in town to
film an application video for Y Combinator with me.
I really like having these little drive laying around. 2 gigs is more than
enough for my needs, as most Linux ISOs are less than that, and they are cheap
enough on Amazon that I don’t feel bad giving them away when the need
arises.
The real talk is, these drives are effectively disposable to me. I don’t use
them for long term file storage and don’t use them for any backup purposes.
Of the 5 drives that I purchased in bulk, the blue one has been the one to give
me the most trouble. Incidentally, it’s also the one I’ve used the most often as
I tend to slap the latest version of Arch Linux on it before I get to
installing.
I’m not here to argue that these flash drives are quality or not. They are sold
in bulk and there’s like 20 companies all selling the same looking drives. I
knew what I had gotten myself into.
As mentioned, this post was supposed to be about how I solved a problem with the
drive. You see, a while back the drive had started to give me grief. It wasn’t
mounting properly, even though the system could see it, and I was faced with
some nonsense about how the super block and/or partition table was fucked.
Previously, I had somehow worked through all of my issues, and was able to get
the latest version of Arch on the drive. That was about a year ago when I got my
System76 Galago Pro.
More recently, I picked up a new computer (more on that later, as it was a dud
and I’m waiting for a replacement now) and since Arch is still my Linux distro
of choice, I went through my usual routine of downloading the current month’s
release and went to dd
it on the drive.
Upon running dd
, the light on the drive didn’t flicker as it normally would.
Being somewhat hasty because I really wanted to get my new system up and
running, I opted to just try running things again.
No dice. Unplugged, replugged, unplugged again. Rebooted, all of the usual
troubleshooting shit. At some point, I realized the drive wasn’t even mounting
properly when inserted.
Never fear! In the past, I’ve been able to plug a finicky drive into a macOS
system and have it bark about the drive being unrecognized and offer up a
reformat to get things moving in the right direction again.
This time around, macOS was like “lolnope”. Windows was the same deal. Didn’t
even acknowledge the drive, didn’t tell me shit was fucked and I needed to
format it. Didn’t do anything.
Just to make sure it was the drive in question, I did go through the motions
with the red drive with Debian on it. Everything there was as it should be, so I
deemed the drive to be the problem.
Because I didn’t want to spend all night on this, I went ahead and slapped Arch
on the red drive, and proceeded to muddle my way through getting Windows and the
system bios to let me install Linux.
All was fairly right in the world at this point.
Then came last Saturday night.
I decided that I wasn’t going to give up on my favorite little thumb drive. I
brought her back to life once, so I still had faith in her future.
A few things I tried:
- Checked
dmesg
, drive (sda
) was present. - Checked
fdisk -l
, drive did not show up at all. - Checked
ls /dev/sda*
and things were showing up there.
After trying a bunch of stuff, including using the GNOME Disks application
(which didn’t give me many options) I did what I should have did at the start, I
ran fsck
on the drive.
fsck
is a handy command that can check and even repair a Linux file system.
Upon running fsck
on /dev/sda
and /dev/sda1
, I was greeted with a message
advising that the super block could not be read or does not describe a valid
file system:
# fsck /dev/sda1
fsck from util-linux 2.34
e2fsck 1.45.3 (14-Jul-2019)
ext2fs_open2: Bad magic number in super-block
fsck.ext2: Superblock invalid, trying backup blocks...
fsck.ext2: Bad magic number in super-block while trying to open /dev/sda1
The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
or
e2fsck -b 32768 <device>
This error was the one that started to feel a bit more deja vu. This was
exactly what happened the last time, and I know there was a command out there
that could help me along, even if I couldn’t remember what the hell it was.
In my latest research, I did find a script called mkusb
that seems to have
made it super easy to blow away the first byte, which if corrupt can cause
issues similar to what I was experiencing.
Amazingly enough, I wasn’t able to find the package out in the Arch Linux
official packages or the Arch Linux User Repository (AUR).
Knowing I didn’t use this script last go around, I kept on chugging, pretty much
brute forcing solutions from Stack Overflow and other sources.
After running a handful of commands that gave the impression that things were
addressed and actually fixed (but they weren’t), I finally decided that the best
path to fix things was just give it a fucking rest already.
As a software engineer, I love solving problems, but sometimes the time invested
isn’t worth it. Sure a couple of hours of poking around on a Saturday night is
harmless enough, but what else could I have been doing during that time?
I’d even argue that doing nothing and NOT being on the computer for a couple of
hours would have been time well spent in comparison to muddling along trying to
fix a USB drive that didn’t even contain any important files.
I mentioned previously, the drive was purchased in 2016. At ~$3 for the unit,
I’ve gotten nearly 3 years of usage, coming out to a grand total of $1 per year.
So yeah, unless the drive has important files on it, often times the best way to
fix a borked USB flash drive is to just trash it and buy a new one.
That said, I still ended up getting a blog post out of it, and even with the
issues I had with that one particular drive, I’d absolutely buy those drives
again.