WSL2を使ってみる その1(Ubuntu 22.04、Node-RED、メモリ制限)

はじめに

 今回はWindows環境でLinuxディストリビューションをインストールできる、WSL(Windows Subsystem for Linux)の環境を構築してみました。

 最近オープンソースのソフトウェアを使おうとすると、Windows環境ではインストールできず、Ubuntu環境だとインストールして実行できることがありました。そこで、WSLを試してみようと考えた次第です。

 デスクトップ環境の構築も試していたのですが、行き詰まったのでまた後日検証する予定です。なお、Windows 10とWindows 11のPCで試しています。

▼以前の記事はこちら

ROS2を使ってみる その1(環境構築、Windows)

はじめに  今回はROS2の環境構築です。何度か挑戦して諦めていたのですが、今度こそちゃんと動かせるようにしてみます。  つい最近参加していたROS Japan UGでは、ROS1…

Unreal Engine 5を使ってみる その5(Ubuntu 22.04.4での環境構築)

はじめに  今回はUbuntu環境にUnreal Engine 5をインストールしてみました。Windows環境でのインストールよりはややこしいのですが、比較的簡単にできました。  Node-RE…

WSL2のセットアップ

 調べていると、インストールしたことが無い場合は簡単にインストールできそうな感じでした。ただし私の場合は一度Dockerで構築したことがあり、中途半端に削除していたのでややこしくなっていました。

 スナップショット、仮想環境の作成などで管理する方法があるようです。今後はこういった方法を導入したほうが良いのかもしれません。

▼『グチャグチャになった「Ubuntu on WSL2」のやり直し方』という名前の記事がありました。グチャグチャになりがちなんでしょうね...

https://qiita.com/PoodleMaster/items/b54db3608c4d343d27c4

インストールしたことが無い場合

 私の環境ではすでにインストールしたことがあったため再現できないのですが、コマンド1つでインストールできるようです。

▼インストールするためのコマンドは、こちらに書かれています。既定ではWSL2がインストールされるようですね。

https://learn.microsoft.com/ja-jp/windows/wsl/basic-commands#unregister-or-uninstall-a-linux-distribution

▼Windows PowerShellを右クリックして、管理者権限で実行します。

▼コマンドはこれだけです。これですんなりインストールできればOKです。

▼他のバージョン、ディストリビューションを利用する場合は、こちらを参考にすると良さそうです。

https://learn.microsoft.com/ja-jp/windows/wsl/install-manual

すでにインストールしたことがある場合

 私の場合、wsl --installを実行してもインストールが始まりませんでした。

▼ヘルプを表示したときのようになりました。

 アプリ自体は削除済みだったので打つ手が無かったのですが、Virtual Machine Platform(仮想マシンプラットフォーム)とWindows Subsystem for Linux(Linux用Windowsサブシステム)の機能を無効化すると、インストールできるようになりました。

▼こちらの記事を参考にしました。削除方法も書かれています。

https://jp.minitool.com/news/uninstall-wsl.html

▼「Windowsの機能の有効化または無効化」で、機能を無効しました。

▼その後再起動しました。

▼再起動後、wsl --installを実行すると、インストールできました。

 さらにパソコンを再起動しました。

▼再起動後にコマンドプロンプトでUbuntuのユーザー名やパスワードを設定しました。Ubuntu 22.04.3が入ったみたいですね。

▼WSLのバージョンも確認しておきました。WSL2が入ったようです。

削除して再インストールしてみる

 これまでの手順で一度構築したのですが、やり直したくなったのでもう一度試してみました。今回はちゃんとアプリケーションを削除しました。

▼再度こちらの記事を参考にしました。

https://jp.minitool.com/news/uninstall-wsl.html

▼Ubuntuは「アプリと機能」から削除しました。Windows Subsystem for Linuxは無かったです。

 この状態でwsl --installを行うと、以下のエラーが出ました。

▼Ubuntuは入っているようでした。

 WSLに登録されているディストリビューションを解除すると、解決しました。

