Am 10.03.2013 18:37, schrieb Dave Reisner:
On Sun, Mar 10, 2013 at 10:09:48AM +0100, Pierre Schmitz wrote:
Am 28.02.2013 23:09, schrieb Dave Reisner:
systemd-nspawn is capable of doing this as of systemd-198.
Signed-off-by: Dave Reisner dreisner@archlinux.org
mkarchroot.in | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/mkarchroot.in b/mkarchroot.in index 20de5e6..c7c7bcb 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -95,14 +95,21 @@ bind_mount() { mount --make-slave "$target" }
-chroot_mount() {
- trap 'trap_chroot_umount' EXIT INT QUIT TERM HUP
+build_mount_args() {
- local p
- declare -g mount_args=()
- [[ -n $host_mirror_path ]] && bind_mount "$host_mirror_path" ro
- if [[ -n $host_mirror_path ]]; then
printf -v p '%q' "$host_mirror_path"
mount_args+=(--bind-ro="$p")
- fi
- printf -v p '%q' "${cache_dirs[0]}"
- mount_args+=(--bind="$p")
- bind_mount "${cache_dirs[0]}" for cache_dir in ${cache_dirs[@]:1}; do
bind_mount "$cache_dir" ro
printf -v p '%q' "$cache_dir"
donemount_args+=(--bind-ro="$p")
}
@@ -148,7 +155,7 @@ chroot_lock () { chroot_run() { local dir=$1 shift
- eval systemd-nspawn -D "${dir}" -- ${@} 2>/dev/null
- eval systemd-nspawn -D "${dir}" "${mount_args[@]}" -- ${@} 2>/dev/null
}
# }}} @@ -164,7 +171,7 @@ if [[ -n $RUN ]]; then fi
chroot_lock
- chroot_mount
build_mount_args copy_hostconf
chroot_run "${working_dir}" ${RUN}
We would still need to use chroot_mount when installing the build env as we don't use nspawn here.
Could you clarify this? I'm not following this...
Also: doesn't nspawn umount the mounts it mounted on exit?
Yes, it does. Isn't that what we want?
I've been using this patch since I wrote it, and haven't seen any strange behavior as of yet.
Strange. You removed the chroot_mount() function even though it's still used when creating the chroot with pacstrap.