メモのページ - チラシの裏メモ 3枚目

通信技術や気になった事を黙々とメモし続ける

Amazon Linux 2023をVirtualBoxで動かす

Amazon Linuxとは
Amazon LinuxはAWSが提供するLinuxディストリビューションで、Amazon Linux 2023は2023年3月15日にGA(General Availability:一般公開)され、当記事の作成の段階ではAmazon Linuxの最新バージョンである。AWS界隈ではAL2023という略称が時々使われている。
当記事にて扱っているAmazon Linux 2023はFedoraをベースに開発された。ただしFedoraベースとは言うもののFedoraから独立した独自のリリースおよびサポートライフサイクルとなっており、Amazon Linux 2023とFedoraの間は密接な関係という訳ではない。
Amazon LinuxはAmazon EC2での利用を前提として開発されている事とAWSのツールが最初から導入されている事から、AWS上での利用に適したLinuxディストリビューションとなっている。
※2024年8月20日追記有り
 

vmdkファイルとSeed.isoファイルの入手
以下の2つのリンク先からovaファイルとisoファイルをダウンロードする。
上側のリンク先にてAmazon Linux 2023の最新版のovaファイルをダウンロード。ovaファイルを展開すると中にvmdkファイルが有る。このvmdkファイルをVirtualBoxの仮想HDDとして使用する。
下側のリンク先にてSeed.isoファイルをダウンロード。このisoファイルをVirtualBoxの仮想CD(起動イメージ)として使用する。
https://cdn.amazonlinux.com/al2023/os-images/latest/
https://cdn.amazonlinux.com/os-images/latest/

ダウンロードしたovaファイルを直接ダブルクリックしVirtualBoxに読み込ませて仮想マシンとして登録させる事自体は可能だが、自分の環境ではAmazon Linuxのデプロイが完了せず延々と再起動を繰り返した為、ovaファイルの中にあるvmdkファイルを使用した。
 
 
当方の環境
ホスト機:macOS 14.5 / MacBook Pro 2020 / RAM: 16GB / CPU: Intel Core i5 2.0GHz
Virtualbox:7.0.18 r162988
ゲスト機:Amazon Linux 2023.5.20240708


VirtualBoxの設定
VirtualBoxはバージョン7.0.10を使用。
MacBook側で生成した公開鍵をAmazon Linux側に貼り付けする必要が有る為、シリアルポートの設定が必要である。
Amazon Linuxにシリアル接続する為に、socatをHomebrewでインストールする必要が有る。

[General]
Operating System:Other Linux (64-bit)

[System]
Base Memory:2048MB
Processors:1
Boot Order:Hard Disk
EFI:Enabled
Acceleration:VT-x/AMD-V, Nested Paging, PAE/NX, KVM Paravirtualization

[Display]
Video Memory:16MB
Graphics Controller:VMSVGA
Remote Desktop Server:Disabled
Recording:Disabled

[Storage]
Controller:IDE
IDE Primary Device 0:[Optical Drive] Seed.iso
Controller:SATA
SATA Port 0:al2023-vmware_esx-2023.5.20240708.0-kernel-6.1-x86_64.xfs.gpt-disk1.vmdk

[Audio]
Disabled

[Network]
Adapter 1:Intel PRO/1000 T Server (Bridged Adapter,en0: Wi-Fi)

[USB]
USB Controller:OHCI

Serial Ports
Port Number:COM1
Port Mode:Host Pipe ※Connect to existing pipe/socatのチェックを外す
Path/Address:/tmp/ec2
 

Amazon Linuxのデプロイと初期設定
1.Amazon Linuxにログイン
以前から気になっていたAmazon Linux、お試しで少しの間使ってみる事にした。
VirtualBoxの仮想マシンのスタートアイコンをクリックし、Amazon Linuxを起動させる。
RETBleed: WARNING: Spectre v2 mitigation leaves CPU vulnerable RETBleed attacks, data leaks possible! が出力されたところで暫く止まる事があるが、このまま放っておくとAmazon Linuxの起動は再開される。

起動が完了しログインプロンプトが表示されたら、ユーザ名:ec2-user、パスワード:amazonでログインする。
ここでec2-userアカウントのログインパスワードの変更が求められる為、パスワードを設定する。

Amazon Linux 2023.5.20240708
Kernel 6.1.96-102.177.amzn2023.x86_64 on an z86_64 (-)

