diff --git a/feeds/packages/libs/libaio/Makefile b/feeds/packages/libs/libaio/Makefile
index 463b965..a0a2719 100644
--- a/feeds/packages/libs/libaio/Makefile
+++ b/feeds/packages/libs/libaio/Makefile
@@ -23,7 +23,10 @@ PKG_BUILD_PARALLEL:=1
 PKG_USE_MIPS16:=0
 PKG_INSTALL:=1
 
+HOST_BUILD_PREFIX:=$(STAGING_DIR_HOST)
+
 include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
 
 define Package/libaio
   SECTION:=libs
@@ -44,4 +47,13 @@ define Package/libaio/install
 	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libaio.so.* $(1)/usr/lib/
 endef
 
+define Host/Compile
+	$(MAKE) -C $(HOST_BUILD_DIR)
+endef
+
+define Host/Install
+	$(MAKE) -C $(HOST_BUILD_DIR) prefix=$(HOST_BUILD_PREFIX) install
+endef
+
 $(eval $(call BuildPackage,libaio))
+$(eval $(call HostBuild))
diff --git a/feeds/packages/utils/cryptsetup/Makefile b/feeds/packages/utils/cryptsetup/Makefile
index bdb249f..8d98957 100644
--- a/feeds/packages/utils/cryptsetup/Makefile
+++ b/feeds/packages/utils/cryptsetup/Makefile
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cryptsetup
-PKG_VERSION:=2.4.3
-PKG_RELEASE:=$(AUTORELEASE)
+PKG_VERSION:=2.3.4
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/linux/utils/cryptsetup/v2.4
-PKG_HASH:=fc0df945188172264ec5bf1d0bda08264fadc8a3f856d47eba91f31fe354b507
+PKG_HASH:=9d16eebb96b53b514778e813019b8dd15fea9fec5aafde9fae5febf59df83773
 
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_LICENSE:=GPL-2.0-or-later LGPL-2.1-or-later
@@ -24,8 +24,12 @@ PKG_BUILD_PARALLEL:=1
 
 PKG_BUILD_DEPENDS:=!USE_GLIBC:argp-standalone
 
+HOST_BUILD_DEPENDS:=lvm2/host libjson-c/host popt/host
+HOST_BUILD_PREFIX:=$(STAGING_DIR_HOST)
+
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/nls.mk
+include $(INCLUDE_DIR)/host-build.mk
 
 define Package/cryptsetup
   SECTION:=utils
@@ -75,6 +79,13 @@ CONFIGURE_VARS += \
 
 TARGET_LDFLAGS += -Wl,--gc-sections $(if $(INTL_FULL),-lintl)
 
+HOST_CONFIGURE_ARGS += \
+	--with-crypto-backend=openssl \
+	$(STAGING_DIR_HOST) \
+	--disable-kernel_crypto \
+	--disable-blkid \
+	--enable-libiconv-tiny
+
 define Build/InstallDev
 	$(INSTALL_DIR) $(1)/usr/include
 	$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/libcryptsetup.h $(1)/usr/include
@@ -98,5 +109,11 @@ define Package/cryptsetup-ssh/install
 	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/cryptsetup-ssh $(1)/usr/sbin
 endef
 
+define Host/Install
+	$(INSTALL_BIN) $(HOST_BUILD_DIR)/veritysetup $(STAGING_DIR_HOST)/bin/veritysetup
+	$(CP) $(HOST_BUILD_DIR)/.libs $(STAGING_DIR_HOST)/bin/
+endef
+
 $(eval $(call BuildPackage,cryptsetup))
 $(eval $(call BuildPackage,cryptsetup-ssh))
