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 <[email protected]>
>> > ---
>> >  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"
>> > +          mount_args+=(--bind-ro="$p")
>> >    done
>> >  }
>> >
>> > @@ -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.

-- 
Pierre Schmitz, https://pierre-schmitz.com

Reply via email to