# 20200705_WSL2 ## 注意点 WSL2(hyper-v)とVirtualboxの同居でNGとなるパターン https://hackmd.io/8mIcw0MKTjuKGG_OYSGcyQ ## Windows Update - https://docs.microsoft.com/ja-jp/windows/wsl/install-win10 - バージョン2004に更新 - Windows更新アシスタント - Ryzen 3900Xマシンでは失敗 -  ## setup ubuntu ``` dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart ``` 再起動 ``` dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart ``` 再起動 ``` wsl --set-default-version 2 ``` ``` PS C:\WINDOWS\system32> wsl --set-default-version 2 WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください ``` 上記メッセージが出る場合、WSL 2 Linux カーネルの更新 - https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel ``` PS C:\WINDOWS\system32> wsl --set-default-version 2 WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください ``` 成功 microsoft storeで Ubuntu 20.04 LTS サインインは「必要ありません」を選択 起動 ユーザ名とパスワードを入力 ``` Installing, this may take a few minutes... Please create a default UNIX user account. The username does not need to match your Windows username. For more information visit: https://aka.ms/wslusers Enter new UNIX username: tom New password: Retype new password: passwd: password updated successfully Installation successful! To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. Welcome to Ubuntu 20.04 LTS (GNU/Linux 4.19.104-microsoft-standard x86_64) ``` 起動中 ``` PS C:\WINDOWS\system32> wsl --list --verbose NAME STATE VERSION * Ubuntu-20.04 Running 2 ``` Storeを閉じると ``` PS C:\WINDOWS\system32> wsl --list --verbose NAME STATE VERSION * Ubuntu-20.04 Stopped 2 ``` 別のPowershellで ``` wsl ``` でubuntu起動 ``` PS C:\WINDOWS\system32> wsl --list --verbose NAME STATE VERSION * Ubuntu-20.04 Running 2 ``` そのPowershellを閉じるだけではSTATE変わらず。 すべてのPowershellを閉じると ``` PS C:\WINDOWS\system32> wsl --list --verbose NAME STATE VERSION * Ubuntu-20.04 Running 2 ``` ## upgrade ubuntu ``` apt update apt -y upgrade ``` ## Windows - ubuntu間のファイルアクセス https://qiita.com/quzq/items/1096c638c0d86795be13 ubuntuから ``` /mnt/c ``` Windowsから ``` \\wsl$\Ubuntu-20.04 ``` ## wslからWindowsのvagrantを使用 (参考)Windows batchファイルベース ``` mkdir vagrant_centos7 cd vagrant_centos7 vagrant init centos/7 vagrant up vagrant ssh ``` vagrantバイナリの場所 C:\HashiCorp\Vagrant\bin vagrantワークスペースの場所 C:\vagrant ``` root@eval-pc:/home/tom# ls -l /mnt/c/HashiCorp/Vagrant/bin/ total 3024 -r-xr-xr-x 1 tom tom 3095136 May 7 00:36 vagrant.exe root@eval-pc:/home/tom# ls -l /mnt/c/vagrant/ total 0 drwxrwxrwx 1 tom tom 512 May 27 10:31 centos7 ``` ubuntu test ```bash VAGRANT_BIN_PATH="/mnt/c/HashiCorp/Vagrant/bin/vagrant.exe" cd /mnt/c/vagrant mkdir -p vagrant_centos7 cd vagrant_centos7 ${VAGRANT_BIN_PATH} init centos/7 ${VAGRANT_BIN_PATH} up ${VAGRANT_BIN_PATH} ssh ``` 2台のVMを2 NICsで作成、1つのinternel NWを作成し接続 https://qiita.com/ftakao2007/items/0ec05c2ef3c14cdbea11 ```bash VAGRANT_BIN_PATH="/mnt/c/HashiCorp/Vagrant/bin/vagrant.exe" alias vagrant=${VAGRANT_BIN_PATH} function create_vm() { vm_name=$1 vm_box=$2 private_nw_ip=$3 mkdir -p ${vm_name} pushd ${vm_name} cat << __EOL__ > Vagrantfile # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "${vm_box}" config.vm.network "private_network", ip: "${private_nw_ip}" config.vm.provider "virtualbox" do |vb| vb.cpus = 4 vb.memory = "4096" # vb.customize ["modifyvm", :id, "--nested-hw-virt", "on"] end config.vm.provision "shell", inline: <<-SHELL sudo yum group install -y "Virtualization Host" sudo yum install -y epel-release sudo yum update -y SHELL end __EOL__ ${VAGRANT_BIN_PATH} up key_path=$(pwd)/.vagrant/machines/default/virtualbox/private_key key_path_on_home=${HOME}/.ssh/private_key_${vm_name} /bin/cp -pf ${key_path} ${key_path_on_home} chmod 400 ${key_path_on_home} ls -l ${key_path_on_home} popd } cd /mnt/c/vagrant # VM1 vm_name="vagrant_centos8_01" vm_box="centos/8" private_nw_ip="192.168.33.11" create_vm ${vm_name} ${vm_box} ${private_nw_ip} # VM2 vm_name="vagrant_centos8_02" vm_box="centos/8" private_nw_ip="192.168.33.12" create_vm ${vm_name} ${vm_box} ${private_nw_ip} ``` VM1からVM2へping疎通テスト ```bash VAGRANT_BIN_PATH="/mnt/c/HashiCorp/Vagrant/bin/vagrant.exe" VM_NAME="vagrant_centos8_01" PRIVATE_NW_IP="192.168.33.11" PRIVATE_NW_IP_DST="192.168.33.12" cd /mnt/c/vagrant SSH_COMMAND=$(cat << __EOL__ ping -c 4 ${PRIVATE_NW_IP_DST} __EOL__ ) key_path_on_home=${HOME}/.ssh/private_key_${VM_NAME} ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ -i ${key_path_on_home} vagrant@${PRIVATE_NW_IP} "${SSH_COMMAND}" ``` ## WSL2のアーキテクチャ https://www.atmarkit.co.jp/ait/articles/1906/14/news019.html ⇒情報鮮度が?? https://docs.microsoft.com/ja-jp/windows/wsl/compare-versions ⇒絵が無い ## 昔bash for windowsってあったよね? Windows 10 Fall Creators Updateにて 「Bash on Ubuntu on Windows」から「Windows Subsystem for Linux(WSL)」に変更 つまりWSL(1)のこと ## WindowsとWSLのNW疎通 - WindowsからWSLへping疎通OK ``` PS C:\WINDOWS\system32> ping 172.21.153.102 172.21.153.102 に ping を送信しています 32 バイトのデータ: 172.21.153.102 からの応答: バイト数 =32 時間 <1ms TTL=64 172.21.153.102 からの応答: バイト数 =32 時間 <1ms TTL=64 172.21.153.102 からの応答: バイト数 =32 時間 <1ms TTL=64 172.21.153.102 からの応答: バイト数 =32 時間 <1ms TTL=64 ``` - WSLからWindowsへping疎通NG ``` tom@eval-pc:~$ ping 172.21.144.1 PING 172.21.144.1 (172.21.144.1) 56(84) bytes of data. ``` - 経由するHyper-V上の仮想スイッチ  ## Windowsのwebブラウザからlocalhostへアクセス WSL上のアドレスへアクセスできる →WSL側でサーバ建てられる。WSLのIPアドレスは自動割り振りで不定だがlocalhostで常に名前解決できる  ``` tom@eval-pc:~$ python3 -m http.server Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ... 127.0.0.1 - - [10/Jul/2020 23:53:28] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [10/Jul/2020 23:53:28] code 404, message File not found 127.0.0.1 - - [10/Jul/2020 23:53:28] "GET /favicon.ico HTTP/1.1" 404 - ``` ## WSLのhostnameで解決できる? できない。 ``` tom@eval-pc:~$ hostname eval-pc ``` Windowsからeval-pcでpingを打つと、Windows上の異なるIPアドレスへ名前解決される (この例ではvirtualboxで作成した仮想NWのIPアドレス) ``` PS C:\WINDOWS\system32> ping -4 eval-pc eval-pc [192.168.33.1]に ping を送信しています 32 バイトのデータ: 192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=128 192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=128 192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=128 192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=128 ``` ## アプリと機能での見え方 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up