LINUX

Processo di avvio di Systemd uno sguardo ravvicinato in Linux

Il modo in cui il sistema Linux si avvia è piuttosto complesso e c’è sempre stata la necessità di ottimizzarne il funzionamento. Il tradizionale processo di avvio di Linux è gestito principalmente dal noto processo init (noto anche come SysV init boot system).

Systemd, d’altra parte, è un sistema init e un gestore di servizi scritto da Lennart Poettering e Kay Sievers. Molte delle principali distribuzioni Linux hanno ora adottato systemd come sistema di init predefinito.

In questo tutorial, esaminerò il processo di avvio del tuo sistema Linux con systemd.

Comprensione di Systemd

Systemd (System Manager Daemon), originariamente sviluppato sotto la GNU General Public License, è ora sotto la GNU Lesser General Public License. Ridurre i tempi di avvio e il sovraccarico computazionale è l’obiettivo principale dello sviluppo di Systemd.

Una delle caratteristiche principali di Systemd è che supporta gli script post-boot di SysV Init, cioè compatibile con gli script SysV init.

Il modo systemd gestisce il processo di avvio è abbastanza pulito e molto ottimizzato rispetto al tradizionale sistema basato su init.

Rivediamo alcune delle funzionalità di base di Systemd.

  • Il processo di avvio è molto più semplice rispetto a init
  • Systemd fornisce un processo di avvio del sistema simultaneo e parallelo in modo da garantire una migliore velocità di avvio
  • I processi vengono monitorati utilizzando gruppi di controllo, non PID
  • Modi migliorati per gestire le dipendenze di avvio e servizio.
  • Funzionalità di snapshot e ripristino del sistema
  • Monitoraggio dei servizi avviati; anche in grado di riavviare qualsiasi servizio bloccato
  • Include il modulo systemd-login per controllare l’autenticazione dell’utente.
  • Possibilità di aggiungere e rimuovere componenti
  • Impronte di memoria ridotte e capacità di pianificazione dei lavori
  • Modulo Journald per la registrazione degli eventi e modulo syslogd per syslog.

Systemd gestisce il processo di spegnimento del sistema in modo ben organizzato. Ha tre script situati nella directory “/usr/lib/systemd/” denominati systemd-halt.service, systemd-poweroff.service, systemd-reboot.service. Questi script vengono eseguiti quando un utente sceglie di spegnere, riavviare o arrestare il sistema Linux.

All’arresto, systemd prima smonta tutti i filesystem e smonta tutti i dispositivi di scambio, scollega i dispositivi di archiviazione e termina i processi rimanenti.

diagramma di avvio di systemd

Il processo di avvio con Systemd

Controlliamo il processo di avvio del sistema Linux quando utilizza systemd come gestore di avvio e servizio.

Per semplicità, elenchiamo il processo nei passaggi seguenti:

01. Il primo passo all’avvio del sistema è l’inizializzazione del BIOS. Il BIOS legge le impostazioni del dispositivo di avvio, individua e passa il controllo all’MBR (presupponendo che il disco rigido sia impostato come primo dispositivo di avvio).

02. L’MBR legge le informazioni dal bootloader Grub o LILO e inizializza il kernel. Una volta che il kernel è stato caricato sul disco RAM iniziale, inizia l’inizializzazione di systemd.

Systemd gestisce il processo di avvio e gestione dei servizi utilizzando “target”. I file “target” in systemd vengono utilizzati per raggruppare le varie unità di avvio e per avviare i processi di sincronizzazione.

03. Il primo obiettivo eseguito da systemd è predefinito.target. Ma default.target è in realtà un collegamento simbolico a bersaglio.grafico. Il collegamento simbolico in Linux funziona proprio come le scorciatoie in Windows. Il file Graphical.target si trova in /usr/lib/systemd/system/graphical.target. Ho mostrato il contenuto del file graphics.target nella seguente schermata.

obiettivo grafico

04. In questa fase, target.multiutente è stato invocato e questo target mantiene le sue successive sottounità nella directory “/etc/systemd/system/multi-user.target.wants”. Questo obiettivo imposta l’ambiente per il supporto multiutente. Nessun utente root è abilitato in questa fase del processo di avvio. Anche i servizi relativi al firewall vengono avviati in questa fase di avvio.

target multiutente

“multi-user.target” passa il controllo a un altro livello “base.bersaglio“.

Obiettivo di base

05. L’unità “basic.target” è ciò che avvia i soliti servizi, in particolare il servizio di gestione grafica. Utilizza la directory /etc/systemd/system/basic.target.wants per decidere quali servizi avviare, basic.target passa il controllo a sysinit.

Bersaglio Sysint

06. “Sysinit.target” avvia importanti servizi di sistema come il montaggio del file system, gli spazi e i dispositivi di swap, le opzioni aggiuntive del kernel, ecc. Sysinit.target inoltra il processo di avvio a local-fs.target. I contenuti di questa unità di destinazione sono mostrati nello screenshot seguente.

destinazione FS locale

07. local-fs.target – nessun servizio relativo all’utente viene avviato da questa unità di destinazione, gestisce solo servizi di base di basso livello. Questo target è quello che esegue azioni basate sui file “/etc/fstab” e “/etc/inittab”.

Analisi delle prestazioni di avvio del sistema

Systemd fornisce strumenti per identificare e risolvere problemi di avvio o problemi di prestazioni. analisi di sistema è un comando integrato che consente di esaminare il processo di avvio. Puoi scoprire quali unità stanno riscontrando errori durante l’avvio e puoi monitorare ulteriormente e correggere i problemi dei componenti di avvio. Di seguito sono elencati alcuni utili comandi systemd-analyze.

tempo di analisi di sistema mostra il tempo trascorso nello spazio utente principale e normale.

$ systemd-analyze time

Startup finished in 1440ms (kernel) + 3444ms (userspace)

systemd-analyze errore stampa un elenco di tutte le unità in esecuzione, ordinate in base a quanto tempo è stato necessario per l’inizializzazione fino a quel momento, in questo modo puoi avere un’idea di quali servizi impiegano molto tempo ad avviarsi durante l’avvio.

$ systemd-analyze blame

2001ms mysqld.service
234ms httpd.service
191ms vmms.service

controlli di analisi di sistema mostra se ci sono errori di sintassi nelle unità di sistema. Sistema di analisi grafico può essere utilizzato per annotare l’intero processo di avvio in un file in formato SVG. L’intero processo di avvio è molto lungo da leggere, quindi utilizzando questo comando possiamo scaricare il risultato dell’intero processo di avvio in un file e quindi leggerlo e analizzarlo ulteriormente. Il prossimo comando si occuperà di questo.

systemd-analyze plot > boot.svg

Polemiche di sistema

Systemd non ha avuto la fortuna di ricevere l’amore di tutti, alcuni professionisti e amministratori hanno opinioni diverse sul suo funzionamento e sui suoi sviluppi. Secondo i critici di Systemd, “non è simile a Unix” perché ha cercato di sostituire alcuni servizi di sistema.

Ad alcuni professionisti non piace l’idea di utilizzare anche i binari di configurazione. Si dice che modificare la configurazione di systemd non sia un compito facile e non ci sono strumenti grafici disponibili per questo scopo.

Conclusione

Detto questo, spero che ti sia piaciuto leggere questo tutorial passo-passo sul processo di avvio di systemd. Non esitate a lasciare i vostri suggerimenti nella sezione commenti qui sotto.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close