Memo/Windows/10/WSL

https://dexlab.net:443/pukiwiki/index.php?Memo/Windows/10/WSL
 

WSL(Windows Subsystem for Linux)

  • 旧名 BoW(Bash on Windows)
  • Windows10 Anniversary Updateから搭載
  • Ubuntu LTSがサブシステムとしてインストールされるので、bash、apt等で管理できる。
  • 2018-09-16現在: 正式版。windows storeからインストールできる。sshdもデフォルトでは起動していない。
  • 2016-10-14現在、beta版。デフォルトでsshd等が起動し、windowsファイアウォールでもフルオープンになっているので、注意
  • WSL記事
  • BoW記事

/home/userの移動

  • Store版Ubuntu 18.04 LTSの/home/userは「C:\Users\<user>\AppData?\Local\Packages\CanonicalGroupLimited?.UbuntuonWindows_XXXXXXXXXXXXX\LocalState?\rootfs\home\<user>」とかなり深く、扱いにくい時がある
  • rootfsはWSLからアクセスできなかった。「sudo ls rootfs」でも「permission denied」
  • 「usermod -d <new home> -m <user>」でデータの移動もやってくれるが、カレントユーザの場合はできない。「user user01 is currently used by process 4」
  1. 新しいhomeディレクトリ作成
    user=user01
    new_home=/mnt/c/local/home
    mkdir -p ${new_home}/${user}
  2. Windowsでデータの移動/コピー: 「LocalState?\rootfs\home\user01\」から「/mnt/c/local/home/user01」へ
    • ファイル数が多いと遅いのでrobocopy等使った方が良いかも。
  3. 未検証:ユーザのhome変更
    user=user01
    new_home=/mnt/c/local/home
    sudo usermod -d ${new_home}/${user}

コマンド結果をクリップボードへコピー

  • Windows 10 Creators UpdateからWSLからexeを実行できるようになった。
ls | clip.exe

複数のディストリビューション

  • powershellから実行する
  • 確認
    wslconfig.exe /list
  • デフォルトを設定
    wslconfig.exe /setdefault Ubuntu

sshdの起動

sudo apt install openssh-server
sudo service ssh start

Ubuntuのアップグレード


Ubuntu16.04から18.04へのアップグレード

legacy環境で記事通りに更新した所、約50分かかった。


Ubuntu14.04から16.04へのアップグレード

  • 1時間程度かかるので時間がある時に。
sudo do-release-upgrade
...
 Continue [yN]  Details [d]y
sudo apt update
sudo apt upgrade
sudo apt autoremove
# バージョン確認
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:        16.04
Codename:       xenial

ターミナル


インストールパス

  • Storeからインストールされた場合、「C:\Program Files\WindowsApps?」に入るようだ
  • Store版 Ubuntu 18.04 LTSの場合
    C:\Program Files\WindowsApps\CanonicalGroupLimited.UbuntuonWindows_1804.2018.817.0_x64__79rhkp1fndgsc
  • Store版 Ubuntu 18.04 LTSの /home/<user>/
    C:\Users\<user>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\<user>

WSLアンインストール

legacy版とstore版で方法が違う

  • store版: Ubuntu 18.04 LTS: store画面から消すか、以下のコマンド
    powerwhell
    Get-AppxPackage *ubuntu* | Remove-AppxPackage
  • legacy版: Ubuntu 16.04 LTS
    powerwhell
    lxrun /uninstall /full

WSLインストール

なるべくコマンドでインストールしたい。

  • 記事
  • 環境
    • Windows 10 Pro 1803
  • Ubuntuの場合、legacy版とstore版がある
    • store版: Ubuntu 18.04 LTS
      • お勧め: opensshのincludeが使えるのが7.3以上。dockerもそのまま使えるため。
      • OpenSSH: 7.6p1
    • legacy版: Ubuntu 16.04 LTS
      • Bash on Ubuntu on Windowsと呼ばれていた頃のバージョン
      • OpenSSH: 7.2p1
  1. デフォルトshellをPowerShell?へ変更
    powershell
    New-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name DontUsePowerShellOnWinX -PropertyType DWord -Value 0 -For
    Stop-Process -Name explorer
  2. Win10 1803では不要: 開発者モードの有効化: Windowsキー + Xキー > Aキー (Windows PowerShell? (管理者))
    New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock -Name AllowAllTrustedApps -PropertyType DWord -Value 1 -Force
    New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock -Name AllowDevelopmentWithoutDevLicense -PropertyType DWord -Value 1 -Force
  3. WSLの有効化
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  4. OS再起動が必要な時は再起動する。
  5. https://aka.ms/wslstore からUbuntuをインストールし、起動。
  6. Windowsキー + Xキー > Aキー (Windows PowerShell?)
    bash
    cd ~/
    
    # ストア版Ubuntuでは不要。sudo時に「ホスト <hostname> の名前解決ができません」メッセージ解決
    sudo perl -p -i -e "s/127.0.0.1 localhost/127.0.0.1 $(hostname) localhost/g" /etc/hosts
    
    # リポジトリをjpへ変更
    sudo perl -p -i -e "s/archive/jp.archive/g" /etc/apt/sources.list
    # デフォルトumask 000(ファイルを作ると0666)なので、022(ファイルを作ると0644)へ変更
    echo 'umask 022' >> ~/.bashrc
    source ~/.bashrc
    
    # パッケージのアップグレード
    sudo apt-get update
    sudo apt-get upgrade
    
    # 必要なパッケージをインストール
    sudo apt install make git
    
    # バージョン確認: legacy版。ストアからインストールした場合は18.04 LTS
    lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 14.04.5 LTS
    Release:        14.04
    Codename:       trusty
  • 日本語用パッケージ追加
    sudo apt install language-pack-ja manpages-ja manpages-ja-dev
  • 言語の変更: 英語の場合はen_US.UTF-8
    sudo update-locale LANG=ja_JP.UTF-8
    exit
    # 再度bash起動
    echo $LANG
    ja_JP.UTF-8
  • タイムゾーンの変更: デフォルトがDSTなので、JSTへ変更
    # sudo timedatectl: Failed to create bus connection: No such file or directory
    echo "Asia/Tokyo" | sudo tee /etc/timezone
    sudo dpkg-reconfigure --frontend noninteractive tzdata
    # dateで確認

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-18 (木) 12:12:25 (1d)