amazonlinux login: ec2-user
Password: amazon
You are required to change your password immediately (administrator enforced).
Current password: amazon
New password: 新しいパスワードを入力
Retype new password: 再度入力
[ec2-user@amazonlinux ~]$

 
2.ホスト名の変更
Red Hat系のディストリビューションと同様に、hostnamectl set-hostnameコマンドでホスト名を変更する。
コマンド実行後ログインし直すと先程設定したホスト名がプロンプトに出力される。

[ec2-user@amazonlinux ~]$ sudo hostnamectl set-hostname jpmtkvmsv99
[ec2-user@amazonlinux ~]$ exit

 
3.Timezoneの変更
デフォルト状態ではTimezoneはUTCである為、以下の手順でTime Zoneを日本に変更。
/etc/sysconfig/clockファイルはZONE="UTC"をコメントアウトし、ZONE="Asia/Tokyo"を追記する。

[ec2-user@jpmtkvmsv99 ~]$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
[ec2-user@jpmtkvmsv99 ~]$
[ec2-user@jpmtkvmsv99 ~]$ sudo vi /etc/sysconfig/clock
#ZONE="UTC"
ZONE="Asia/Tokyo"
UTC=true

[ec2-user@jpmtkvmsv99 ~]$ 

 
4.IPアドレスの変更
以下のファイルの内容を編集する事で、外部接続に使用されているインターフェースenp0s3のIPアドレスを静的に設定する事が出来た。
[Network]欄内のDHCPの行をコメントアウトし、AddressとGatewayとDNSの各行に自分の環境に合った値を記載する。[Match]欄内は既存の内容を変えずそのまま使用した。
自分の環境ではインターフェース名はenp0s3だったが、ip add sコマンドを叩く事で確認する事が出来る。

[ec2-user@jpmtkvmsv99 ~]$ sudo vi /etc/systemd/network/10-cloud-init-enp0s3.network
[Match]
MACAddress=08:00:27:45:a0:72
Name=enp0s3

[Network]
#DHCP=ipv4
Address=192.168.3.250/24
Gateway=192.168.3.1
DNS=8.8.8.8

 
設定後、ip add sコマンドを叩きIPアドレスの設定が反映されている事を確認する。

[ec2-user@jpmtkvmsv99 ~]$ ip add s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:45:a0:72 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.250/24 brd 192.168.3.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe45:a072/64 scope link 
       valid_lft forever preferred_lft forever
[ec2-user@jpmtkvmsv99 ~]$ 

 

Amazon Linuxにsshログインする為の準備
1.公開鍵の生成
Amazon Linux 2023は他の多くのUNIXライクなOS等とは異なり、デフォルトでSSH-RSA署名が有効になっていない。よってsshログインするには利用者側で公開鍵および秘密鍵を生成し、公開鍵をAmazon Linux側に配置する必要が有る。

まず最初に、ターミナルを立ち上げてssh-keygenコマンドを打ち、自側(MacBook Pro)にて公開鍵を作成する。
生成された公開鍵(id_rsaファイル)は他のユーザに内容を読まれないよう、アクセス権限を変更する。

apple@macbook ~ % cd .ssh
apple@macbook .ssh % 
apple@macbook .ssh % ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/apple/.ssh/id_ed25519): /Users/apple/.ssh/id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/apple/.ssh/id_rsa
Your public key has been saved in /Users/apple/.ssh/id_rsa.pub
The key fingerprint is:
:
省略
:
apple@macbook .ssh %  
apple@macbook .ssh %  chmod 400 id_rsa

 
2.生成された公開鍵の文字列をauthorized_keysファイルに保存
id_rsa.pubの内容をauthorized_keysファイルに記載する。
今後、当記事の内容を必要とする接続先が追加される毎にauthorized_keysファイルに追記される事となる。
生成されたauthorized_keysのアクセス権を変更する。

apple@macbook .ssh % ls
config			ec2_20230611.pem	id_rsa			known_hosts
config.old		ec2key.pem		id_rsa.pub		known_hosts.old
apple@macbook .ssh % 
apple@macbook .ssh % cat id_rsa.pub >> authorized_keys
apple@macbook .ssh % 
apple@macbook .ssh % ls
authorized_keys		config.old		ec2key.pem		id_rsa.pub		known_hosts.old
config			ec2_20230611.pem	id_rsa			known_hosts
apple@macbook .ssh % 
apple@macbook .ssh % chmod 600 authorized_keys 

 
3.接続先に公開鍵を共有
catコマンドでauthorized_keysファイルの内容を出力し、文字列をコピーする。

