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 Home で WSL – Qiita

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 Linux ディストリビューションの初期化 | 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) の導入と設定 | ラボラジアン

WSL2 の初歩メモ – Qiita

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

参考:

WSL2 の初歩メモ – Qiita

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 [公式]

ホームディレクトリ

参考:

WSL のホームディレクトリの場所 – Qiita

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

interop | Microsoft Docs [公式]

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

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 を使う | パソコン鳥のブログ

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

仮想マシンプラットフォーム

参考:

WSL2 と Hyper-V の関係 – Qiita

systemd

参考:

systemctl が動かない問題をきちんと解決する | しきゆらの備忘録

WSL2 の CentOS でも systemd を利用する | sakutarou’s blog

WSL2 で Systemd を使うハック – Qiita

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

WSL2: Virtual hard disk files must be uncompressed and unencrypted and must not be sparse · Issue #4103 · microsoft/WSL – GitHub

ディストリビューションの名前を変更する

参考:

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 制作環境設定 – 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

参考:

microsoft/WSL-DistroLauncher: Sample/reference launcher app for WSL distro Microsoft Store packages – GitHub

VcXsrv

参考:

VcXsrv Windows X Server | SourceForge.net

docker-systemctl-replacement

参考:

gdraheim/docker-systemctl-replacement: docker systemctl replacement – allows to deploy to systemd-controlled containers without starting an actual systemd daemon (e.g. centos7, ubuntu16) – GitHub

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

参考:

yuk7/wsldl: Advanced WSL launcher / installer – GitHub

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です