diff --git a/src/efibootmgr/efibootmgr.c b/src/efibootmgr/efibootmgr.c
index 236365a..9883961 100644
--- a/src/efibootmgr/efibootmgr.c
+++ b/src/efibootmgr/efibootmgr.c
@@ -803,6 +803,7 @@ usage()
 	printf("\t-V | --version          return version and exit\n");
 	printf("\t-w | --write-signature  write unique sig to MBR if needed\n");
 	printf("\t-@ | --append-binary-args file  append extra args from file (use \"-\" for stdin)\n");
+	printf("\t   | --help             show help/usage\n");
 }
 
 static void
@@ -863,6 +864,7 @@ parse_opts(int argc, char **argv)
 			{"version",                no_argument, 0, 'V'},
 			{"write-signature",        no_argument, 0, 'w'},
 			{"append-binary-args", required_argument, 0, '@'},
+			{"help",                   no_argument, 0,   2},
 			{0, 0, 0, 0}
 		};
 
@@ -1014,6 +1016,10 @@ parse_opts(int argc, char **argv)
 			opts.write_signature = 1;
 			break;
 
+		case 2:
+			usage();
+			exit(1);
+
 		default:
 			usage();
 			exit(1);
diff --git a/src/lib/efi.c b/src/lib/efi.c
index a4ce5cf..8ef8be8 100644
--- a/src/lib/efi.c
+++ b/src/lib/efi.c
@@ -70,6 +70,16 @@ efi_guid_unparse(efi_guid_t *guid, char *out)
         return out;
 }
 
+char *
+tilt_slashes(char *s)
+{
+	char *p;
+	for (p = s; *p; p++)
+		if (*p == '/')
+			*p = '\\';
+	return s;
+}
+
 void
 set_fs_kernel_calls()
 {
@@ -535,7 +545,7 @@ char *make_disk_load_option(char *p, char *disk)
 				     signature,
 				     mbr_type, signature_type);
 
-    efichar_from_char(os_loader_path, opts.loader, sizeof(os_loader_path));
+    efichar_from_char(os_loader_path, tilt_slashes(opts.loader), sizeof(os_loader_path));
     p += make_file_path_device_path (p, os_loader_path);
     p += make_end_device_path       (p);
 