apple@macbook .ssh % cat authorized_keys 
ssh-ed25519(長い文字列)apple@jpmtkmbp13.local
apple@macbook .ssh % 

 
Macのターミナルをもう1枚立ち上げ、socatコマンドでAmazon Linuxの仮想シリアルポートを叩き、Amazon Linuxにログインする。
Amazon Linux側の.sshディレクトリに移動しauthorized_keysファイルを作成。
authorized_keysファイルを開き上記でコピーした公開鍵の文字列を貼り付けて、保存する。
保存後、authorized_keysのアクセス権を変更する。
このターミナルはこの後使用しない為、アクセス権の設定変更後は閉じて良い。

apple@macbook ~ % socat /tmp/ec2 stdio,raw,echo=0,escape=0x1a

[ec2-user@jpmtkvmsv99 ~]$ cd .ssh
[ec2-user@jpmtkvmsv99 .ssh]$ 
[ec2-user@jpmtkvmsv99 .ssh]$ vi authorized_keys
(上記でコピーした文字列を貼り付け)

[ec2-user@jpmtkvmsv99 .ssh]$ 
[ec2-user@jpmtkvmsv99 .ssh]$ chmod 600 authorized_keys 

 

Amazon Linuxにsshログイン

最初に立ち上げたターミナルに戻り、Amazon Linuxにsshログインを試みる。
Amazon Linuxの初回起動時に設定したパスワードを入力し、Amazon Linuxにログイン。

apple@macbook .ssh % ssh ec2-user@192.168.3.12
Enter passphrase for key '/Users/apple/.ssh/id_rsa': 
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
Last login: Thu Jul 18 23:17:25 2024
[ec2-user@jpmtkvmsv99 ~]$ 

 
Linuxに有りがちなペンギンではなく、羽ばたく鳥のAAが出力された。
無事にログイン出来た。
 

今回はここまで。
Amazon LinuxをVirtualBoxにデプロイする事自体は他のLinuxと同様、難無く進める事が出来た。また、Amazon Linuxへのsshログインも公開鍵の生成に関する情報はGoogleで検索すれば幾つかヒットする為、それに従って手順を進めれば簡単に終える事が出来た。
Amazon LinuxはRed Hat系のディストリビューションではあるが、RHELやOracle Linuxの現行バージョンやCentOS Stream 9等と比較すると、デプロイ完了直後のAmazon Linux 2023の仮想HDDのサイズは意外と小さく、動作もなんと無くではあるが軽快である。
RHELやFedora等との相違点やSeed.isoの役割など要調査な所が散見される。まだまだ興味が尽きないAmazon Linux、今後も継続して使用していきたい。

ちなみに、以下の画像内のVirtualBoxのAmazon LinuxとClear Linuxのアイコンは自作したものである。
 

 

2024年8月20日追記 Amazon Linux 2023のアップデートについて
Amazon Linuxへのログインの直後、以下が出力される事がある。
これはAmazon Linux 2023のアップデートが有る事を示す。

A newer release of "Amazon Linux" is available.
  Version 2023.5.20240819
Run "/usr/bin/dnf check-release-update" for full release and version update info

 
出力内容に従いdnf check-release-updateコマンドを叩くと、Amazon Linux 2023のアップデートが有る事とアップデートのコマンドとリリースノートのURLが出力される。

[ec2-user@jpmtkvmsv99 ~]$ dnf check-release-update 
WARNING:
  A newer release of "Amazon Linux" is available.

  Available Versions:

  Version 2023.5.20240819:
    Run the following command to upgrade to 2023.5.20240819:

      dnf upgrade --releasever=2023.5.20240819

    Release notes:
     https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.5.20240819.html

[ec2-user@jpmtkvmsv99 ~]$ 

 
今回は、Amazon Linux 2023のバージョン2023.5.20240819へのアップデートが可能である事が分かる。
ここで上記の出力内容に従い、dnf upgrade --releasever=2023.5.20240819コマンドを叩くとアップデート対象のパッケージの一覧が出力され、Is this ok [y/N]: でyキーを叩くとAmazon Linux 2023のアップデートが実行される。

