smw*_*dia 22 linux filesystems mount
受到这个问题的启发。为什么 Linux 需要/dev/cdrom
和/media/cdrom
?
为什么不直接通过 cdrom 访问文件/dev/cdrom
?
Tho*_*key 41
/media/cdrom
是mountpoint的约定,而/dev/cdrom
是可以安装在前者上的特殊设备。
您需要两者,因为它们用于不同的目的:大多数应用程序不直接从特殊设备读取,但可以从文件系统(已挂载的东西)读取
smw*_*dia 20
(感谢这么多人回答我的问题。在网上搜索了一段时间后,我想分享一下我自己的理解。)
根据这里:
在类 Unix 操作系统中,设备文件或特殊文件是设备驱动程序的接口,它出现在文件系统中,就好像它是一个普通文件一样。
根据这里:
mount 命令用于将在某些设备上找到的文件系统附加到大文件树。
所以,我认为这里有 2 个不同级别的软件抽象:
/dev/cdrom
是设备专用文件。它将 CD-ROM 硬件抽象为块 IO 设备。这个抽象是由设备驱动程序提供的。
/media/cdrom
是文件系统的挂载点。因此,它提供了对 CD-ROM 硬件的更高级别的抽象,即作为文件系统。如ISO-9660 文件系统。而这个抽象是由文件系统驱动程序提供的。
所以基本上,2 个不同的文件位置用于 2 个不同的抽象级别。而在不同的场景下,我们可能需要不同的。我认为其他操作系统(例如 Windows)也提供了如此不同的选项,只是 Linux 将其统一为单个文件层次结构。
(我想也许我应该通过在 Linux 上编写一些 C 代码来与/dev/cdrom
和进行交互来做一些实验/media/cdrom
。看看一切是如何进行的。)
(我会继续学习,并在适当的时候完善我的理解。)
Mat*_*hid 13
为什么我们有/dev/cdrom
和/media/cdrom
?
为什么我们有/dev/sda2
和/home
?
基本上,/dev/cdrom
是一个文件。当您访问它时,您正在访问 CD 上的各个位和字节(如果有的话)。虽然/media/cdrom
是一个文件夹。当您访问它时,您正在访问存储在 CD 上的文件。
同样,/dev/sda2
表示第一个硬盘上第二个分区的原始内容。您可以直接写入此文件,例如,如果您想格式化分区。(mkfs
程序从字面上打开/dev/sda2
或其他什么,并在其上写入特定的位模式。)然后您挂载 /dev/sda2
在,例如,,/home
现在您可以访问实际文件。当您通过挂载点访问文件时,文件系统驱动程序正在读取和写入底层设备文件。
这就是 Unix 做事的方式。
你可以看到这/dev/cdrom
实际上是一个块特殊文件,它是一个设备文件。
$ ls -l /dev/cdrom
lrwxrwxrwx 1 root root 3 Mar 18 17:00 /dev/cdrom -> sr0
$ ls -l /dev/sr0
brw-rw----+ 1 root cdrom 11, 0 Mar 18 17:00 /dev/sr0
Run Code Online (Sandbox Code Playgroud)访问文件系统层次结构标准:
/media
CD-ROM 等可移动介质的安装点(出现在 FHS-2.3 中)。
$ ls -ld /media/cdrom/
drwxr-xr-x 2 root root 4096 Jun 15 2015 /media/cdrom/
Run Code Online (Sandbox Code Playgroud)
此目录包含用作可移动介质(如软盘、cdrom 和 zip 磁盘)的安装点的子目录。
所以,/dev/cdrom
和/media/crdom
是完全不同的东西。一个是CD-ROM 的块/设备文件,而另一个是用于安装它的目录!
归档时间: |
|
查看次数: |
6892 次 |
最近记录: |