Errore di caricamento del modulo di avvio SLES: individua il driver e risolvilo

Quando SLES visualizza il messaggio "Impossibile avviare il caricamento dei moduli del kernel" durante l'avvio, per prima cosa esamina systemd-modules-load.servicei log per identificare il modulo che ha causato l'errore. Se il modulo è una voce opzionale obsoleta, rimuovi la relativa richiesta dalla sua configurazione; se invece è necessario, correggi l'incompatibilità del driver o del kernel anziché disabilitare il servizio.

Questa procedura si applica a SUSE Linux Enterprise Server (SLES) 15, utilizzando come riferimento la documentazione di amministrazione di SLES 15 SP7. I comandi devono essere eseguiti da una console locale o da una sessione SSH funzionante con sudoaccesso.

Cosa significa il messaggio prima di modificare qualsiasi cosa

Un modulo del kernel è un driver o una funzionalità del kernel che può essere caricato separatamente. Durante l'avvio, systemd-modules-load.serviceelabora le richieste di caricamento di moduli specifici, inclusi quelli definiti nei modules-load.dfile. Una richiesta non andata a buon fine può causare l'interruzione del servizio anche se altre parti del server continuano a funzionare.

SUSE fa notare che la maggior parte dei driver si carica automaticamente quando viene rilevato l'hardware. Un elenco manuale dei moduli di solito non è necessario, quindi una voce obsoleta è una possibilità plausibile, ma il solo messaggio di avvio non lo dimostra. Mantieni l'accesso alla console, crea uno snapshot di sistema o un backup della configurazione, se disponibile, e non disinstallare i driver di archiviazione, di rete o del cluster solo per far scomparire l'avviso. Consulta la guida all'amministrazione dei moduli del kernel di SUSE per il modello supportato.

Passaggio 1: Leggere lo stato del servizio e il relativo registro di avvio.

Inizia con lo stato di systemd. systemd systemdè il gestore dei servizi responsabile dell'avvio dei servizi e della segnalazione del loro stato.

sudo systemctl status systemd-modules-load.service --no-pager
sudo journalctl -b -u systemd-modules-load.service --no-pager

Il -bflag limita journalctll'avvio corrente e -useleziona questo servizio. Sopra la riga finale "Errore con risultato" cerca messaggi come "Impossibile trovare il modulo", un'opzione non valida o un errore di autorizzazione o di firma. Annota il nome esatto del modulo e il testo dell'errore. Non dare per scontato che il modulo indicato nell'esempio seguente esista sul tuo server.

Stato del terminale per systemd-modules-load.service con stato di errore e codice di uscita 1
Esempio di visualizzazione dello stato del servizio: l'unità guasta identifica quale servizio di avvio necessita di indagine.
Registro del terminale che mostra un esempio di messaggio di errore "impossibile trovare il modulo" per example_driver
Esempio di registro di avvio: il nome del modulo illustrativo example_driver è l'indizio per la traccia, non un errore SLES verificato.

Se il registro di servizio non è conclusivo, controllare i messaggi del kernel per ulteriori dettagli:

sudo journalctl -k -b --no-pager

Se il computer non riesce a raggiungere un login utilizzabile, avviare un kernel installato in una versione precedente tramite GRUB, se disponibile, oppure utilizzare il supporto di ripristino SLES. Non modificare moduli critici per l'avvio da una sessione remota non testata. SUSE documenta i filtri del journal nel capitolo relativo all'amministrazione di journalctl .

Passaggio 2: Trova la configurazione di avvio che lo richiede

Supponiamo che i nomi delle riviste siano example_driver. Sostituisci quel segnaposto con il nome effettivo del modulo, quindi cerca negli elenchi dei moduli:

sudo grep -Rns --include='*.conf' 'example_driver' \
  /etc/modules-load.d /run/modules-load.d \
  /usr/lib/modules-load.d 2>/dev/null

Ogni riga corrispondente indica quale file richiede quel modulo all'avvio. La configurazione locale di un amministratore si trova solitamente in /etc/modules-load.d/, mentre un pacchetto può fornire il suo file in /usr/lib/modules-load.d/. Un file locale con lo stesso nome base ha la precedenza sul file del fornitore, come descritto nella guida alla configurazione di systemd di SUSE . Se la ricerca non trova nulla, esamina anche cat /proc/cmdlinele richieste di moduli all'avvio e verifica che il nome dell'errore sia stato copiato correttamente.

