From 0c08692e7541f79bfaeafd6383307a5491e101ea Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Fri, 25 Apr 2014 16:24:04 -0700 Subject: [PATCH] Respect inmutable resolv.conf in the image In some instances, the content of the image may want to convey specific resolv.conf settings. For instance, if unbound is installed, it's also desirable to set resolv.conf to point to it. Short circuit diskimage-builder's friendliness around resolv.conf files by not dying in a fire if it finds the file to be immutable. Change-Id: I88632fb79289681dcf95d32f39a0ad658ba39a60 --- lib/img-functions | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/img-functions b/lib/img-functions index 09ae0040..6db7e1b8 100644 --- a/lib/img-functions +++ b/lib/img-functions @@ -91,11 +91,18 @@ function prepare_first_boot () { function finalise_base () { TARGET_ROOT=$TMP_MOUNT_PATH run_d cleanup - # Remove the resolv.conf we created above - sudo rm -f $TMP_MOUNT_PATH/etc/resolv.conf - # Move the original back - if [ -L $TMP_MOUNT_PATH/etc/resolv.conf.ORIG ] || [ -f $TMP_MOUNT_PATH/etc/resolv.conf.ORIG ] ; then - sudo mv $TMP_MOUNT_PATH/etc/resolv.conf.ORIG $TMP_MOUNT_PATH/etc/resolv.conf + # If the file has been set immutable, we probably want to keep it + if lsattr $TMP_MOUNT_PATH/etc/resolv.conf | grep '^....i' >/dev/null ; then + # We're keeping the contents of resolv.conf set in the elements, + # so remove the old saved file + sudo rm -f $TMP_MOUNT_PATH/etc/resolv.conf.ORIG + else + # Remove the resolv.conf we created above + sudo rm -f $TMP_MOUNT_PATH/etc/resolv.conf + # Move the original back + if [ -L $TMP_MOUNT_PATH/etc/resolv.conf.ORIG ] || [ -f $TMP_MOUNT_PATH/etc/resolv.conf.ORIG ] ; then + sudo mv $TMP_MOUNT_PATH/etc/resolv.conf.ORIG $TMP_MOUNT_PATH/etc/resolv.conf + fi fi }