Skip to content

Commit

Permalink
Merge pull request #227 from cgwalters/install-misc
Browse files Browse the repository at this point in the history
install: Add tracing and error context around re-exec
  • Loading branch information
jmarrero authored Dec 15, 2023
2 parents 2582ef2 + c9aaecd commit c9daff0
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions lib/src/install.rs
Original file line number Diff line number Diff line change
Expand Up @@ -675,16 +675,17 @@ pub(crate) fn exec_in_host_mountns(args: &[std::ffi::OsString]) -> Result<()> {
let (cmd, args) = args[1..]
.split_first()
.ok_or_else(|| anyhow::anyhow!("Missing command"))?;
tracing::trace!("{cmd:?} {args:?}");
let pid1mountns = std::fs::File::open("/proc/1/ns/mnt")?;
nix::sched::setns(pid1mountns.as_fd(), nix::sched::CloneFlags::CLONE_NEWNS).context("setns")?;
rustix::process::chdir("/")?;
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()? {
tracing::debug!("Using supermin workaround");
rustix::process::chroot("/root")?;
rustix::process::chroot("/root").context("chroot")?;
}
Err(Command::new(cmd).args(args).exec())?
Err(Command::new(cmd).args(args).exec()).context("exec")?
}

#[context("Querying skopeo version")]
Expand Down

0 comments on commit c9daff0

Please sign in to comment.