Apri il file corrispondente e verifica se la voce è ancora necessaria all'hardware o all'applicazione. Un modulo richiesto per un dispositivo vecchio e rimosso è diverso da un driver del controller di archiviazione o da un watchdog del cluster.

Editor di testo da terminale con una voce opzionale example_driver in /etc/modules-load.d/example.conf
Esempio di configurazione locale: modificare la voce del modulo opzionale solo dopo averne verificato lo scopo.

Passaggio 3: testare il modulo, quindi applicare la riparazione corrispondente

Verifica quale kernel è in esecuzione e se il driver è disponibile per esso. modprobeCarica i moduli del kernel e risolve le dipendenze; ​​la sua -nopzione esegue una simulazione senza inserirne uno.

uname -r
modinfo example_driver
sudo modprobe -n -v example_driver

Di nuovo, sostituisci example_driver. La prova a secco aiuta a identificare problemi di ricerca o di configurazione, ma non dimostra che un driver si inizializzerà correttamente sul tuo hardware o supererà i controlli della firma di Secure Boot. SUSE consiglia di utilizzare modprobepiuttosto che insmodcaricare direttamente; i dettagli dei flag di prova a secco sono riportati nel manuale di modprobe .

Terminale con comando dry-run modprobe per example_driver e controllo della versione del kernel uname -r
Esempi di controlli: confronta il kernel in esecuzione con il modulo che stai analizzando prima di apportare modifiche.

Se una voce facoltativa obsoleta punta a un modulo mancante

Esegui il backup del file locale specifico e commenta solo la riga obsoleta. Ad esempio, se /etc/modules-load.d/example.confquesta è la fonte confermata:

sudo cp -a /etc/modules-load.d/example.conf \
  /etc/modules-load.d/example.conf.bak
sudoedit /etc/modules-load.d/example.conf

Modifica una singola example_drivervoce in # example_driver, salva e lascia intatte le altre richieste di modulo. Se la sorgente è un file di pacchetto in /usr/lib, non modificare direttamente tale file di pacchetto; utilizza un override locale opportunamente verificato oppure fai correggere la configurazione del pacchetto. Non rimuovere mai una richiesta di modulo solo perché modinfosegnala che manca se il dispositivo corrispondente è richiesto.

Se un modulo richiesto è mancante o incompatibile

Non commentare questa parte. Verifica che il pacchetto del driver supporti l'output uname -re il service pack SLES installato. Un messaggio "modulo non trovato" potrebbe indicare che il driver corrispondente non è stato installato o non è stato ricompilato dopo un aggiornamento del kernel. Un messaggio "formato modulo non valido" suggerisce un problema di compatibilità; le righe del log del kernel possono aiutare a circoscriverlo ulteriormente. Ripristina o reinstalla il driver compatibile supportato tramite SUSE o le istruzioni del produttore dell'hardware. Evita di copiare .kofile arbitrari da un kernel diverso.

Se il modulo esiste ma il suo indice di dipendenza è palesemente obsoleto, ricostruisci tale indice per il kernel corrente e riprova la simulazione:

sudo depmod -a "$(uname -r)"
sudo modprobe -n -v example_driver

Questo passaggio non installa un driver mancante. Se visualizzi il messaggio "Chiave richiesta non disponibile" o un errore di firma del modulo su un sistema Secure Boot, segui la procedura di registrazione della chiave attendibile e di firma del driver di SUSE; non disabilitare Secure Boot come soluzione generica. SUSE illustra le restrizioni relative ai driver di terze parti nella sua guida alla distribuzione di Secure Boot .

Passaggio 4: Verificare che il successivo avvio sia pulito

Dopo aver corretto la configurazione o ripristinato il driver, riprovare il caricamento e verificarne lo stato. Eseguire questa operazione solo dopo aver verificato che tutte le voci rimanenti siano corrette; il riavvio tenterà nuovamente i caricamenti configurati.

sudo systemctl restart systemd-modules-load.service
sudo systemctl status systemd-modules-load.service --no-pager
sudo journalctl -b -u systemd-modules-load.service --no-pager

