diff --git a/debian/changelog b/debian/changelog
index 63baa1a..e68f9f1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+livecd-rootfs (2.634) UNRELEASED; urgency=medium
+
+  * Preserve apt preferences created by any package we install (i.e.
+    ubuntu-advantage-tools) against live-build's attempt to delete them.
+    (LP: #1855354)
+
+ -- Michael Hudson-Doyle <michael.hudson@ubuntu.com>  Thu, 12 Dec 2019 12:55:17 +1300
+
 livecd-rootfs (2.633) focal; urgency=medium
 
   * Snapd for uc20 model assertions does not support global channel overrides.
diff --git a/live-build/auto/build b/live-build/auto/build
index 43a706b..c12ba33 100755
--- a/live-build/auto/build
+++ b/live-build/auto/build
@@ -314,6 +314,12 @@ EOF
 		undivert_grub chroot
 	fi
 
+	if [ -d chroot/etc/apt/preferences.d.save ]; then
+		# https://twitter.com/infinite_scream
+		mv chroot/etc/apt/preferences.d.save/* chroot/etc/apt/preferences.d/
+		rmdir chroot/etc/apt/preferences.d.save
+	fi
+
 	# Let all configuration non multi-layered project here.
 	# If those are moving to a multi-layer layout, this needs to be
 	# done in chroot hooks.
diff --git a/live-build/auto/config b/live-build/auto/config
index 6ed05a4..0b50f0f 100755
--- a/live-build/auto/config
+++ b/live-build/auto/config
@@ -1096,6 +1096,19 @@ rm -f /etc/fstab
 EOF
 fi
 
+if [ $PROJECT != ubuntu-cpc ]; then
+	cat > config/hooks/100-preserve-apt-prefs.chroot <<\EOF
+#! /bin/sh -ex
+
+# live-build "helpfully" removes /etc/apt/preferences.d/* so we put a
+# copy somewhere it won't touch it.
+
+if [ -n "$(ls -A /etc/apt/preferences.d)" ]; then
+    cp -a /etc/apt/preferences.d /etc/apt/preferences.d.save
+fi
+EOF
+fi
+
 if [ $PROJECT = ubuntukylin ]; then
 	cat > config/hooks/100-ubuntukylin.chroot <<EOF
 #! /bin/sh
diff --git a/live-build/ubuntu-cpc/hooks.d/chroot/100-preserve-apt-prefs.chroot b/live-build/ubuntu-cpc/hooks.d/chroot/100-preserve-apt-prefs.chroot
new file mode 100755
index 0000000..ff5afc2
--- /dev/null
+++ b/live-build/ubuntu-cpc/hooks.d/chroot/100-preserve-apt-prefs.chroot
@@ -0,0 +1,8 @@
+#! /bin/sh -ex
+
+# live-build "helpfully" removes /etc/apt/preferences.d/* so we put a
+# copy somewhere it won't touch it.
+
+if [ -n "$(ls -A /etc/apt/preferences.d)" ]; then
+    cp -a /etc/apt/preferences.d /etc/apt/preferences.d.save
+fi
