X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=brc2;h=5035ca2f5c3c348e81524ca034dd1c2db9818d09;hb=95eb9558206f8287febab80dd3f51d168a3ca831;hp=491dcada8e562e33990a96b50427ab9cf1af16a2;hpb=97b78b0003982c6374f4d631694ba2746580cf1f;p=distro-setup diff --git a/brc2 b/brc2 index 491dcad..5035ca2 100644 --- a/brc2 +++ b/brc2 @@ -1134,6 +1134,32 @@ EOF } +mns() { # mount namespace + ns=$1 + shift + s mkdir -p /root/mount_namespaces + if ! s mountpoint /root/mount_namespaces >/dev/null; then + m s mount --bind /root/mount_namespaces /root/mount_namespaces + fi + m s mount --make-private /root/mount_namespaces + if [[ ! -e /root/mount_namespaces/$ns ]]; then + s touch /root/mount_namespaces/$ns + fi + if ! s mountpoint /root/mount_namespaces/$ns >/dev/null; then + m unshare --propagation slave --mount=/root/mount_namespaces/$ns /bin/true + fi + m sudo -E /usr/bin/nsenter --mount=/root/mount_namespaces/$ns "$@" +} + +mnsnonet() { + ns=$1 + if ! s ip netns list | grep -Fx nonet &>/dev/null; then + s ip netns add nonet + fi + mns $ns --net=/var/run/netns/nonet sudo -E -u iank /bin/bash +} + + lom() { local l base if [[ $1 == /* ]]; then @@ -1153,12 +1179,12 @@ lom() { fi fi m sudo mkdir -p /mnt/$base - m sudo mount /dev/mapper/$base /mnt/$base - m sudo chown $USER:$USER /mnt/$base + m mns mount /dev/mapper/$base /mnt/$base + m mns chown $USER:$USER /mnt/$base else base=$1 - if mountpoint /mnt/$base &>/dev/null; then - m sudo umount /mnt/$base + if mns mountpoint /mnt/$base &>/dev/null; then + m mns umount /mnt/$base fi if sudo cryptsetup status /dev/mapper/$base &>/dev/null; then if ! m sudo cryptsetup luksClose /dev/mapper/$base; then