[準備] Rock5B + Armbian(noble) で作るkubernetesクラスタ (2)


前記事の続き。UbuntuをインストールしてArmbian(noble)をビルドする手順。

余りパーツを組み合わせてubuntu 22.04をインストールする

以下のパーツを組合せてubuntu 22.04をインストールしarmbianのbuild環境を整える。

ventoyを使ってインストール用USBメモリを作成

これまでOSをインストールする際はOSの公式ページからisoファイルを持ってきてetcherとかrufusとかを使ってブート用USBメモリを作成していた。しかしこの方法だとOSを入れ替えたいと思った時は再度isoをダウンロードしてきてUSBメモリに焼き直さないといけない。地味に面倒。

ということで登場するのが ventoy というもの。これの便利なところは1つのUSBメモリで複数のOSをインストールすることができるところ。ventoyのisoイメージを持ってきてetcherやrufsを使ってUSBメモリに焼きつけるまではOSインストールメディアを作成する時と同じ。この時点では何のOSもインストールできないわけだが、ventoyを書き込んだUSBメモリをPCに差し込み、通常のUSBメモリにファイルを放り込む要領でOSインストール用のisoを放り込んでおくことで、そこにあるisoを切り替えながらインストールすることができる。

つまり、ubuntu 22と24、debianにrockyにmxなど複数のインストール用isoを放り込んでおけば、ventoy をインストールしたUSBメモリからbootした後どのOSをインストールするか選択できるのである。これ便利なので是非試してみてほしい。

今回はarmbianのビルド環境として指定されているubuntu 22.04をインストールした。

ventoyをインストールしたUSBメモリからboot
利用するisoイメージを選択する画面

OSをインストールした後は諸々のupdateを実行する。

apt-get update中

updateの実行コマンドは以下。最後にrebootしておく。

sudo apt-get update
sudo apt-get upgrade -y
reboot

標準インストールならgitもvimも入っているはずなので、とりあえずこれでビルド環境の作成は完了。

armbianのビルド

ここからはarmbianのビルドをやっていく。基本的には公式ページに書いてある通りの手順でOK
https://docs.armbian.com/Developer-Guide_Build-Preparation/

armbianのbuildリポジトリをcloneしてくる

以下コマンドでcloneしてくる

git clone --depth=1 --branch=main https://github.com/armbian/build
cd build

clone後にbuildディレクトリに移動し中身を確認すると以下のようになっているはず。

cloneしてディレクトリを移動

そしてビルドするイメージをカスタマイズするために設定ファイルを書いていく。

armbianのカスタマイズ設定

まずカスタマイズ用の設定とスクリプトを放り込むためのuserpatchesディレクトリを作成し、その配下にbuildオプションを書いていく。

mkdir userpatches
vim userpatches/config-default.conf

config-default.confという名前でファイルを作成しているが、この default 部分は後で使うので覚えておく。書き込む中身は以下。

BOARD="rock-5b"
RELEASE="noble"
BRANCH="vendor"
KERNEL_CONFIGURE="no"
BUILD_DESKTOP="no"
BUILD_MINIMAL="no"
INCLUDE_HOME_DIR="yes"
  • BOARD: Armbianを利用するシングルボードコンピュータの種類を指定する。今回は Rock 5B を使うので rock-5b。

  • RELEASE: ArmbianのベースOSとバージョンを指定する。今回は ubuntu 24.04 を使うので noble。22.04 なら jammy。

  • BRANCH: カーネルとu-bootのブランチを指定する。今回はベンダー(Rock5Bはradxa)が提供するものを利用するためvendor。

  • KERNEL_CONFIGURE: インストール時にカーネルの設定を変更するかどうか。今回は何もしないので no。

  • BUILD_DESKTOP: デスクトップ環境かどうか。今回は no。

  • BUILD_MINIMAL: 最小構成でイメージを作成するかどうか。今回は no。

  • INCLUDE_HOME_DIR: 作成するイメージに /home 配下も含めるかどうか。今回はカスタマイズするので yes。

他にも色々オプションがあるので詳しく知りたい方は公式ページを確認してほしい。

続いてはユーザ設定などをカスタマイズするためシェルスクリプトを作成する。これもconf同様userpatches配下に作成。

vim userpatches/customize-image.sh

書き込む内容は以下のような感じ。

#!/bin/bash

USERNAME=ops

useradd --create-home -u 2001 -G sudo,audio,plugdev,render -s /bin/bash -p "${ENCRYPTED_PASSWD}" ${USERNAME}
mkdir -pv /home/${USERNAME}/.ssh
chmod 700 /home/${USERNAME}/.ssh
cat << _EOT_ >> /home/${USERNAME}/.ssh/authorized_keys
write your ssh public keys.
_EOT_
chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}
cat << _EOT_ >> /etc/ssh/sshd_config.d/00-user.conf
PermitRootLogin no
PasswordAuthentication no
Match Address 192.168.0.0/24
  PasswordAuthentication yes
_EOT_
apt-get update
apt-get upgrade -y
apt-get install git vim -y
systemctl enable ssh.service
rm /root/.not_logged_in_yet
sed -ie 's/--autologin root //' /etc/systemd/system/getty@.service.d/override.conf

opsという名前のユーザを作成し、あらかじめsshの公開鍵を登録しておく。ついでにsshの設定で自宅内からであればパスワード認証でログインできるようにし、sshdが自動起動するよう設定。

パスワード文字列の生成は以下コマンドにて。

apt-get install -y -qq whois
mkpasswd -m SHA-512 --stdin

/root/.not_logged_in_yet というファイルを削除しているのは、このファイルが存在すると初回ログイン時にユーザの作成/パスワード設定を行う初期設定ウィザードが動いてしまう。今回はカスタマイズであらかじめユーザを作成しておくのでウィザードは不要なので削除。

最後にsedで /etc/systemd/system/getty@.service.d/override.conf を修正している。これをしないと root ユーザで自動ログインするようになってしまうので注意。

いざビルド

ここまできたらあとはビルドするだけ。ビルドコマンドは以下。

./compile.sh default

cloneしてきたbuildディレクトリの中に存在するcompile.shにdefaultという引数を渡している。このdefaultという値はカスタマイズの最初に作った config-default.conf の名前からきている。つまりcompile.shに渡した引数に応じて config-${HOGE}.conf を読んでくれるという感じらしい。

最後にここまで並べてきた手順を実行するとどんな感じになるかを動画にしてみたので、記事を読んでもよーわからんという場合は参考にしてほしい。

ひとまずこれでarmbianのカスタムイメージ作成完了。おつかれさまでした。

次回はカスタムイメージをMicroSDカードに焼きつけて必要なソフトウェアをインストールしたり設定をしたり、、という事をやろうかな。

この記事が気に入ったらサポートをしてみませんか?