プログラムをインストールするとどこに書き込まれるのか(インストールしてシステムを汚す前に)手っ取り早く知りたかったので、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なりでマウントし直さなければならないのだろうか。