mLa più moderna distribuzione Linux utilizza systemd come sostituzione di init. È una suite di elementi costitutivi di base per distribuzioni Linux come RHEL/CentOS & co, OpenSUSE/SUSE, Fedora, Arch, Debian, Ubuntu e altro. Per impostazione predefinita, la maggior parte delle distro si avvia nella GUI, ma è possibile passare al testo o viceversa.
La versione precedente delle distribuzioni Linux arrivava con SysV init o Upstart. Tale init ha fornito una serie di runlevel per il testo, l’utente multiplo e il sistema GUI. Tuttavia, systemd utilizza il concetto di target anziché di runlevel. Questa pagina spiega le procedure per implementare runlevel come config quando si lavora con target systemd. In altre parole, imparerai come passare dalla modalità testo a quella GUI usando systemd invece dei livelli init sulle moderne distribuzioni Linux.
Dettagli tutorial
Livello di difficoltà
Facile
Privilegi di root
sì
Requisiti
Sistema Linux
Est. momento della lettura
6 minuti
Cambiare la destinazione di avvio in testo
La procedura è la seguente per passare a un runlevel in modalità testo in systemd:
Apri l’applicazione del terminale.
Per i server Linux remoti, usa il comando ssh.
Trova quale unità di destinazione viene utilizzata per impostazione predefinita: systemctl get-default
Per cambiare la destinazione di avvio in modalità testo: sudo systemctl set-default multi-user.target
Riavvia il sistema usando il comando reboot: sudo systemctl reboot
Come passare la destinazione di avvio alla GUI (interfaccia utente grafica)
Vuoi ripristinare la modifica dell’avvio alla GUI anziché alla modalità console/testo? Provare:
Apri l’applicazione del terminale Linux.
Di nuovo, per i server Linux remoti, usa il comando ssh.
Trova quale unità di destinazione viene utilizzata per impostazione predefinita: systemctl get-default
Per cambiare la destinazione di avvio in modalità GUI: sudo systemctl set-default graphic.target
Assicurati di riavviare la Linux box usando il comando reboot: sudo reboot
Comprensione dei target di avvio in systemd
L’obiettivo predefinito è impostato da /etc/systemd/system/default.target. Eseguire il seguente comando ls per verificarlo utilizzando il collegamento simbolico: ls -l /etc/systemd/system/default.target Ovviamente, possiamo usare anche il comando systemctl stesso: systemctl get-default
Elenco di tutti i target di sistema
Eseguire il seguente comando: systemctl list-units --type target # list all loaded units in any state # systemctl list-units --type target --all Ecco un elenco di tutte le unità di destinazione attualmente caricate sul desktop Ubuntu Linux 20.04 LTS:
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
blockdev@dev-mapper-md1_crypt.target loaded active active Block Device Preparation for /dev/mapper/md1_crypt
bluetooth.target loaded active active Bluetooth
cryptsetup.target loaded active active Local Encrypted Volumes
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
machines.target loaded active active Containers
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network-pre.target loaded active active Network (Pre)
network.target loaded active active Network
nss-user-lookup.target loaded active active User and Group Name Lookups
paths.target loaded active active Paths
remote-fs-pre.target loaded active active Remote File Systems (Pre)
remote-fs.target loaded active active Remote File Systems
slices.target loaded active active Slices
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
time-set.target loaded active active System Time Set
time-sync.target loaded active active System Time Synchronized
timers.target loaded active active Timers
virt-guest-shutdown.target loaded active active Libvirt guests shutdown
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
26 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
Runleve Sysv vs target systemd
Cerchiamo di capire i runlevel Sysv più vecchi e i loro equivalenti in systemd.
Tabella 1
Obiettivo di sistema
Livello di esecuzione
Descrizione
Vecchio comando
Nuovo comando
runlevel0.target, poweroff.target
0
Spegni la macchina Linux.
inizia 0
systemctl isola poweroff.target
runlevel1.target, salvataggio.bersaglio
1
Avviare in modalità di emergenza (modalità utente singolo).
inizia 1
systemctl isola rescue.target
runlevel2.target, multiutente.target
2
Sistema multiutente basato su testo che non configura interfacce di rete e non esporta servizi di rete.
inizia 2
systemctl isola runlevel2.target
runlevel3.target, multiutente.target
3
Avvia il sistema normalmente in modalità testo multiutente per l’utilizzo del server Linux.
inizia 3
systemctl isola runlevel3.target
runlevel4.target, multiutente.target
4
Per scopi speciali modalità testo.
inizia 4
systemctl isola runlevel4.target
runlevel5.target, grafico.target
5
Uguale al runlevel 3 e avvia nel display manager della GUI.
inizia 5
systemctl isola graphic.target
runlevel6.target, reboot.target
6
Riavvia il desktop o il laptop Linux.
inizia 5
systemctl isola reboot.target
Come modificare il target systemd predefinito usando il collegamento simbolico
In precedenza ho spiegato come utilizzare il comando systemctl. Ma si possono usare altri comandi. Pertanto, utilizzare il comando ln come segue per passare alla modalità GUI:
Verificalo usando il comando ls ls -l /etc/systemd/system/default.target
Scopri come modificare il target predefinito creando un collegamento simbolico al target systemd (clicca per ingrandire)
Guarda come creare un collegamento software con sotto Linux o Unix usando il comando ln per maggiori informazioni.
Come avviare in modalità di ripristino
Esegui il seguente comando systemctl $ sudo systemctl rescue Possiamo passare a un’unità di destinazione systemd diversa nella sessione di accesso corrente utilizzando la CLI come segue: sudo systemctl isolate multi-user.target # OR # sudo systemctl isolate graphical.target
Cosa inizierebbe se avviassi un target specifico?
Il systemd può calcolare la transazione “iniziale” che eseguirebbe all’avvio, prova qualcosa del genere per vedere quali servizi e cose sono stati caricati nel graphical.target: systemd --test --system --unit=graphical.target Il --test L’opzione viene utilizzata per determinare la transazione di avvio iniziale, scaricarla ed uscire senza eseguire effettivamente nessuno dei lavori determinati. Quant’è fico?
Riassumendo
Hai imparato a conoscere i target systemd e i runlevel precedenti utilizzati dal sistema init SysV. Inoltre, ho spiegato come utilizzare il comando systemctl per passare dalla modalità testo alla modalità GUI dalla CLI. C’è più di un modo per ottenere risultati in Linux. Quindi, questa pagina ha anche descritto come modificare il target predefinito utilizzando anche il metodo del collegamento simbolico. Il progetto Debian Linux mantiene una buona pagina specifica di sistema e consiglia vivamente di visitare la pagina wiki. Tuttavia, puoi leggere la documentazione localmente utilizzando il comando man in caso di emergenza in cui Internet non è disponibile: man systemctl man init man upstart ini man systemd
ANNUNCIO
Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!
Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione senza blocchi premi su Accetto, oppure continua tranquillamente la navigazione, nessun dato sulla tua navigazione verrà raccolto.
Quando visiti un sito Web, esso può archiviare o recuperare informazioni sul tuo browser, principalmente sotto forma di cookies. Controlla qui i tuoi servizi di cookie personali.