GNU/Linux >> Linux Esercitazione >  >> Linux

Cambiare gli ambienti sul terminale a livello di sistema chiamato?

Attualmente sto cercando di realizzare un drone autonomo utilizzando il Robot Operating System (ROS). Per fare ciò, ho installato Raspbian Lite (Jessie ) su un Raspberry Pi 3 e attualmente sto usando ROS Kinetic su di essa. Perché è Raspbian Lite , non c'erano gestori di finestre o ambienti desktop associati all'installazione. Ho deciso di utilizzare Openbox Window Manager e ho installato un terminale su di esso per comodità. Posso semplicemente chiamare sudo startx , e si apre il window manager, a cui si può accedere con Ctrl + alt + F2 `.

Ora la mia domanda sta nel fatto che non capisco il processo di creazione di nuove sessioni all'interno del terminale a livello di sistema. Per cominciare, è chiamato il terminale a livello di sistema? Quali sono queste sessioni che sto invocando con l'uso di Ctrl + Maiusc + V ? Alcuni di essi ospitano gestori display e alcuni di essi ospitano terminali , mentre immagino, che un intero ambiente desktop può essere ospitato anche. C'è una pagina man in cui posso esaminare?

Risposta accettata:

Sono dispositivi terminali virtuali del kernel , multiplexato sul framebuffer fisico e sui dispositivi di input umano da un emulatore di terminale programma integrato nel kernel stesso. Per le applicazioni, i programmi in esecuzione sul kernel hanno l'aspetto di qualsiasi altro dispositivo terminale, come un dispositivo terminale seriale . (Hanno una disciplina di linea, ma nessun controllo del modem.)

Il sistema implementa accesso al terminale a forza di eseguire un getty programma (o equivalente) e un login programma che accetta le credenziali dell'utente e richiama sessioni di accesso .

Il server X il programma deve anche utilizzare il framebuffer fisico e i dispositivi di input umano. Ha bisogno di negoziarli per condividerli con l'emulatore di terminale del kernel. Lo fa allocando un terminale virtuale e dicendo al kernel di disconnetterlo dall'emulatore di terminale del kernel.

Ecco perché sembra che il server X "funziona" su un particolare terminale. Quando l'emulatore di terminale del kernel vede il tasto di scelta rapida per passare al terminale virtuale allocato, cede il controllo del framebuffer e dei dispositivi di input umano al server X. Quando il server X vede il tasto di scelta rapida per passare a un altro terminale virtuale, il server X cede il controllo.

Questi accordi di tasti di scelta rapida non sono necessariamente simmetrici. Su uno dei miei sistemi l'accordo di tasti di scelta rapida implementato dal programma di emulazione del terminale del kernel per passare al terminale virtuale n. 2 è Alt +F2 mentre l'accordo di tasti di scelta rapida implementato dal server X per la stessa azione è Ctrl +Alt +F2 .

Quando si tratta di accesso grafico , un gestore display gestisce l'avvio di server X con greeter programmi. Stai solo avviando direttamente un server X e non stai usando un display manager, ovviamente. Una volta che le credenziali dell'utente sono state autenticate, un gestore desktop mostra un ambiente desktop , che comprende un insieme di clienti X applicazioni di vario grado di complessità. Per ambienti desktop complessi, c'è tutta una serie di programmi server interconnessi tramite un bus desktop . (Su uno dei miei sistemi, il cosiddetto Editor GNOME "piccolo e leggero" richiede un broker D-BUS e altri nove programmi server da eseguire.)

Correlati:Journalctl:come impedire il troncamento del testo nel terminale?

Alcuni di questi programmi client X possono essere altri emulatori di terminale, userspace, come LXTerminal, Unicode RXVT, GNOME Terminal, Terminate, roxterm, evilvte, xterm e così via. Questi non utilizzano direttamente framebuffer fisico e dispositivi di input umano e fanno uso di pseudo-terminale dispositivi.

Ulteriori letture

  • https://superuser.com/a/723442/38062
  • https://unix.stackexchange.com/a/316279/5132
  • https://unix.stackexchange.com/a/194218/5132
  • https://unix.stackexchange.com/a/178807/5132
  • https://stackoverflow.com/a/39302351/340790

Linux
  1. Copia i file nel terminale Linux

  2. Rinominare un file nel terminale Linux

  3. Sposta i file nel terminale Linux

  4. Come cambiare l'identità di un sistema Linux

  5. Qual è l'attuale runlevel del sistema Linux?

Il terminale Linux non è un pony one-trick

Rilassati accanto al fuoco sul tuo terminale Linux

Introduzione al file system Linux

MapSCII – La mappa del mondo nel tuo terminale

Il tuo primo programma Java nel terminale di Ubuntu

Come utilizzare il comando fd sul sistema Linux