+$(eval $(call HostBuild))
diff --git a/feeds/packages/utils/cryptsetup/patches/0001-dont-use-c89.patch b/feeds/packages/utils/cryptsetup/patches/0001-dont-use-c89.patch
new file mode 100644
index 0000000..fecaaf7
--- /dev/null
+++ b/feeds/packages/utils/cryptsetup/patches/0001-dont-use-c89.patch
@@ -0,0 +1,11 @@
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -879,7 +879,7 @@ noinst_LTLIBRARIES = $(am__append_5) lib
+ man8_MANS = man/cryptsetup.8 $(am__append_1) $(am__append_2) \
+ 	$(am__append_3)
+ tmpfilesd_DATA = $(am__append_4)
+-@CRYPTO_INTERNAL_ARGON2_TRUE@libargon2_la_CFLAGS = $(AM_CFLAGS) -std=c89 -pthread -O3
++@CRYPTO_INTERNAL_ARGON2_TRUE@libargon2_la_CFLAGS = $(AM_CFLAGS) -pthread -O3
+ @CRYPTO_INTERNAL_ARGON2_TRUE@libargon2_la_CPPFLAGS = $(AM_CPPFLAGS) \
+ @CRYPTO_INTERNAL_ARGON2_TRUE@	-I lib/crypto_backend/argon2 \
+ @CRYPTO_INTERNAL_ARGON2_TRUE@	-I lib/crypto_backend/argon2/blake2
diff --git a/feeds/packages/utils/cryptsetup/patches/0100-add-configure-arg-to-link-with-tiny-libiconv-in-host-build.patch b/feeds/packages/utils/cryptsetup/patches/0100-add-configure-arg-to-link-with-tiny-libiconv-in-host-build.patch
new file mode 100644
index 0000000..d418a91
--- /dev/null
+++ b/feeds/packages/utils/cryptsetup/patches/0100-add-configure-arg-to-link-with-tiny-libiconv-in-host-build.patch
@@ -0,0 +1,33 @@
+--- a/configure
++++ b/configure
+@@ -856,6 +856,7 @@ enable_rpath
+ with_libiconv_prefix
+ enable_keyring
+ enable_largefile
++enable_libiconv_tiny
+ enable_nls
+ with_libintl_prefix
+ enable_fips
+@@ -1583,6 +1584,7 @@ Optional Features:
+   --disable-keyring       disable kernel keyring support and builtin kernel
+                           keyring token
+   --disable-largefile     omit support for large files
++  --enable-libiconv-tiny  build with libiconv-tiny from OpenWrt
+   --disable-nls           do not use Native Language Support
+   --enable-fips           enable FIPS mode restrictions
+   --enable-pwquality      enable password quality checking using pwquality
+@@ -15038,6 +15040,14 @@ if test "x$enable_largefile" = "xno"; th
+   as_fn_error $? "Building with --disable-largefile is not supported, it can cause data corruption." "$LINENO" 5
+ fi
+ 
++# Check whether --enable-libiconv-tiny was given.
++if test "${enable_libiconv_tiny+set}" = set; then
++  enableval=$enable_libiconv_tiny;
++  if test ".$enableval" = .yes; then
++    LIBS="$LIBS -liconv"
++  fi
++fi
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+ $as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+ if ${ac_cv_c_const+:} false; then :
diff --git a/feeds/packages/utils/lvm2/Makefile b/feeds/packages/utils/lvm2/Makefile
index af35899..24b485a 100644
--- a/feeds/packages/utils/lvm2/Makefile
+++ b/feeds/packages/utils/lvm2/Makefile
@@ -24,7 +24,11 @@ PKG_CPE_ID:=cpe:/a:heinz_mauelshagen:lvm2
 
 PKG_BUILD_PARALLEL:=1
 
+HOST_BUILD_DEPENDS:=libaio/host
+HOST_BUILD_PREFIX:=$(STAGING_DIR_HOST)
+
 include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
 
 define Package/libdevmapper/Default
   SECTION:=libs
@@ -105,6 +109,16 @@ ifneq ($(shell /bin/sh -c "echo -n 'X'"),X)
 MAKE_SHELL = SHELL=/bin/bash
 endif
 
+HOST_CONFIGURE_ARGS += \
+	--enable-write_install \
+	--enable-pkgconfig \
+	--disable-cmdlib \
+	--disable-dmeventd \
+	--disable-applib \
+	--disable-fsadm \
+	--disable-readline \
+	--disable-selinux
+
 define Build/Compile
 	$(MAKE) -C $(PKG_BUILD_DIR) \
 		CC="$(TARGET_CC)" \
