2016年1月22日 (金曜日)

07:21:42 # Life unshare mount namespace の基本的な使い方についてのまとめ。 最近のmountコマンドはMS_SHAREDでマウントしているので、ネームスペースをまたがってマウントすることになる。/proc/self/mountinfoshared:[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
	
Junichi Uekawa