Ubuntu Core メモ

元ネタ

公式の設定ファイルを使ってやろうとしたが断念。

Ubuntu Core 20以降はconsole-confを無効化できないというエラーが出る。

Error: Error preparing image: cannot support with UC20+ model requested customizations: console-conf disable
sudo ubuntu-image snap --disable-console-conf --snap=nextcloud -O nextcloud-core-22-amd64 ubuntu-core-22-amd64.model

この段落の記載は、Ubuntu Coreに限らず dd形式のイメージファイルで提供されるOSをVMware等で動作確認する際に使えるノウハウです。

https://cdimage.ubuntu.com/ubuntu-core/22/stable/current/

上記から ubuntu-core-22-amd64.img.xz をダウンロードしてvmdkに変換する。 当方はStarWind V2V Converter で変換を行い、

手元の VMware Playerで動作確認してから VMware vCenter Converter StandaloneでESXiに転送した。

qemu-img 等を使ってもいいだろう。

既存のvmdkを使用する設定で仮想マシンを作成し、変換したvmdkを指定する。

OSの種類は「Ubuntu 64ビット」CPUやメモリの割り当ては適当に。2コア、4GBあれば十分じゃね?

Ubuntu Core は Legacy BOOTに対応していないので、仮想マシンのファームウエアをUEFIに変更する。

セキュアブートやTPMはあれば使用されるがなくてもOK

既存vmdkを使用すると仮想マシンの.vmxに絶対パスが記載されトラブルの原因になるので.vmxを編集する。

ide0:0.fileName = "D:¥VM¥nextcloud-core\ubuntu-core-22-amd64.vmdk"

ide0:0.fileName = "ubuntu-core-22-amd64.vmdk"

Ubuntu Core の初回起動時にデータ保存用パーティションの拡大が自動的に行われるため、vmdkの大きさを必要な大きさに変更しておく。

この辺の動きはSDカードに書き込むラズパイ用OSと同じ考えのようだ。

わかりにくい表記だが、[展開]を押すとサイズ指定ダイアログが出るので、必要なサイズを指定する。

なお、この時点ではvmdkファイルがいきなり大きくなったりしないので、多めにしておくのがいいと思われる。

root@ubuntu:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           778M   18M  761M   3% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda3       721M   75M  594M  12% /run/mnt/ubuntu-boot
/dev/sda2       1.2G  397M  785M  34% /boot/efi
/dev/sda5       250G  2.0G  235G   1% /writable
/dev/sda4        26M   44K   23M   1% /var/lib/snapd/save
tmpfs           1.9G     0  1.9G   0% /media
tmpfs           1.9G     0  1.9G   0% /mnt
tmpfs           1.9G   28K  1.9G   1% /tmp
tmpfs           1.9G     0  1.9G   0% /var/lib/sudo

Windows付属のOpenssh.exeで繋がるのにrloginで繋がらなかったためにいろいろ試行錯誤した。

Ubuntu CoreはRLoginデフォルトのSHA1署名で接続できない設定になっていることが判明したので、SHA512に変更することで接続可能になった。

なお、SSH子公開鍵はインストール開始前に登録しておかないとログインできない。

当方のネットワークは一部のポート開放が制限されたネットワークで、SNIで振り分けるリバースプロキシ等の構築などもぶっちゃけ面倒なので、Cloudflare TunnelでWANからアクセスできるようにする。

snap版のパッケージもあるがコンテナ内に閉じ込められており機能が制限されていおり、デーモンの常駐などができない。

Ubuntu Coreは/homeや/etc/systemd/systemが書き込み可能になっているので、Cloudflare公式サイトから cloudflared の実行ファイルを落としてきてchmod +xすれば公式のドキュメント通りに設定することができる。

なおUbuntu Core 22にはwgetやcurlが無いのでscpで送り込む必要がある。

パスワードがあればコンソールログインできる模様。

ネットワークの設定ミスって締め出された時のために設定しておく

sudo passwd <SSHでログイン中のユーザー>

LXDやDockerで使用可能なブリッジアダプタを作成素すためのUbuntu Core 以外の普通のUbuntuでも通用する書き方。

すでにある設定ファイルをコピーして、名前順に並べ替えた際に後にくる名前で作成する。

横着して元のファイルをそのまま編集するとバッティングしてひどいことになるので必ず名前を変える。

おかしくなったら作った設定ファイルを消して再起動すればよし。

99-bridges.yaml
# This is the network config written by 'console-conf'
network:
  ethernets:
    ens33:
      dhcp4: no
  bridges:
    br0:
      interfaces:
        - ens33
      dhcp4: no
      addresses:
        - 192.168.100.223/24
      gateway4: 192.168.100.1
      nameservers:
        addresses:
        - 192.168.100.200
        - 192.168.100.201
        search:
        - junk-labs.net
      parameters:
        forward-delay: 0
        stp: no
      optional: true
  version: 2