diff --git a/config/grub/config/grub.cfg b/config/grub/config/grub.cfg
index 478a6e80b0e542fec179eb7644d57ef144cf5621..e4bc72963f55e0c2250a6e682b1475eadb935006 100644
--- a/config/grub/config/grub.cfg
+++ b/config/grub/config/grub.cfg
@@ -91,7 +91,11 @@ function list_lmedia {
 # Create menuitems that boot any valid previously detected media
 function make_boot_menus {
 	for i in ${tgt_medias}; do
-		grub_create_menu ${i}
+		if [ ! -d ${i}/ ]; then # Root is invalid: maybe unsupported FS or encrypted one
+			cryptomount ${i}
+		else
+			grub_create_menu ${i} # Look for grub entries in known directories
+		fi
 		echo -n "."
 	done
 	echo
@@ -139,10 +143,6 @@ function grub_menuentry {
 
 function grub_create_menu {
 	set root="${1}"
-	if [ ! -d / ]; then # Root is invalid: maybe unknown FS or encrypted one
-		cryptomount ${1}
-		return;
-	fi
 	for dir in ${grub_dirs}; do
 		# In order to save time, we do not attempt anything on non existing directory.
 		if [ -d /"${dir}"/ ]; then