メインコンテンツまでスキップ

え?!WSL2のホストOSって変えれるの?!じゃあAmazon Linuxにしなくっちゃ!!(ロングバージョン)

· 約7分
moritalous

Amazon Linux 2023大好き!!

手順

  1. Amazon Linux 2023コンテナを起動する

    shell
    docker run amazonlinux:2023
    Unable to find image 'amazonlinux:2023' locally
    2023: Pulling from library/amazonlinux
    91bcc9cfee80: Pull complete
    Digest: sha256:ba9b575c9c9df3b4b7be350adf5db26bd7cee4aa5e826c6b9d0f40a26d002435
    Status: Downloaded newer image for amazonlinux:2023
  2. 起動したコンテナIDを取得する

    shell
    docker ps -lq
    f3ac9bc8339d
  3. コンテナイメージをエクスポートする

    shell
    docker export -o wsl.tar f3ac9bc8339d

    wsl.tarが出力されます。

  4. デスクトップにamazonlinuxフォルダーを作成する

    PowerShell
    mkdir $ENV:USERPROFILE\Desktop\amazonlinux
  5. wsl.taramazonlinuxフォルダーに格納する

  6. WSL2にインポートする

    PowerShell
    wsl --import amazonlinux $ENV:USERPROFILE\Desktop\amazonlinux\ $ENV:USERPROFILE\Desktop\amazonlinux\wsl.tar
    項目設定値説明
    <Distro>amazonlinuxWSL2に登録するディストリビューション名
    <InstallLocation>$ENV:USERPROFILE\Desktop\amazonlinux\ vhdxファイルが作成されるフォルダー
    <FileName>$ENV:USERPROFILE\Desktop\amazonlinux\wsl.tarインポートするイメージ

かんたん!

起動

WSL2でディストリビューションを指定して起動します。

PowerShell
wsl -d amazonlinux

OSの種類を確認します。

shell
cat /etc/os-release
NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
SUPPORT_END="2028-03-01"

Amazon Linux 2023!!

やったぜ

よりAL2023っぽくする

ユーザーはやっぱりec2-userじゃないとね! sudoして使う感じを再現します。

shell
dnf install shadow-utils sudo -y
shell
adduser ec2-user
shell
echo "ec2-user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
shell
cat << EOF >> /etc/wsl.conf
[user]
default=ec2-user
EOF

一度ログアウトしてWSL2を一度シャットダウンします。

PowerShell
wsl --shutdown

再度WSL2にログインするとec2-user

PowerShell
wsl -d amazonlinux

id確認

shell
id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user)

やっほーい!!

おまけ:例のやつを表示させる

例のアレ、出したいですよね。(アレですよ、アレ)

shell
sudo dnf install update-motd

アレとは?

shell
cat /lib/motd.d/30-banner
   ,     #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'

!!

こうしておけばログインするたびに表示できます!

echo 'cat /lib/motd.d/30-banner' >> ~/.bashrc

VSCodeのWSL拡張で表示できるようにする

VSCodeのWSL拡張で開くにはいくつかパッケージが不足していますので追加します。

shell
sudo dnf install tar findutils

これでWSL拡張でアクセスできるようになりました。

image.png

あれこれ追加

pingしたい

shell
sudo dnf install iputils
sudo chmod 4755 /bin/ping

ipしたい

shell
sudo dnf install iproute

wgetしたい

shell
sudo dnf install wget

whichしたい

shell
sudo dnf install which

bashに色をつけたい

shell
sudo dnf install coreutils-common

bashの補完をしたい

shell
sudo dnf install bash-completion

topしたい

shell
sudo dnf install procps-ng

gitしたい

shell
sudo dnf install git

sudo wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash \
-O /etc/bash_completion.d/git-completion.sh

sudo wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh \
-O /etc/bash_completion.d/git-prompt.sh

echo "PROMPT_COMMAND='__git_ps1 \"\u@\h:\w\" \"\\\$ \"'" >> ~/.bashrc
echo "PS1='[\u@\h \W$\(__git_ps1 \" \(%s\)\"\)]\$ '" >> ~/.bashrc

Systemdしたい

shell
sudo dnf install systemd

/etc/wsl.confに追記してWSL再起動します。

/etc/wsl.conf
[boot]
systemd=true

[user]
default=ec2-user

Dockerしたい

shell
sudo dnf install docker

sudo usermod -aG docker $USER

