2009-11-10 2 views
2

(1) Является ли/proc всегда присутствующим во всех Linux-системах или это вариант где-нибудь (например, компиляция ядра, загрузка и т. Д.)?Несколько вопросов/proc и/dev

(2) Что определяет, какие подкаталоги присутствуют в/proc? Являются ли они всегда одинаковыми или настраиваются и/или могут быть созданы с помощью программ пользовательского пространства (предположительно выполняются как root)?

(3) Я заметил, что/dev/shm присутствовал на моей системе без необходимости его монтирования и не присутствовал в/etc/fstab. Является ли это автоматическим или создает что-то? И наоборот, мне нужно установить/dev/mqueue. Разве это не должно быть автоматически установлено?

(4) Каков нормальный/лучший способ определить программно, если устройство или каталог установлены? Если вы просто ищете открытые ошибки или есть API-запрос для этого.

Спасибо.

+0

Я отметил «linux-kernel» тоже. – 2009-11-10 16:42:49

ответ

4
  1. /proc обычно устанавливается на скриптах, как это:

     
    mount none /proc -t proc 
    

    Если это не будет сделано, вы не увидите ожидаемые содержимое /proc (но тогда вы будете иметь не -POSIX-совместимая система).

  2.  
    $ grep proc /proc/filesystems 
    nodev proc 
    

    proc это виртуальная файловая система экспортируется ядром. Его содержимое полностью * определяется ядром и загруженными модулями, которые могут регистрироваться для добавления дополнительных записей.

    * Кроме того, что есть некоторые подкаталоги в /proc, которые обычно overmounted с другими виртуальными файловыми системами, например:
    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. Проверьте сценарии инициализации. /sbin/init смотрит на /etc/inittab, чтобы определить, что нужно запускать, что часто бывает /sbin/rc или аналогичный, который затем проходит через /etc/rcS.d/* и т. Д., И есть также хорошая возможность того, что ваш дистрибутив будет также выполнять предварительную настройку в initramfs.

  4. Зависит.

    Вы можете прочитать вывод команды mount, или файл /proc/mounts, или /proc/self/mounts//proc/self/mountinfo файлы на новые ядра, чтобы определить, что в настоящее время устанавливается.

    Вы можете сравнить st_dev из stat с каталогом его родителя; если он отличается, каталог является точкой монтирования.

    Если вы не пишете код, который будет запущен на нестандартном системы или при загрузке до того как система была создана, вы можете считать, что /dev, /proc, /sys и т.д. установлены.

2
  1. Большинство, если не все общедоступные распределения настройки прок файловую систему и смонтировать его при запуске, потому что это так полезно. Но вы можете, конечно, отключить его и получить рабочее ядро ​​- пользовательское пространство будет ковыляться.

  2. Каталоги, доступные под/proc, определяются драйверами и их параметрами при компиляции ядра. Вы не можете создавать новые каталоги или файлы из пользовательского пространства.

  3. Разработчики вашего дистрибутива выбирают, что нужно монтировать и где.

  4. Вы можете запустить mount (8), или если/proc установлен, вы можете snoop в/proc/mounts. Программа mount также поддерживает/etc/mtab с той же информацией, но отформатирована несколько иначе.

+0

Что касается пункта 4, форматирование * точно * одинаково: '/ etc/mtab ->/proc/mounts' –