First of all, I have read the sticky: viewtopic.php?f=29&t=44177
but it's not for me as I already have something like this running (boot from SD, and cmdline.txt points to the root partition on the pendrive)
Also I found this other guide:
https://www.makeuseof.com/tag/make-rasp ... -boot-usb/
which MIGHT have helped me but I basically had done what it says already with no success.
I have an SD with only a fat partition where /boot resides, its cmdline.txt points to the / on the pendrive, the USB pendrive has a first fat32 partition where the same exact contents of the SD reside, plus an ext4 partition where / is.
Today I experienced the billionth corruption after a simple sudo reboot where the raspi wouldn't even get to the rainbow screen, even if the SD was just only for boot and not being written to, so now I want to dismiss the bloody SD altogether.
Having already a fat32 partition on the USB pendrive, I made sure the cmdline.txt was the same of the SD, that is, pointing to the correct PARTUUID, and also made sure (raspi 3 NOT plus) to have set the OTP and checked it was programmed correctly, but it won't boot from the pendrive alone, no signal to monitor.
As a test, I flashed vanilla stretch image on another pendrive, and it did in fact boot correctly without the SD.
At this point, I copied the working pendrive /boot contents into the desired pendrive /boot (correcting the cmdline.txt to have the correct PARTUUID) but it will still not boot.
It is indeed an old pendrive, a 4GB one from times past, but it's fine for me since I don't need a lot of space, and the backup .img's I create are a decent size for storing.
So I am bashing my head to have the pendrive just boot without needing the SD in there.
EDIT: I have another pendrive connected to this raspi, so just having the bootcode.bin on the first fat32 partition wouldn't be a safe option.
EDIT 2: for future readers' benefit, my issue could very well be with what HawaiianPi wrote here: https://lb.raspberrypi.org/forums/viewt ... d#p1417979 that is, my older pendrive is not compatible. I didn't test the delay-increase option in config.txt because, well, how is a solid state pendrive going to take more than just a few seconds to be ready to boot? I do see that both pendrives status leds blink for a while after the raspi realizes there's not SD in, and the pendrive which I want to boot is the first to light up, so I don't expect delay to change anything.
EDIT 3: for the sake of the story, I just tested the program_usb_boot_timeout=1 in config.txt. Nothing changed.
EDIT 4: I flashed the other pendrive that booted by itself, with the backup .img from my system, and it indeed still booted, so definitely the old 4GB pendrive was not compatible with USB boot.