31
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ElixirAdvent Calendar 2023

Day 6

(仮想化の仮想化)Windows11にHyper-V経由でWindows11+WSL2をインストールしてElixir, Phoenixの開発環境を量産する

Last updated at Posted at 2023-12-31

こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はWindows11に対してHyper-Vを用いたElixir開発環境を量産する方法をまとめます。

目的

ElixirのElixir, Phoenixを量産したい。
(環境構築の練習がしたい。かつ、万が一何かやらかしてもOSごと壊せばいいやという環境を作りたい(;^ω^))

実行環境

Windows 11(以降ホストOSはHyper-Vを使える前提で進めます)

目標

こちらの記事に沿って、VM内にElixirの開発環境を構築したい。
ホストOS上のVMの中にさらにWSL2(Ubuntu)をインストールするという、「仮想化の仮想化(仮想化の入れ子)」の環境でElixir, Phoenixの環境構築を行いました。

ホストOS上でやること

Windows11をVMとして作成

今回は下記の評価版を使用しました。
スクリーンショット 2023-12-31 100646.png

VMの仮想化を有効化

ホストOSのPowerShellを管理者権限で起動します。

VMの一覧を取得します。

ホストOSのpowershell
Get-VM

Name                State   CPUUsage(%) MemoryAssigned(M) Uptime           Status     Version
----                -----   ----------- ----------------- ------           ------     -------
ubuntu22.04         Off     0           0                 00:00:00         正常稼働中 11.0
Windows 11 開発環境 Running 0           3178              00:10:47.7350000 正常稼働中 11.0

VMの仮想化を有効化します。1

ホストOSのpowershell
Set-VMProcessor -VMName "Windows 11 開発環境" -ExposeVirtualizationExtensions $true

VM上でやること

(Windowsのみ)WSL2のインストール前(要再起動)

VMのPowerShellを管理者権限で起動し下記実施します。

VMのpowershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

(Windowsのみ)WSL2とUbuntu 20.04のインストール

元記事様の手順通りです。

x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージはこの画面が出たらインストール完了です。
image.png

Ubuntu 20.04 LTS起動直後の画面です。
image.png

※VMの仮想化を有効化が完了していないとWSL2を使おうとした際下記のエラーメッセージが出ます。
image.png

(余談)VM上でWSL2起動時にUbuntu20.04がデフォルトで起動する設定

本Windows11(評価版)には最初からUbuntuがインストールされていましたが今回は使いません。
WSL2起動時に新たにインストールしたUbuntu-20.04が起動してほしいので、下記で設定を変更します。

VMのpowershell
wsl --list

Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-20.04
VMのpowershell
wsl --set-default Ubuntu-20.04

デフォルトで起動するOSが上記でインストールしたUbuntu-20.04に切り替わりました!

VMのpowershell
wsl --list

Windows Subsystem for Linux Distributions:
Ubuntu-20.04 (Default)
Ubuntu

WSL上のUbuntu20.04にaliceというユーザー名を作っていたのでそちらでログインしたことが確認できます。

VMのpowershell
wsl

alice@WinDev2311Eval:/mnt/c/Users/User$

VMのWSL2上でやること

ElixirとPhoenixのインストール

元記事様の手順通りです。

(補足)下記エラーが発生したときの対処

mix archive.install hex phx_new

を実行時に下記エラーが発生する場合

** (UndefinedFunctionError) function :crypto.strong_rand_bytes/1 is undefined (module :crypto is not available)

Elixir、Erlangのバージョンを最新のものにしてみましょう

PostgreSQL(DB)のインストール

元記事様の手順通りです。

DB付きPhoenix PJを動かす

元記事様の手順通りです。

VM内のWSL2配下にて、mix phx.serverで起動できました!
image.png

Elixirを最新版(2023年9月現在は1.15.5)に上げる

元記事様の手順通りです。

Phoenixを最新版に上げる

元記事様の手順通りです。

VM内のWSL2配下にて、Phoenix1.7が起動できました(^▽^)/
image.png

~Elixirの国のご案内~

↓Elixirって何ぞや?と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます:laughing::sparkles::sparkles:

↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ!私もエンジニア未経験から学習中です。

We Are The Alchemists, my friends!:bouquet:2
Elixirコミュニティは本当に優しくて温かい人たちばかり!
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。3

  1. 仮想マシンで WSL 2 を実行できますか?
    https://learn.microsoft.com/ja-jp/windows/wsl/faq#can-i-run-wsl-2-in-a-virtual-machine-

  2. @torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。

  3. @kn339264さんの素敵なスライドをお借りしました。Elixirコミュニティはいろんな形で活動中!

31
26
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
31
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?