为什么我们需要在Linux上挂载?

格里索

我了解Linux中的安装方式,也了解设备文件。但是我不明白为什么我们需要挂载。

例如,如下面的问题的公认答案中所述,使用以下命令:

mount /dev/cdrom /media/cdrom

我们将CDROM设备安装到该设备,/media/cdrom并最终能够使用以下命令访问CDROM的文件

ls /media/cdrom

它将列出CDROM的内容。

为什么不完全跳过安装,然后执行以下操作?

ls /dev/cdrom

并列出CDROM的内容。我希望答案是:“这就是Linux的设计方式”。但是如果是这样,那为什么要这样设计呢?为什么不/dev/cdrom直接访问目录?安装的真正目的是什么?

埃里克

原因之一是块级别的访问级别比ls可以使用的级别低/dev/cdrom,或者分别dev/sda1是您的CD ROM驱动器和硬盘的分区1,但是它们没有实现ISO 9660 / ext4,它们只是指向那些称为Device Files的设备的RAW指针

mount决定的事情之一是如何使用原始访问-哪些文件系统逻辑/驱动程序/内核模块将管理读/写,或转换ls /mnt/cdrom为需要读取的块,以及如何解释那些块的内容会陷入诸如此类的事情file.txt

在其他时候,这种低级别的访问可能就足够了。我刚刚读取并写入了串行端口,USB设备,tty终端和其他相对简单的设备。我绝不会尝试手动从/ dev / sda1读/写来编辑文本文件,因为我基本上必须重新实现ext4逻辑,其中可能包括:查找文件inode,查找存储块,读取完整的块,进行更改,写入完整的块,然后更新inode(也许),或者全部写入日志-太难了。

亲自查看此内容的一种方法就是尝试一下:

[root@ArchHP dev]# cd /dev/sda1
bash: cd: /dev/sda1: Not a directory

/dev是一个目录,您可以cd并且ls喜欢。/dev/sda1不是目录;这是一种特殊的文件类型,内核将其作为该设备的“句柄”提供给文件。

请参阅设备文件上的Wikipedia条目,以进行更深入的处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么有时我们需要在根目录下挂载那些文件?

什么时候以及为什么我们需要在bash上使用“ wait”命令?

为什么我们需要在CUDA内核上大步向前?

setsid()何时有用,或者为什么我们需要在Linux中对进程进行分组?

Android:为什么我们需要在黄油刀上使用R2而不是R?

为什么我们需要需求?

我们为什么需要`ngDoCheck`

为什么我们需要mktemp?

为什么我们需要单子?

我们为什么需要ʻiteratoreltype()`?

我们为什么需要容器?

为什么我们需要cmake?

为什么我们需要IO?

为什么我们需要主键?

为什么我们需要在C ++头文件中使用“ #if defined Identifier”?

为什么我们需要在/ dev / null 2>&1中有2>&1?

为什么我们需要在类路径后写“ *”

为什么我们需要在React Hook中返回一个函数?

为什么我们需要在Guice模块中实现configure()?

为什么我们需要在此脚本中调用“ c.set.bind(c)”?

为什么我们需要在Android应用中存储Goefence数据?

为什么我们需要在图灵的暂停证明中使用否定部分?

为什么我们需要在Java中使用移位运算符?

为什么我们需要在<persistence-unit>元素内指定类?

为什么我们需要在全局和本地安装gulp?

为什么我们需要在这里复制u的值?

为什么我们需要在链接列表中填充数据?

为什么我们需要在PyTorch中调用zero_grad()?

为什么我们需要在React Native中绑定函数?