diff --git a/tools/mtd-utils/patches/201-ubinize-add-terminator-support.patch b/tools/mtd-utils/patches/201-ubinize-add-terminator-support.patch
new file mode 100644
index 0000000..d765cdc
--- /dev/null
+++ b/tools/mtd-utils/patches/201-ubinize-add-terminator-support.patch
@@ -0,0 +1,68 @@
+--- a/ubi-utils/ubinize.c
++++ b/ubi-utils/ubinize.c
+@@ -60,6 +60,8 @@ static const char optionsstr[] =
+ "                             (default is 1)\n"
+ "-Q, --image-seq=<num>        32-bit UBI image sequence number to use\n"
+ "                             (by default a random number is picked)\n"
++"-E, --eof-markers=<num>      number of eof-markers to put at the end of the\n"
++"                             output image\n"
+ "-v, --verbose                be verbose\n"
+ "-h, --help                   print help message\n"
+ "-V, --version                print program version\n\n";
+@@ -79,6 +81,7 @@ static const struct option long_options[
+ 	{ .name = "erase-counter",  .has_arg = 1, .flag = NULL, .val = 'e' },
+ 	{ .name = "ubi-ver",        .has_arg = 1, .flag = NULL, .val = 'x' },
+ 	{ .name = "image-seq",      .has_arg = 1, .flag = NULL, .val = 'Q' },
++	{ .name = "eof-markers",    .has_arg = 1, .flag = NULL, .val = 'E' },
+ 	{ .name = "verbose",        .has_arg = 0, .flag = NULL, .val = 'v' },
+ 	{ .name = "help",           .has_arg = 0, .flag = NULL, .val = 'h' },
+ 	{ .name = "version",        .has_arg = 0, .flag = NULL, .val = 'V' },
+@@ -98,6 +101,7 @@ struct args {
+ 	uint32_t image_seq;
+ 	int verbose;
+ 	dictionary *dict;
++	int eof_markers;
+ };
+ 
+ static struct args args = {
+@@ -116,7 +120,7 @@ static int parse_opt(int argc, char * co
+ 		int key, error = 0;
+ 		unsigned long int image_seq;
+ 
+-		key = getopt_long(argc, argv, "o:p:m:s:O:e:x:Q:vhV", long_options, NULL);
++		key = getopt_long(argc, argv, "o:p:m:s:O:e:x:Q:E:vhV", long_options, NULL);
+ 		if (key == -1)
+ 			break;
+ 
+@@ -176,6 +180,12 @@ static int parse_opt(int argc, char * co
+ 			args.image_seq = image_seq;
+ 			break;
+ 
++		case 'E':
++			args.eof_markers = simple_strtoul(optarg, &error);
++			if (error)
++				return errmsg("bad number of eof-markers: \"%s\"", optarg);
++			break;
++
+ 		case 'v':
+ 			args.verbose = 1;
+ 			break;
+@@ -582,6 +592,18 @@ int main(int argc, char * const argv[])
+ 			printf("\n");
+ 	}
+ 
++	if (args.eof_markers) {
++		verbose(args.verbose, "writing %d eof-marker blocks",
++			args.eof_markers);
++
++		err = ubigen_write_eof_markers(&ui, args.ec, args.eof_markers,
++					       args.out_fd);
++		if (err) {
++			errmsg("cannot write eof-marker blocks");
++			goto out_free;
++		}
++	}
++
+ 	verbose(args.verbose, "writing layout volume");
+ 
+ 	err = ubigen_write_layout_vol(&ui, 0, 1, args.ec, args.ec, vtbl, args.out_fd);