▼以下の記事が参考になりました。

https://qiita.com/insilicomab/items/7d23020206939c821864

https://www.rk-k.com/archives/6873

 wsl -l でディストリビューション名を確認後、以下のコマンドを入力しました。

▼今回のディストリビューション名はUbuntuでした。

▼Ubuntuを起動すると、初期設定が始まりました。

Node-REDをインストールする

 Linux環境ではNode-REDの環境を構築したことはあるのですが、WSL2でも試してみました。

必要なパッケージのインストール

▼以下のコマンドで、Node.jsとnpm、Node-REDがインストールされます。

▼エラーが表示されていました。バージョンによるものですね。

▼バージョンを確認してみると、ここでもエラーが出ていました。

 記事を参考に、新しいバージョンをインストールしてみました。

▼こちらの記事を参考にしました。

https://qiita.com/nouernet/items/d6ad4d5f4f08857644de

▼以下のコマンドを実行しました。

▼コマンドを実行後、バージョンを確認してみると表示されませんでした。

 Raspberry Piのときは再起動していたなと思い、一度コマンドプロンプトを閉じて開き直しました。もう一度バージョンを確認すると表示されました。

▼nodeはv20.13.1、npmは10.5.2でした。むしろバージョンが下がっているのですが、開き直したのが良かったのでしょうか。

 この状態で、node-redと入力するとNode-REDを起動することができました。

Node-REDのポートの変更

 Node-REDを起動できたのはいいのですが、WSLとWindowsのNode-REDでポートが被っていました。

▼どちらもhttp://127.0.0.1:1880になっています。

 この状態だと、Node-REDのエディタにアクセスした際に、どちらか一方だけが表示されるようになります。

 そこで、WSL上のNode-REDのポートを変更しました。setting.jsを編集します。

▼WindowsのエクスプローラーにLinuxの項目があり、その中にUbuntuフォルダがあります。

▼Linux/Ubuntu/home/<ユーザー名>/.node-redフォルダに、setting.jsがあります。このファイルを編集します。

▼ポート番号は1881に変更しました。

▼1881ポートで起動することができました!これでWindowsとUbuntuのNode-REDを同時に起動できます。

WSL2のメモリ使用量を制限する

 WSL2の環境を構築してから、私のノートパソコンの処理が遅くなっているような気がしたので調べてみました。

▼タスクマネージャーで見てみました。タスクバーを右クリックすると開くことができます。

▼「Vmmem」というものがかなりの割合を占めていました。

 Vmmemについて調べてみると、WSL関連のものだそうです。今回はメモリの使用量を制限しました。

▼以下の二つの記事を参考にしました。

https://jp.minitool.com/news/vmmem-high-memory.html

https://helog.jp/windows/vmmem-memory

▼WSLはこちらのコマンドで停止できます。

▼C:\Users\<ユーザー名>\.wslconfigファイルに、以下のように記述しました。

▼タスクマネージャーを見ていると、メモリの使用量が1GB程度に収まっていました。

neofetchを試してみる

 この記事のアイキャッチ画像用にちょうどいいものを調べていたのですが、プロンプトでUbuntuのアイコンが表示されるものがありました。

 neofetchコマンドで、システム情報を表示することができるようです。

▼こちらに他のOSでの実行方法も書かれていました。

https://qiita.com/yoshi_yast/items/74225c73f6e30ede07ea

▼aptでインストール後、neofetchを実行しました。

▼実行してみるとこんな感じ。メモリは965MiBに抑えられていますね。

最後に

 WSL2の環境が構築できたので、Windowsでは動かず、Ubuntuでは動いたソフトウェアを試してみたいなと思っています。私のNode-RED用のノードやソフトウェアが、他の環境でも動くかどうかを検証するのに役立てたいです。

 USBブートでUbuntuの環境を起動するというのも試してみたいところです。全然知識が無いのですが、うっかりデータを全消去しちゃったりしないか心配です。Raspberry Piのように、簡単に切り替えられるのでしょうか。

コメントを残す

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