Windows11のWSL2にAlmaLinux9をインストールする

# はじめに

Windows11 に WSL2 および AlmaLinux 9 をインストールする手順を記載しています。
本手順では Windows Store を利用せず、PowerShell のみでインストールを行います。

## 環境

[Azure Virtual Machines](https://azure.microsoft.com/ja-jp/products/virtual-machines) に Windows11 Pro 24H2 を D2s_v3 で構築して作業しています。

VM サイズは Nested Virtualization がサポートされているものを選択する必要があります。
参考：https://learn.microsoft.com/en-us/azure/virtual-machines/acu

具体的には D_v3、Ds_v3 などの VM サイズを選択する必要があります。
また、仮想マシン作成時にセキュリティの種類は「Standard」を選択する必要があります。

ローカルの Windows にインストールする場合は、考慮不要です。

# 手順

PowerShell を管理者権限で起動して進めていきます。

## WSL2 のインストール

### WSL2 の有効化

```shell:PowerShell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```

### 仮想マシンプラットフォームの機能を有効化

```shell:PowerShell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```

### Windows の再起動

```shell:PowerShell
Restart-Computer
```

### WSL のアップデート

再起動後に改めて PowerShell を管理者権限で起動してください。

```shell:PowerShell
wsl --update
```

### WSL2 をデフォルトに設定

```shell:PowerShell
wsl --set-default-version 2
```

## AlmaLinux 9 のインストール

### ダウンロード

ご自身のアーキテクチャに合わせた appx をダウンロードしてください、
それなりに時間がかかります。

```shell:Intel/AMD (x86_64)
Invoke-WebRequest -Uri https://wsl.almalinux.org/9/AlmaLinuxOS-9_latest_x64.appx -OutFile AlmaLinuxOS-9.appx -UseBasicParsing
```

```shell:ARM64 (AArch64)
Invoke-WebRequest -Uri https://wsl.almalinux.org/9/AlmaLinuxOS-9_latest_ARM64.appx -OutFile AlmaLinuxOS-9.appx -UseBasicParsing
```

### ZIP 化＆展開

```shell:PowerShell
move .\AlmaLinuxOS-9.appx .\AlmaLinuxOS-9.zip; Expand-Archive .\AlmaLinuxOS-9.zip
```

### インストール

2 箇所ある`C:\wsl\AlmaLinuxOS-9`はインストール先となります。
環境に応じて任意の場所を指定してください。

```shell:PowerShell
cd AlmaLinuxOS-9; mkdir -p 'C:\wsl\AlmaLinuxOS-9'; wsl --import AlmaLinuxOS-9 'C:\wsl\AlmaLinuxOS-9' .\install.tar.gz
```

### 結果確認

```shell:コマンド
wsl -l -v
```

```shell:結果
  NAME             STATE           VERSION
* AlmaLinuxOS-9    Stopped         2
```

## AlmaLinux 9 の初期設定

### WSL の起動

```shell:PowerShell
wsl --distribution AlmaLinuxOS-9
```

### ユーザ、パスワード、グループ設定

各コマンドの`<USER>`は任意のユーザ名を指定してください。

```shell:WSL
adduser <USER> && passwd <USER>
```

```shell:結果
Changing password for user <USER>.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
```

```shell:WSL
usermod -G wheel <USER>
```

# 手順（オプション）

ここからはオプションの手順となります。
ご利用環境に応じて実施してください。

## パッケージの更新とアップグレード

インストール直後の実施をおすすめします。

```shell:WSL
dnf update -y && dnf upgrade -y
```

## /etc/wsl.conf の作成

下記 2 点の設定を行います。

-   systemd の有効化
    -   `systemctl`コマンド利用時に必要となります。
-   デフォルトユーザの変更
    -   WSL にログインした際のデフォルトユーザを変更します。

### 設定ファイルの存在確認

ないことを確認します。

```shell:WSL
ls -la /etc/wsl.conf
```

```shell:WSL
ls: cannot access '/etc/wsl.conf': No such file or directory
```

### 設定ファイルの作成

`<USER>`は任意のユーザ名を指定してください。

```shell:WSL
sudo sh -c 'echo -e "[boot]\nsystemd=true\n\n[user]\ndefault=<USER>" > /etc/wsl.conf'
```

### 設定ファイルの確認

```shell:WSL
cat /etc/wsl.conf
```

```shell:結果
[boot]
systemd=true

[user]
default=<USER>
```

### WSL から切断

WSL から切断し、PowerShell に戻ります。

```shell:WSL
exit
```

### WSL の再起動
```shell:PowerShell
wsl --terminate AlmaLinuxOS-9; wsl --distribution AlmaLinuxOS-9
```
WLSの再起動後は`<USER>`で接続されているはずです。
ホームディレクトリはWindowsのフォルダになってますので、ご注意ください。

以上となります。
おつかれさまでした。