amegonの雑なブログ

日常的なものから技術的なものまでメモの雑記

Amazon Linux を Hyper-V で動かしてみる(オンプレ実行)

目的

仕事で Amazon Linux をさわりそう。
オンプレ版があるとの情報を得たので、自習のために自宅環境に設定してみる。

一般的な Linux とのインストール方法の違い

  • 一般的な Linux のインストール
  • Amazon Linux のインストール(というより設定)
    • Amazon から vhd をダウンロード
    • あわせて OS 用の情報ファイル meta-data、user-data を作成し iso を作成
    • 仮想環境で前項で取得した vhd を読み込み設定
    • iso を使用して起動を実施
    • iso に設定された設定で Amazon OS が起動する(一般的な OS インストールは存在しない)

準備した環境

  • 仮想環境:
  • iso 作成環境:
    • Miracle Linux 8.6
      • 前項 一般的な Linux とのインストール方法の違い で記載した iso の作成に使用
      • OS は Hyper-V 上の仮想マシンで動いている

事前準備

Amazon Linux vhd のダウンロード

Amazon Linuxvhd (Hyper-V 用) は以下からダウンロード。

ダウンロードしたら Hyper-V 実行環境に移動して展開しておく。
展開したファイルの保存場所は任意。

meta-data、user-data を取り込んだ iso の作成

以下の手順で作成

Miracle Linux 8.6 にログイン
・iso 作成ツールである genisoimage をインストール

yum install -y genisoimage

・vi コマンドで meta-data ファイルを作成(内容は下記)

local-hostname: test245
# eth0 is the default network interface enabled in the image. You can configure static network settings with an entry like the following.
network-interfaces: |
  auto eth0
  iface eth0 inet static
  address 192.168.3.245
  network 192.168.3.0
  netmask 255.255.255.0
  broadcast 192.168.3.255
  gateway 192.168.3.254

・ここではホスト名を test245、IP アドレスを 192.168.3.245 の固定設定で作成
・vi コマンドで user-data を作成 (内容は下記)

#cloud-config
#vim:syntax=yaml
users:
# A user by the name `ec2-user` is created in the image by default.
  - default
chpasswd:
  list: |
    ec2-user:password
# In the above line, do not add any spaces after 'ec2-user:'.

※ 上記 password と記載されている箇所にパスワードで使用する文字列を設定する

・iso を seed.iso という名前で作成

genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data

・seed.iso をscp 等を用いて仮想マシンを実行する環境に移動する

注意事項:meta-data のパラメータの記載は空行を入れてはいけないみたい

以下のような meta-data を作成して seed.iso を作成したところ、Amazon Linux 起動時にネットワーク設定が反映されなかった。

local-hostname: test245

# local-hostnameに仮想マシンのホスト名を記載する。
# eth0 is the default network interface enabled in the image. You can configure static network settings with an entry like the following.
network-interfaces: |
  auto eth0

# eth0の設定をする。
# eth0をstaticで設定する。
  iface eth0 inet static

# eth0のIPアドレスを設定する。
  address 192.168.3.245

#仮想マシンが所属するネットワークアドレスを設定する。
  network 192.168.3.0

#仮想マシンが所属するサブネットを設定する。
  netmask 255.255.255.0

#仮想マシンが所属するネットワークのブロードキャストを設定する。

  broadcast 192.168.3.255

#仮想マシンが所属するネットワークのデフォルトゲートウェイを設定する。
  gateway 192.168.3.254

network-interfaces の設定にコメントをつけた際に空行をがんがんいれていたのがダメだったのかも。
コメントと空行をなくしたところうまくいったので、そうだと思っておく。
(上記うまく使えなかった情報はうまくいかなかった記録として残しておきます。)

Hyper-VAmazon Linux 使用設定

  • Hyper-V で新規 → 仮想マシンを選択
    • 次へ を選択
    • 名前を入れて次へ
    • 第1世代を選択して次へ
    • 起動メモリを設定して次へ
    • 今回の環境は空きメモリがそんなになかったので 2GB 固定にしました。
    • 使用するネットワークを設定して次へ
    • 既存の仮想ハードディスクを使用する を選択して Amazon からダウンロードしてきた vhd を選択する。
    • 内容を確認して 完了 を押す。

この時点ではまだ仮想マシンを起動してはいけない。
以下の設定を続けて実施。

  • Hyper-V で作成した仮想マシンを選択して設定を選択
  • プロセッサを選択して仮想プロセッサの数を変更する
    • 今回の環境では 2 にしてみた
  • DVD ドライブで メディア - イメージファイル を選択して、先般作成した seed.iso を選択する
  • OK を押して閉じる

これで仮想マシンの起動環境は完了。

仮想マシン起動

Hyper-V仮想マシンを起動する。

ログイン確認

Hyper-V接続 を使用して Amazon Linux にログインする。
(この時点ではパスワードを用いた SSH 接続が有効になっていないので、コンソールログインする。)

SSH の有効化

Amazon Linux にログイン後以下の設定変更で SSH でのパスワード認証を有効化する。

  • /etc/ssh/sshd_config を vi で開く
    • sudo vi /etc/ssh/sshd_config
  • 以下のパラメータを修正して保存
    • 修正前: PasswordAuthentication no
    • 修正後: PasswordAuthentication yes
  • sshd の再起動
    • sudo systemctl restart sshd

上記設定変更後は外部から ssh でログインすることができる。

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@test245 ~]$
[ec2-user@test245 ~]$
[ec2-user@test245 ~]$
[ec2-user@test245 ~]$ free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        113M        1.7G        424K        105M        1.6G
Swap:            0B          0B          0B
[ec2-user@test245 ~]$
[ec2-user@test245 ~]$
[ec2-user@test245 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        948M     0  948M   0% /dev
tmpfs           965M     0  965M   0% /dev/shm
tmpfs           965M  420K  964M   1% /run
tmpfs           965M     0  965M   0% /sys/fs/cgroup
/dev/sda1        25G  1.2G   24G   5% /
tmpfs           193M     0  193M   0% /run/user/1000
[ec2-user@test245 ~]$

ログインしてメモリとディスクの情報を表示してみたところ。
OKそう。