
Se sei come me, potresti ritrovarti a eseguire Windows per una serie di motivi, dal lavoro ai giochi. Certo, potresti eseguire Fedora in una macchina virtuale o come contenitore, ma questi non si integrano facilmente in un’esperienza Windows comune come il sottosistema Windows per Linux (WSL). L’utilizzo di Fedora tramite WSL ti consentirà di fondere i due ambienti per un fantastico ambiente di sviluppo.
Prerequisiti
Ci sono alcune nozioni di base di cui avrai bisogno per far funzionare tutto questo. Dovresti eseguire Windows 10 e avere già installato WSL2. In caso contrario, consulta la documentazione Microsoft per le istruzioni e torna qui quando hai finito. Microsoft consiglia di impostare wsl2 come distro predefinito per semplicità. Questa guida presuppone che tu l’abbia fatto.
Successivamente, avrai bisogno di alcuni mezzi per decomprimere i file compressi xz. Puoi farlo con un’altra distribuzione basata su WSL o utilizzare 7zip.
Scarica un rootfs di Fedora 34
Ottieni rootfs da Fedora Container Base
Il rootfs incorporato nel progetto Fedora Container Base sembra funzionare bene ed è il mio metodo preferito, in quanto offre molta flessibilità. Comincio con la versione stabile più recente di Fedora che si è auto-costruita con successo.
Trova il file “xz” giusto per la tua piattaforma (probabilmente x86_64). come questo.
Decomprimi il file Fedora-Container-Base-*.tar.xz nel modo che preferisci. Potresti provare 7-zip per questo, estraendo il file .tar, quindi estraendo il contenuto del file .tar. Questo, tuttavia, non è il tuo rootfs. Sono necessari ulteriori lavori.
Una volta scompattato, vedrai una cartella con un lungo nome esadecimale. All’interno di quella cartella, dovrebbe esserci un layer.tarfile. Questo è il tuo rootf. Copia il file layer.tar in una posizione logica, come la cartella Download. Potresti anche volerlo rinominare in qualcosa come fedora-34-rootfs.tar.
Crea una cartella per la tua distribuzione WSL.
Una volta che abbiamo il rootfs, possiamo prepararci a importarlo.
Mi piace usare wslnella mia home directory, quindi in questo caso creo quella cartella e una fedoracartella al suo interno. In Powershell, questo è:
mkdir $HOME\wsl\fedora
Installa una nuova distribuzione WSL Fedora
In Powershell, supponendo che tu voglia nominare la distro “fedora” e la cartella sia \$HOME\wsl\fedora e il rootfs sia in Download, chiamato “fedora-34-rootfs.tar”:
wsl --import fedora $HOME\wsl\fedora $HOME\Downloads\fedora-34-rootfs.tar
Visualizza le distribuzioni installate
Se questa è l’unica distribuzione WSL che hai ora, l’esecuzione wsl -l dovrebbe assomigliare a questa:
PS C:\Users\speci> wsl -l
Windows Subsystem for Linux Distributions:
fedora (Default)
Avvia Fedora come root
wsl -d fedora
Oppure, se Fedora è l’impostazione predefinita, wsldovrebbe semplicemente risultare in un prompt BASH.
Se hai installato più distro e vuoi che Fedora sia impostato come predefinito, qualcosa del genere dovrebbe funzionare:
wsl -s fedora
Avvia Fedora come utente non privilegiato
Dico solo: rootnon dovrebbe mai essere il tuo utente predefinito. Creiamo un utente normale.
passwdNe avremo bisogno e potremmo anche ottenere i dicts di cracklib per il controllo della password. Installa entrambi, una volta avviato Fedora:
dnf install -y passwd cracklib-dicts
Ora, crea un nuovo utente; già che ci siamo, aggiungiamoli al wheelgruppo in modo che l’utente possa sudo(non dimenticare di sostituire “myusername” con qualcosa che abbia senso per te):
useradd -G wheel myusername
Quindi crea una password per quell’utente:
passwd myusername
Ora esci da WSL o avvia una nuova finestra di Powershell, quindi riavvia WSL con il nuovo nome utente:
wsl -d fedora -u myusername
Successo?
$ whoami
myusername
Funziona sudo?
sudo cat /etc/shadow
Se vedi l’elenco degli utenti, incluso, verso il basso, quello che hai aggiunto di recente, allora va tutto bene!
Imposta l’utente predefinito
In Fedora, l’utente che hai creato probabilmente ha un ID utente di 1000, ma puoi controllare con id -u. Ricorda quel numero.
Di nuovo in Powershell puoi impostare l’utente predefinito modificando il registro di Windows, cambiando “fedora” e “1000” con quello che hai chiamato la tua distribuzione WSL e l’ID utente, rispettivamente:
Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq fedora | Set-ItemProperty -Name DefaultUid -Value 1000
Avvia di nuovo WSL, senza specificare un utente, e dovresti essere quell’utente, non root.
Ritocchi
Se lavori con i contenitori, specialmente nello spazio utente, probabilmente vorrai reinstallare shadow-utils, al fine di correggere i bit appiccicosi che non sono stati impostati correttamente in rootfs:
sudo dnf reinstall shadow-utils
Se ti piace eseguire il ping dei server per vedere se sono attivi, potrebbero essere necessari questi due passaggi:
sudo dnf install procps-ng iputils
sudo sysctl -w net.ipv4.ping_group_range="0 2000"
Il secondo consente agli ID di gruppo per tutto il 2000 di essere in grado di eseguire il ping. Puoi controllare gli ID di gruppo con getent groupo vedere il tuo ID di gruppo principale con id -ge assicurarti che sia incluso nell’intervallo sopra.
Potresti anche scoprire che altri comandi a cui sei abituato mancano dai rootf sparse che abbiamo installato. Si consiglia di installare iproute, findutils, ncursese altri, in questo modo:
sudo dnf install iproute findutils ncurses
Da qui, puoi procedere all’installazione dei pacchetti, modificare le configurazioni e personalizzare la tua nuova distribuzione a tuo piacimento!
Una volta che hai un sistema di base incontaminato nel modo desiderato, perché non esportare un tarball che puoi importare in seguito. Voglio dire, sono onorato se vorrai rileggere questo articolo e seguirlo passo dopo passo. Ma se vuoi che la vita sia un po’ più semplice, potresti provare quanto segue.
Innanzitutto, ripulisci i pacchetti scaricati, ecc. All’interno di Fedora:
sudo dnf clean all

