[root@archlinux xtricman]# ls -l /dev/pts
total 0
crw--w---- 1 xtricman tty 136, 0 Feb 24 19:24 0
c--------- 1 root root 5, 2 Feb 24 19:10 ptmx
[root@archlinux xtricman]# ls -l /mnt
total 12
brw-r--r-- 1 root root 136, 0 Feb 24 19:17 dev_node
crw-r--r-- 1 root root 136, 0 Feb 24 19:17 dev_node_c
drwx------ 2 root root 12288 Feb 24 19:12 lost+found
[root@archlinux xtricman]# exec 6<>/dev/pts/0
[root@archlinux xtricman]# exec 7<>/mnt/dev_node
bash: /mnt/dev_node: No such device or address
[root@archlinux xtricman]# exec 7<>/mnt/dev_node_c
bash: /mnt/dev_node_c: Input/output error
/dev/pts
devpts のマウントポイント/mnt
で ext4 のマウントポイントです。
/dev/pts/0
3つのデバイスノード(、、、/mnt/dev_node
)/mnt/dev_node_c
のプライマリデバイス番号とマイナーデバイス番号が同じで、なぜ1つだけを開くことができ、/dev/pts/0
残りの2つを開くことができないのかを知りたいです。
(major = 136、minor = 0)のブロックデバイスが存在しないことはわかりますが、文字デバイス(major = 136、minor = 0)の「入出力エラー」とはどういう意味ですか?このエラーが発生するのはなぜですか?
ベストアンサー1
まあ、dev_node
それはブロックデバイスなので(b
出力の行の先頭にls
示されている)他のデバイスとはまったく異なります。同じメジャー番号があるだけで、ブロック番号と文字デバイス番号の間には相関はありません。
Documentation/admin-guide/devices.txt
これについてはLinuxカーネルのソースコードで説明されています。
136 block Mylex DAC960 PCI RAID controller; ninth controller
0 = /dev/rd/c8d0 First disk, whole disk
おそらくMylex RAIDコントローラがないかもしれません。九彼らにとって、これはNo such device or address
適切な対応のように見えました。
dev_node_c
あなたと同じように見えますが/dev/pts/0
。ただし、デバイスノードは/dev/pts
自動的に作成され、特別な仮想ファイルシステム(devpts
)を持ちます。通常どおり、次の出力に表示されますmount
。
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
これをテストしましたが、実際にそこから/dev/pts/15
別のファイルシステムにデバイスノードをコピーすることは機能しません。また、別のコピーをインストールすると、他のコピーには表示されないdevpts
pseudo-ttyを使用してクリーンなインスタンスが作成されるようです。/dev/pts
したがって、擬似ttyノードがdevpts
ファイルシステムの特定のインスタンスに関連付けられ、ノードが外部で機能しないことが実際に可能です。