que fait la commande startx?

18

En lisant sur Ubuntu, j'ai trouvé la déclaration suivante .....

Si le gestionnaire d'affichage n'est pas démarré par défaut dans le niveau d'exécution par défaut, vous pouvez démarrer X d'une manière différente, après vous être connecté à une console en mode texte, en exécutant startx à partir de la ligne de commande.

Que signifie être un niveau d'exécution par défaut? Et quand j'ai essayé cela sur mon terminal, j'ai obtenu ceci:

anupam@JAZZ:~$ startx

X: user not authorized to run the X server, aborting.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
Lazare
la source
Je viens de lancer startx mais j'ai eu la même erreur que vous donc je l'ai fait sudo. Le transforme, il m'a connecté au compte root. Ce que j'ai fait pour retourner à mon utilisateur, c'est me déconnecter de root.

Réponses:

25

Il était une fois (1), lorsque la mémoire des ordinateurs était mesurée en kilo-octets et les disques en mégaoctets, l'exécution de l'interface graphique tout le temps était considérée comme nuisible.

La plupart des ordinateurs Unix ont été utilisés pour les calculs scientifiques et la simulation dans des environnements multi-utilisateurs, et l'interface graphique qui y est exécutée réduirait la mémoire et la puissance CPU disponibles.

Donc, lorsque vous aviez besoin d'une interface graphique, vous venez de la lancer avec startx(2).

startxexécute essentiellement un Xserver (le "pilote" graphique) et une commande qui s'exécute dessus, qui est généralement un gestionnaire de fenêtres . Par défaut, les commandes exécutées se trouvent dans un ~/.xinitrcfichier de votre répertoire personnel ou dans un autre fichier système générique.

Les systèmes modernes sont pensés de bas en haut pour avoir un système graphique fonctionnant tout le temps, donc personne n'a probablement vérifié le fonctionnement de startxdepuis des âges - ce qui explique beaucoup de comportements étranges que vous pouvez avoir.

Si vous voulez expérimenter et ressentir le bon vieux temps, la meilleure chose à faire est la suivante:

A) installez Xnestet fvwm. Xnest est un serveur graphique au sein d'un serveur, une sorte de serveur qui s'ouvrira comme une fenêtre dans votre système normal. Fvwm est un gestionnaire de fenêtres très simple qui était très populaire à l'époque. Vous aurez également besoin d'anciennes polices pixmap.

sudo apt-get install xnest fvwm 
sudo apt-get install xfonts-100dpi xfonts-100dpi-transcoded xfonts-75dpi-transcoded xfonts-75dpi 

B) écrivez ce fichier quelque part, par exemple dans votre répertoire personnel, et appelez-le ~/test:

#!/bin/bash 
#
xterm & 
exec fvwm2

