(1)/ proc是否始终存在于所有Linux系统上,或者它是某个地方的选项(例如内核编译,启动等)?
(2)什么决定/ proc中存在哪些子目录?这些是否始终相同,或者是否可由用户空间程序配置和/或创建(可能以root身份运行)?
(3)我注意到/ dev / shm存在于我的系统上而不必安装它,也不存在于/ etc / fstab中。这是自动还是创造了它?相反,我必须挂载/ dev / mqueue。这不应该是自动安装的吗?
(4)如果安装了设备或目录,以编程方式确定的正常/最佳方法是什么?如果只是寻找开放错误或是否有API调用。
感谢。
答案 0 :(得分:4)
/proc
通常由init脚本挂载,如下所示:
mount none /proc -t proc
如果没有这样做,你将看不到/proc
的预期内容(但是你也会有一个非POSIX兼容的系统)。
$ grep proc /proc/filesystems nodev proc
proc
是内核导出的虚拟文件系统。它的内容完全由内核和加载的模块决定,这些模块可以注册以添加其他条目。
*除了/proc
中有一些子目录通常用其他虚拟文件系统覆盖,例如:
mount none /proc/bus/usb -t usbfs -o devmode=0664,devgid=plugdev
mount none /proc/sys/fs/binfmt_misc -t binfmt_misc
mount none /proc/fs/nfsd -t nfsd
检查您的init脚本。 /sbin/init
查看/etc/inittab
以确定要投放的内容,通常为/sbin/rc
或类似内容,然后通过/etc/rcS.d/*
等等,并且您很有可能分发也将在initramfs中进行初步设置。
取决于
您可以在新内核上读取mount
命令或/proc/mounts
文件或/proc/self/mounts
/ /proc/self/mountinfo
文件的输出,以确定当前安装的内容
您可以将目录st_dev
的{{1}}与其父目录进行比较;如果不同,该目录是一个挂载点。
除非您要编写代码以在非标准系统上运行或在系统设置之前启动,否则您可能会认为stat
,/dev
,/proc
,安装等。
答案 1 :(得分:2)
大多数(如果不是所有)公开发布的发行版都配置proc文件系统并在启动时挂载它,因为它非常有用。但是你当然可以禁用它并获得一个可用的内核 - 但用户空间会受到阻碍。
/ proc下可用的目录由编译内核时的驱动程序及其选项决定。您无法从用户空间创建新目录或文件。
您的发行版的开发人员选择要安装的内容和位置。
您可以运行mount(8)或者如果安装了/ proc,您可以窥探/ proc / mounts。 mount程序还使用相同的信息维护/ etc / mtab,但格式略有不同。