From cf8be2c320d63c072531a64e10473d5fabce60d8 Mon Sep 17 00:00:00 2001 From: Brandon Philips Date: Fri, 26 Jul 2013 08:41:33 -0700 Subject: [PATCH] fix(*): use /media/state and overlays dir /mnt/stateful_partition was already a little unruly with /mnt/stateful_partition/home and /mnt/stateful_partition/var_overlay serving similar functional purposes. Then we needed to also add /opt and /srv overlays. I also have wanted to get rid of the ugly and weird /mnt/stateful_partition name so lets just have one big move. /mnt/stateful_partition -> /media/state /mnt/stateful_partition/var_overlay -> /media/overlays/var /mnt/stateful_partition/home -> /media/overlays/home From there we add /media/overlays/srv and /media/overlays/opt --- boot_nspawn | 2 +- build_library/base_image_util.sh | 24 +++++++++++++++++------- common.sh | 2 +- mount_gpt_image.sh | 8 ++++---- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/boot_nspawn b/boot_nspawn index 2cf870dfb0..f8da7e34db 100755 --- a/boot_nspawn +++ b/boot_nspawn @@ -28,4 +28,4 @@ STATE="${ROOT}-STATE" [ -d "$STATE" ] || sudo mkdir -p "$STATE" sudo systemd-nspawn --boot --read-only --machine="$HOSTNAME-$BOARD" \ - --directory="$ROOT" --bind="$STATE:/mnt/stateful_partition" + --directory="$ROOT" --bind="$STATE:/media/state" diff --git a/build_library/base_image_util.sh b/build_library/base_image_util.sh index 997c0a8a64..aeb5f66f05 100755 --- a/build_library/base_image_util.sh +++ b/build_library/base_image_util.sh @@ -4,6 +4,9 @@ . "${SRC_ROOT}/platform/dev/toolchain_utils.sh" || exit 1 +# Overlays are parts of the disk that live on the stateful partition +ROOT_OVERLAYS=(var opt srv home) + cleanup_mounts() { local prev_ret=$? @@ -142,21 +145,28 @@ create_base_image() { sudo mount -o loop "${oem_fs_img}" "${oem_fs_dir}" # Prepare stateful partition with some pre-created directories. - sudo mkdir "${stateful_fs_dir}/dev_image" - sudo mkdir "${stateful_fs_dir}/var_overlay" + for i in ${ROOT_OVERLAYS}; do + sudo mkdir -p "${stateful_fs_dir}/overlays/$i" + sudo mkdir -p "${root_fs_dir}/$i" + sudo mount --bind "${stateful_fs_dir}/overlays/$i" "${root_fs_dir}/$i" + done + + sudo mkdir -p "${stateful_fs_dir}/images/dev" # Create symlinks so that /usr/local/usr based directories are symlinked to # /usr/local/ directories e.g. /usr/local/usr/bin -> /usr/local/bin, etc. - setup_symlinks_on_root "${stateful_fs_dir}/dev_image" \ - "${stateful_fs_dir}/var_overlay" "${stateful_fs_dir}" + setup_symlinks_on_root "${stateful_fs_dir}/images/dev" \ + "${stateful_fs_dir}/overlays/var" \ + "${stateful_fs_dir}" # Perform binding rather than symlinking because directories must exist # on rootfs so that we can bind at run-time since rootfs is read-only. info "Binding directories from stateful partition onto the rootfs" + + # Setup the dev image for developer tools sudo mkdir -p "${root_fs_dir}/usr/local" - sudo mount --bind "${stateful_fs_dir}/dev_image" "${root_fs_dir}/usr/local" - sudo mkdir -p "${root_fs_dir}/var" - sudo mount --bind "${stateful_fs_dir}/var_overlay" "${root_fs_dir}/var" + sudo mount --bind "${stateful_fs_dir}/images/dev" "${root_fs_dir}/usr/local" + sudo mkdir -p "${root_fs_dir}/dev" info "Binding directories from OEM partition onto the rootfs" diff --git a/common.sh b/common.sh index ed5095936e..7a5d987e79 100644 --- a/common.sh +++ b/common.sh @@ -735,7 +735,7 @@ setup_symlinks_on_root() { # Give args better names. local dev_image_target=$1 local var_target=$2 - local dev_image_root="$3/dev_image" + local dev_image_root="$3/images/dev" # If our var target is actually the standard var, we are cleaning up the # symlinks (could also check for /usr/local for the dev_image_target). diff --git a/mount_gpt_image.sh b/mount_gpt_image.sh index f3f9a897ba..dc1b7b2715 100755 --- a/mount_gpt_image.sh +++ b/mount_gpt_image.sh @@ -179,15 +179,15 @@ mount_image() { fi # Mount directories and setup symlinks. - sudo mount --bind "${FLAGS_stateful_mountpt}/var_overlay" \ + sudo mount --bind "${FLAGS_stateful_mountpt}/overlays/var" \ "${FLAGS_rootfs_mountpt}/var" - sudo mount --bind "${FLAGS_stateful_mountpt}/dev_image" \ + sudo mount --bind "${FLAGS_stateful_mountpt}/images/dev" \ "${FLAGS_rootfs_mountpt}/usr/local" # Setup symlinks in /usr/local so you can emerge packages into /usr/local. if [ ${FLAGS_read_only} -eq ${FLAGS_FALSE} ]; then - setup_symlinks_on_root "${FLAGS_stateful_mountpt}/dev_image" \ - "${FLAGS_stateful_mountpt}/var_overlay" "${FLAGS_stateful_mountpt}" + setup_symlinks_on_root "${FLAGS_stateful_mountpt}/images/dev" \ + "${FLAGS_stateful_mountpt}/overlays/var" "${FLAGS_stateful_mountpt}" fi info "Image specified by ${FLAGS_from} mounted at"\ "${FLAGS_rootfs_mountpt} successfully."