diff --git a/unix/Makefile b/unix/Makefile
index 90653e88e8982403c3a6196c5ec82f74df387f6f..96a8df21b6aba88001926f8f33c0daaaf9655cb4 100644
--- a/unix/Makefile
+++ b/unix/Makefile
@@ -162,10 +162,15 @@ endif
 LIB_SRC_C = $(addprefix lib/,\
 	$(LIB_SRC_C_EXTRA) \
 	utils/printf.c \
+	timeutils/timeutils.c \
+	)
+
+ifeq ($(MICROPY_FATFS),1)
+LIB_SRC_C += $(addprefix lib/,\
 	fatfs/ff.c \
 	fatfs/option/ccsbcs.c \
-	timeutils/timeutils.c \
 	)
+endif
 
 OBJ = $(PY_O)
 OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
@@ -235,7 +240,7 @@ fast:
 
 # build a minimal interpreter
 minimal:
-	$(MAKE) COPT="-Os -DNDEBUG" CFLAGS_EXTRA='-DMP_CONFIGFILE="<mpconfigport_minimal.h>"' BUILD=build-minimal PROG=micropython_minimal MICROPY_PY_TIME=0 MICROPY_PY_TERMIOS=0 MICROPY_PY_SOCKET=0 MICROPY_PY_FFI=0 MICROPY_USE_READLINE=0
+	$(MAKE) COPT="-Os -DNDEBUG" CFLAGS_EXTRA='-DMP_CONFIGFILE="<mpconfigport_minimal.h>"' BUILD=build-minimal PROG=micropython_minimal MICROPY_PY_TIME=0 MICROPY_PY_TERMIOS=0 MICROPY_PY_SOCKET=0 MICROPY_PY_FFI=0 MICROPY_USE_READLINE=0 MICROPY_FATFS=0
 
 # build interpreter with nan-boxing as object model
 nanbox:
diff --git a/unix/mpconfigport.mk b/unix/mpconfigport.mk
index 88bd749a71434f9d35eaf44c4252cb10f3fa43f7..ba0341f20ed228cb748d1af7c9b8ade3072f6997 100644
--- a/unix/mpconfigport.mk
+++ b/unix/mpconfigport.mk
@@ -9,6 +9,9 @@ MICROPY_FORCE_32BIT = 0
 #  2 - use GNU readline (causes binary to be licensed under GPL)
 MICROPY_USE_READLINE = 1
 
+# Whether to enable FatFs VFS
+MICROPY_FATFS = 1
+
 # Subset of CPython time module
 MICROPY_PY_TIME = 1