Pour les pilotes de souris, de clavier et de joystick, il peut appeler x appeler "ouvert" puis à l'aide de ces pilotes. p>
(Lorsque je vérifie Centos 7 (mode texte uniquement) dans VirtualBox, je n'ai pas vu X après exécuté LSOF / Dev / Entrée / Event2 (clavier), mais mon clavier travaille toujours) P>
Que diriez-vous de TTY_OPEN ()? P>
Selon une trace d'appel, nous pouvons connaître à peu près la séquence: (au moins, nous connaissons quelqu'un appelé 'sys_open') https://bugzilla.redhat.com/show_bug.cgi?id=630464 p>
Cependant, je ne sais toujours pas qui appelle «ouvert»? P>
3 Réponses :
Lorsque je vérifie Centos 7, le mode texte uniquement, dans VirtualBox, je n'ai pas vu X après exécuté LSOF / Dev / Entrée / Event2 (clavier), mais mon clavier fonctionne toujours P> blockQuote>
C'est parce que vous utilisez le console virtuelle puis, l'un des
/ Dev / TTYN code> périphériques. Celles-ci sont directement câblées au sous-système d'événement d'entrée Linux à l'intérieur du noyau lui-même (par le module
VT code>); essentiellement tous les appareils semblables à un clavier agissent comme des entrées sur le terminal virtuel actuellement actif. P>
x elle-même utilise une console virtuelle, pour que le noyau puisse basculer entre elle et toutes les consoles virtuelles basées sur le texte. P>
Du
TTY_OPEN () CODE>? P> blockQuote>
Si vous exécutez
sudo lsof / dev / tty [0-9] code>, vous pouvez voir quels processus accèdent à une console virtuelle. P>
Les processus avec
getty code> dans leur nom sont ceux qui fournissent des terminaux de connexion. (Ceux qui sont utilisés avec des bornes en série sont très similaires; en fait, de nombreux programmes getty peuvent gérer à la fois des consoles virtuelles et des terminaux de série.) Lorsque vous vous connectez, ce getty lance
login code> (programme!), Qui démarre à son tour la coque par défaut définie pour cet utilisateur (voir
getent passwd nom d'utilisateur code>; c'est le dernier champ , et ce doit être celui qui est énuméré dans
/ etc / coquilles code> à autorisé). p>
Le noyau lui-même prend en charge la passation d'une console virtuelle différente via Ctrl kbd> + alt kbd> + fn kbd> (F1 pour TTY1, F2 pour TTY2, et bientôt). Si vous utilisez des pilotes graphiques appropriés, vous pouvez même basculer entre Xorg et consoles virtuelles. (Habituellement, Xorg est exécuté sur TTY6 ou TTY7, mais cela varie de la distribution à la distribution.) Le Ctrl kbd> + alt kbd> + ← kbd> et Ctrl kbd> + alt kbd> + → kbd> peut également être utilisé pour passer à la console virtuelle précédente ou suivante. P>
Merci d'un animal nominal pour les informations.
Je traçant Linux 2.0 ( https://mirrors.rge.kernel.org/pub/linux/kernel/v2.0/ ), peut-être un peu différent. Désolé, je ne trouve pas de source en ligne Linux 2.0 pour relier la référence. P>
pour le clavier, en mode texte, je pense que personne n'appelle "ouvert" dans le noyau, Dans 'int tty_init (void)' (tty_io.c), il appellera "kbd_init ();" Ensuite, nous pouvons voir: p>
open("/dev/tty1",O_RDWR,0);
Il s'agit de code courant pour inclure toutes les fonctionnalités communes des pilotes de terminal dans n'importe quel type de matériel que vous pouvez avoir joint pour (la console clavier / affichage n'est qu'un exemple, mais vous avez au moins des interfaces UART RS-232C, Dongles série USB, Multiplexeurs de ligne série PCI, etc.) P>
Fonctionnalité terminale Dates de l'ancien V7 Unix et de nombreuses améliorations provenant de BSD UNIX (comme le contrôle du travail) p>
D'ailleurs, la mise en œuvre Linux de l'interface série n'est pas très bonne, vous devriez examiner la mise en œuvre de la BSD pour un bon. P> tty _ code> * Les routines sont unix matériels indépendants pour implémenter l'interface du terminal dans le noyau. Ils sont responsables des disciplines de la TTY, des trucs de contrôle de la tâche et du traitement de caractères de la bouche (y compris la génération de signaux sur
CTRL-C code>, par exemple), ils implémentent également l'interface sur les paires TTY / PTY et le comme. p>
Tout processus d'ouverture / DEV / TTYN, comme par exemple init, qui commence alors à un getty ou similaire. Et il y a
openvt code>, qui alloue et ouvre un VT et commence une coquille dessus.