[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#768102: debootstrap: start bind-mounting /proc on Hurd and add nobindmount variant

Package: debootstrap
Version: 1.0.64
Severity: wishlist

Dear Maintainer,

attached patch is pretty hurd-specific:

 - disconnect (orphan) TARGET/proc passive translator and start
   bind-mounting /proc along with /servers and /dev.
 - add "nobindmount" variant to create chroots without bind-mounting
   any filesystem. Main use case is chroot for subhurds [0].

[0] https://www.gnu.org/software/hurd/hurd/subhurd.html

Thanks for considering.

diff --git a/debootstrap b/debootstrap
index fef1ab5..9dced1e 100755
--- a/debootstrap
+++ b/debootstrap
@@ -100,7 +100,7 @@ usage()
       --variant=X            use variant X of the bootstrap scripts
                              (currently supported variants: buildd, fakechroot,
-                              scratchbox, minbase)
+                              scratchbox, minbase, nobindmount)
       --keyring=K            check Release files against keyring K
       --no-check-gpg         avoid checking Release file signatures
       --no-resolve-deps      don't try to resolve dependencies automatically
diff --git a/debootstrap.8 b/debootstrap.8
index 2cf44ca..b448089 100644
--- a/debootstrap.8
+++ b/debootstrap.8
@@ -71,13 +71,14 @@ or apt, and that it is far better to specify the entire base system than
 rely on this option.
 With this option set, this behaviour is disabled.
-.IP "\fB\-\-variant=minbase|buildd|fakechroot|scratchbox\fP"
+.IP "\fB\-\-variant=minbase|buildd|fakechroot|scratchbox|nobindmount\fP"
 Name of the bootstrap script variant to use.
 Currently, the variants supported are minbase, which only includes
 essential packages and apt; buildd, which installs the build-essential
 packages into
-and fakechroot, which installs the packages without root privileges.
+nobindmount, which doesn't bind-mount any filesystem; and fakechroot,
+which installs the packages without root privileges.
 Finally there is variant scratchbox, which is for creating targets
 for scratchbox usage.
 The default, with no \fB\-\-variant=X\fP argument, is to create a base
diff --git a/functions b/functions
index 0d48390..07147c0 100644
--- a/functions
+++ b/functions
@@ -1064,10 +1064,13 @@ setup_devices () {
 setup_devices_hurd () {
 	# Use the setup-translators of the hurd package, and firmlink
-	# $TARGET/{dev,servers} to the system ones.
+	# $TARGET/{dev,servers,proc} to the system ones.
 	in_target /usr/lib/hurd/setup-translators -k
-	settrans -a $TARGET/dev /hurd/firmlink /dev
-	settrans -a $TARGET/servers /hurd/firmlink /servers
+	if ! doing_variant nobindmount; then
+		settrans -a $TARGET/dev /hurd/firmlink /dev
+		settrans -a $TARGET/servers /hurd/firmlink /servers
+		settrans -oa $TARGET/proc /hurd/firmlink /proc
+	fi
 setup_devices_fakechroot () {
diff --git a/scripts/sid b/scripts/sid
index bf3404f..34089f7 100644
--- a/scripts/sid
+++ b/scripts/sid
@@ -1,7 +1,7 @@
 mirror_style release
 download_style apt
 finddebs_style from-indices
-variants - buildd fakechroot minbase scratchbox
+variants - buildd fakechroot minbase scratchbox nobindmount
 keyring /usr/share/keyrings/debian-archive-keyring.gpg
 if doing_variant fakechroot; then

Reply to: