- 概要
- WSLにて現在実行しているものを一覧出力
- WSLにて特定のイメージをインポートする
- 作った仮想マシンを停止したい場合
- 作った仮想マシンを削除したい場合
- 作った仮想マシンをエクスポートしたい場合
- WSLが利用するメモリ量を制限したい場合
- 一般ユーザの作成
- 仮想マシンに特定のユーザでログインする
- ロケールを調整する
- C言語の環境を作る
- Pythonの環境を作る
- Goの環境を作る
- dotnetの環境を作る
- Java の環境を作る
- JavaでSpring Bootの環境を作る
- Flutterの環境を作る
- PowerShell (pwsh) の環境を作る
- 参考資料
概要
最近は、docker とかで環境構築したりするのがデフォルトになっているかもしれませんが、WSL2とVSCodeの組み合わせもとても便利なので、個人的にはよく利用しています。
WSL関連の記事を見ていると、大抵ストアからUbuntuをインストールしたりして利用するパターンが多いと思いますが、予め rootfs のイメージを用意しておいて wsl にインポートすることも出来ます。(逆にエクスポートも可能です)
このやり方だと、何個も仮想マシンをサクサク入れることができるので、とても楽です。
以下、自分用のメモですが、いつもやっているやり方です。
今回入れるのは、Ubuntu 21.04 のクラウドイメージを使います。サイズも 450MB くらいなので結構軽い。
イメージはここからダウンロード可能です。
ファイル名に wsl.rootfs と付いているものが、WSL向けのイメージとなっています。
WSLにて現在実行しているものを一覧出力
以下のコマンドで表示できます。
> wsl -l -v
WSLにて特定のイメージをインポートする
wsl コマンドで、インポートするには以下のようにコマンドを実行します。
> wsl --import 名前 <イメージファイルが配置される場所> <イメージファイルのパス>
例えば、名前を myenv
で、イメージファイルの配置場所を c:\data\wsl\myenv
、イメージファイルのパスが c:\data\rootfs\hirsute-server-cloudimg-amd64-wsl.rootfs.tar.gz
だとすると以下のようになります。
> wsl --import myenv c:\data\wsl\myenv c:\data\rootfs\hirsute-server-cloudimg-amd64-wsl.rootfs.tar.gz --version 2
作った仮想マシンを停止したい場合
以下のように wsl コマンドを実行すると停止されます。
> wsl -t 名前
作った仮想マシンを削除したい場合
以下のように wsl コマンドを実行すると削除されます。
> wsl --unregister 名前
作った仮想マシンをエクスポートしたい場合
以下のように wsl コマンドを実行するとエクスポートされます。
> wsl --export エクスポートする仮想マシンの名前 <エクスポート先のパス (拡張子は tar で)>
エクスポートしたファイルは、wsl --import
で普通にインポート可能です。
なので、基本設定したファイルをエクスポートしておくと、いつでもインポート可能になります。
WSLが利用するメモリ量を制限したい場合
一般ユーザの作成
上記のやり方で仮想マシンを作ると、root ユーザでログインすることになります。
自分のテスト環境なので構わないという方はそのまま利用すればいいとおもいますが、やっぱり一般ユーザがいいって方は以下でユーザを作成しておきましょう。
# useradd -m -s $(which bash) new-user-name # passwd new-user-name # usermod -G sudo new-user-name
デフォルトでは、今いるWindowsのディレクトリが初期パスとして起動します。
それが嫌な場合は、以下を .bashrc
とかに追加してもいいかもしれません。
# echo 'cd ~' >> /home/new-user-name/.bashrc
で、一旦仮想マシンからログアウトして、以下のようにユーザを指定して入ります。
# exit > wsl -d xxx-env -u new-user-name
仮想マシンに特定のユーザでログインする
デフォルトではユーザを指定しないと root でログインすることになります。
ユーザを指定する場合は以下のようにします。
> wsl -d xxx-env -u user-name
デフォルトユーザを変更したい場合は以下を参照ください。
ロケールを調整する
必要であれば、ロケールを日本語にします。
# 今のロケールを確認 $ locale LANG=C.UTF-8 LANGUAGE= LC_CTYPE="C.UTF-8" LC_NUMERIC="C.UTF-8" LC_TIME="C.UTF-8" LC_COLLATE="C.UTF-8" LC_MONETARY="C.UTF-8" LC_MESSAGES="C.UTF-8" LC_PAPER="C.UTF-8" LC_NAME="C.UTF-8" LC_ADDRESS="C.UTF-8" LC_TELEPHONE="C.UTF-8" LC_MEASUREMENT="C.UTF-8" LC_IDENTIFICATION="C.UTF-8" LC_ALL=
ロケールがデフォルトでは C.UTF-8
になっています。これを ja_JP.UTF8
にするには以下のようにします。
$ sudo apt -y install language-pack-ja $ sudo apt -y install manpages-ja manpages-ja-dev $ sudo update-locale LANG=ja_JP.UTF8
manpageはオマケです。この後、一回WSL2から出て、イメージを再起動しておきます。
$ exit > wsl -t xxxx > wsl -d xxxx
ロケールが変わったかどうかを確認
$ locale LANG=ja_JP.UTF8 LANGUAGE= LC_CTYPE="ja_JP.UTF8" LC_NUMERIC="ja_JP.UTF8" LC_TIME="ja_JP.UTF8" LC_COLLATE="ja_JP.UTF8" LC_MONETARY="ja_JP.UTF8" LC_MESSAGES="ja_JP.UTF8" LC_PAPER="ja_JP.UTF8" LC_NAME="ja_JP.UTF8" LC_ADDRESS="ja_JP.UTF8" LC_TELEPHONE="ja_JP.UTF8" LC_MEASUREMENT="ja_JP.UTF8" LC_IDENTIFICATION="ja_JP.UTF8" LC_ALL=
C言語の環境を作る
最初にインポートして、綺麗な空の環境を用意
> wsl --import c-env c:\data\wsl\c-env c:\data\rootfs\hirsute-server-cloudimg-amd64-wsl.rootfs.tar.gz --version 2
インポートが終わったら、起動
> wsl -d c-env
パッケージの状態を最新に更新
$ apt update -q; apt upgrade -yq
必要なものをインストール
$ apt install -y gcc gdb make cmake valgrind zip unzip
これで、コンパイラなどはインストールされたので、後は VSCode 側で遊ぶ。
$ code .
これで、VSCode がこの仮想マシンに接続した状態で起動するので、後は好きにできる。
Pythonの環境を作る
最初にインポートして、綺麗な空の環境を用意
> wsl --import python-env c:\data\wsl\python-env c:\data\rootfs\hirsute-server-cloudimg-amd64-wsl.rootfs.tar.gz --version 2
インポートが終わったら、起動
> wsl -d python-env
パッケージの状態を最新に更新
$ apt update -q; apt upgrade -yq
python3 は最初から入っているので、それを venv して利用する感じで。
$ python3 Python 3.9.4 (default, Apr 4 2021, 19:38:44) [GCC 10.2.1 20210401] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Ubuntuなので、pipとvenvを別途インストール
$ apt install python3-pip python3-venv make zip unzip
これで、必要なものはインストールされたので、後は VSCode 側で遊ぶ。
$ code .
これで、VSCode がこの仮想マシンに接続した状態で起動するので、後は好きにできる。
Goの環境を作る
最初にインポートして、綺麗な空の環境を用意
> wsl --import golang-env c:\data\wsl\golang-env c:\data\rootfs\hirsute-server-cloudimg-amd64-wsl.rootfs.tar.gz --version 2
インポートが終わったら、起動
> wsl -d golang-env
パッケージの状態を最新に更新
$ apt update -q; apt upgrade -yq
GoのSDKをインストール
$ apt install golang make zip unzip
これで、コンパイラなどはインストールされたので、後は VSCode 側で遊ぶ。
$ code .
これで、VSCode がこの仮想マシンに接続した状態で起動するので、後は好きにできる。
dotnetの環境を作る
最初にインポートして、綺麗な空の環境を用意
> wsl --import dotnet-env c:\data\wsl\dotnet-env c:\data\rootfs\hirsute-server-cloudimg-amd64-wsl.rootfs.tar.gz --version 2
インポートが終わったら、起動
> wsl -d dotnet-env
パッケージの状態を最新に更新
$ apt update -q; apt upgrade -yq
dotnetのSDKをインストール
$ wget https://packages.microsoft.com/config/ubuntu/20.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb $ sudo dpkg -i packages-microsoft-prod.deb $ sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-5.0 $ sudo apt install -y make zip unzip
これで、コンパイラなどはインストールされたので、後は VSCode 側で遊ぶ。
$ code .
これで、VSCode がこの仮想マシンに接続した状態で起動するので、後は好きにできる。
Java の環境を作る
最初にインポートして、綺麗な空の環境を用意
> wsl --import java-env c:\data\wsl\java-env c:\data\rootfs\hirsute-server-cloudimg-amd64-wsl.rootfs.tar.gz --version 2
インポートが終わったら、起動
> wsl -d java-env
一般ユーザの作成とデフォルトユーザの変更
$ useradd -m -s $(which bash) new-user $ passwd new-user $ usermod -G sudo new-user $ cat << EOF > /etc/wsl.conf [user] default=new-user EOF
一旦、仮想マシンを停止し、作った一般ユーザで入り直し。
$ exit > wsl -t java-env > wsl -d java-env
パッケージの状態を最新に更新
$ sudo apt update -q; sudo apt upgrade -yq
OpenJDKをインストール
$ sudo apt install -y zip unzip make $ curl -s "https://get.sdkman.io" | bash $ source "$HOME/.sdkman/bin/sdkman-init.sh" $ sdk install java 11.0.11.hs-adpt
これで、コンパイラなどはインストールされたので、後は VSCode 側で遊ぶ。
$ code .
これで、VSCode がこの仮想マシンに接続した状態で起動するので、後は好きにできる。
JavaでSpring Bootの環境を作る
最初にインポートして、綺麗な空の環境を用意
> wsl --import springboot-env c:\data\wsl\springboot-env c:\data\rootfs\hirsute-server-cloudimg-amd64-wsl.rootfs.tar.gz --version 2
インポートが終わったら、起動
> wsl -d springboot-env
一般ユーザの作成とデフォルトユーザの変更
$ useradd -m -s $(which bash) new-user $ passwd new-user $ usermod -G sudo new-user $ cat << EOF > /etc/wsl.conf [user] default=new-user EOF
一旦、仮想マシンを停止し、作った一般ユーザで入り直し。
$ exit > wsl -t springboot-env > wsl -d springboot-env
パッケージの状態を最新に更新
$ apt update -q; apt upgrade -yq
Spring BootのSDKをインストール
$ apt install -y zip unzip make $ curl -s "https://get.sdkman.io" | bash $ source "$HOME/.sdkman/bin/sdkman-init.sh" $ sdk install java 11.0.11.hs-adpt $ sdk install springboot $ . ~/.sdkman/candidates/springboot/current/shell-completion/bash/spring
これで、コンパイラなどはインストールされたので、後は VSCode 側で遊ぶ。
$ code .
これで、VSCode がこの仮想マシンに接続した状態で起動するので、後は好きにできる。
Flutterの環境を作る
最初にインポートして、綺麗な空の環境を用意
> wsl --import flutter-env c:\data\wsl\flutter-env c:\data\rootfs\hirsute-server-cloudimg-amd64-wsl.rootfs.tar.gz --version 2
インポートが終わったら、起動
> wsl -d flutter-env
一般ユーザの作成とデフォルトユーザの変更
$ useradd -m -s $(which bash) new-user $ passwd new-user $ usermod -G sudo new-user $ cat << EOF > /etc/wsl.conf [user] default=new-user EOF
一旦、仮想マシンを停止し、作った一般ユーザで入り直し。
$ exit > wsl -t flutter-env > wsl -d flutter-env
パッケージの状態を最新に更新
$ apt update -q; apt upgrade -yq
Flutter の動作に必要なパッケージをインストール
$ apt install -y zip unzip libglu1-mesa make
Flutter の SDK をインストール
$ cd /usr/local $ git clone https://github.com/flutter/flutter.git -b stable $ cd bin $ ln -s /usr/local/flutter/bin/dart dart $ ln -s /usr/local/flutter/bin/flutter flutter
dartとflutterがちゃんと動くか確認
$ dart version $ flutter version
Flutter を更新
$ flutter upgrade $ flutter doctor
flutter doctor
すると、デバイスが何も無い状態だけど、web-server では起動して遊べるので、個人的にはこれでオケ。
flutter config で android と ios は無効にしておく
flutter config --enable-web flutter config --no-enable-android flutter config --no-enable-ios
これで準備はオッケイ。後は
$ flutter create app $ cd app $ flutter run -d web-server
とすれば起動する。
後は VSCode 側で遊ぶ。
$ code .
これで、VSCode がこの仮想マシンに接続した状態で起動するので、後は好きにできる。
補足
WSL2の環境でAndroid SDKもセットアップするやり方を書いてくださってる記事がありました。感謝。
PowerShell (pwsh) の環境を作る
最初にインポートして、綺麗な空の環境を用意
> wsl --import pwsh-env c:\data\wsl\pwsh-env c:\data\rootfs\hirsute-server-cloudimg-amd64-wsl.rootfs.tar.gz --version 2
インポートが終わったら、起動
> wsl -d pwsh-env
パッケージの状態を最新に更新
$ apt update -q; apt upgrade -yq
一般ユーザの作成
$ useradd -m -s $(which bash) new-user-name $ passwd new-user-name $ usermod -G sudo new-user-name
一旦ログアウトして、一般ユーザで入り直し。
$ exit > wsl -d pwsh-env -u new-user-name
PowerShell のインストール
$ sudo apt-get update $ sudo apt-get install -y wget apt-transport-https software-properties-common $ wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb $ sudo dpkg -i packages-microsoft-prod.deb $ sudo apt-get update $ sudo add-apt-repository universe $ sudo apt-get install -y powershell $ sudo apt install -y make zip unzip $ rm packages-microsoft-prod.deb $ pwsh PowerShell 7.1.3 Copyright (c) Microsoft Corporation. https://aka.ms/powershell Type 'help' to get help. PS /home/xxx>
参考資料
https://cloud-images.ubuntu.com/hirsute/current/cloud-images.ubuntu.com
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場