Se l'unità funziona correttamente, pianifica un riavvio controllato con accesso alla console ed esegui nuovamente i comandi di stato e di registro. La correzione è confermata quando il servizio non fallisce più al nuovo avvio e qualsiasi hardware o software necessario che dipende dal modulo funziona ancora. Se l'errore si ripresenta, confronta il nuovo registro con quello precedente: anche un altro modulo elencato potrebbe essere in errore. Conserva il backup finché questo controllo non viene superato; non mascherare systemd-modules-load.serviceil messaggio solo per sopprimerlo all'avvio.

Lascia un commento

Automatizza i backup coerenti di Nextcloud con Restic e Cron.

Automatizza i backup coerenti di Nextcloud con Restic e Cron.

Esegui il backup simultaneo dei file di Nextcloud e di MariaDB, pianifica snapshot crittografati di Restic tramite cron e verifica il ripristino senza mettere a rischio il server di produzione.

Metti ONLYOFFICE Docs dietro HAProxy senza interrompere la modifica

Metti ONLYOFFICE Docs dietro HAProxy senza interrompere la modifica

Configura HAProxy HTTPS, l'inoltro delle intestazioni, i timeout WebSocket e i controlli di integrità per ONLYOFFICE Docs, quindi verifica le modifiche e i salvataggi.

Aggiungere font al server di documenti ONLYOFFICE: Docker vs Linux

Aggiungere font al server di documenti ONLYOFFICE: Docker vs Linux

Installa i font personalizzati in ONLYOFFICE Document Server, confronta i mount Docker persistenti con le copie dirette, ricostruisci l'elenco dei font e verifica il risultato.

Debian 12 su un VPS con poca RAM: come ridurre i crash di MySQL dovuti a errori di memoria insufficiente (OOM).

Debian 12 su un VPS con poca RAM: come ridurre i crash di MySQL dovuti a errori di memoria insufficiente (OOM).

Diagnosticare i kill di MySQL OOM su Debian 12, verificare i limiti di memoria del VPS, configurare lo swap e ottimizzare la memoria e la concorrenza del database, senza promettere una soluzione universale.

Eseguire il backup e il ripristino di una casella di posta Zimbra CE utilizzando le esportazioni TGZ.

Eseguire il backup e il ripristino di una casella di posta Zimbra CE utilizzando le esportazioni TGZ.

Esporta una singola casella di posta Zimbra Community Edition, convalida il relativo backup TGZ e ripristina gli elementi mancanti senza sovrascrivere la posta esistente.

Consenti agli utenti autorizzati di creare stanze Jitsi con l'accesso tramite Keycloak.

Consenti agli utenti autorizzati di creare stanze Jitsi con l'accesso tramite Keycloak.

Consenti solo agli account approvati di avviare stanze Jitsi Meet utilizzando l'autenticazione tramite Keycloak e token, mantenendo al contempo la possibilità per gli ospiti di partecipare quando necessario.

Come configurare una VPN WireGuard Point-to-Site su Debian 12

Come configurare una VPN WireGuard Point-to-Site su Debian 12

Configura un server VPN WireGuard su Debian 12 per un client remoto. Configura le chiavi, l'inoltro IPv4, il NAT con nftables, l'accesso tramite firewall e i controlli di connessione.

Sincronizza gli utenti di Active Directory con ONLYOFFICE DocSpace tramite LDAP

Sincronizza gli utenti di Active Directory con ONLYOFFICE DocSpace tramite LDAP

Collega ONLYOFFICE DocSpace ad Active Directory o OpenLDAP, importa utenti e gruppi in modo sicuro, mappa i campi dell'account e pianifica una sincronizzazione affidabile.

Installazione e firma di moduli kernel personalizzati su Secure Boot SLES 15

Installazione e firma di moduli kernel personalizzati su Secure Boot SLES 15

Carica un modulo kernel SLES 15 personalizzato senza disabilitare Secure Boot. Fai corrispondere il kernel in esecuzione, firma il file .ko, registra una chiave MOK e verifica il caricamento.

Inoltro sicuro dei log Syslog SLES con rsyslog e TLS reciproco

Inoltro sicuro dei log Syslog SLES con rsyslog e TLS reciproco

Invio dei log di sistema SLES a un collettore rsyslog remoto tramite TLS autenticato, con verifica dei certificati, buffering in caso di interruzione del servizio e test di consegna.