WSL(Windows Subsystem for Linux)


wsl-gui-tool: GUIでWSLのstop/start/rename/他


boot時のみ実行

ゲストOSのwsl.confで指定する方法:

vi /etc/wsl.conf
--
[boot]
command="service docker start"
--

その他:


WSL環境のリセット、バックアップ


matplotlib のグラフを表示する


CLIでゲストOSのインストール


ファイルシステム(VolFs, WslFs, DrvFs)

例: Ubuntu 18.04 LTS. C:\, D:\がある場合

mount

rootfs on / type lxfs (rw,noatime)
...
C:\ on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,umask=22,fmask=11,metadata,case=off)
D:\ on /mnt/d type drvfs (rw,noatime,uid=1000,gid=1000,umask=22,fmask=11,metadata,case=off)

tmpreaper: /tmp, /vat/tmpの定期削除

Ubuntu 18.04 LTSで/tmp, /var/tmpが肥大化している事がある。
crond等が動作していないので自動削除はされないようだ。
Ubuntuでは「tmpreaper」、RedHat系だと「tmpwatch」を使う。


wslu: 便利なユーティリティ


トラブルシューティング


VPN接続時に SSH2_MSG_KEXINIT で止まる場合

症状:

原因:

解決:

MTUを固定したい場合:

記事:


ネットワークに繋がらない/DNS名前解決ができない


ブルースクリーン:BSoD


rootユーザでログインしたい/sudoが壊れた場合に直したい

  1. cmdかpowershellを開き、デフォルトユーザをrootに変更
    # Ubuntuの場合
    ubuntu config --default-user root
  2. wslのターミナルを開いてrootに変わったことを確認し、壊れたファイルを修復
  3. デフォルトユーザを元に戻す
    ubuntu config --default-user <user>
  4. 今後を考えると、rootユーザにパスワードを設定しても良い
    sudo passwd

ControlMaster有効時に「muxclient: master hello exchange failed」

echo ~
/mnt/c/local/home/<user>

ssh -V
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017

cat ssh-config
Host *
  ControlMaster auto
  ControlPersist 60s
  ControlPath ~/.ssh/%C

ssh -F ssh-config <host>

muxclient: master hello exchange failed
Failed to connect to new control master
ssh_exchange_identification: Connection closed by remote host

突然WSLが起動しなくなったら


WindowsアプリでWSL配下のファイルを編集すると壊れる

WSL上のファイルはNTFSの拡張属性で管理されているようで、WindowsアプリはNTFSの拡張属性を考慮しないため、metadataが壊れるようだ。


WLinux Enterprise: RHEL互換


/etc/wsl.conf

  1. /etc/wsl.conf を変更して、metadataを有効に。これが無いと、drvfsに作成されたファイルのパーミッションは全て「0777」になる
    sudo bash -c 'cat > /etc/wsl.conf << "EOS"
    [automount]
    options = "metadata,umask=22,fmask=11"
    EOS'
  2. Windows 10 1903+: 指定したdistroを終了しないと、wsl.confが反映されない。
    wsl -l -v
    
      NAME      STATE           VERSION
    * Ubuntu    Running         2
    
    wsl -t Ubuntu
  3. [WSL1] PowerShell(管理者権限)からサービスの再起動
    Restart-Service LxssManager
  4. WSLを起動してmetadataが追加されたか確認
    mount -l | grep /mnt
    C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,umask=22,fmask=11,metadata)

/home/userディレクトリの移動

※2020-08: 色々問題があるのでお勧めはしない。

  1. Memo/Windows/10/WSL#bef978d4の変更を入れる
  2. 新しいhomeディレクトリ作成
    home_path=/mnt/c/local/home/${USER}
    mkdir -p ${home_path}
  3. データのコピー
    rsync -avz /home/${USER}/ ${home_path}/
  4. ユーザのhome変更。パスが間違ってないか十分に注意。間違っているとログインできなくなるかも。
    sudo vipw
    --
    user01:x:1000:1000:,,,:/mnt/c/local/home/user01:/bin/bash
    --
    
    # アクセスできる事を確認
    ls /mnt/c/local/home/user01
  5. bash終了して、起動。homeが変わっている事を確認
    pwd
    /mnt/c/local/home/user01

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

ls | clip.exe

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


ターミナル

デフォルトのcmd.exeではさすがに力不足。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-11-21 (日) 01:36:21