07:21:42 # Life unshare mount namespace の基本的な使い方についてのまとめ。 最近のmountコマンドはMS_SHAREDでマウントしているので、ネームスペースをまたがってマウントすることになる。/proc/self/mountinfoでshared:[ID]というフラグがついている。 clone(CLONE_NEWNS)これからマウント操作を別ネームスペースで行いたい親ディレクトリのmount(2) にMS_PRIVATEを与える。 mount(1) には--make-privateオプションがある。 一連の基本的な動作はこんな感じか。
unshare(CLONE_NEWNS) chroot() mount("none", "/", NULL, MS_PRIVATE, NULL) mount("/proc", "/proc", "proc", MS_MGC_VAL, NULL)
これで結果としてcat /proc/self/mountinfo をみるとsharedじゃない/procがマウントできる。
263 58 8:4 /var/cache/pbuilder/sid-chroot / rw,noatime - ext4 /dev/sda4 rw,errors=remount-ro,data=ordered 264 263 8:4 /home /home rw,noatime shared:1 - ext4 /dev/sda4 rw,errors=remount-ro,data=ordered 266 263 0:56 / /proc rw,relatime - proc /proc rw