diff --git a/builddefs/bootloader.mk b/builddefs/bootloader.mk
index 470febc346..56ef7ff5d8 100644
--- a/builddefs/bootloader.mk
+++ b/builddefs/bootloader.mk
@@ -38,9 +38,18 @@
 # RISC-V:
 #     gd32v-dfu    GD32V USB DFU in ROM
 #
+# If you need to provide your own implementation, you can set inside `rules.mk`
+# `BOOTLOADER = custom` -- you'll need to provide your own implementations. See
+# the respective file under `platforms/<PLATFORM>/bootloaders/custom.c` to see
+# which functions may be overridden.
+#
 # BOOTLOADER_SIZE can still be defined manually, but it's recommended
 # you add any possible configuration to this list
 
+ifeq ($(strip $(BOOTLOADER)), custom)
+    OPT_DEFS += -DBOOTLOADER_CUSTOM
+    BOOTLOADER_TYPE = custom
+endif
 ifeq ($(strip $(BOOTLOADER)), atmel-dfu)
     OPT_DEFS += -DBOOTLOADER_ATMEL_DFU
     OPT_DEFS += -DBOOTLOADER_DFU
@@ -195,5 +204,5 @@ ifeq ($(strip $(BOOTLOADER)), md-boot)
 endif
 
 ifeq ($(strip $(BOOTLOADER_TYPE)),)
-    BOOTLOADER_TYPE = none
+    $(error No bootloader specified. Please set an appropriate 'BOOTLOADER' in your keyboard's 'rules.mk' file)
 endif
diff --git a/platforms/avr/bootloaders/none.c b/platforms/avr/bootloaders/custom.c
similarity index 100%
rename from platforms/avr/bootloaders/none.c
rename to platforms/avr/bootloaders/custom.c
diff --git a/platforms/chibios/bootloaders/none.c b/platforms/chibios/bootloaders/custom.c
similarity index 88%
rename from platforms/chibios/bootloaders/none.c
rename to platforms/chibios/bootloaders/custom.c
index 8379d35abf..bba9fc4637 100644
--- a/platforms/chibios/bootloaders/none.c
+++ b/platforms/chibios/bootloaders/custom.c
@@ -16,8 +16,6 @@
 
 #include "bootloader.h"
 
-#pragma message "Unknown bootloader set, you may not be able to enter bootloader using software reset"
-
 __attribute__((weak)) void bootloader_jump(void) {}
 
 __attribute__((weak)) void enter_bootloader_mode_if_requested(void) {}