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
