diff --git a/DEVELOPERS b/DEVELOPERS
index f1bed77fe9..3b5d2faae2 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1615,6 +1615,7 @@ F:	board/altera/socrates_cyclone5/
 F:	board/pine64/rock64
 F:	configs/rock64_defconfig
 F:	configs/socrates_cyclone5_defconfig
+F:	package/openrc/
 
 N:	Michel Stempin <michel.stempin@wanadoo.fr>
 F:	board/licheepi/
diff --git a/package/Config.in b/package/Config.in
index 3df091b608..ff07dce000 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2195,6 +2195,7 @@ menu "System tools"
 	source "package/ncdu/Config.in"
 	source "package/numactl/Config.in"
 	source "package/nut/Config.in"
+	source "package/openrc/Config.in"
 	source "package/openvmtools/Config.in"
 	source "package/pamtester/Config.in"
 	source "package/polkit/Config.in"
diff --git a/package/openrc/Config.in b/package/openrc/Config.in
new file mode 100644
index 0000000000..ec536c8692
--- /dev/null
+++ b/package/openrc/Config.in
@@ -0,0 +1,18 @@
+config BR2_PACKAGE_OPENRC
+	bool "openrc"
+	select BR2_PACKAGE_NCURSES
+	help
+	  Init that works on top of pid 1 (for example
+	  openrc-init). By default it does quite a lot on startup
+	  (like setting hwclock, mounting directories, configuring
+	  interfaces and so on). So for this init to properly work you
+	  need at least these tools on the root filesystem (default
+	  busybox configuration provides them all):
+
+	  swapon, fsck, hwclock, getty, login, grep, mount, coreutils,
+	  procps, modprobe (kmod), net-tools
+
+	  Number of tools may be decreased by removing services that
+	  use them.
+
+	  https://github.com/OpenRC/openrc
diff --git a/package/openrc/openrc.hash b/package/openrc/openrc.hash
new file mode 100644
index 0000000000..7d58e254c4
--- /dev/null
+++ b/package/openrc/openrc.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256	c99488ca54f2b795328d07bbd456ade49b571136bba7501f7eaaeb1ca9f9ecc4	openrc-0.41.2.tar.gz
+sha256	96862463f4e77e2508e4fc2c83773fd24807cb699368b63fd93a5e2b466dd624	LICENSE
diff --git a/package/openrc/openrc.mk b/package/openrc/openrc.mk
new file mode 100644
index 0000000000..53f2947dcc
--- /dev/null
+++ b/package/openrc/openrc.mk
@@ -0,0 +1,45 @@
+################################################################################
+#
+# openrc
+#
+################################################################################
+
+OPENRC_VERSION = 0.41.2
+OPENRC_SITE = $(call github,OpenRC,openrc,$(OPENRC_VERSION))
+OPENRC_LICENSE = BSD-2-Clause
+OPENRC_LICENSE_FILES = LICENSE
+
+OPENRC_DEPENDENCIES = ncurses
+
+# set LIBNAME so openrc puts files in proper directories and sets proper
+# paths in installed files. Since in buildroot /lib64 and /lib32 always
+# points to /lib, it's safe to hardcode it to "lib"
+OPENRC_MAKE_OPTS = \
+	LIBNAME=lib \
+	LIBEXECDIR=/usr/libexec/rc \
+	MKPKGCONFIG=no \
+	MKSELINUX=no \
+	MKSYSVINIT=yes \
+	BRANDING="Buildroot $(BR2_VERSION_FULL)" \
+	CC=$(TARGET_CC)
+
+ifeq ($(BR2_SHARED_LIBS),y)
+OPENRC_MAKE_OPTS += MKSTATICLIBS=no
+else
+OPENRC_MAKE_OPTS += MKSTATICLIBS=yes
+endif
+
+define OPENRC_BUILD_CMDS
+	$(MAKE) $(OPENRC_MAKE_OPTS) -C $(@D)
+endef
+
+define OPENRC_INSTALL_TARGET_CMDS
+	$(MAKE) $(OPENRC_MAKE_OPTS) DESTDIR=$(TARGET_DIR) -C $(@D) install
+endef
+
+define OPENRC_REMOVE_UNNEEDED
+	$(RM) -r $(TARGET_DIR)/usr/share/openrc
+endef
+OPENRC_TARGET_FINALIZE_HOOKS += OPENRC_REMOVE_UNNEEDED
+
+$(eval $(generic-package))