mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-21 05:31:05 +02:00
cros_sdk: Allow additional chroot mounts via .local_mounts file
This change was coopted from http://codereview.chromium.org/5331009/, originally written by hungte@. And the coopted commit message: It would be helpful if we could share some directories inside/outside the chroot (e.g. editor configuration or the default Downloads directory). This CL reads .local_mounts (just like .default_boards) from the "src/scripts" folder, and mounts the directories whenever you do cros_sdk. For safety concern, and to prevent the developer from accidentally deleting their mounted files, the mounts are made read-only. .local_mounts has a very simple syntax: mount_path or source_path(outside chroot) destination_path(inside chroot) or # comments. Examples: /usr/share/vim/google /home/XXX/Downloads /outside BUG=chromium-os:34561 TEST=Manually: 1. Create ~/trunk/src/scripts/.local_mounts with following content: # comment here /usr/share/vim/google # test /home/XXX/Downloads /outside 2. cros_sdk 3. ls -l /usr/share/vim/google/ # ensure dir is mounted correctly ls -l /outside/ # ensure dir is mounted correctly 4. exit 5. mount | grep chroot # ensure nothing is left Change-Id: I6f3400a436a825e8cdfcb18b788afe96ebba6757 Reviewed-on: https://gerrit.chromium.org/gerrit/33585 Tested-by: Michael Krebs <mkrebs@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org> Commit-Ready: Michael Krebs <mkrebs@chromium.org>
This commit is contained in:
parent
4411efeb87
commit
04c4f736f5
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
# User files
|
# User files
|
||||||
/.chromeos_dev
|
/.chromeos_dev
|
||||||
/.default_board
|
/.default_board
|
||||||
|
/.local_mounts
|
||||||
/shared_user_passwd.txt
|
/shared_user_passwd.txt
|
||||||
|
|
||||||
# Generated files
|
# Generated files
|
||||||
|
@ -123,11 +123,13 @@ queue_mount() {
|
|||||||
# Already mounted!
|
# Already mounted!
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
MOUNT_QUEUE+=(
|
MOUNT_QUEUE+=( "mkdir -p '${mounted_path}'" )
|
||||||
"mkdir -p '${mounted_path}'"
|
|
||||||
# The args are left unquoted on purpose.
|
# The args are left unquoted on purpose.
|
||||||
"mount ${mount_args} '${source}' '${mounted_path}'"
|
if [[ -n ${source} ]]; then
|
||||||
)
|
MOUNT_QUEUE+=( "mount ${mount_args} '${source}' '${mounted_path}'" )
|
||||||
|
else
|
||||||
|
MOUNT_QUEUE+=( "mount ${mount_args} '${mounted_path}'" )
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@ -390,6 +392,27 @@ setup_env() {
|
|||||||
queue_mount "$DEPOT_TOOLS" --bind "$INNER_DEPOT_TOOLS_ROOT"
|
queue_mount "$DEPOT_TOOLS" --bind "$INNER_DEPOT_TOOLS_ROOT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Mount additional directories as specified in .local_mounts file.
|
||||||
|
local local_mounts="${FLAGS_trunk}/src/scripts/.local_mounts"
|
||||||
|
if [[ -f ${local_mounts} ]]; then
|
||||||
|
info "Mounting local folders (read-only for safety concern)"
|
||||||
|
# format: mount_source
|
||||||
|
# or mount_source mount_point
|
||||||
|
# or # comments
|
||||||
|
local mount_source mount_point
|
||||||
|
while read mount_source mount_point; do
|
||||||
|
if [[ -z ${mount_source} ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
# if only source is assigned, use source as mount point.
|
||||||
|
: ${mount_point:=${mount_source}}
|
||||||
|
debug " mounting ${mount_source} on ${mount_point}"
|
||||||
|
queue_mount "${mount_source}" "--bind" "${mount_point}"
|
||||||
|
# --bind can't initially be read-only so we have to do it via remount.
|
||||||
|
queue_mount "" "-o remount,ro" "${mount_point}"
|
||||||
|
done < <(sed -e 's:#.*::' "${local_mounts}")
|
||||||
|
fi
|
||||||
|
|
||||||
process_mounts
|
process_mounts
|
||||||
|
|
||||||
CHROME_ROOT="$(readlink -f "$FLAGS_chrome_root" || :)"
|
CHROME_ROOT="$(readlink -f "$FLAGS_chrome_root" || :)"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user