subtitle

RaiseTechの各種コースをはじめとしたイロイロな学習の記録

WSLの導入

さて。

最近PCを新しくしたのだが、なんとあんなに環境構築に苦労したくせに、結局またWindowsを購入してしまったのであるww


Linuxを使いたい時は、Hyper-VやAWSのEC2を使えばいっか、と思っていたのだが、神様M氏がとても分かりやすいWSLの資料を作ってくださったので、それに従って導入してみたいと思う。(こういう時、RaiseTechに通ってて良かったと思う瞬間。)



WSLとは何か?

AWSの勉強をするまで、私はWSLというものを知らなかったのだが、そもそもWSLとは一体ナニモノなのか?


WSL(Windows Subsystem for Linux)は、Windows10やWindows Server上でLinuxを使うことができる仕組みのことらしい。


WSLがないときは、Linuxの仮想マシン環境として導入する必要があった。

でも仮想マシンってメモリも食うし、起動時間も長いし、そもそも別のPCという扱いになるから、ネットワーク経由でないと接続できない。(データのやり取りが非常にもどかしい!)

WSLはWindows OSの上にアプリとしてのっかっているようなイメージなので、コマンドをパイプでつないだりもできるらしい!

つまり、ユーザー側としては、WindowsとLinuxという2つのOS間をシームレスに行き来できるということだ。

WSLはあくまでもWindows OSの上に乗っかっているだけなので、ハードウェアそのものを操作することはできないらしいが、そんなことは正直どうでもいいのである。

※そもそも私はそんな高度なことはしないww(←いや、できないw)


とにかく、もうさ、これまでLinuxとMacは普通に使えるのに、Windowsだから使えないコマンドとか、Rubyとかインストールするときに、Windows用のインストーラとかいちいちやるのが面倒だな!ってずっと思っていたんだけど、それがWSLによって、解消されるのでは?と期待に胸が膨らむ。


今まで、みんながMacを使っているのは、カッコいいとかステータスだと思っていたんだけど、違ってたww(Macユーザーに心から謝罪)


話が逸れたが、さっそくWSLを導入してみようと思う。



WSLを有効化する

WSLはデフォルトは無効になっているので、有効にする必要がある。

Windowsの機能の有効化または無効化からGUI的にONにする方法もあるようだが、コマンドでもできるようなので、コマンドでやってみる。

PS C:\Windows\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.844

イメージのバージョン: 10.0.19042.964

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。


どうやらうまく有効化できた模様。

※PowerShellを管理者権限でコマンド実行しないと怒られる
(´・ω・`)しょぼん



WSL→WSL2にする

WSLには1と2があるらしいので、2に更新する。

Wiki大先生によると、WSL2は1に比べて下記のような特徴がある。

  • 本物のLinuxカーネルを使用する[16]。
  • Linuxカーネルを仮想マシン上で動作させる。
  • Linux側のファイルシステムはNTFS上のディレクトリではなくディスクイメージファイルに格納する。
  • ホストとなるWindowsとは別のIPアドレスを使用する。

本物のLinuxカーネルを使用することで互換性が向上し、仮想マシンを使用することでディスクI/O性能の足かせとなっていたWindowsのI/OスタックをバイパスしたことでディスクI/O性能が向上した。デメリットとして起動に数秒を要することやメモリー・フットプリントの悪化があげられる。


え・・・よく意味が分からん。(理解力w)

より軽く、より早く起動できて、ファイルのアクセスも早くなったけど、データのやり取りはネットワーク経由になったってことなのかな。

結局、内部的にはHyper-Vなの?


まあ、いいや。

よくわかんないけど、WSL2にするお。

こちらもPowerShellのコマンドでできるようなので、コマンドでやる。

PS C:\Windows\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.844

イメージのバージョン: 10.0.19042.964

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。


できたっぽいので、PCを再起動する。



更新プログラムのインストール

WSLのUpdateを実施。

Linuxカーネル更新プログラムパッケージというものらしい。

ダブルクリックでインストールできる。


Next


Finish(早ッ)



WSLの規定バージョンを2に変更する

PowerShellを管理者で、下記コマンドを実行

PS C:\Windows\system32> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください


リンクは、「Linux 用 Windows サブシステムとは」というタイトルで、色々説明してくれている。



Linuxディストリビューションをインストールする

いよいよLinuxのインストール。

MicrosoftStoreからUbuntuを選択(ていうか、MicrosoftStore初めて開いたww)


入手(バージョンは20.04.2 LTSで、450Mくらい)


起動


インストーラが起動するので、Ubuntuのユーザー名とパスワードを設定すればUbuntuが使える状態になる


ここまででWinsows10上でUbuntu(Linux)を使う環境が完成したことになる。



その他お便利設定

Ubuntuのパッケージ管理を更新

Ubuntuのパッケージ管理は、apt-get。

これをアップデートしておく。(色々パッケージ管理種類ありすぎて覚えられない)

sudo apt-get update -y


Ubuntuの設定変更

設定を適宜好きなように変更


zshのインストール

シェルには色々な種類があって、UbuntuのシェルはBash。(シェルについては別途まとめ記事を書こうかな)

Macはzshらしいので、それに合わせて変更する。

sudo apt install zsh -y


zshの起動

インストールが完了したら、そのまま「zsh」と打ち込むとzshが起動できる

初回起動時に設定を聞かれるので、2の推奨設定を選ぶ


zshをデフォルトの設定にする

「chsh」と打ち込む

zshの場所は、/usr/bin/zsh

次にUbuntuを立ち上げたときに、コマンド入力画面が「%」になっていれば、デフォルトがzshになっている。(bashの場合は「$」)


Homebrewのインストール

これ、Windowsでめっちゃ使えたらいいのに!って思ってたコマンドw

MacとかLinuxじゃないと使えなくて、Windowdsユーザーをやめたくなるコマンド。

Homebrewのページに行って、ファイルのアイコンを押すとコマンドがコピーできるので、それをUbuntuのzshに張り付けてEnter

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


Next stepsに次にやることが書かれているので、その通りに実行

一通り実施終わったら、brew doctorコマンドで診断。

~ % brew doctor
Your system is ready to brew.


これで、晴れて念願のHomebrewが使えるように・・・!!!