一些/ proc和/ dev问题

时间:2009-11-10 16:34:32

标签: linux unix linux-kernel

(1)/ proc是否始终存在于所有Linux系统上,或者它是某个地方的选项(例如内核编译,启动等)?

(2)什么决定/ proc中存在哪些子目录?这些是否始终相同,或者是否可由用户空间程序配置和/或创建(可能以root身份运行)?

(3)我注意到/ dev / shm存在于我的系统上而不必安装它,也不存在于/ etc / fstab中。这是自动还是创造了它?相反,我必须挂载/ dev / mqueue。这不应该是自动安装的吗?

(4)如果安装了设备或目录,以编程方式确定的正常/最佳方法是什么?如果只是寻找开放错误或是否有API调用。

感谢。

2 个答案:

答案 0 :(得分:4)

  1. /proc通常由init脚本挂载,如下所示:

    mount none /proc -t proc
    

    如果没有这样做,你将看不到/proc的预期内容(但是你也会有一个非POSIX兼容的系统)。

  2. $ 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

  3. 检查您的init脚本。 /sbin/init查看/etc/inittab以确定要投放的内容,通常为/sbin/rc或类似内容,然后通过/etc/rcS.d/*等等,并且您很有可能分发也将在initramfs中进行初步设置。

  4. 取决于

    您可以在新内核上读取mount命令或/proc/mounts文件或/proc/self/mounts / /proc/self/mountinfo文件的输出,以确定当前安装的内容

    您可以将目录st_dev的{​​{1}}与其父目录进行比较;如果不同,该目录是一个挂载点。

    除非您要编写代码以在非标准系统上运行或在系统设置之前启动,否则您可能会认为stat/dev/proc,安装等。

答案 1 :(得分:2)

  1. 大多数(如果不是所有)公开发布的发行版都配置proc文件系统并在启动时挂载它,因为它非常有用。但是你当然可以禁用它并获得一个可用的内核 - 但用户空间会受到阻碍。

  2. / proc下可用的目录由编译内核时的驱动程序及其选项决定。您无法从用户空间创建新目录或文件。

  3. 您的发行版的开发人员选择要安装的内容和位置。

  4. 您可以运行mount(8)或者如果安装了/ proc,您可以窥探/ proc / mounts。 mount程序还使用相同的信息维护/ etc / mtab,但格式略有不同。