C) Exécuter (remarque: startxest normalement exécuté avec d'abord la commande client, puis un double tiret, puis une commande serveur. Comme je l'ai dit, la plupart des nouveaux systèmes n'ont pas de valeurs par défaut raisonnables pour startxseul.).

cd ~
startx ~/test -- /usr/bin/Xnest -ac :1 -geometry 800x600

... et vous avez un écran de poste de travail des années 80:

entrez la description de l'image ici

(Vous pouvez avoir le menu en cliquant sur le bureau "Xnest").

... et si vous vous sentez vraiment aventureux, vous pouvez démarrer une session native sur une autre console virtuelle (lire les autres réponses) en accédant à l'une d'entre elles avec Ctrl-Alt-F1, connectez-vous et

startx ~/test 

qui s'ouvrira normalement sur Ctrl-Alt-F8.

Remarque : les environnements de bureau modernes ne sont pas conçus pour fonctionner simultanément, pour le même utilisateur, sur deux consoles différentes. Donc, n'utilisez pas gnome-shellou unityou des choses modernes lors de ces expériences, sinon vous pourriez gâcher votre configuration.


Notes de bas de page:

(1) Parlant de 1980 à 1990 ici.

(2) Par exemple, j'avais un ordinateur portable avec 256 Ko de RAM. C'était douloureusement lent dans l'interface graphique (B&W!), Mais accrocheur dans la console. Donc , je l' ai fait la plupart de mon travail (édition C, LaTeXet les fichiers similaires) en mode console, et à l'environnement commuté graphique que lorsque vraiment nécessaire.

Rmano
la source
4
Thanx @ Rmano, une excellente explication a tout compris ...
Lazare
9

startx démarre la xsession ou l'interface graphique où vous voyez un écran de connexion et rien de plus qu'une simple console ascii (session de texte).

Vous recevez cette erreur car la xsession est déjà démarrée et vous essayez d'exécuter la commande depuis l'intérieur de la xsession sur tty7.

tty7 est l'interface utilisateur qui existe à ctrl+ alt+ f7(xsession par défaut).

tty1 est l'interface utilisateur qui existe à ctrl+ alt+ f1.

tty2 est l'interface utilisateur qui existe à ctrl+ alt+ f2. . . etc.

tty1 - tty6 sont des sessions de texte et vous pouvez vous connecter avec votre nom d'utilisateur et votre mot de passe sur l'un de ces écrans. Après vous être connecté, vous pouvez exécuter la commande startxet la session xs démarrera dans tty7 si elle n'est pas déjà en cours d'exécution et dans tty8 si tty7 exécute déjà une xsession.


Niveaux d'exécution:

run-level 0 Halt - Arrête le système.

run-level 1 Mode mono-utilisateur - Mode pour les tâches administratives.

run-level 2 Multi-utilisateur graphique avec mise en réseau - Démarre le système normalement.

niveau d'exécution 3-5 Non utilisé mais configuré de la même manière que le niveau d'exécution 2

run-level 6 Reboot - Redémarre le système.

Le terme niveau d'exécution fait référence à un mode de fonctionnement dans l'un des systèmes d'exploitation informatiques qui implémentent l'initialisation de type Unix System V. Classiquement, il existe sept niveaux d'exécution, numérotés de zéro à six; bien que jusqu'à dix, de zéro à neuf [citation nécessaire], puissent être utilisés. S est parfois utilisé comme synonyme de l'un des niveaux. Un seul "niveau d'exécution" est exécuté au démarrage - les niveaux d'exécution ne sont pas exécutés séquentiellement, c'est-à-dire que le niveau d'exécution 2 OU 3 OU 4 est exécuté, pas 2 puis 3 puis 4. - en.wikipedia.org/wiki/Runlevel

mchid
la source
Thanx mchid ça m'a beaucoup aidé,
lazarus
mais quand je me connecte à tty1 et exécute $ startx, j'ai une fenêtre de bureau sans aucune barre de lancement et d'autres options ... (sur tty8) -ctrl + Alt + F8, c'est que mon startx n'était pas bien configuré ou il en montre un peu limité options sur startx (comme ici uniquement Desktop)
lazarus
1
@jazzz C'est votre environnement x par défaut. Vous avez probablement plusieurs environnements de bureau installés. Vous devriez pouvoir CTRL + T pour obtenir un terminal afin que vous puissiez exécuter des commandes comme unityou gnome-shell --replaceou même gnome-panelou metacity --replace.
mchid
@jazzz De plus, si vous acceptez cette réponse, veuillez cliquer sur l'icône à gauche pour la fermer. Merci!
mchid
désolé, je suis un peu en retard pour une autre requête à ce sujet --- la nouvelle fenêtre que j'ai obtenue par Ctrl + Alt + F8, comme je l'ai dit ci-dessus, est similaire à l'espace de travail?
lazarus
4

Cela signifie simplement à un terminal différent .

Citant la question liée:

Par défaut, Ubuntu a 7 tty.

1-6sont uniquement en ligne de commande, 7exécute votre session X (votre bureau graphique normal).

Pour y accéder, utilisez ce raccourci clavier: Ctrl+ Alt+F1

(passage F1à F1-F6 pour accéder au terminal dont vous avez besoin)

Pour revenir à votre session X (le bureau normal), utilisez: Ctrl+ Alt+F7

after logging on to a text-mode console signifie simplement se connecter à un autre terminal et taper la commande:

startx
Parto
la source
1

Comme le note Rmano, startx est une approche très ancienne. Il y a bien longtemps, lorsque le binaire X11 était installé, root setuid.

Je viens de l'essayer sur une machine virtuelle et, en fait, startxéchoue comme vous le décrivez, par défaut. chmod u+s /usr/lib/xorg/Xorgcorrige cela cependant.

Je ne recommande pas de faire de Xorgbe setuid root. Le monde s'est éloigné de cela pour une bonne raison. Mais si vous jouez dans une machine virtuelle à jeter, c'est comme ça que ça startxmarche.

Phil P
la source
1

Exemple minimal QEMU + Buildroot

Ma façon préférée d'apprendre ce que fait quelque chose est de faire un exemple minimal qui l'exécute.

Sur Ubuntu, c'est difficile car une seconde startxpeut entrer en conflit avec votre bureau actuel.

/ubuntu//a/519164/52975 propose Xnest, mais avec QEMU + Buildroot, nous pouvons aller encore plus minimal et créer une micro distro avec seulement X11 installé.

De cette façon, il devrait être plus facile de comprendre ce qui se passe.

J'ai décrit la création de la distribution sur: /unix//a/306116/32558

Une fois que l'image est exécutée sur QEMU, vous démarrez sur un shell TTY.

Ensuite, quand vous le faites:

root
startx

il démarre une interface graphique X11:

entrez la description de l'image ici

Jetez maintenant un œil à la source de l' startxintérieur de cette distribution, qui n'est qu'un script shell.

Il est une enveloppe simple sur /usr/bin/xinit, et qu'il passe /etc/X11/xinit/xinitrcà xinit.

Si vous l'ouvrez /etc/X11/xinit/xinitrc, il contient les lignes suivantes:

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &

on voit donc que ça démarre:

  • twm: un gestionnaire de fenêtres très simple et ancien
  • xclocket xtermque l'on voit à l'écran

Car /usr/bin/xinit, on peut faire:

man xinit

qui dit que:

Si aucun programme client spécifique n'est indiqué sur la ligne de commande, xinit recherchera un fichier dans le répertoire personnel de l'utilisateur appelé .xinitrc à exécuter en tant que script shell pour démarrer les programmes client. Si aucun fichier de ce type n'existe, xinit utilise par défaut les éléments suivants:

xterm  -geometry  +1+1  -n  login  -display  :0

Si aucun programme serveur spécifique n'est indiqué sur la ligne de commande, xinit recherchera un fichier dans le répertoire personnel de l'utilisateur appelé .xserverrc à exécuter en tant que script shell pour démarrer le serveur. Si aucun fichier de ce type n'existe, xinit utilise par défaut les éléments suivants:

X  :0
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
la source