The error is never where it says it is. It only tells you where it was standing when it fell.
Could Not Resolve Host
1.1.1.1. No names involved.
Network is unreachable.
So it was never DNS. The machine couldn't reach a number either. The resolver was just the outermost complaint on a stack of failures, and it had confidently pointed me at the wrong floor. That's the pattern in its smallest form: the symptom tells the truth about what hurts and lies about where.
One layer down: no IP address, no route. The wired interface had no cable. The wireless one was up, awake, and connected to nothing.
- Name: could not resolve hosterror printed here
- Number: 1.1.1.1 network unreachable
- Address and route: nonefault lived here
Two Programs, One Card
- Wi-Fi link: deauthenticating by local choiceerror printed here
- Interface: one wireless card
- NetworkManager and iwd both claim the cardfault lived here
Connect Is Not Configure
- Name: could not resolve hosterror printed here
- Address and route: none
- iwd: not told to run DHCPfault lived here
- Wi-Fi: connected
The Update That Broke Everything
- Kernel panic: unable to mount root fserror printed here
- The disk the kernel lives on
- initramfs: no tool for this diskfault lived here
bsdtar Was Innocent
- bsdtar failederror printed here
- No space left on device
- /boot: fullfault lived here
Two Hundred Megabytes
Day one
Can you see it? That is the 200 MB /boot, full. The root beside it: 900 GB, 1% used.
Rebuilt
1 GB /boot. Five times the room, and still a sliver.
Measure the Prisoner Before You Build the Cell
Existence Is Not Permission
- "Incorrect password"error printed here
- Password: same for root and user
- User not in sudoersfault lived here
The password was never wrong. The permission was missing. Same lesson, wearing new clothes.
The Resolver That Worked, For Everyone But Me
getaddrinfo ETIMEDOUT. Couldn't resolve the download host.
I'd been here on day one, so I moved fast. Cleared a stray proxy that had been sitting in my environment as a literal placeholder. Pointed the resolver at reliable public DNS. Then I tested it: resolvectl query came back instantly with an IP. Resolution worked. I ran the installer again. Same timeout.
The resolver worked. The installer, doing the exact same lookup, timed out. Two tools, one name, opposite results. Which meant the name wasn't the problem and the network wasn't the problem. Something between them was.
The tell was in a file I'd glanced past twice: /etc/resolv.conf. Empty. Comments, no nameserver. And that is the seam. resolvectl talks to the resolver directly over its own socket, so of course it worked. But ordinary programs (curl, the installer, everything) call the old libc lookup, which reads /etc/resolv.conf, finds nothing, and gives up. My manual test had been passing precisely because it bypassed the broken part. I'd been checking the one path that couldn't fail.
resolvectl querysystemd-resolved socketanswer: an IP
curl, the installerlibc lookup/etc/resolv.conf: emptytimeout
fix: one symlink, /etc/resolv.conf → the resolver that already worked
--force. I never did, and it would never have helped: --force skips a version check, but the failure wasn't the check. It was the DNS underneath it. Forcing past the check just marches the same broken lookup one step further before it falls over.
When the flag that skips the check doesn't help, the check was never the thing that was broken.
Can't Find Ext4 Filesystem
EXT4-fs: VFS: Can't find ext4 filesystem, over and over, dropping me into emergency mode on a locked root account. The machine was telling me the filesystem holding everything I'd built was gone.
I booted the rescue USB and checked. The partition was there. ext4, valid UUID, correct label. A full filesystem check came back clean across all five passes. The filesystem the kernel swore it couldn't find was sitting right there, intact.
Which meant the kernel wasn't wrong about failing. It was wrong about why. It hadn't lost the filesystem; it had been handed the wrong address for it. When I reformatted the disk, mkfs had minted a brand-new UUID, a new identity for the same room, and something downstream was still holding the old one. The system was knocking on a door that had been renumbered.
- Can't find ext4 filesystemerror printed here
- Filesystem: intact, fsck clean
- Boot entry: holds the old UUIDfault lived here
l where the real value had a 1. They are the same handful of pixels in that font. A partition ID is hexadecimal; it cannot contain the letter l at all, which means the typo was detectable from first principles and I still made it.
The lesson isn't "be more careful." I was being careful. The lesson is that any value you retype by eye is a value you can corrupt, so don't retype it. Have the machine read its own identifier and write it into the config directly. Remove the human from the copy and you remove the entire category of failure.
typed /dev/disk/by-partuuid/…l…real /dev/disk/by-partuuid/…1…The Floor Below
- Name: could not resolve hostprintedAddress and route: nonelived
- Wi-Fi link: deauthenticating by local choiceprintedNetworkManager and iwd both claim the cardlived
- Name: could not resolve hostprintediwd: not told to run DHCPlived
- Kernel panic: unable to mount root fsprintedinitramfs: no tool for this disklived
- bsdtar failedprinted/boot: fulllived
- Boot failsprinted/boot made 200 MB on day onelived
- "Incorrect password"printedUser not in sudoerslived
- Installer: getaddrinfo ETIMEDOUTprinted/etc/resolv.conf: emptylived
- Can't find ext4 filesystemprintedBoot entry: holds the old UUIDlived
The error is never where it says it is. Keep walking down until you reach the quiet layer that's actually broken and has been saying nothing at all.