1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

iPXE経由でAPU/APU2にUbuntu 22.04をインストールする

Last updated at Posted at 2022-05-08

はじめに

PC Engines社製のAPU, APU2はVGA出力がなく、通常はルーター・サーバーなどの用途で使用するためキーボード・マウスも接続せず、必要な場合はシリアルコンソール(RS-232C, D-sub 9pin)経由でアクセスしています。

APU/APU2はPassmark値では1000前後の性能ですが、2GB or 4GBのメモリがあり、自作ルーター・スイッチとしては十分です。

いろいろ試す都度、OSを再インストールするのは大変なので、APU/APU2のiPXE機能を利用して作業を半自動化しています。
またメモリの制限があり、2GB版のAPU/APU2では利用できなかったので、USBメモリ経由での自動インストールにも対応しました。

これまでUbuntu 18.04を導入してから20.04にアップグレードして利用していましたが、22.04がリリースされてしばらく経つので、構成を変更して、22.04が導入できるようにします。

Ubuntu 20.04がリリースされた時点でも検討しましたが、AutoInstallの挙動にあやしい点があったので見送っていました。20.04.4では十分に安定していると思われたので、今回変更に挑戦することにしました。

USBメモリからOSを自動インストールできるのであれば、iPXEは不要な気もしますが、昔から利用していた経緯があるので、実験も兼てiPXE機能を利用していきます。

2GB版 APU/APU2 への対応

2GB版のAPU/APU2にUbuntu 22.04を導入する場合には、USBメモリを利用してOSを導入してください。

References

成果物

iPXEホストとなるAPUを構成するためのプロジェクトファイルをGitHubで公開しています。

使い方自体は、GitHub上のREADME.mdファイルを参照してください。

iPXEホストとなるAPUは2GBメモリ版を想定していますが、iPXE経由でOSを導入する対象のAPU/APU2は4GB版である必要があります。

機器の構成

iPXEホスト側

今回構築するインストールイメージを提供するiPXEサーバーは以下のような構成です。

  • Hardware: APU (CPU: AMD G-T40E, Memory: 2GB, Disk: 128GB, NIC: 1Gbps x3)
  • OS: Ubuntu 22.04 LTS amd64版 (18.04からのバージョンアップ)
  • Software:
    • TFTP, DHCPサーバー (dnsmasq)
    • Webサーバー (nginx)

ホストはOSが導入済みで、ネットワークに接続していることを前提としています。

以前は同じくPC Engines社製のALIXを利用していましたが、256MBのメモリではDebian 11の最低要件を満たすことができません。Debian 10までは256MBメモリもサポートしているのでALIXを引き続き使う事は可能ですが、今後のことを考えて2GBメモリ版のAPUに引っ越すことにしました。

20181002_apu_installer_alix.png

導入対象(APU/APU2)の基本的な構成

SDカードは使用せずに、mSATA接続でSSDを使用しています。

また firmware は現時点の最新にしています。PXE bootの機能が充実しているので、製品購入時のままにすることはおすすめしません。

APU/APU2のFirmwareの更新については下記の記事を参照してください。

基本的な構成

dnsmasqにより、TFTPとDHCPサーバーを構成し、nginxがWebサーバーとして必要なファイルを提供します。

Nginxが提供するファイルについて

数が少ないので、読み込み順は後になりますが、Webサーバーが提供するファイルについて説明します。

  • /app/www/ubuntu-22.04-live-server-amd64.iso
  • /app/www/user-data
  • /app/www/meta-data

ubuntu-22.04-live-server-amd64.iso ファイルはAPU/APU2からダウンロードされ、OSの導入に利用されます。

user-data ファイルは自動インストールに必要な全ての設定が含まれています。

meta-data ファイルは、空ファイルですが、必ず存在する必要があります。

dnsmasqが提供するファイルについて

dnsmasqのTFTP機能はAPU/APU2の起動に必要なカーネルイメージのダウンロードに利用されます。

  • /app/ub2204/pxelinux.0
  • /app/usb2204/ldlinux.c32
  • /app/ub2204/pxelinux.cfg/default
  • /app/ub2204/casper/vmlinuz
  • /app/ub2204/casper/initrd

pxelinux.0 と ldlinux.c32 ファイルはホストの起動に必要なファイルです。

defaultファイルはpxelinux.0が自動的に読み込みます。カーネルを起動するために必要な設定が記述されています。

vmlinuzとinitrdファイルはISOファイルに含まれているファイルを/mnt/iso経由でコピーしています。

dnsmasqの機能について

OS導入対象のAPU/APU2のiPXE機能はfirmwareを最新にしておくと、自動的にDHCP経由でネットワーク接続に必要な情報を取得します。

/etc/dnsmasq.d/ipxe.conf ファイルには、TFTPとDHCPの両方の設定が含まれています。

dnsmasqが持つもう一つの機能であるDNSサーバーが53番ポートを利用しますが、systemd-resolved.service とバッティングするので、dnsmasqを起動する前に削除する必要があります。

Ansibleによる構成

makeコマンドを実行すると、$ ansible-playbook site.yaml が呼び出され、playbooks/ping.yml と playbooks/default.yaml が実行されます。

roles/YasuhiroABE.myfavorite-setting は、自作のファイル配置などもろもろのサーバー設定を自動化するためのタスクを含んでいます。

enp1s0にはインターネットに接続しているネットワークを接続し、OS導入対象のAPU/APU2はenp3s0のNICとスイッチを経由して接続します。

スイッチを利用しない場合、enp3s0はDOWNステートになってしまいます。

このAnsible Playbookにより、追加のファイル配置と、cron-aptによるパッケージの自動更新、locale/timezoneの設定、などの様々な(余計な)設定が構成されます。

APU/APU2にUbuntu 22.04を導入する

まずネットワークケーブルで、enp1s0(シリアル端末側のNIC)とiPXEホストのens3s0に接続されているスイッチを接続します。

Firmwareが最新版になっただけでは、iPXE機能は無効化されているので、電源を投入後、F10キーを押下することでBIOSメニューに入り、"Setup"を選択します。'n'を選択するとネットワークブートが有効になるので、's'を押下し保存して再起動します。

次に、F10キーか 'N' キーを押下するようにメッセージがでるので、'n'か'N'を押下しiPXEモードに入ります。

そこからは自動的にpxelinux.cfg/defaultの内容がロードされインストールが進みます。

以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?