diff --git a/config/rootfiles/core/167/update.sh b/config/rootfiles/core/167/update.sh
index fdcb843cf..a9be60a1d 100644
--- a/config/rootfiles/core/167/update.sh
+++ b/config/rootfiles/core/167/update.sh
@@ -337,6 +337,10 @@ hardlink -c -vv /lib/firmware
 # Regenerate all initrds
 dracut --regenerate-all --force
 
+# Replace /etc/mtab by symlink as mount no longer writes it
+rm -vf /etc/mtab
+ln -vs /proc/self/mounts /etc/mtab
+
 # Rebuild IPS rules
 perl -e "require '/var/ipfire/ids-functions.pl'; &IDS::oinkmaster();"
 /etc/init.d/suricata reload
diff --git a/lfs/cdrom b/lfs/cdrom
index f35ff6a35..d84f8c23c 100644
--- a/lfs/cdrom
+++ b/lfs/cdrom
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2022  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -149,7 +149,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 
 	# Clear mtab (prevents .journal problems)
 	rm -vf /etc/mtab
-	echo > /etc/mtab
+	ln -s /proc/self/mounts /etc/mtab
 
 	# Create filelist for packaging.
 	BUILDTARGET="$(BUILDTARGET)" BUILD_ARCH="$(BUILD_ARCH)" KVER="$(KVER)" \
diff --git a/lfs/stage2 b/lfs/stage2
index 9f93babe2..39697a848 100644
--- a/lfs/stage2
+++ b/lfs/stage2
@@ -87,7 +87,8 @@ endif
 	cp -rvf $(DIR_SRC)/config/etc/* /etc;
 	[ ! -d "$(DIR_SRC)/config/etc-$(BUILD_ARCH)" ] || cp -rvf $(DIR_SRC)/config/etc-$(BUILD_ARCH)/* /etc
 	cp -rvf $(DIR_SRC)/config/lib/* /lib;
-	touch /etc/{fs,m}tab
+	touch /etc/fstab
+	ln -s /proc/self/mounts /etc/mtab
 	echo "$(NAME) v$(VERSION) - $(SLOGAN)" >  /etc/issue
 	echo "===============================" >> /etc/issue
 	echo "\n running on \s \r \m"          >> /etc/issue
diff --git a/src/initscripts/system/mountfs b/src/initscripts/system/mountfs
index b1533d6a2..81ed729c1 100644
--- a/src/initscripts/system/mountfs
+++ b/src/initscripts/system/mountfs
@@ -31,12 +31,6 @@ case "${1}" in
 		# Remove fsck-related file system watermarks.
 		rm -f /fastboot /forcefsck
 
-		boot_mesg "Create /etc/mtab..."
-		> /etc/mtab
-		mount -f / || failed=1
-		(exit ${failed})
-		evaluate_retval
-
 		# This will mount all filesystems that do not have _netdev in
 		# their option list.  _netdev denotes a network filesystem.
 		boot_mesg "Mounting remaining file systems..."
diff --git a/src/initscripts/system/partresize b/src/initscripts/system/partresize
index 7605b9e2b..147405e1e 100644
--- a/src/initscripts/system/partresize
+++ b/src/initscripts/system/partresize
@@ -30,12 +30,6 @@ case "${1}" in
 			mount -o remount,rw / > /dev/null
 			evaluate_retval
 
-			boot_mesg "Create /etc/mtab..."
-			> /etc/mtab
-			mount -f / || failed=1
-			(exit ${failed})
-			evaluate_retval
-
 			# check if serial console enabled
 			scon="off";
 			if [ ! "$(grep "console=ttyS0" /proc/cmdline)" == "" ]; then
