73
62

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2 のインストールとアンインストール

Last updated at Posted at 2024-03-13

概要

WSL2 を導入する方法と除去する方法などをまとめました.

  • WSL2 が利用可能になるまでの所要時間:約10分
  • 実行環境:Windows 11

目次

  1. WSL2 とは?
  2. WSL2 のインストール方法
  3. WSL2 のアンインストール方法
  4. 肥大化した WSL2 をリセットする方法

1. WSL2 とは?

WSL2 とは Windows Subsystem for Linux 2 の略称で,Windows上で Linux を仮想的に動かすことができるシステム環境のことを指します.
WSL2 では Ubuntu という Linux ディストリビューション が採用されています.

Linux とは OS (オペレーティングシステム) の一種です.
Linux と周辺のアプリをまとめたものを Linux ディストリビューション と呼びます.

Linux の基本事項は,以下がとても参考になります.

1-1. WSL2 の利点

WSL2 を使う利点は様々ですが,個人的には ソフトウェアのインストールとバージョン管理が簡単 という点で,Windows よりも使い勝手が良いと感じています.
例えば,gfortran を導入する手順を Windows と Linux (WSL2) でそれぞれ追ってみます.

  • Windows の場合

    1. gfortran のダウンロードページを探す
    2. 自分のマシンに適切なインストーラーを探してダウンロード
    3. オプション選択してインストール開始

  • Linux (WSL2) の場合

    1. 以下のコマンドを入力

      Ubuntu
      sudo apt install gfortran
      

上の例のように,Linux ではコマンドを使って様々な命令を実行するため,シンプルです.
一見難しそうですが,覚えるべきコマンドは多くありません.

Linux コマンドの代表例は,以下がとても参考になります.

2. WSL2 のインストール方法

WSL2を既にインストールしている場合は,アンインストールしてください.
具体的な方法は WSL2 のアンインストール方法 を参考にしてください.

  1. Windows PowerShell を検索し,右クリックして「管理者として実行」を選択
    ※ 『最新のPowerShellをインストールしてください』と勧めてくるが無視
    PowerShellを管理者として実行.png

  2. wsl --install と入力して,インストール開始 (所要時間:約20秒)

  3. インストールが完了したら,再起動
    PowerShellを管理者として実行_2.png

  4. 再起動すると,ユーザー名を設定する画面が開く
    画面が開かなければ,検索バーから「Ubuntu」を検索
    WSL2_username.png

  5. ユーザー名とパスワードを設定したら,WSL2 が使えるようになる
    WSL2_install.png

ユーザ名とパスワードはアルファベットのみで書くのが無難です.
パスワードは表示されないので,打ち間違えないようにしてください.

2-1. WSL2 の動作確認

コマンドプロンプト を開いて wsl -l -v と入力し,以下のような応答があれば OK

WSL2の動作確認.png

2-2. WSL2 を使ってみる

検索バーから「Ubuntu」を検索すると,ターミナルが起動します.
例えば,Ubuntu のバージョンを調べてみましょう.

Ubuntu
cat /etc/os-release

結果

PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

私がよく使う Linux コマンドはざっと以下の人たちです.
なお,コマンドプロンプトでは使えないので注意してください.

よく使う Linux コマンド
$ ls             # ディレクトリ内の内容を表示
$ ls -a          # ドットで始まる隠しファイルも含めて表示
$ cd .           # 現在のディレクトリに移動
$ cd ..          # 一つ上の階層のディレクトリに移動
$ cd /           # rootディレクトリに移動
$ cd ~           # /home/user名 のディレクトリに移動
$ pwd            # 現在のディレクトリまでの絶対パスを表示
$ cp -r A B      # AをBへコピーする (-r は再帰的にコピーするオプション)
$ mkdir A        # Aというディレクトリを作成
$ rmdir A        # Aというディレクトリを削除
$ rm -i A        # Aというファイルを削除 (-i 確認用オプション)
$ cat A          # Aというファイルの中身を閲覧
$ vim A          # Aというファイルを vim モードで編集
$ find / -name A # Aという名前のファイルの在処を探す
$ apt update     # 最新パッケージの取得 (更新は upgrade で行う)
$ apt upgrade    # 最新パッケージへの更新

権限がないと怒られたら,コマンドの前に sudo を付けてください.
パスワードを要求される場合は登録したパスワードを入力してください.

その他の Linux コマンドは,以下がとても参考になります.

2-3. WSL2 上での Cドライブの扱い

1.デスクトップやドキュメントの参照位置

WSL2では,親元である Cドライブをマウントされたデバイスとして認識しています.
つまり,外付けハードディスク や USB のような外部装置として見ているようです.

Ubuntu
/mnt/c/Users/ユーザー名/Desktop, Documents, ...

2.Cドライブに登録した PATH は開通済み