sudo wget https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker \
-O /etc/bash_completion.d/docker-completion.sh

sudo systemctl enable docker
sudo systemctl start docker

ログドライバーを変える

/etc/docker/daemon.json
{
"log-driver": "local"
}

Docker Composeしたい

shell
wget https://download.docker.com/linux/fedora/36/x86_64/stable/Packages/docker-compose-plugin-2.6.0-3.fc36.x86_64.rpm
sudo rpm -ivh docker-compose-plugin-2.6.0-3.fc36.x86_64.rpm

AWS関連のツールを追加

AWS CLI v2

標準で提供されています。

shell
sudo dnf install awscli-2

コマンド補完を有効化

shell
echo "complete -C '/usr/bin/aws_completer' aws" >> ~/.bashrc
source ~/.bashrc

最新バージョンが必要な場合は手動でインストールしましょう。

shell
pushd /tmp
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
popd

コマンド補完を有効化(手動インストールの場合)

shell
echo "complete -C '/usr/local/bin/aws_completer' aws" >> ~/.bashrc
source ~/.bashrc

AWS SAM CLI

手動でインストールします

shell
pushd /tmp
curl -L "https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip" -o aws-sam-cli-linux-x86_64.zip
unzip aws-sam-cli-linux-x86_64.zip -d sam-installation
sudo ./sam-installation/install
popd

AWS CDK

事前にNode.jsをインストールする必要があります。

shell
sudo dnf install nodejs

CDKをインストールします

shell
sudo npm install -g aws-cdk

Amplify CLI

手動でインストールします

shell
sudo npm install -g @aws-amplify/cli

パッケージを更新する方法

Amazon Linux 2023はdnf updateコマンドでは最新化できるわけではありません。

shell
dnf check-update
Last metadata expiration check: 0:37:37 ago on Fri Jun 16 20:21:24 2023.

最新にしたい場合は、releaseverを明示的に指定する必要があります。

shell
dnf check-update --releasever=latest
Amazon Linux 2023 repository            10 MB/s |  14 MB     00:01    
Last metadata expiration check: 0:00:04 ago on Fri Jun 16 20:58:03 2023.

amazon-linux-repo-cdn.noarch 2023.0.20230614-0.amzn2023 amazonlinux
gnupg2-minimal.x86_64 2.3.7-1.amzn2023.0.4 amazonlinux
gnutls.x86_64 3.8.0-375.amzn2023.0.1 amazonlinux
runc.x86_64 1.1.5-1.amzn2023.0.1 amazonlinux
system-release.noarch 2023.0.20230614-0.amzn2023 amazonlinux
wget.x86_64 1.21.3-1.amzn2023.0.3 amazonlinux
shell
sudo dnf update --releasever=latest
Last metadata expiration check: 0:52:04 ago on Fri Jun 16 20:04:12 2023.
Dependencies resolved.
Nothing to do.
Complete!
shell
sudo dnf update
Last metadata expiration check: 0:52:04 ago on Fri Jun 16 20:04:12 2023.
Dependencies resolved.
Nothing to do.
Complete!
shell
sudo dnf update --releasever=latest
Amazon Linux 2023 repository            12 MB/s |  14 MB     00:01    
Last metadata expiration check: 0:00:04 ago on Fri Jun 16 20:59:40 2023.
Dependencies resolved.
=======================================================================
Package Arch Version Repository Size
=======================================================================
Upgrading:
amazon-linux-repo-cdn
noarch 2023.0.20230614-0.amzn2023 amazonlinux 18 k
gnupg2-minimal x86_64 2.3.7-1.amzn2023.0.4 amazonlinux 421 k
gnutls x86_64 3.8.0-375.amzn2023.0.1 amazonlinux 1.1 M
runc x86_64 1.1.5-1.amzn2023.0.1 amazonlinux 3.1 M
system-release noarch 2023.0.20230614-0.amzn2023 amazonlinux 29 k
wget x86_64 1.21.3-1.amzn2023.0.3 amazonlinux 780 k

Transaction Summary
=======================================================================
Upgrade 6 Packages

Total download size: 5.4 M

さっきwgetインストールしたばかりですが、もう最新版が出てますね。 これはインストール時点で最新のパッケージが導入されるわけではなく、OSのバージョンにあったバージョンがインストールされるということです。


参考

https://learn.microsoft.com/ja-jp/windows/wsl/use-custom-distro

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/install-sam-cli.html

https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/getting_started.html