我试图了解linux文件系统是如何工作的,但我拥有的唯一linux系统是我的android手机(根),所以我想问的是我在android手机中看到了什么使用亚行shell。
我从这里和这里上读到,每一个连接到安卓系统的硬件都被操作系统看作是一个文件。因此,/dev/dsp是音频硬件,将任何东西写入该文件都会通过扬声器显示为声音(因此,我假设如果我在该文件中写入1字节字符流,它们将首先被解释为2字节单词,像在wav文件中那样交织到左右通道,并通过扬声器播放?)。但是,进入亚行shell中的/dev并使用ls命令,我无法看到dsp文件。
我的问题是,/dev文件夹中的文件命名是标准的,还是可以有任何名称?它说这里命名完全可以是随机的。
有某种命名方案,但在绝大多数情况下,这些都是完全不合逻辑的。
如果这是真的,那么我们如何才能知道什么文件代表什么?
发布于 2019-11-17 06:45:37
您的tldp链接有点历史悠久。如果您只将/dev看作文件系统的一部分,就会忽略这个子系统的本质。
A.B的评论提到了主要的/次要的,但他的链接只是原始列表。这里分配的设备kernel.org HTML还有一些额外的信息。
我认为“一切都是一个文件”在这种情况下是相当误导的。/dev中的文件被称为特殊文件,无论是字符还是块。"c“或"b”表示这一点。
]# ls -l /dev/tty1 /dev/sda1
brw-rw---- 1 root disk 8, 1 Nov 5 17:27 /dev/sda1
crw------- 1 root tty 4, 1 Nov 7 05:48 /dev/tty1Major=8的文档有:
8 block SCSI disk devices (0-15)
0 = /dev/sda First SCSI disk whole disk
16 = /dev/sdb Second SCSI disk whole disk
32 = /dev/sdc Third SCSI disk whole disk
...
240 = /dev/sdp Sixteenth SCSI disk whole disk但是,这甚至不能直接解释为什么一个数字高的分区突然得到major=259:
]# ls -l /dev/sda16
brw-rw---- 1 root disk 259, 0 Nov 5 17:27 /dev/sda16我选择这个"sda“的例子,因为它是主要的海量存储。我不知道这是如何转化为Android的。
块设备(分区)可以直接写入,但通常是用文件系统格式化,然后挂载。
通常,/dev中的文件是设备的接口,而不是设备本身。
如今,/dev是一个伪文件系统,类似于/sys:
TARGET SOURCE FSTYPE
/dev dev devtmpfs
/sys sys sysfs
/ /dev/sda3 ext4在引导期间,/dev由内核填充。用户可以通过加载模块来添加设备。modprobe loop给你/dev/loop0-7。
(建议的编辑希望“由udev”填充,而不是“由内核填充”。我认为这更多的是命名,而不是填充本身。如果您想深入了解细节,那么您需要查看驱动程序和模块。)
通过插入外部usb存储,您可以获得sdb、sdc等,但前提是加载了usb_storage模块。
/dev特殊文件的接口性质也显示在名称中:有些文件是技术文件,有些文件是技术文件(在/dev/disk/by-.)是方便或识别的链接。
https://unix.stackexchange.com/questions/552483
复制相似问题