第649回ではIoTデバイス用のプラットフォームとして利用されているUbuntu Coreの独自イメージの作り方を紹介しました。独自イメージを作れるようになると,
任意の管理者を追加できる 「system-user assertion」
第649回でも解説しましたが,
- 任意のsnapパッケージがインストールされたイメージを構築できる
- 初回セットアップをスキップできる
- コンソールから直接ログイン可能に変更できる
- 任意のカーネル・
ブートローダーを利用できる
今回活用するのは二番目のメリットです。
通常配布されているUbuntu Coreはconsole-confによって初回セットアップ
system-user assertionはunmanagedなデバイスにのみ適用可能です。またその設定ファイル
第649回ですでにGPG鍵を~/.snap/
」
$ snapcraft list-keys Name SHA3-384 fingerprint * default <鍵ID>
また,
system-user assertionファイルの作成
実際に初回セットアップで何をしているかというと,
Ubuntu Coreではデバイスがunmanagedなら,auto-import.
」
auto-import.
は次の二種類の情報をまとめた,
- そのアサーションに署名を行ったSnap Store上のユーザー情報
- system-userとして作成するアカウント情報
つまり単に作成したいアカウントを記述するだけでなく,
- ※1
- ちなみにmodel assertionには
「system-userを作れるユーザーをリストアップするフィールド」 である 「system-user-authority」 というフィールドも存在します。指定しなければmodelを作ったユーザーだけがsystem-userを作成できます。詳しくはSystem userのドキュメントを参照してください。
これらをまとめて正しいYAMLファイルを作るのは少し面倒なため,
$ sudo snap install make-system-user --classic
あとは第649回で作成したmodel assertionがあるディレクトリで次のコマンドを実行します。
$ make-system-user \ -b <Snap Storeのaccount-id> \ -m pc \ -u <作成したいユーザー名> \ -e <Ubuntu SSOアカウントのメールアドレス> \ -k default \ -s '<~/.ssh/id_rsa.pubの中身>' Done. You may copy auto-import.assert to a USB stick and insert it into an unmanaged Core system, after which you can log in using the username and password you provided.
account-idはカスタムイメージ作成時と同じSnap Storeから取得した文字列です。model assertionで使ったbrand-idと同じである必要があります。-m pc
」
「作成したいユーザー名」
「-k default
」snapcraft list-keys
で表示される鍵名を指定します。
最後の-s '<~/.ssh/
」-s '鍵1' '鍵2'
」ssh-rsa 鍵ID コメント
」
SSH公開鍵ではなくパスワード認証を行いたいなら,-p 生のパスワード
」
うまくいけばauto-import.
」
USBストレージ付きの仮想マシンの作成
このauto-import.
」
KVM版の場合は適当なディレクトリを作って,
$ mkdir usb $ mv auto-import.assert usb/ $ kvm -smp 2 -m 1500 -netdev user,id=mynet0,hostfwd=tcp::8022-:22 \ -device virtio-net-pci,netdev=mynet0 -nographic \ -drive file=pc/pc.img,format=raw \ -drive file=fat:rw:usb,id=stick,if=none \ -device nec-usb-xhci,id=xhci \ -device usb-storage,bus=xhci.0,drive=stick
第649回のkvmコマンドとの違いは,
カスタムイメージ作成時にconsole-confを無効化していない場合は,Press enter to configure.
」
KVMで自動セットアップが動くイメージとアサーションファイルの作成を確立したら,
このsystem-user assertionとカスタムイメージ,