■chroot環境をapt-getしているとたまに「/dev/pts」でエラーを吐く。
やっぱり、「/dev/pts」位は対応した方が良さそう。
■debian公式のTipsでは「/dev/pts」をbindマウントしている。
chroot
http://wiki.debian.org/chroot
$ mount | grep pts | grep cifs | awk '{print $3}' | for list in `xargs`;do sudo umount "$list";done
$ sudo mount --bind /dev/pts /home/labunix/cifs/wheezy/dev/pts
$ mount | grep ^/dev/pts
/dev/pts on /home/labunix/cifs/wheezy/dev/pts type none (rw,bind)
$ mount | grep pts | grep cifs | awk '{print $3}' | for list in `xargs`;do sudo umount "$list";done
■上記を参考にfstabに記述。
$ grep ^/dev/pts /etc/fstab
/dev/pts /home/labunix/cifs/wheezy/dev/pts none bind 0 0
/dev/pts /home/labunix/cifs/lenny/dev/pts none bind 0 0
/dev/pts /home/labunix/cifs/squeeze/dev/pts none bind 0 0
/dev/pts /home/labunix/cifs/sid/dev/pts none bind 0 0
$ sudo mount -a
$ mount | grep ^/dev/pts
/dev/pts on /home/labunix/cifs/wheezy/dev/pts type none (rw,bind)
/dev/pts on /home/labunix/cifs/lenny/dev/pts type none (rw,bind)
/dev/pts on /home/labunix/cifs/squeeze/dev/pts type none (rw,bind)
/dev/pts on /home/labunix/cifs/sid/dev/pts type none (rw,bind)
■ちなみに。「/dev/pts」を呼び出すのはinitスクリプト。
$ grep -v "^\$\|^#" /etc/default/devpts
TTYGRP=5
TTYMODE=620
■マウント箇所。kernelがLinuxで「/dev/pts」ディレクトリが無ければ作って、
初期値としてinitスクリプト内にも同じ環境変数があって、上記に変更があれば、該当の環境変数を上書きする。
$ grep "domount devpts" /etc/init.d/mountdevsubfs.sh
domount devpts "" /dev/pts devpts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE
■環境変数「TTYGRP」はGIDのこと。
$ awk -F\: '($3==5){print $1}' /etc/group
tty
■環境変数「TTYMODE」は読み/書き/実行の権限のこと。
$ ls -l /dev/pts/0
crw--w---- 1 labunix tty 136, 0 2013-03-26 22:37 /dev/pts/0
■fstabに無くてもマウント中なので、mtabならあるはず。
$ mount | grep pts
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
$ grep pts /etc/mtab
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
■上記と同じで良いのでは?
「TTYGRP」「TTYMODE」を変更する可能性がある場合はbindオプションの方が良い。
$ grep pts /etc/fstab
devpts /home/labunix/cifs/wheezy/dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
devpts /home/labunix/cifs/lenny/dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
devpts /home/labunix/cifs/squeeze/dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
devpts /home/labunix/cifs/sid/dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0
■マウントする
$ sudo moun -a
$ mount | grep pts
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
devpts on /home/labunix/cifs/wheezy/dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
devpts on /home/labunix/cifs/lenny/dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
devpts on /home/labunix/cifs/squeeze/dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
devpts on /home/labunix/cifs/sid/dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
$ ls -l /home/labunix/cifs/[lsw]*/dev/pts/0
crw--w---- 1 labunix tty 136, 0 2013-03-26 22:48 /home/labunix/cifs/lenny/dev/pts/0
crw--w---- 1 labunix tty 136, 0 2013-03-26 22:48 /home/labunix/cifs/sid/dev/pts/0
crw--w---- 1 labunix tty 136, 0 2013-03-26 22:48 /home/labunix/cifs/squeeze/dev/pts/0
crw--w---- 1 labunix tty 136, 0 2013-03-26 22:48 /home/labunix/cifs/wheezy/dev/pts/0
■mtabにあるなら当然「proc」にもあるはず。
$ grep devpts /proc/mounts
none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
devpts /home/labunix/cifs/wheezy/dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
devpts /home/labunix/cifs/lenny/dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
devpts /home/labunix/cifs/squeeze/dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
devpts /home/labunix/cifs/sid/dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
■2種類の書き方があるので、環境変数に変更が無い事が分かっているならお好みで。
bindマウントの方がベターだと思います。