如何理解mount
2022/4/7 23:20:18
本文主要是介绍如何理解mount,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
mount有两重含义:
- 代表一种动作,另外一个是
- linux中有个命令就叫mount.
下面一起来看一下,从我发现的一个问题出发:
我在系统的启动脚本中想添加一些能让weston正常启动所依赖的资源,比如一个叫做X11/xkb的目录,
然后发现,在启动weston之前总是无法成功的执行 mkdir -p /system/usr/share/X11/xkb,看到log才知道问题出在:
mkdir的时候,报错 readonly file system.
也就是说这个文件系统是只读的,我写mkdir写入新的目录是不被允许的。我的解决方案是:
执行 mount -o rw -o remount /system,然后再去mkdir -p /system/usr/share/X11/xkb 就可以了
(更详细的用法:https://www.runoob.com/linux/linux-comm-mount.html)
我们以mount命令为切入点来了解一些上面的做法:
首先执行mount, 我们可以看到以下信息:
rootfs on / type rootfs (ro, seclable) devtmpfs on /dev type devtmpfs (rw, ...) sysfs on /sys type sysfs /dev/block/mmcblk0p13 on /system type ext4 (ro, seclabel) /dev/block/mmcblk0p22 on /data type ext4 (ro, seclabel) /dev/block/mmcblk0p23 on /blackbox type ext4 (ro, seclabel) /sys/kernel/debug on /sys/kernel/debug/ debugfs ....
可以看到mount 是把设备device 和 目录directory 关联了起来,这个过程就是挂载。
linux下一切皆是文件,区别就是不同的目录下挂载的文件系统的类型可能是不同的;
比如说/ 是根文件系统的挂载点,/sys 是 sysfs的挂载点;
再比如说,/blackbox 就是普通的ext4 文件系统,它对应一个块设备/dev/block/mmcblk0p23,它的挂载点是/blackbox
如果没有挂载的操作,我们是没有办法访问到块设备的内容的。
这里可能有点绕,挂载一个存储设备比较好理解,挂载一个新的文件系统是怎么个回事?
我们不妨思考这样一个问题,一个存储设备的文件系统到底是什么,为什么需要文件系统?
一个是为了分层考虑,二个是文件系统可以看作文件的写入方和读取双方的协议,写入方按照一定的规则
写入数据,读取方按照同样的规则读出数据,这样就完成了数据的存与取。这也是为什么一个U盘或者存储卡
从硬件上看只是一个存储设备,但是其中的数据组织形式却是根据不同的文件系统有不同的形式,因此要能正确读取这些文件
需要操作系统支持对应的文件格式才可以。简言之,文件系统只是一种数据存储的协议,无需依赖硬件。这样就是可以比较好的
理解sysfs, devfs, tempfs了,这些文件系统就是在内存中,被相应的驱动有效的组织起来,然后挂载到特定的目录上,linux 通过
VFS接口去操作对应目录下的文件,然后VFS会调到特定的fs的read, write 接口,完成“文件”的读写操作,这个文件可以是一个
存储设备中文本文件,也可以是一个驱动的设备文件。
搞懂这一点,文件系统就不难理解了。当然,如果你问我ext4 和 根文件系统有什么区别,怎么做一个文件系统,这就是另外一个话题了。
这篇关于如何理解mount的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南