これからはWndowsもARM64アーキテクチャが主流になるのかな?とか考えてWindows Dev Kit 2023を買ってはみたものの、その後もWindowsの主流アーキテクチャはx86_64のままで、よしんばUEFIブートでネイティブにLinuxがブートできるようになるのかな?と思ってもいたのだけど、それも叶わず、ずっと埃を被ったままでした。
そんな時に偶然にも仕事でAWS Graviton(aarch64)なAmazon Linux 2023での開発案件が回ってきて、でも円安物価高の世の中、「ec2のインスタンスは無駄に稼働させておくなよ!」と釘を刺されたので仕方なく?Windows Dev Kit 2023のWindows 11 ProのWSL2環境上にAmazon Linux 2023の開発環境を作ってみました。
※ちなみに普通の?Intel入ってる!なPCのWSL2でも、Amazon AWSからダウンロードして利用するDockerのイメージファイルをx86_64
アーキテクチャ用に入れ替えるだけで同じ方法でAmazon Linux 2023をWSL2で利用可能でした。
WLS2の有効化やUbuntuなどのディストリビューションのインストールはやったことがある前提で、いきなりAmazon Linux 2023のインストールから始めるので、もしWSL2も使ったことがなくてそこから始める人は申し訳ないけど、他の方の記事でWSL2の有効化を済ませてから読んでいただけると…
WSL2はすでに動いている前提で!
Amazon Linux 2023 Dockerイメージのダウンロード
まずはAmazon AWSの公式サイトからAmazon Linux 2023のイメージファイルをダウンロードします。
とはいえ、WSL2用のAmazon Linux 2023の公式なイメージファイルは存在しないので、今回はDocker用のイメージファイルを流用しました。
Amazon AWSのオンプレ用公式イメージ
https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/outside-ec2-download.html
Amazon Linux 2023 Dockerイメージの圧縮形式変換
ダウンロードされたイメージファイルはxz圧縮され得ているけどWSL2はgz圧縮のイメージファイルしか読み込むことができないのでLinuxやmacOS上で圧縮フォーマットの変換を行うようにします。
この際の出力ファイル名はrootfs.tar.gz
とします。
xz -d -c al2023-container-2023.5.20240903.0-arm64.tar.xz | gzip > rootfs.tar.gz
WSL-ToyCのダウンロード
自分でWSL2用の環境を構築すのに便利なツールWSL-ToyCがGitHubで入手可能なのでこれをダウンロードします。
WSL-ToyC
https://github.com/noumia/wsl-toyc/
リリースファイルの場所
https://github.com/noumia/wsl-toyc/releases
WSL-ToyCの展開
GitHubからダウンロードしたwsl-toycのZIPファイルを解凍して全てを展開します。
この際に展開するフォルダはインストールするディストリビューションやプロジェクトの名前に合わせて変更しておくと良いでしょう。
今回はAmazonLinux2023
というフォルダに展開しました。
AmazonLinux2023
というフォルダに展開
Dockerイメージのコピー
圧縮フォーマットの変換をして出来上がったrootfs.tar.gz
ファイルを先ほどwsl-toycを解凍したフォルダにコピーする。
WSL-ToyCのランチャー実行ファイルをリネーム
wsl-toycを解凍したフォルダにあるWSLの起動用アプリlaunch-toyc.exeをインストールするディストリビューションの名前、今回のケースではAmazonLinux2023
にリネームしました。
create-toyc.exeを管理者権限で実行
create-toyc.exe
はWSL-ToyCを展開したフォルダに含まれているRootディスクイメージの圧縮ファイル(rootfs.tar.gz)をWSL2が使用するExt4タイプの仮想ディスクにフォーマット変換し、Windowsターミナル用のWSL2起動プロファイルの登録を行なってくれるツールです。
create-toyc.exe
を実行すると、WSL-ToyCを展開したフォルダの中にWSL2の仮想化環境で利用する仮想ディスクイメージが作成されます。
以上の操作でWSL2のディストリビューション一覧に新しくAmazonLinux2023
が追加されたはずです。
出来上がったAmazon Linux 2023仮想化環境の実行
AmazonLinux2023
を起動するにはWindows Power Shellから以下のようにwsl -d [WSLディストリビューションの名前]
で実行します。
wsl -d AmazonLinux2023
Amazon Linux 2023が起動する際に色々とエラーメッセージが表示されますがとりあえず無視して次の作業に進みます。
ここからは起動したAmazon Linuxでの作業となります。
Amazon Linux 2023が起動した状態ではターミナルのプロンプトが#
(rootユーザーのプロンプト)になっているはずです。
不足しているパッケージをインストール
このままrootユーザーのままで作業を続けることもできなくはないですが、Linuxでは通常は権限を制限した一般ユーザーで作業を行い、必要う最低限の場合だけ権限を昇格して運用することがほとんどでしょう。
とりあえず、その作業のために人ような追加パッケージをいくつかインストールします。
dnf install shadow-utils iproute util-linux-core openssh-clients bind-utils passwd sudo vim procps-ng
一般ユーザーの追加
Amazon Linuxが起動された直後はユーザーはrootユーザー(とシステムユーザー)のみで、一般ユーザーが存在しないので、まずはこれを追加します。
今回のケースでは自分が普段好んで使っているkazu
というユーザー名でユーザーの追加を行いましたが、これは皆さんのお好みで!
useradd kazu
追加した一般ユーザーに管理者権限を与えるための設定を行います
一般ユーザーの権限を一時的に管理者権限まで昇格させる方法としてはsu
コマンドとroot
ユーザーのパスワードを使って一時的にroot
ユーザーとしてログインする方法と、sudo
コマンドと一般ユーザーのパスワードを使い、sudo
コマンドのパラメーターとして与えられたコマンドを管理者権限で実行する方法が一般的に使われますが、ここではAmazon ec2で実行されているAmazon Linuxでも使われるsudo
コマンドを使う方法で設定を行います。
追加した一般ユーザーをグループwheel
に追加
最近のほとんどのディストリビューションでは一般ユーザーをグループwheel
に追加することで、そのユーザーがsudo
コマンドを使えるような設定となっていて、Amazon Linux 2023でもそのような設定がされています。
vim /etc/group
mem:x:8:
kmem:x:9:
wheel:x:10:kazu
cdrom:x:11:
mail:x:12:
ついでにec2でsudoコマンドを使う時と同じようにパスワードの入力なしでsudoコマンドを使えるようにsudoersファイルを修正します。
ここは好みと、仮想マシンを使う環境のセキュリティーの問題なので、状況に応じて変更すれば良いでしょう。
vim /etc/sudoers
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
ここまでの手順が終わったらWindows Power ShellでWSL2を一旦シャットダウンします
wsl --shutdown
ターミナルでのAmazonLinux2023ログインユーザーの変更
Windowsターミナルに自動的に追加されたAmazonLinux2023
のプロファイルでAmazon Linux 2023のWSL2を起動すると、そのままではroot
ユーザーで仮想化環境が起動してしまうので、これを一般ユーザーで起動するように修正を加えます。
Windowsターミナルのタブの右端にあるドロップダウンメニューから「設定」を選びます。
AmazonLinux2023
のコマンドラインのパラメーターに--user [追加した一般ユーザー]
(自分の場合には'kazu')を追加します
あとは設定を保存してターミナルのメニュー(プロファイル)からAmazonLinux2023
を選んでWSL2を起動するとユーザーkazu
でAmazon Linux 2023が起動されます。