diff options
Diffstat (limited to 'helpers/lh_chroot_hacks')
-rwxr-xr-x | helpers/lh_chroot_hacks | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/helpers/lh_chroot_hacks b/helpers/lh_chroot_hacks index aa5652d..cd5420f 100755 --- a/helpers/lh_chroot_hacks +++ b/helpers/lh_chroot_hacks @@ -119,33 +119,35 @@ if [ "${LH_EXPOSED_ROOT}" = "enabled" ] then # Make sure RW dirs exist so that the initramfs script has # a directory in which to bind the tmpfs filesystems - COW_DIRS='/tmp /var/tmp /var/lock /var/run /var/lib/live /var/log - /var/spool /home /live' - for DIR in ${COW_DIRS}; do - mkdir -p chroot${DIR} + COW_DIRECTORIES="/home /live /tmp /var/lib/live /var/lock /var/log /var/run /var/tmp /var/spool" + + for DIRECTORY in ${COW_DIRECTORIES} + do + mkdir -p chroot/"${DIRECTORY}" done # Config files which need to be RW - CONFIG_FILES='/etc/hostname /etc/hosts /etc/resolv.conf /etc/fstab - /etc/live.conf /etc/network/interfaces /etc/X11/xorg.conf /etc/adjtime - /etc/udev/rules.d/z25_persistent-net.rules - /etc/udev/rules.d/z25_persistent-cd.rules' + COW_FILES="/etc/adjtime /etc/fstab /etc/hostname /etc/hosts /etc/live.conf /etc/network/interfaces /etc/resolv.conf /etc/udev/rules.d/z25_persistent-net.rules /etc/udev/rules.d/z25_persistent-cd.rules' /etc/X11/xorg.conf" # Where we will store RW config files - RW_DIR='/var/lib/live' + RW_DIRECTORY="/var/lib/live" - for FILE_PATH in ${CONFIG_FILES} + for FILE in ${COW_FILES} do + DIRECTORY="$(dirname ${FILE})" + FILE="$(basename ${FILE})" + RELATIVE_PATH="$(echo ${DIRECTORY} | sed 's/[^\/]\+/../g; s/^\///g')" + # Touch files in case they don't yet exist - FILE_DIR=$(dirname ${FILE_PATH}) - mkdir -p chroot${FILE_DIR} - touch chroot${FILE_PATH} - FILE_NAME=$(basename ${FILE_PATH}) - mkdir -p chroot${RW_DIR}${FILE_DIR} - mv chroot${FILE_PATH} chroot${RW_DIR}${FILE_DIR} + mkdir -p chroot/${DIRECTORY} + touch chroot/${DIRECTORY}/${FILE} + + # Move files to the read-write directory + mkdir -p chroot/${RW_DIRECTORY}/${DIRECTORY} + mv chroot/${DIRECTORY}/${FILE} chroot/${RW_DIRECTORY}/${DIRECTORY} + # Create a symbolic link to RW config file - RELATIVE_PATH=$(echo ${FILE_DIR}|sed 's/[^\/]\+/../g; s/^\///g') - ln -s ${RELATIVE_PATH}${RW_DIR}${FILE_PATH} chroot${FILE_PATH} + ln -s ${RELATIVE_PATH}/${RW_DIRECTORY}/${DIRECTORY}/${FILE} chroot/${DIRECTORY}/${FILE} done # Mount doesn't write to a symlink so use /proc/mounts instead, |