Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida illustra come risolvere i problemi in WSL e determinare da dove provengono.
Una breve nota sull'architettura
Per determinare la causa di un problema, è necessario scoprire dove si trova nello stack.
Quando un file binario Linux viene chiamato in WSL, viene eseguito (approssimativamente) attraverso questi livelli, ognuno può essere il percorso da cui proviene l'errore:
graph TD;
id1["Linux binary in userspace"]-->id2["Linux distro"];
id2["Linux distro"]-->id3["WSL's stack"];
id4["WSL's stack"]-->id5["Physical hardware"];
Questo stack verrà presentato in ordine, e ti guideremo su come determinare se l'origine degli errori proviene da quella sezione.
Binario Linux nello spazio utente
Prima di tutto è necessario verificare se si tratta di un errore causato dal file binario Linux stesso. Il modo più semplice per eseguire questa operazione è semplicemente verificare se questo errore si riproduce su un vero computer Linux (preferibilmente su un sistema bare metal, oppure eseguire l'intero Ubuntu in Hyper-V per un buon riferimento). Se si verifica un errore nello stesso modo in un computer Linux reale, si sa che si tratta del file binario Linux o della distribuzione.
In alternativa, è possibile eseguire il strace comando per determinare cosa sta succedendo. Questo comando mostra le chiamate di sistema Linux eseguite dal file binario Linux ed è possibile determinare cosa sta provando ad accedere e dove potrebbe non riuscire. Questa guida non fornisce una guida completa su come eseguire il debug strace degli stack (o in caso contrario sarebbe troppo lungo), quindi diamo un'occhiata a un esempio:
Un utente scopre che il comando xeyes si blocca in WSL, ma non su una macchina Linux. L'esecuzione strace xeyes mostra che il comando rimane bloccato sulla chiamata di openat sistema. Ciò significa che il kernel Linux è bloccato nel tentativo di eseguire la openat chiamata e indicherà che il problema non si trova nel file binario stesso.
Cosa fare se il problema si trova nel file binario Linux
I file binari Linux presenti in WSL vengono forniti dai rispettivi proprietari e non sono direttamente di proprietà di Microsoft. Se viene visualizzato un problema nel file binario Linux, segnalarlo direttamente al proprietario del file binario.
Distribuzione linux
Alcuni errori possono provenire anche dalla distribuzione linux stessa. Le distribuzioni Linux in WSL sono in realtà solo una raccolta di file binari Linux, quindi si applicano gli stessi passaggi per la risoluzione dei problemi descritti in precedenza. Tuttavia, la distribuzione di Linux è responsabile di esperienze chiave come la gestione pacchetti, che può influire notevolmente sul modo in cui i file binari interagiscono tra loro.
Per risolvere questo problema, è necessario usare le stesse tecniche descritte in precedenza, vedere se si riproduce in Linux e usare strace per determinare cosa sta causando l'errore (o qualsiasi altro codice di errore) e provare a determinare se proviene da un file binario Linux specifico. Se il file binario è di proprietà della distribuzione, si tratta di un problema di distribuzione Linux.
Cosa fare se il problema si trova nella distribuzione di Linux
Analogamente alla storia binaria di Linux, le distribuzioni WSL vengono fornite dai rispettivi gestori. Segnalare il problema direttamente con la distribuzione linux interessata.
Stack di WSL
Successivamente, l'errore potrebbe provenire dalla logica di WSL stessa. Se il problema non si verifica su Linux su hardware fisico o qualcosa a livello della macchina non funziona, ciò indica che il problema deriva dall'interno di WSL. Di seguito sono riportati i percorsi di errore comuni e come determinarlo e raccogliere i log:
Fallimenti o errori di avvio di WSL da wsl.exe.
L'errore più ovvio qui è un errore proveniente wsl.exe direttamente, ad esempio questo problema di GitHub. In questo caso raccogliere i log WSL che riproducono il problema e segnalare il problema sul repository GitHub WSL.
WSL si blocca
Un altro errore comune è il caso in cui WSL si blocca e non risponde ad alcun comando. In questo caso segnalare un arresto anomalo del processo WSL seguendo questo processo. È possibile forzare un arresto anomalo e raccogliere un dump aprendo Gestione attività -> Processi -> Fare clic con il pulsante destro del mouse su un processo VmmemWSL e selezionare > Crea file di dump della memoria. Si prega di includere questo dump di arresto anomalo e segnalare un problema nel repository GitHub WSL.
errori di rete
Anche in questo caso, verificare che questo non sia un problema binario linux. Inoltre, se possibile, verificare che non si tratti di un problema generico di virtualizzazione o VPN provando una macchina virtuale Hyper-V in tale computer per verificare se ha funzionalità di rete limitate. Se questo problema persiste solo in WSL, segnalare un problema nel repository GitHub WSL.
Problemi vari
Se ricevi un altro tipo di errore WSL che ritieni sia specificatamente correlato a WSL, includi i log e segnalalo nel repository GitHub WSL.
Approfondimenti nei log WSL
È possibile aprire i log WSL per vedere qual è l'errore esatto. A tale scopo, installare prima Windows Performance Analyzer .
Quindi, quando si dispone di log WSL (raccolti da queste istruzioni), prendere il file .zip creato e decomprimerlo. Aprire la cartella risultante e cercare un file denominato: logs.etl e fare doppio clic su questo file per aprirlo in Windows Performance Analyzer.
Una volta aperta l'app, seguire questa procedura:
- Fare clic su Attività di sistema per espandere la visualizzazione
- Trascinare la casella "Eventi generici" nella parte superiore della finestra principale
- Trovare la serie "Microsoft.Windows.Lxss.Manager" e fare clic sulla freccia per selezionarla
Da qui è possibile visualizzare tutti gli eventi di diagnostica generati da WSL. Uno dei più interessanti sarà denominato "VerboseLog" e fornirà maggiori dettagli sulla posizione esatta degli errori e informazioni su di esso.
Risorse aggiuntive
I problemi e le soluzioni comuni sono disponibili nella pagina della documentazione sulla risoluzione dei problemi WSL, quindi verificare la presenza di eventuali problemi che potrebbero verificarsi. Passare anche al repository GitHub WSL o a qualsiasi motore di ricerca e cercare il problema o eventuali codici di errore per verificare se altri stanno riscontrando lo stesso problema.
Windows Subsystem for Linux