Windows Subsystem for Linux
参考:
Windows Subsystem for Linux | Microsoft Docs [公式]
概要
参考:
WSL (Windows Subsystem for Linux) の基本メモ – Qiita
Windows Subsystem for Linux – Wikipedia
インストール
「Linux 用 Windows サブシステム」を有効化する。管理者権限で PowerShell を開いて次のコマンドを実行する。
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
「仮想マシンプラットフォーム」を有効化する。管理者権限で PowerShell を開いて次のコマンドを実行する。
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
「設定 > アプリ > アプリと機能 > 関連設定 > プログラムと機能」あるいは、「コントロールパネル > プログラム > プログラムと機能」から「Windows の機能の有効化または無効化」を開いて、次の2つが有効化されていることを確認する。
- Linux 用 Windows サブシステム
- 仮想マシンプラットフォーム
「仮想マシンプラットフォーム」コンポーネントのインストールが反映されるように再起動を行う。
WSL 2 を既定のバージョンとして設定する。
> wsl --set-default-version 2
Microsoft Store から Linux ディストリビューションを選択してインストールする。
インストールされているディストリビューションと WSL のバージョンを確認する。
> wsl -l -v
参考:
Windows 10 で Linux を使う – Qiita
Windows Subsystem for Linux をインストールしてみよう! – Qiita
Windows 10 標準 Linux 環境 WSL を始めよう | @IT
Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs [公式]
ディストリビューション
- Ubuntu
- openSUSE Leap
- Kali Linux
- Debian
- Alpine WSL
- SUSE Linux Enterprise Server
参考:
以前のバージョンの WSL の手動インストール手順 | Microsoft Docs [公式]
Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs [公式]
Linux ディストリビューションの管理 | Microsoft Docs [公式]
コマンド
参考:
Windows Subsystem for Linux のコマンド リファレンス | Microsoft Docs [公式]
Linux ディストリビューションの管理 | Microsoft Docs [公式]
使い方
Ubuntu を起動する。
> ubuntu
wsl
コマンドで既定のディストリビューションを起動する。
> wsl
参考:
Linux ディストリビューションの管理 | Microsoft Docs [公式]
再起動
ディストリビューション名を確認する。
> wsl -l
指定したディストリビューションを終了させる。
> wsl -t Ubuntu
参考:
WSL1/WSL2 を再起動する方法 | 備忘録 (kagasu.hatenablog.com)
Rebooting Ubuntu on Windows without rebooting Windows? – Super User
導入
参考:
WSL (Windows Subsystem for Linux) の導入と設定 | ラボラジアン
WSL 2
winver
を実行して Windows 10 のバージョンを確認する。次の条件を満たす必要がある。
- 64 bit バージョン (x64)
- バージョン 1903 ビルド 18362 以降
- バージョン 1903 / 1909 においてはマイナービルド番号 1049 以降
wsl_update_x64.msi
をダウンロードして「WSL 2 Linux カーネル」をインストールする。
→ WSL 2 Linux カーネルの更新 (wsl_update_x64.msi)
WSL 2 を既定のバージョンとして設定する。
> wsl --set-default-version 2
インストールされているディストリビューションと WSL のバージョンを確認する。
> wsl -l -v
インストールされているディストリビューションで使用する WSL のバージョンを設定する。
> wsl --set-version Ubuntu 2
参考:
Windows Subsystem for Linux 2 (WSL 2) をセットアップしてみた | Developers.IO
Windows 10 Home の WSL を WSL2 にアップグレードしてみた – Qiita
Windows 10 20H1 で導入された WSL 2 を使用する方法 | ソフトアンテナブログ
WSL 2 に更新する | Microsoft Docs [公式]
WSL 2 Linux カーネルの更新 | Microsoft Docs [公式]
WSL 2 Support is coming to Windows 10 Versions 1903 and 1909 | Windows Command Line [Official]
完全な Linux が Windows 10 上で稼働する? WSL 2とは | @IT
wsl.conf
参考:
Automatically Configuring WSL | Windows Command Line [Official]
ディストリビューションごとの起動設定を wsl.conf で構成する | Microsoft Docs [公式]
ユーザーアカウント
参考:
デフォルトのユーザーを変更するには・ディストリビューションをクリーンな状態に戻すには | kledgeb
WSL ディストリビューションのユーザー アカウントを作成および更新する | Microsoft Docs [公式]
ホームディレクトリ
参考:
What is the home directory on Windows Subsystem for Linux? – Super User
ファイルシステム
エクスプローラーで WSL のファイルにアクセスする。
\\wsl$\Ubuntu\home\[user_name]
WSL から C ドライブにアクセスする。
$ ls /mnt/c/Users/[UserName]/Documents
参考:
WSL と windows 間のファイル連携 – Qiita
Accessing Files outside of Ubuntu – Super User
How to access linux/Ubuntu files from Windows 10 WSL? – Super User
マウントの設定
参考:
Windows 10 の WSL の自動マウントや fstab によるマウント処理を wsl.conf ファイルで制御する | @IT
PATH
Windows のパスを自動的に引き継がないようにするには、/etc/wsl.conf
に次の設定を追加する。
[interop] appendWindowsPath=false
Windows のコマンドを使用できるようにするには、~/.bash_profile
に次の設定を追加する。
export PATH="$PATH:/mnt/c/Windows:/mnt/c/Windows/System32"
Google Chorome をコマンドラインから開けるようにするには、~/.bash_profile
に次の設定を追加する。
export PATH="/mnt/c/Program Files (x86)/Google/Chrome/Application:$PATH" export BROWSER=chrome.exe
VSCode をコマンドラインから開けるようにするには、~/.bash_profile
に次の設定を追加する。
export PATH="/mnt/c/Users/blaze/AppData/Local/Programs/Microsoft VS Code/bin:$PATH"
参考:
WSL で Windows の PATH を引き継がないようにする方法 – Qiita
Windows の PATH は全部引き継がない | mo-mo-‘s memo
How to remove Windows pathes from WSL PATH? · Issue #1493 · microsoft/WSL – GitHub
How to remove the Win10’s PATH from WSL – Stack Overflow
パスの表記を変換する (wslpath)
参考:
パスのフォーマットを変換する wslpath コマンドの使い方 | ラボラジアン
シンボリックリンクの扱い
参考:
Windows Subsystem for Linux (WSL) でのリンクの扱い | rcmdnk’s blog
初期パーミッションの設定 (umask)
参考:
WSL (Windows Subsystem for Linux) の初期パーミッション設定 – Qiita
Unable to change file permissions on Ubuntu Bash for Windows 10 – Super User
Default permission and ownership in WSL – Stack Overflow
パーミッションの問題
- WSL から Windows 上のファイルにアクセスする際は、Cドライブであれば
/mnt/c
以下を使用する。 - WSL から Windows 上のファイルにアクセスするとパーミッションは
777
として扱われる。 - 通常の Windows アプリから WSL のファイルシステム上にファイルやディレクトリを作成してもパーミッションが適切に設定されないため、
Permission denied
エラーが発生して WSL からは一切アクセスできない。
参考:
WSL とファイルパーミッションと VSCode の話 | Goryudyuma’s blog
ファイルのアクセス許可 | Microsoft Docs [公式]
Chmod/Chown WSL Improvements | Windows Command Line [Official]
ping が実行できない
現象:
Operation not permitted エラーが発生して ping
コマンドが実行できない。
ping: socket: Operation not permitted
対処法:
スーパーユーザー権限で ping
コマンドを実行する。
$ sudo ping www.google.co.jp
ping
コマンドに SUID を付与すれば、以後は sudo
を入力する必要がなくなる。
$ sudo chmod u+s `which ping` $ ping www.google.co.jp
参考:
ping: icmp open socket: 許可されていない操作です – Qiita
Ping is not working · Issue #18 · microsoft/WSL – GitHub
Git を使う
参考:
WSL で Git の使用を開始する | Microsoft Docs [公式]
X Window
参考:
WSL で Ubuntu デスクトップ環境を作ってみる | tmtms のメモ
WslFs
参考:
WslFs は Windows Subsystem for Linux でのファイルシステムを置き換える存在!? | ASCII.jp
CentOS
CentOS.zip
をダウンロードして解凍し、任意のディレクトリに配置する。CentOS7.exe
を実行すると rootfs.tar.gz
が展開され、WSL に CentOS が登録される。WSL 登録後は CentOS7.exe
を実行すると Bash シェルが開くようになる。
root
ユーザーのパスワードを設定する。
# passwd root
ユーザーを作成する。
# adduser centos_user
パスワードを設定する。
# passwd centos_user
sudo
権限を付与する。
# gpasswd -a centos_user wheel
既定のユーザーを設定する。
> CentOS7.exe config --default-user centos_user
パッケージを更新する。(更新可能なパッケージを全て更新する。)
$ sudo yum update
wget
をインストールする。
$ sudo yum install wget
カレントディレクトリを VSCode の Remote WSL で開く。
$ code .
参考:
yuk7/CentWSL: CentOS as a WSL Instance – GitHub
WSL で CentOS7 をインストールする – Qiita
WSL2 で CentOS (CentOS7, CentOS8) を使う | sakutarou’s blog
WSL2 に CentOS7 のインストール | テトのまったり投資
WSL で CentOS が利用できたかも? | torutk のブログ
wsl2 上で無料で CentOS8 を動かそう | ギークフィード
What is the password of the root user? · Issue #31 · yuk7/CentWSL – GitHub
ディストリビューションを削除する
ディストリビューションの登録を解除して完全に削除する。
> wsl --unregister Ubuntu
参考:
How to Uninstall a Distro? / Required Folder · Issue #664 · MicrosoftDocs/WSL – GitHub
仮想マシンプラットフォーム
参考:
systemd
参考:
systemctl が動かない問題をきちんと解決する | しきゆらの備忘録
WSL2 の CentOS でも systemd を利用する | sakutarou’s blog
Blockers for systemd? · Issue #994 · microsoft/WSL – GitHub
why systemd is disabled in WSL? – Stack Overflow
Docker を使う
参考:
Windows 10 Home で WSL 2 + Docker を使う – Qiita
ローカルサーバー
参考:
Local sites running in WSL2 not accessible in browser · Issue #5298 · microsoft/WSL – GitHub
リリースノート
参考:
Windows Subsystem for Linux のリリース ノート | Microsoft Docs [公式]
FAQ
参考:
WSL 2 についてよく寄せられる質問 | Microsoft Docs [公式]
イシュー
参考:
microsoft/WSL: Issues found on WSL – GitHub
トラブルシューティング
参考:
Windows Subsystem for Linux のトラブルシューティング | Microsoft Docs [公式]
WSL2 バージョンアップ時のエラー
参考:
wsl2 にする際に出るエラーについて | todoaaaaaa.hatenablog.com
WSL2 インストールの際にエラーが出てインストールできない – teratail
ディストリビューションの名前を変更する
参考:
Allow WSL distros to change their WSL name · Issue #4241 · microsoft/WSL – GitHub
How To Copy and Rename a Microsoft WSL Linux Distribution | Puget Systems
How to change the name of a WSL distro to reflect the actual distro? – Super User
ディストリビューションが配置されているディレクトリを変更する
参考:
How to Move a Windows 10 WSL 2 Linux Distribution to Another Location – Stack Overflow
ディストリビューション名で EXE 形式の実行ファイルを作成する
参考:
Is it possible to make distro.exe by “wsl --import”? – Stack Overflow
Tips
参考:
Windows Subsystem for Linux を設定する – Qiita
Windows Subsystem for Linux を設定する 2 – Qiita
Windows 10 WSL2 に Linux 居城を爆誕させる – Qiita
Mac と近しい環境を Windows 10 で安直に実現する (wsl + vscode + homebrew) – Qiita
2020年の Python プロジェクトのはじめかた windows wsl と mac 共通化編 – Qiita
Windows 10 Home で Linux に寄せた開発環境を整える – Qiita
WSL-DistroLauncher
参考:
VcXsrv
参考:
VcXsrv Windows X Server | SourceForge.net
docker-systemctl-replacement
参考:
get error “Failed to get D-Bus connection” · Issue #11 · yuk7/CentWSL – GitHub
genie
参考:
arkane-systems/genie: A quick way into a systemd “bottle” for WSL – GitHub
why systemd is disabled in WSL? – Stack Overflow
wsldl
参考: