From 0c61761f33b2cb7613720596ed9373ab0872df31 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Fri, 18 Feb 2022 13:35:43 +0000 Subject: mkarchroot: unshare mount namespace to avoid broken root chroot creation While `extra-x86_64-build -c` is running `pacstrap` and has `/var/lib/archbuild/extra-x86_64/root/run` mounted, another user logs in, thus creating a new mountpoint `/run/user/$uid` that propagates into `/var/lib/archbuild/extra-x86_64/root/run/user/$uid` leading to a broken root chroot. Successive `extra-x86_64-build -c` calls will result in cleanup errors: ``` $ extra-x86_64-build -c ==> Creating chroot for [extra] (x86_64)... -> Deleting chroot copy 'root'... rm: skipping '/var/lib/archbuild/extra-x86_64/root/run', since it's on a different device rm: skipping '/var/lib/archbuild/extra-x86_64/root/run', since it's on a different device ==> ERROR: Working directory '/var/lib/archbuild/extra-x86_64/root' already exists ==> ERROR: Aborting... ``` Reported by and patch adjusted from archlinuxcn. Fixes FS#64698 --- mkarchroot.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mkarchroot.in') diff --git a/mkarchroot.in b/mkarchroot.in index 3e08af2..8fb52ac 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -81,7 +81,7 @@ for file in "${files[@]}"; do cp "$file" "$working_dir$file" done -pacstrap -${umode}Mcd ${pac_conf:+-C "$pac_conf"} "$working_dir" \ +unshare --mount pacstrap -${umode}Mcd ${pac_conf:+-C "$pac_conf"} "$working_dir" \ "${cache_dirs[@]/#/--cachedir=}" "$@" || die 'Failed to install all packages' printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen" -- cgit v1.2.3-54-g00ecf From 5e98478344fbdecd5f07eb92ef92ee43bc66e1a9 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Fri, 27 May 2022 02:45:06 +0000 Subject: mkarchroot: generate and use C.UTF-8 by default systemd >= 251 is forcing nspawns to use LANG=C.UTF-8: https://github.com/systemd/systemd/commit/b626f6959bcee11d966f96bd29a00502f4aa2ce4 It makes sense to generate the C.UTF-8 locate here when using it as the default LANG value. Related to: https://bugs.archlinux.org/task/74864 --- mkarchroot.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mkarchroot.in') diff --git a/mkarchroot.in b/mkarchroot.in index 8fb52ac..d199bed 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -84,8 +84,8 @@ done unshare --mount pacstrap -${umode}Mcd ${pac_conf:+-C "$pac_conf"} "$working_dir" \ "${cache_dirs[@]/#/--cachedir=}" "$@" || die 'Failed to install all packages' -printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen" -echo 'LANG=en_US.UTF-8' > "$working_dir/etc/locale.conf" +printf '%s.UTF-8 UTF-8\n' C en_US de_DE > "$working_dir/etc/locale.gen" +echo 'LANG=C.UTF-8' > "$working_dir/etc/locale.conf" echo "$CHROOT_VERSION" > "$working_dir/.arch-chroot" systemd-machine-id-setup --root="$working_dir" -- cgit v1.2.3-54-g00ecf