context/unshare: mount proc and dev/pts

This commit is contained in:
2026-01-09 23:08:59 +01:00
parent 464e25de24
commit dd62baa455
2 changed files with 10 additions and 2 deletions

View File

@@ -172,9 +172,12 @@ impl UnshareDriver {
cmd.arg("--map-user=65536")
.arg("--map-group=65536")
.arg("--mount-proc")
.arg("--pid")
.arg("--ipc")
.arg("--uts")
.arg("--user")
.arg("--cgroup")
.arg("--map-auto")
.arg("-r")
.arg("--mount")
@@ -186,7 +189,11 @@ impl UnshareDriver {
cmd.arg("-w").arg(dir);
}
cmd.arg("--").arg(program).args(args);
cmd.arg("--").arg("bash").arg("-c").arg(format!(
"mount -t devpts devpts /dev/pts; mount --bind /dev/pts/ptmx /dev/ptmx; {} {}",
program,
args.join(" ")
));
cmd
}

View File

@@ -79,6 +79,7 @@ impl EphemeralContextGuard {
.command("mmdebstrap")
.arg("--variant=buildd")
.arg("--mode=unshare")
.arg("--include=mount")
.arg("--format=tar")
.arg(series)
.arg(tarball_path.to_string_lossy().to_string())
@@ -112,7 +113,7 @@ impl EphemeralContextGuard {
impl Drop for EphemeralContextGuard {
fn drop(&mut self) {
log::debug!("Cleaning up ephemeral context...");
log::debug!("Cleaning up ephemeral context ({:?})...", &self.chroot_path);
// Reset to normal context
if let Err(e) = context::manager().set_current(&self.previous_context) {
log::error!("Failed to restore context {}: {}", self.previous_context, e);