@@ -155,9 +169,29 @@ define Package/lvm2/conffiles
 /etc/lvm/lvm.conf
 endef
 
+define Host/Prepare
+	$(HOST_UNPACK)
+	[ ! -d ./src/ ] || $(CP) ./src/* $(HOST_BUILD_DIR)
+
+	mv $(HOST_BUILD_DIR)/../$(PKG_NAME).$(PKG_VERSION)/* $(HOST_BUILD_DIR)/
+	rmdir $(HOST_BUILD_DIR)/../$(PKG_NAME).$(PKG_VERSION)
+
+	$(Host/Patch)
+endef
+
+define Host/Compile
+	$(call Host/Compile/Default,device-mapper)
+endef
+
+define Host/Install
+	$(call Host/Compile/Default,install_device-mapper)
+endef
+
+
 Package/lvm2-selinux/conffiles = $(Package/lvm2/conffiles)
 
 $(eval $(call BuildPackage,libdevmapper))
 $(eval $(call BuildPackage,libdevmapper-selinux))
 $(eval $(call BuildPackage,lvm2))
 $(eval $(call BuildPackage,lvm2-selinux))
+$(eval $(call HostBuild))
diff -Nurp a/feeds/packages/utils/lvm2/patches/100-change-linker-search-dir-order.patch b/feeds/packages/utils/lvm2/patches/100-change-linker-search-dir-order.patch
--- a/feeds/packages/utils/lvm2/patches/100-change-linker-search-dir-order.patch
+++ b/feeds/packages/utils/lvm2/patches/100-change-linker-search-dir-order.patch
@@ -0,0 +1,39 @@
+--- a/libdm/dm-tools/Makefile.in
++++ b/libdm/dm-tools/Makefile.in
+@@ -52,18 +52,18 @@ include $(top_builddir)/libdm/make.tmpl
+ 
+ CFLAGS_dmsetup.o += $(UDEV_CFLAGS) $(EXTRA_EXEC_CFLAGS)
+ CFLAGS_dmfilemapd.o += $(EXTRA_EXEC_CFLAGS)
+-LIBDM_LIBS = -L$(interfacebuilddir) -ldevmapper
++LIBDM_LIBS = -ldevmapper
+ LIBDM_SHARED = $(interfacebuilddir)/libdevmapper.so
+ LIBDM_STATIC = $(interfacebuilddir)/libdevmapper.a
+ 
+ dmsetup: dmsetup.o $(LIBDM_SHARED)
+ 	@echo "    [CC] $@"
+-	$(Q) $(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_EXEC_LDFLAGS) $(ELDFLAGS) \
++	$(Q) $(CC) $(CFLAGS) -L$(interfacebuilddir) $(LDFLAGS) $(EXTRA_EXEC_LDFLAGS) $(ELDFLAGS) \
+ 	      -o $@ $< $(LIBDM_LIBS) $(LIBS)
+ 
+ dmsetup.static: dmsetup.o $(LIBDM_STATIC)
+ 	@echo "    [CC] $@"
+-	$(Q) $(CC) $(CFLAGS) $(LDFLAGS) -static \
++	$(Q) $(CC) $(CFLAGS) -L$(interfacebuilddir) $(LDFLAGS) -static \
+ 	      -o $@ $< $(LIBDM_LIBS) $(LIBS) $(STATIC_LIBS)
+ 
+ install_dmsetup_dynamic: dmsetup
+@@ -79,12 +79,12 @@ install_dmsetup_static: dmsetup.static
+ 
+ dmfilemapd: dmfilemapd.o $(LIBDM_SHARED)
+ 	@echo "    [CC] $@"
+-	$(Q) $(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_EXEC_LDFLAGS) $(ELDFLAGS) \
++	$(Q) $(CC) $(CFLAGS) -L$(interfacebuilddir) $(LDFLAGS) $(EXTRA_EXEC_LDFLAGS) $(ELDFLAGS) \
+ 	      -o $@ $< $(LIBDM_LIBS) $(LIBS)
+ 
+ dmfilemapd.static: dmfilemapd.o $(LIBDM_STATIC)
+ 	@echo "    [CC] $@"
+-	$(Q) $(CC) $(CFLAGS) $(LDFLAGS) -static \
++	$(Q) $(CC) $(CFLAGS) -L$(interfacebuilddir) $(LDFLAGS) -static \
+ 	      -o $@ $< $(LIBDM_LIBS) $(LIBS) $(STATIC_LIBS)
+ 
+ install_dmfilemapd_dynamic: dmfilemapd
diff --git a/package/Makefile b/package/Makefile
index 58c1ba2..a66851b 100644
--- a/package/Makefile
+++ b/package/Makefile
@@ -60,6 +60,7 @@ $(curdir)/merge-index: $(curdir)/merge
 ifndef SDK
   $(curdir)/compile: $(curdir)/system/opkg/host/compile
 endif
+$(curdir)/compile: $(curdir)/cryptsetup/host/compile

 $(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(if $(CONFIG_TARGET_PER_DEVICE_ROOTFS),$(curdir)/merge-index)
        - find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755
diff --git a/package/libs/popt/Makefile b/package/libs/popt/Makefile
index 34ae4d7..2075542 100644
--- a/package/libs/popt/Makefile
+++ b/package/libs/popt/Makefile
@@ -19,15 +19,17 @@ PKG_SOURCE_URL:= \
 PKG_HASH:=e728ed296fe9f069a0e005003c3d6b2dde3d9cad453422a10d6558616d304cc8
 PKG_LICENSE:=MIT

-PKG_FIXUP:=autoreconf
-PKG_REMOVE_FILES:=autogen.sh aclocal.m4
-
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1

+HOST_BUILD_PREFIX:=$(STAGING_DIR_HOST)
+
 include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk

 TARGET_CFLAGS += $(FPIC)
+HOST_CONFIGURE_ARGS += --enable-libiconv-tiny
+HOST_BUILD_DEPENDS := libiconv/host

 define Package/libpopt
   SECTION:=libs
@@ -54,4 +56,4 @@ define Package/libpopt/install
 endef

 $(eval $(call BuildPackage,libpopt))
-
+$(eval $(call HostBuild))
diff -urN a/package/libs/popt/patches/0001-add-configure-arg-to-link-with-tiny-libiconv-in-host-build.patch b/package/libs/popt/patches/0001-add-configure-arg-to-link-with-tiny-libiconv-in-host-build.patch
--- a/package/libs/popt/patches/0001-add-configure-arg-to-link-with-tiny-libiconv-in-host-build.patch	1970-01-01 08:00:00.000000000 +0800
+++ b/package/libs/popt/patches/0001-add-configure-arg-to-link-with-tiny-libiconv-in-host-build.patch	2021-01-06 13:46:47.514721593 +0800
@@ -0,0 +1,34 @@
+--- a/configure
++++ b/configure
+@@ -945,6 +945,7 @@ enable_libtool_lock
+ enable_largefile
+ enable_ld_version_script
+ enable_build_gcov
++enable_libiconv_tiny
+ enable_nls
+ enable_rpath
+ with_libiconv_prefix
+@@ -1604,6 +1605,7 @@ Optional Features:
+                           enable/disable use of linker version script.
+                           (default is system dependent)
+   --enable-build-gcov     build POPT instrumented for gcov
++  --enable-libiconv-tiny  build with libiconv-tiny from OpenWrt
+   --disable-nls           do not use Native Language Support
+   --disable-rpath         do not hardcode runtime library paths
+ 
+@@ -13334,6 +13336,15 @@ if test "${enable_build_gcov+set}" = set
+ fi
+ 
+ 
++# Check whether --enable-libiconv-tiny was given.
++if test "${enable_libiconv_tiny+set}" = set; then
++  enableval=$enable_libiconv_tiny;
++  if test ".$enableval" = .yes; then
++    LIBS="$LIBS -liconv"
++  fi
++fi
++
++
+ { $as_echo "$as_me:$LINENO: checking for setreuid" >&5
+ $as_echo_n "checking for setreuid... " >&6; }
+ if test "${ac_cv_func_setreuid+set}" = set; then
