INSTRUCÃO OFICIAL: https://docs.microsoft.com/pt-br/windows/wsl/install-win10
Em 2016, a Microsoft anunciou a possibilidade de rodar o Linux dentro do Windows 10 como um subsistema e o nome a isto foi dado de WSL ou Windows Subsystem for Linux.
O acesso ao sistema de arquivos no Windows 10 pelo Linux era simples e rápido, porém não tinhamos uma execução completa do kernel do Linux e outros artefatos nativos e isto impossibilitava a execução de várias tarefas no Linux, uma delas é o Docker.
Em 2019, a Microsoft anunciou o WSL2, com uma dinâmica aprimorada em relação a 1ª versão:
- Execução do kernel completo do Linux
- Melhor desempenho para acesso aos arquivos dentro do Linux
- Compatibilidade completa de chamada do sistema
O WSL2 já estava disponível na versão Insider do Windows, mas na última semana de maio de 2020 passou a estar disponível em final release na atualização 20.04 do Windows 10.
Assim, o WSL2 permitiu que executemos Docker no Linux usando o Windows 10.
Compare as versões: https://docs.microsoft.com/pt-br/windows/wsl/compare-versions
Vamos entender como usar o Docker com o WSL 2.
Antes de começarmos o que você precisa ter para rodar o WSL:
- Windows 10 Home ou Professional
- Uma máquina compatível com virtualização.
- Pelo menos 4GB de memória RAM
1- Verifique a versão do seu Windows, se já for a versão 20.04 ótimo, estamos prontos, senão precisamos instalar a atualização para instalar a 20.04.
https://www.microsoft.com/pt-br/software-download/windows10
O software da atualização verificará se sua máquina é compatível com a atualização. A atualização poderá levar muito tempo, pra mim levou mais de 1 hora para atualizar.
Digite no PowerShell em modo administrador:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Reinicie sua máquina somente por segurança.
wsl --set-default-version 2
Ao rodar o comando acima provavelmente a mensagem abaixo vai aparecer, para resolver, basta atualizar o Kernel do WSL 2:
WSL 2 requer uma atualização para seu componente kernel. Para obter mais informações, visite https://aka.ms/wsl2kernel
https://docs.microsoft.com/pt-br/windows/wsl/wsl2-kernel
Basta instalar, não precisa de mais nada
Após instalado, execute o passo 3 novamente
Ao iniciar a versão, você deverá criar um usuário que poderá ser o mesmo da sua máquina e uma senha, este será o usuário root da sua instância WSL.
PS C:\WINDOWS\system32> wsl --set-default-version 2
WSL 2 requer uma atualização para seu componente kernel. Para obter mais informações, visite https://aka.ms/wsl2kernel
No link abaixo a versão stable estava acima da 2.3 necessária.
https://www.docker.com/products/docker-desktop
- Vá em Resources/WSL Integration e marca opção "Enable integrantion" e marque sua distro instalada nesta opção "Enable integration with additional distros"
Execute o comando docker run ou docker-compose up
https://docs.microsoft.com/pt-br/windows/nodejs/setup-on-wsl2
vi ~/.gitconfig
[user]
email = <my email here>
name = Steven Murawski
[core]
editor = code --wait
eol = lf
autocrlf = true
Baixar a extensão Settings Sync e vincular ao seu gist;
PS. Caso tenha interesse, peguem as configurações que faço uso: https://gist.github.com/marciojg/94e01006e2da01810785ccb6611454f1
Por padrão o pash que o bash carrega é esse, um mapeamento para o usário windows:
devel@NOMEDAMAQUINA:/mnt/c/Users/nome.usuario.windows$
Evite usar esse path para programar, prefira usar a pasta do usuário da sua distro linux:
cd /home/nome.usuario.linux ou cd ~
devel@NOMEDAMAQUINA:~$
wsl --set-version <distribution name> <versionNumber>
- Atalho no menu iniciar Ou executando C:\Windows\System32\wsl.exe
- O sistema de arquivos do Windows é acessível em /mnt
- É possível acessar o sistema de arquivos do Linux pela rede do Windows digite
\\wsl$
- É possível acessar uma pasta digitando
explorer.exe .
- É possível abrir uma pasta com o VSCode digitando code .
- É possível acessar executáveis do Windows no terminal do Linux.
Se você quiser limitar os recursos, crie um arquivo .wsconfig na pasta do seu usuário.
https://docs.microsoft.com/pt-br/windows/wsl/wsl-config#configure-global-options-with-wslconfig
Depois de configurar execute no power shell:
wsl --shutdown (vai reiniciar o Docker também e vai aparecer uma mensagem se você quer iniciar o Docker
https://www.docker.com/blog/new-docker-desktop-wsl2-backend/
https://linux-mm.org/Drop_Caches
echo 1 | sudo tee /proc/sys/vm/drop_caches
echo 3 | sudo tee /proc/sys/vm/drop_caches
Acrescente export DOCKER_BUILDKIT=1 no .profile do seu usuário
sudo vim ~/.bashrc
# OWN ENVIRONMENT VARIABLES
export CHROME_BIN="/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"
Salva e reinicia o terminal ou rode **source ~/.bashrc**
https://www.ubuntudicas.com.br/2012/01/crontab-o-agendador-de-tarefas-do-linux/
https://github.com/shayne/wsl2-hacks
fonte: https://dnmc.in/2021/01/25/setting-up-flutter-natively-with-wsl2-vs-code-hot-reload/
## Java JDK
sudo apt update && sudo apt install default-jdk
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
## Android SDK
mkdir -p ~/Android/Sdk/cmdline-tools
wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip -O latest.zip
unzip latest.zip
mkdir -p ~/Android/Sdk/cmdline-tools
mv cmdline-tools ~/Android/Sdk/cmdline-tools/latest
rm -rf latest.zip
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
sdkmanager
## Plattform tools
sdkmanager --install "platform-tools"
export PATH=$PATH:$ANDROID_HOME/platform-tools
adb
## Build tools and Android images
sdkmanager --install "system-images;android-29;google_apis;x86_64" "platforms;android-29" "build-tools;29.0.3"
sdkmanager --licenses
## Flutter SDK
wget https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_2.0.2-stable.tar.xz -O flutter_latest.tar.xz
tar xf flutter_latest.tar.xz
mkdir ~/Flutter
mv flutter ~/Flutter/Sdk
export FLUTTER_ROOT=$HOME/Flutter/Sdk
export PATH=$FLUTTER_ROOT/bin:$PATH
flutter --version
## ENVs
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export FLUTTER_ROOT=$HOME/Flutter/Sdk
export PATH=$FLUTTER_ROOT/bin:$PATH
sudo printf "\n\nexport JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64\nexport PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrc
sudo printf "\n\nexport ANDROID_HOME=\$HOME/Android/Sdk\nexport PATH=\$PATH:\$ANDROID_HOME/cmdline-tools/latest/bin\nexport PATH=\$PATH:\$ANDROID_HOME/platform-tools" >> ~/.bashrc
sudo printf "\n\nexport FLUTTER_ROOT=\$HOME/Flutter/Sdk\nexport PATH=\$FLUTTER_ROOT/bin:\$PATH" >> ~/.bashrc
flutter doctor --android-licenses
flutter doctor # return must be all ok, with only android studio with attention icon
# Abra o vscode, marca web server e aperta F5
# Caso ache necessário crie esta env
# export CHROME_EXECUTABLE="/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"
# sudo printf "\n\nexport CHROME_EXECUTABLE=/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" >> ~/.bashrc
sdkmanager --list # opcional. Listar sdks
sdkmanager --install "system-images;android-29;google_apis;x86_64" "platforms;android-29" "build-tools;29.0.3"
sdkmanager --licenses
avdmanager create avd --name adroid-emulator --package "system-images;android-29;google_apis;x86_64"
flutter emulators # retorna um emulator pelo menos
-- configurar extensao emulator para poder permitir emulador cold boot
-- iniciar ele e reza