diff --git a/lib/src/install.rs b/lib/src/install.rs index 2a133205e..9cbfd3c60 100644 --- a/lib/src/install.rs +++ b/lib/src/install.rs @@ -704,12 +704,16 @@ pub(crate) fn exec_in_host_mountns(args: &[std::ffi::OsString]) -> Result<()> { .split_first() .ok_or_else(|| anyhow::anyhow!("Missing command"))?; tracing::trace!("{cmd:?} {args:?}"); - let pid1mountns = std::fs::File::open("/proc/1/ns/mnt")?; + let pid1mountns = std::fs::File::open("/proc/1/ns/mnt").context("open pid1 mountns")?; nix::sched::setns(pid1mountns.as_fd(), nix::sched::CloneFlags::CLONE_NEWNS).context("setns")?; rustix::process::chdir("/").context("chdir")?; // Work around supermin doing chroot() and not pivot_root // https://github.com/libguestfs/supermin/blob/5230e2c3cd07e82bd6431e871e239f7056bf25ad/init/init.c#L288 - if !Utf8Path::new("/usr").try_exists()? && Utf8Path::new("/root/usr").try_exists()? { + if !Utf8Path::new("/usr").try_exists().context("/usr")? + && Utf8Path::new("/root/usr") + .try_exists() + .context("/root/usr")? + { tracing::debug!("Using supermin workaround"); rustix::process::chroot("/root").context("chroot")?; }