2009-11-10 4 views
2

(1) est/proc toujours présent sur tous les systèmes Linux ou est-il une option quelque part (par exemple compilation du noyau, démarrage, etc.)?Quelques questions/proc et/dev

(2) Ce qui détermine ce que les sous-répertoires sont présents dans/proc? Sont-ils toujours les mêmes ou sont-ils configurables et/ou créables par les programmes de l'espace utilisateur (vraisemblablement exécutés en tant que root)?

(3) je remarquai que/dev/SHM était présent sur mon système sans avoir à monter, ni est-il présent dans/etc/fstab. Est-ce automatique ou fait quelque chose le créer? Inversement, je dois monter/dev/mqueue. Est-ce que ça ne devrait pas être monté automatiquement?

(4) Quel est le meilleur normal/moyen de déterminer si un périphérique programatically ou répertoire est monté? Faut-il simplement chercher des erreurs ouvertes ou y at-il un appel d'API pour cela?

Merci.

+0

J'ai également marqué "linux-kernel". –

Répondre

4
  1. /proc est généralement monté par les scripts d'initialisation, comme ceci:

     
    mount none /proc -t proc 
    

    Si cela ne se fait pas, vous ne verrez pas le contenu attendu de /proc (mais vous aurez également un non Système conforme à la norme POSIX).

  2.  
    $ grep proc /proc/filesystems 
    nodev proc 
    

    proc est un système de fichiers virtuel exporté par le noyau. Son contenu est entièrement déterminé par le noyau et les modules chargés qui peuvent s'enregistrer pour ajouter des entrées supplémentaires.

    * Sauf qu'il ya des sous-répertoires /proc qui sont généralement overmounted avec d'autres systèmes de fichiers virtuels, par exemple:
    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. Vérifiez vos scripts d'initialisation. /sbin/init regarde /etc/inittab pour déterminer ce qu'il faut courir, ce qui est souvent /sbin/rc ou similaire, qui passe alors par /etc/rcS.d/* etc., et il y a aussi une bonne possibilité que votre distribution fera l'installation préliminaire dans les initramfs ainsi.

  4. Depends.

    Vous pouvez lire la sortie de la commande mount, ou le fichier /proc/mounts, ou les fichiers /proc/self/mounts//proc/self/mountinfo sur les nouveaux noyaux, pour déterminer ce qui est actuellement monté.

    Vous pouvez comparer le st_dev de stat d'un répertoire à son parent; si différent, le répertoire est un point de montage.

    À moins que vous écrivez du code à exécuter sur un système non-standard ou au démarrage avant que le système a été mis en place, vous pouvez supposer que /dev, /proc, /sys, etc. sont montés.

2
  1. La plupart, sinon toutes les distributions disponibles publiquement configurer le système de fichiers proc et le monter au démarrage, car il est si utile. Mais vous pouvez certainement le désactiver et obtenir un noyau fonctionnel - l'espace utilisateur sera bloqué cependant.

  2. Les répertoires disponibles sous/proc sont déterminés par les pilotes et leurs options lors de la compilation du noyau. Vous ne pouvez pas créer de nouveaux répertoires ou fichiers à partir de l'espace utilisateur.

  3. Les développeurs de votre distribution choisissent quoi monter et où.

  4. Vous pouvez exécuter mount (8) ou, si/proc est monté, vous pouvez snoop à/proc/mounts. Le programme de montage gère également/etc/mtab avec les mêmes informations, mais formaté légèrement différemment.

+0

Comme pour le point 4, la mise en forme est * exactement * la même: '/ etc/mtab ->/proc/mounts' –