デフォルトでは,Cドライブへ登録した PATH が全て WSL2 に引き継がれています.
WSL2 に登録されている PATH は次のコマンドで確認できます.

Ubuntu
echo $PATH

C ドライブの PATH を引き継ぎたくない場合は,以下の記事を参考にしてください.

3. WSL2 のアンインストール方法

Windows が提供するソフトの多くは,「導入が簡単,除去が困難」という素晴らしい粘着性を持っています.
実際,WSL2 の初期化やアンインストールに関する幾つかのネット記事を参考に,データの完全除去を試みましたが,そのほとんどで失敗しました.
というのは,一見消去できたように見えても,WSL2 を再インストールすると元のデータが簡単に復元されてしまうのです.

ここでは,WSL2 に含まれるデータを完全除去することに成功した方法を紹介します.
具体的には,以下を順に実行します.

  • Linux ディストリビューション (Ubuntu) を消去
  • WSL2 と周辺アプリ機能の無効化

なお,以下の記事がとても参考になりました.

手順1.Linux ディストリビューション(Ubuntu) を消去する

  1. コマンドプロンプトを起動

  2. wsl -l -v と入力して,Linux の状態を確認する

  3. wsl --shutdown と入力して,Linux を停止させる
    ※ WSL2 の再起動やシャットダウンは,WSL2 本体からは行えません.

  4. 再度,wsl -l -v と入力して,Linux が停止していることを確認する

  5. wsl --unregister ubuntu と入力して,Ubuntu の登録を解除する
    WSL2を削除する_shutdown.png

  6. 最後に,設定から Ubuntu をアンインストールして,とどめを刺すUbuntuのアンインストール.png

手順2.WSL2 と周辺アプリ機能の無効化

  1. 検索バーから「Windowsの機能の有効化または無効化」を選択

  2. 「Linux 用 Windows サブシステム」と「仮想マシンプラットフォーム」のチェックを外して OK を押す
    Windowsの機能の無効化_1.png

  3. 再起動を迫られるが,一旦無視

  4. 設定 > アプリ > インストールされているアプリ と進み,以下を順にアンインストール
    • Windows Subsystem for Linux Update
    • Windows Subsystem for Linux WSLg Preview
    • (あれば) Linux 用 Windows サブシステム

  5. コンピュータを再起動する

以上の操作によって,コンピュータ上から Linux を完全に消去できます.
再インストールする際は,「Windowsの機能の有効化または無効化」の「Linux 用 Windows サブシステム」を復活させておきましょう.

4. 肥大化した WSL2 をリセットする方法

私は WSL2 を使って数値計算をしているのですが,出力データが溜まってくると WSL2 の容量が大きくなります.
例えば,設定から「システム / ストレージ / インストールされているアプリ / Ubuntu 」で見ることができます.

そこで,rm コマンドを使って不要なデータを除去することが考えられます.
しかし,この方法では残念ながら WSL2 の容量を減らすことができません.
なぜなら,WSL2 では 仮想ハードディスク (Virtual Hard Disk, VHD) と呼ばれるファイルにデータを保存しており,これを手動で最適化する必要があるからです.

ここでは,その肥大化した WSL2 をリセットする方法をメモしておきます.以下の記事を参考にさせて頂きました.

wsl --shutdown と入力して Linux を停止させてから実行してください.
加えて,バックアップを取ってから実行してください.

手順1.Hyper-V をオンにする (既にHyper-Vが使える場合は手順2へ)

■ Windows 11 Pro の場合

  1. 検索バーから「Windows の機能の有効化または無効化」を選択
  2. 「Hyper-V」を選択後,OK を押して再起動
  3. 再起動後,Windows PowerShell を検索し,右クリックして「管理者として実行」を選択
  4. Import-Module Hyper-V を実行

■ Windows 11 Home の場合 (Hyper-V をインストールする必要あり)

  1. Shift キーを押しながら再起動を実行
  2. BIOSが開くので,「トラブルシューティング」を選択
  3. その後,「詳細オプション」>>「UEFIファームウェアの設定」>> 再起動
  4. 後は,Windows 11 Pro と同様の手順を行う

手順2.VHD の最適化

  1. Windows PowerShell を検索し,右クリックして「管理者として実行」を選択
  2. Optimize-VHD -Path "C:\Users\nama\AppDate\Local\Package\CanonicalGroupLimited.Ubuntu_79...sc\LocalState\ext4.vhdx" を実行

ただし,-Path 以下のパスは予め調べておいてください.
なお,ext4.vhdx が肥大化したファイルそのものです.

まとめ

WSL2 の導入と除去に関する方法などをまとめました.
WSL2 を使えば,Windows コンピュータ上で Linux を動かすことができるようになります.
何かの参考になれば幸いです.


また,WSL2 を使ったプログラム開発環境を構築する記事も書いておりますので,興味のある方はご覧ください.

73
62
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
73
62

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?