diff --git a/fs/common.mk b/fs/common.mk
index cc94eb4ef2..a3248c165d 100644
--- a/fs/common.mk
+++ b/fs/common.mk
@@ -32,7 +32,7 @@ ROOTFS_DEVICE_TABLE = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE))
 
 define ROOTFS_TARGET_INTERNAL
 
-$(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES) host-fakeroot makedevs $(if $(BR2_TARGET_ROOTFS_$(2)_LZMA),host-lzma)
+$(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES) host-fakeroot host-makedevs $(if $(BR2_TARGET_ROOTFS_$(2)_LZMA),host-lzma)
 	@$(call MESSAGE,"Generating root filesystem image rootfs.$(1)")
 	$(foreach hook,$(ROOTFS_$(2)_PRE_GEN_HOOKS),$(call $(hook))$(sep))
 	rm -f $(FAKEROOT_SCRIPT)
diff --git a/package/Config.in b/package/Config.in
index 6104903426..a4ef362615 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -175,6 +175,7 @@ source "package/input-tools/Config.in"
 source "package/iostat/Config.in"
 source "package/lm-sensors/Config.in"
 source "package/lvm2/Config.in"
+source "package/makedevs/Config.in"
 source "package/mdadm/Config.in"
 source "package/memtester/Config.in"
 source "package/mtd/Config.in"
diff --git a/package/makedevs/Config.in b/package/makedevs/Config.in
new file mode 100644
index 0000000000..4f8c38d0ae
--- /dev/null
+++ b/package/makedevs/Config.in
@@ -0,0 +1,5 @@
+config BR2_PACKAGE_MAKEDEVS
+       bool "makedevs"
+       help
+         The makedevs utility allows to create a set of device files
+         according to a configuration file.
\ No newline at end of file
diff --git a/target/makedevs/makedevs.c b/package/makedevs/makedevs.c
similarity index 100%
rename from target/makedevs/makedevs.c
rename to package/makedevs/makedevs.c
diff --git a/package/makedevs/makedevs.mk b/package/makedevs/makedevs.mk
new file mode 100644
index 0000000000..a3bb5cb54f
--- /dev/null
+++ b/package/makedevs/makedevs.mk
@@ -0,0 +1,35 @@
+#############################################################
+#
+# makedevs
+#
+#############################################################
+
+MAKEDEVS_DIR=$(BUILD_DIR)/makedevs
+
+$(MAKEDEVS_DIR)/makedevs.c:
+	rm -rf $(MAKEDEVS_DIR)
+	mkdir $(MAKEDEVS_DIR)
+	cp package/makedevs/makedevs.c $(MAKEDEVS_DIR)
+
+$(MAKEDEVS_DIR)/makedevs: $(MAKEDEVS_DIR)/makedevs.c
+	$(CC) -Wall -Werror -O2 $(MAKEDEVS_DIR)/makedevs.c -o $@
+
+$(TARGET_DIR)/usr/bin/makedevs: $(MAKEDEVS_DIR)/makedevs
+	$(INSTALL) -m 755 $^ $@
+
+makedevs: $(TARGET_DIR)/usr/bin/makedevs
+
+HOST_MAKEDEVS_DIR=$(BUILD_DIR)/host-makedevs
+
+$(HOST_MAKEDEVS_DIR)/makedevs.c:
+	rm -rf $(HOST_MAKEDEVS_DIR)
+	mkdir $(HOST_MAKEDEVS_DIR)
+	cp package/makedevs/makedevs.c $(HOST_MAKEDEVS_DIR)
+
+$(HOST_MAKEDEVS_DIR)/makedevs: $(HOST_MAKEDEVS_DIR)/makedevs.c
+	$(CC) -Wall -Werror -O2 $(HOST_MAKEDEVS_DIR)/makedevs.c -o $@
+
+$(HOST_DIR)/usr/bin/makedevs: $(HOST_MAKEDEVS_DIR)/makedevs
+	$(INSTALL) -m 755 $^ $@
+
+host-makedevs: $(HOST_DIR)/usr/bin/makedevs
\ No newline at end of file
diff --git a/target/makedevs/makedevs.mk b/target/makedevs/makedevs.mk
deleted file mode 100644
index fe426cafec..0000000000
--- a/target/makedevs/makedevs.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#############################################################
-#
-# build makedevs to run on the build system, in order to create
-# device nodes and whatnot for the target device, in conjunction
-# with fakeroot.
-#
-#############################################################
-MAKEDEVS_DIR=$(BUILD_DIR)/makedevs-host
-
-$(MAKEDEVS_DIR)/makedevs.c: target/makedevs/makedevs.c
-	rm -rf $(MAKEDEVS_DIR)
-	mkdir $(MAKEDEVS_DIR)
-	cp target/makedevs/makedevs.c $(MAKEDEVS_DIR)
-
-$(MAKEDEVS_DIR)/makedevs: $(MAKEDEVS_DIR)/makedevs.c
-	$(HOSTCC) -Wall -Werror -O2 $(MAKEDEVS_DIR)/makedevs.c -o $@
-
-$(HOST_DIR)/usr/bin/makedevs: $(MAKEDEVS_DIR)/makedevs
-	$(INSTALL) -m 755 $^ $@
-
-makedevs: $(HOST_DIR)/usr/bin/makedevs
-
-makedevs-source:
-
-makedevs-clean:
-	rm -rf $(MAKEDEVS_DIR)/makedevs
-
-makedevs-dirclean:
-	rm -rf $(MAKEDEVS_DIR)
-