aufsでCopy on writeな簡易実験環境を作る

プログラムをインストールするとどこに書き込まれるのか(インストールしてシステムを汚す前に)手っ取り早く知りたかったので、aufsでCOWな実験環境を作った。

$ sudo mkdir /tmp/sandbox{,-root,-home}
$ sudo mount -t aufs -o dirs=/tmp/sandbox-root:/=ro none /tmp/sandbox
$ sudo mount -t aufs -o dirs=/tmp/sandbox-home:/home=ro none /tmp/sandbox/home
$ sudo mount -t tmpfs none /tmp/sandbox/tmp
$ sudo mount --bind /dev /tmp/sandbox/dev
$ sudo mount --bind /proc /tmp/sandbox/proc
$ sudo chroot /tmp/sandbox su - ytoku

/をreadonlyで/tmp/sandboxにマウントして、差分は/tmp/sandbox-rootに書き込む。/homeも同様。/tmpについては複製する必要がなかったのでtmpfsをマウントした。/devと/procはシステムの状態に関わるので--bindを用いて/tmp/sandbox内にもマウントした。一通りマウントし終わった所でchrootによって/tmp/sandboxを/に見せかける。


マウントされているファイルシステムごとに、aufsなりbindなりでマウントし直さなければならないのだろうか。