rEFInd builds its boot menu "fresh" every time it runs. (An exception is if you use manual boot stanzas -- but if this were the case, you'd presumably be aware of this fact and know how to change them.) Thus, if you're seeing boot entries for OSes you've deleted, the cause is almost certainly that you haven't completely deleted the OSes in question. In most cases, the boot loader files reside on the EFI System Partition (ESP), usually in a subdirectory of EFI
; for instance, EFI\ubuntu
for Ubuntu. rEFInd usually displays the complete filename, and the name or a description of the volume, under the icons when you highlight an option. For instance, in your screen shot, the description reads Boot EFI\boot\bootx64-trueos.efi from EFI
. Thus, to remove that entry, you'd delete that file.
Of course, this means you must know how to access your ESP. The details of how to do this vary from one OS to another. Under macOS, you can use the mountesp
script that comes with rEFInd. (Running the script will produce a message revealing where the ESP has been mounted.) I don't know offhand whether FreeBSD mounts the ESP by default, or where it's commonly mounted.
Note that deleting the boot loader is not always appropriate. For instance, if you want to hide an entry without making it completely inaccessible, you should use dont_scan_files
, dont_scan_dirs
, or dont_scan_volumes
in refind.conf
to hide the entry. You might do this if the rEFInd boot menu entry is for a tool that you want to leave installed on the ESP, but you just don't want to see a boot entry for it. (Maybe it's something you run from an EFI shell, or that's launched from a boot loader whose entry you want to keep.) Entries for BIOS-mode boot loaders may also need to be handled differently, such as by disabling BIOS-boot option scanning via the scanfor
line in refind.conf
. I don't think any of these cases apply to you, though; I mention this only for the sake of completeness.