[ec2-user@jpmtkvmsv99 ~]$ sudo dnf upgrade --releasever=2023.5.20240819
Amazon Linux 2023 repository                                                                    3.6 MB/s |  27 MB     00:07    
Last metadata expiration check: 0:00:15 ago on Tue Aug 20 08:09:29 2024.
Dependencies resolved.
:
省略
:
Is this ok [y/N]: y
Downloading Packages:
(1/13): amazon-linux-repo-cdn-2023.5.20240819-0.amzn2023.noarch.rpm
:
省略
:
[ec2-user@jpmtkvmsv99 ~]$

 
アップデートが完了したらcat /etc/os-releaseコマンドを叩き、Amazon Linux 2023のマイナーバージョンが20240819になっている事を確認する。
※当記事作成の段階でAmazon Linux 2023の最新バージョンは2023.5.20240819である。

[ec2-user@jpmtkvmsv99 ~]$ 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.5.20240819"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/"
DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/"
SUPPORT_URL="https://aws.amazon.com/premiumsupport/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
VENDOR_NAME="AWS"
VENDOR_URL="https://aws.amazon.com/"
SUPPORT_END="2028-03-15"
[ec2-user@jpmtkvmsv99 ~]$


おまけ - VirtualBoxのOSアイコンの編集と変更について
自分の場合、アイコンに使用したい画像をpngフォーマットで縦と横共に194ピクセルで保存した後、300%から400%に拡大表示して編集。
64bit版OSを表す「64」の文字は既存のアイコンもしくはGoogleで「virtualbox virtual machine icons」の検索結果で表示されるサイトから拝借し、アイコン内の左上に貼り付ける。
今回作成したアイコンは全体的に黒い為に目立たないが、画像のふちを4ピクセルの黒い枠で囲むと、VirtualBoxのOSアイコンらしさが増す。
編集の完了後、ターミナル(Windowsの場合はコマンドプロンプト)を立ち上げてVirtualBoxの仮マシンのフォルダに移動。作成したアイコンファイルをVirtualBoxの仮想マシンのフォルダに保存。
以下のコマンドを実行し、作成したアイコンをVirtualBoxのトップ画面に反映させる。
この後は、作成したアイコンファイルを削除あるいは別のフォルダ内に保存しても問題は無い。
※VirtualBox VMsフォルダの直下に、アイコンのファイルaws.pngファイルを置いて下記のコマンドを実行している。
コマンドの構文:VBoxManage modifyvm [Amazon linux 2023のフォルダ名] --iconfile [アイコンファイル]

apple@macbook ~ % cd "VirtualBox VMs"
apple@macbook VirtualBox VMs %
apple@macbook VirtualBox VMs % VBoxManage modifyvm "Amazon Linux 2023.5.20240708.0-x86_64" --iconfile aws.png

 
以下は自分が編集したAmazon Linuxのアイコン。AWSのロゴを左半分より少し多めにカットし、縦194ピクセル横194ピクセルで保存したものを使用。ファイルサイズは12KB。
VirtualBoxで元々使用されているOSアイコンは縦と横共に32ピクセルのようだが、自分の環境ではこのサイズで作成するとドット絵のようなギザギザした絵になる為、自分の環境では縦と横共に194ピクセルで作成している。


 

参照サイト
https://aws.amazon.com/jp/mp/solutions/amazonlinux/ Amazon Linux
https://aws.amazon.com/jp/linux/amazon-linux-2023/ Amazon Linux 2023
https://docs.aws.amazon.com/ja_jp/linux/al2023/release-notes/relnotes.html リリースノート
https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/what-is-amazon-linux.html ユーザーガイド
https://www.youtube.com/watch?v=VRqazCsTbZk&t=3s AWS re:Invent 2023 - Amazon Linux 2023 and beyond
https://blog.serverworks.co.jp/al2-vs-al2023 【まとめ】Amazon Linux 2 と Amazon Linux 2023 の違い
https://formulae.brew.sh/formula/socat socat
 
AWS関連の記事
https://debslink.hatenadiary.jp/entry/20180714/1531577869 AWS EC2インスタンスにS3をマウントした際のメモ
https://debslink.hatenadiary.jp/entry/20180804/1533386651 AWS S3バケットの自動マウントのメモ
https://debslink.hatenadiary.jp/entry/20180805/1533400261 AWS EC2インスタンスの自動起動と自動停止
https://debslink.hatenadiary.jp/entry/20180806/1533482143 AWS S3のオブジェクトのライフサイクル設定のメモ
https://debslink.hatenadiary.jp/entry/20180813/1534165966 AWS EC2インスタンスのAMI取得時のメモ
https://debslink.hatenadiary.jp/entry/20240726/1721944989 Amazon Linux 2023にMySQLを導入してみた