Ubuntu Core 24をVirtualBoxで動かす

Ubuntu Coreとは、Canonical社が開発した軽量かつセキュアなLinux OSで、IoT(Internet of Things)デバイスや組み込み系システム向けに設計されている。Canonical社によるサポート期間は12年間の長期間(LTS)となっている。Ubuntu ServerやUbuntu Desktopとの違いとして、高モジュール性や高セキュリティや自動アップデート機能などが挙げられる。
以下にUbuntu Coreの主な特徴を挙げる。

1. snapを基盤とするアーキテクチャ
snapとは、アプリケーションやシステムコンポーネントをコンテナ化したパッケージ形式。
依存関係が他と独立しており、互換性問題は最小限に抑えられている。
各スナップは独立して動作し、独自にアップデートされるため、システムの安定性が向上する。
2. トランザクショナルアップデート
アップデートは「トランザクショナル」形式で実行され、失敗した場合は自動的にロールバックされる。
トランザクショナルなアップデートにより、ダウンタイムを最小限に抑え、安全にシステムを更新出来る。
3. 高セキュリティ
各snapはサンドボックス化され、あるsnapがセキュリティ侵害を受けたとしても影響範囲は最小限に留まる。
4. 軽量、且つ高いリソース効率
組み込み系デバイスや低リソースな環境でも軽快に動作するよう最適化されている。
5. IoTとエッジコンピューティングに特化
スマートホームデバイス、産業用IoT、エッジサーバーなど、多岐にわたる用途に対応している。
遠隔管理やデバイスフリート管理機能を提供することで、大規模展開も可能である。


他のLinuxディストリビューションには無いの?
CentOS Atomic HostやFedora Atomic HostやRHEL Atomic Host等が挙げられる。※1
これらは2016年〜2017年に盛り上がっていたと記憶しているが、Fedora Atomic HostはFedora CoreOS(Fedora Coreとは別)となって開発は今も継続している。
しかし、CentOS Atomic HostとRHEL Atomic Hostは既に開発は終了した状態となっている。


当方の環境
今回は以下の環境にてUbuntu Coreを動かしてみた。VirtualBoxで動かす際は、EFIの設定が可能なVirtualBoxバージョン6.1以上の環境が必要である。
ホスト機:macOS 14.7 / MacBook Pro 2020 / RAM: 16GB / CPU: Intel Core i5 2.0GHz
ゲスト機:Ubuntu Core 24 amd64
仮想化環境:Oracle VirtualBox 7.1.4 r165100 (Qt6.5.3)


Ubuntu Core 24のデプロイの下準備
1. Ubuntu SSOのアカウントを作成
Webブラウザを立ち上げて、下記のURLにアクセスする。
新規アカウント作成の場合 I don't have an Ubuntu One account にチェックを入れ、
Please type your email:、Full name、Username、Choose password、Re-type passwordの各欄を入力し
I have read and accept the Ubuntu One terms of service, data privacy policy and Canonical's SSO privacy notice. にチェックを入れ、Create accountをクリックする。
https://login.ubuntu.com/+login
 
2. SSH鍵を作成
Ubuntu Coreにsshでアクセスする端末にてSSH鍵を作成する。
macOS環境ではターミナル(他のターミナルアプリも可)、Windows環境ではコマンドプロンプトにてssh-keygenコマンドを叩く。
自分の環境では以下を実行した。
尚、今回はSSH鍵のファイル名は既存で使用しているSSH鍵と混同しないよう、ubuntu-sso.rsaとした。

hogehoge % ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/apple/.ssh/id_rsa): /Users/apple/.ssh/ubuntu-sso.rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/apple/.ssh/ubuntu-sso.rsa
Your public key has been saved in /Users/apple/.ssh/ubuntu-sso.rsa.pub
The key fingerprint is:
:
省略
:
hogehoge %

 
3. 公開鍵の登録
下記のURLにアクセスし、上記の「1.Ubuntu SSOのアカウントを作成」で作成したアカウントでログインする。
Import new SSH key欄内にあるPublic SSH Key: に上記2.で生成された公開鍵の内容を貼り付けてImport SSH keyをクリックし、公開鍵を登録する。
https://login.ubuntu.com/ssh-keys


 
4. Ubuntu Coreのダウンロード
下記のURLにアクセスし、Ubuntu Coreをダウンロードする。
自分の場合、Ubuntu Coreのバージョン24を使用する為、以下のURLにてubuntu-core-24-amd64.img.xzのファイルをダウンロードした。
https://cdimage.ubuntu.com/ubuntu-core/24/stable/20240719/

ダウンロード後、ubuntu-core-24-amd64.img.xzファイルを展開する。
自分の場合はVirtualBoxの仮想マシンが収容されているディレクトリにて展開した。
ターミナル(Windowsの場合はコマンドプロンプト)にてVirtualBoxの仮想マシンが収容されているディレクトリに移動し、以下を実行する。
KVM形式でRAWフォーマットなファイルである為、VirtualBoxで使用可能な.vdiファイルに変換し、VirtualBoxで動作出来るようUUIDを付与する。

hogehoge % cd "VirtualBox VMs" 
hogehoge VirtualBox VMs % 
hogehoge VirtualBox VMs % VBoxManage convertfromraw ubuntu-core-24-amd64.img ubuntu-core-24-amd64.vdi --format VMDK
Converting from raw image file="ubuntu-core-24-amd64.img" to file="ubuntu-core-24-amd64.vdi"...
Creating dynamic image with size 3879731200 bytes (3700MB)...
hogehoge VirtualBox VMs % 
hogehoge VirtualBox VMs % 
hogehoge VirtualBox VMs % VBoxManage internalcommands sethduuid ubuntu-core-24-amd64.vdi
UUID changed to: 6451a5f4-cf81-4693-ada2-147e972007d1
hogehoge VirtualBox VMs % 

 

VirtualBoxの設定
VirtualBoxはバージョン7.1.4を使用。
VirtualBox環境でUbuntu Coreを動かしたい場合は、EFIを有効にし、Paravirtualization(準仮想化インターフェース)を無効に設定する必要がある。※2
ストレージ設定の際、上記にて生成したUbuntu Core 24の.vdiファイルをVirtualBox VMs/Ubuntu Core-amd64ディレクトリ内に移動させる。

[General]
Name:Ubuntu Core-amd64(任意の文字列でOK)
Operating System:Ubuntu Linux (64-bit)

[System]
Base Memory:1024MB
Processors:1
Boot Order:Hard Disk
EFI:必ず有効にする
PAE/NX:無効
Acceleration:Paravirtualizationを必ず無効にする

[Display]
Video Memory:16MB
Graphics Controller:VMSVGA
Remote Desktop Server:Disabled
Recording:Disabled

[Storage]
Controller:IDE
IDE Primary Device 0:ubuntu-core-24-amd64.vdi

[Audio]
Disabled

[Network]
Adapter 1:Intel PRO/1000 T Server (Bridged Adapter,en0: Wi-Fi)

[USB]
Enable USB Controller:有効
USB 2.0 (OHCI + EHCI) Controller:有効
USBは有効・無効のどちらでも良い

[Serial Ports]
Enable Serial Port:無効

 
Ubuntu Core 24のデプロイ
1. Ubuntu Core 24のインストーラの起動
上記の設定を終えた後、VirtualBoxのスタートボタンをクリックし、Ubuntu Core 24を立ち上げる。


 
2. Ubuntu Core 24のセットアップに進む
Ubuntu Coreの起動が進み、VirtualBoxのコンソールウインドウ内にて Press enter to condifure. が出力されたら、Enterキーを叩いてUbuntu Coreのセットアップに進む。


 
3. Ubuntu Core 24のセットアップの開始
以下の画像に進んだら画面下部の OK が選択されている事を確認しEnterキーを叩き、ネットワーク周りの設定に進む。


 
4. Ubuntu Core 24のネットワーク周りの設定
Network configurationに遷移する。
今回はIPアドレスを静的に設定する為、対象のNICを選択しEnterキーを叩く。
続けて Edit IPv4 を選択、IPv4 Methodは Manual を選択し、Enterキーを叩く。


 
5. IPアドレスの設定
Edit enp0s3 IPv4 configurationの画面に遷移する。
NICの名称は環境によって異なる事がある。自分の環境ではenp0s3。
Subnet、Address、Gateway、Name Servers、Search domains(環境によっては空白)の各欄を埋めて、Saveを選択しEnterキーを叩く。

自分の環境では以下の内容で設定した。
Subnet:192.168.3.0/24
Address:192.168.3.250
Gateway:192.168.3.1
Name Server:8.8.8.8


 
6. 設定内容の確認
Network configurationに戻り、設定したIPアドレスが表示されている事を確認し、画面下部のDoneを選択しEnterキーを叩く。


 
7. Ubuntu Oneアカウントとの紐付け
Profile setupの画面に遷移する。
Email address: 欄にUbuntu Oneで登録したメールアドレスを入力し、画面下部のDoneを選択しEnterキーを叩く。
尚、Ubuntu Coreのインストーラが動いている間はUSキーボードでの文字入力となっている為、日本語キーボード環境の場合、アットマークはShift + 2で入力する。


 
8. Ubuntu Oneアカウントとの紐付け完了
以下の画面に進む。上記にて入力したメールアドレスが登録された事がわかる。
(以下の画像では、メールアドレスの文字列をグレーアウトして見えないようにしている)
画面下部のDoneを選択しEnterキーを叩く。


 
9. Ubuntu Core 24の起動の完了
以下の画面に遷移した段階で、Ubuntu Coreにsshログインが可能な状態となる。


 
10. Ubuntu Core 24にSSHログイン
ターミナル(Windowsの場合はTera TermやPuTTY等)を立ち上げ、sshコマンドでUbuntu CoreにSSHログイン。
sshコマンドに-i オプションを付けて、上記で生成したSSH鍵(当環境ではubuntu-sso.rsa)を指定する。

hogehoge ~ % ssh hogehoge@192.168.3.250 -i /Users/mac/.ssh/ubuntu-sso.rsa

正常にログインが出来たら、以下の画像のようにUbuntu Coreのプロンプトが返ってくる。
Ubuntu Core 24にログイン出来た事で、デプロイ作業は一旦完了となる。


 
 
Ubuntu Coreのインストールの次は何をする?
1. カーネルおよびOSのバージョンの確認
uname -aコマンドを叩くとLinuxカーネルのバージョンは6.8系である事が分かる。
続けてcat /etc/os-releaseコマンドを叩き、Ubuntu Coreのバージョンが24である事を確認。

hogehoge@localhost:~$ uname -a
Linux jpmtkvmsv99 6.8.0-50-generic #51-Ubuntu SMP PREEMPT_DYNAMIC Sat Nov  9 17:58:29 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
hogehoge@localhost:~$
hogehoge@localhost:~$ cat /etc/os-release 
NAME="Ubuntu Core"
VERSION="24"
ID=ubuntu-core
PRETTY_NAME="Ubuntu Core 24"
VERSION_ID="24"
HOME_URL="https://snapcraft.io/"
BUG_REPORT_URL="https://bugs.launchpad.net/snappy/"
hogehoge@localhost:~$

 
2. ホスト名とタイムゾーンと時刻同期の設定
ホスト名はUbuntu ServerやRHEL等と同様に、hostnamectlコマンドで設定する。
タイムゾーンもUbuntu ServerやRHEL等と同様に、timedatectlコマンドで設定する。
設定後、Ubuntu Coreから一旦ログアウトする。

hogehoge@localhost:~$ sudo hostnamectl set-hostname jpmtkvmsv99
hogehoge@localhost:~$ 
hogehoge@localhost:~$ sudo timedatectl set-timezone Asia/Tokyo
hogehoge@localhost:~$ 
hogehoge@localhost:~$ exit

 
一旦Ubuntu Coreからログアウトし再度sshで鍵指定でログインすると、プロンプトは設定したホスト名が反映された状態で出力される。

hogehoge ~ % ssh hogehoge@192.168.3.250 -i /Users/apple/.ssh/ubuntu-sso.rsa
Enter passphrase for key '/Users/apple/.ssh/ubuntu-sso.rsa': 
Welcome to Ubuntu Core 24

* Documentation: https://ubuntu.com/core/docs

This is a pre-built Ubuntu Core image. Pre-built images are ideal for
exploration as you develop your own custom Ubuntu Core image.

To learn how to create your custom Ubuntu Core image, see our guide:

* Getting Started: https://ubuntu.com/core/docs/get-started

In this image, why not create an IoT web-kiosk. First, connect a 
screen, then run: 

   snap install ubuntu-frame wpe-webkit-mir-kiosk
   snap set wpe-webkit-mir-kiosk url=https://ubuntu.com/core

For more ideas, visit:

* First steps: https://ubuntu.com/core/docs/first-steps
Last login: Fri Jan 24 12:55:54 2025 from 192.168.3.8
hogehoge@jpmtkvmsv99:~$ 

 
続いて、時刻参照先のNTPサーバをデフォルト設定のntp.ubuntu.comから国内のntp.jst.mfeed.ad.jpに変更する。
時刻参照先のNTPサーバの変更はntpcontrolというツールで行う為、snapコマンドでntpcontrolパッケージをインストールした。
Ubuntu Coreではパッケージのインストールの際はaptコマンドではなく、snapコマンドを使用する。
NTPサーバの設定後、Ubuntu Coreを一旦再起動させる。

hogehoge@jpmtkvmsv99:~$ snap install ntpcontrol
hogehoge@jpmtkvmsv99:~$ snap connect ntpcontrol:timeserver-control
hogehoge@jpmtkvmsv99:~$ snap set ntpcontrol ntpserver=ntp.jst.mfeed.ad.jp
hogehoge@jpmtkvmsv99:~$ sudo reboot

 
再起動完了後、timedatectlコマンドを叩き、時刻同期が出来ているか確認する。
併せて、設定した時刻参照先に接続出来ている事を確認する。

hogehoge@jpmtkvmsv99:~$ timedatectl
               Local time: Sat 2025-01-24 19:52:53 JST
           Universal time: Sat 2025-01-24 10:52:53 UTC
                 RTC time: Sat 2025-01-24 10:53:08
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
hogehoge@jpmtkvmsv99:~$ 
hogehoge@jpmtkvmsv99:~$ 
hogehoge@jpmtkvmsv99:~$ sudo journalctl | grep systemd-timesyncd
Jan 24 19:51:56 jpmtkvmsv99 systemd[1]: Starting systemd-timesyncd.service - Network Time Synchronization...
Jan 24 19:51:57 jpmtkvmsv99 systemd[1]: Started systemd-timesyncd.service - Network Time Synchronization.
Jan 24 19:52:02 jpmtkvmsv99 systemd-timesyncd[660]: Network configuration changed, trying to establish connection.
Jan 24 19:52:04 jpmtkvmsv99 systemd-timesyncd[660]: Network configuration changed, trying to establish connection.
Jan 24 19:52:05 jpmtkvmsv99 systemd-timesyncd[660]: Contacted time server 210.173.160.87:123 (ntp.jst.mfeed.ad.jp).
Jan 24 19:52:05 jpmtkvmsv99 systemd-timesyncd[660]: Initial clock synchronization to Sat 2025-01-25 19:52:05.233927 JST.

 
3. Vimエディタのインストール
続いて、自分がいつも使用しているエディタVimをインストールすべく、sudo snap install vimコマンドを叩いた。

hogehoge@jpmtkvmsv99:~$ sudo snap install vim
error: snap "vim" not found
hogehoge@jpmtkvmsv99:~$
hogehoge@jpmtkvmsv99:~$

 
vimは無いと言っている。
Ubuntu Coreではvimをはじめ、パッケージの名称がUbuntu ServerやRHEL等と異なっているものが多い。
Ubuntu Coreにおけるvimパッケージの名称を確認すべく、snap find vimコマンドを叩いた。

hogehoge@jpmtkvmsv99:~$ sudo snap find vim
Name                  Version                          Publisher       Notes  Summary
vim-language-server   2.3.1                            alexmurray✪     -      VimScript Language Server
vimix-themes          2020-02-24-15-g426d7e0           gantonayde      -      Vimix GTK and Icon Themes for GTK Snaps
vim-editor            8.2.788                          zilongzhaobur   -      vim, the text editor
vimix                 0.8.4                            bruno-herbelin  -      Video live mixer
vim-deb               0.1                              bugwolf         -      A deb package for vim.
:
省略
:
hogehoge@jpmtkvmsv99:~$

 
いくつか候補が見つかった。
今回はvim-editorをインストールする事にした為、snap install vim-editorコマンドを叩く。

hogehoge@jpmtkvmsv99:~$  sudo snap install vim-editor
error: snap "vim-editor" is not available on stable but is available to install on the following
       channels:

       beta       snap install --beta vim-editor
       edge       snap install --edge vim-editor

       Please be mindful pre-release channels may include features not completely tested or
       implemented. Get more information with 'snap info vim-editor'.
hogehoge@jpmtkvmsv99:~$ 

 
beta版とedge版の2種類が用意されているという。
以下のコマンドを叩き、今回はedge版をインストールする。

hogehoge@jpmtkvmsv99:~$  sudo snap install --edge vim-editor
vim-editor (beta) 8.2.788 from Zilong Zhao (zilongzhaobur) installed
Channel latest/edge for vim-editor is closed; temporarily forwarding to beta.
hogehoge@jpmtkvmsv99:~$ 

 
vim(vim-editor)のインストールが完了したところで、今回はここまで。
Ubuntu CoreはUbuntu ServerやCentOSやRHEL等とは異なり、Ubuntu Core自体をファイルサーバ用途として利用する事を想定した作りになっていないが、DockerやLXDでコンテナ環境を作ってその中でファイルサーバの構築する事は可能なようである。※3
次回はUbuntu Coreのファイルサーバ化の第一弾として、Ubuntu CoreにてDocker環境を構築してみようと思う。
  

※1 毛色が少々異なるが、Wind River LinuxやEMLinuxもある。
※2 Ubuntu Core 18の場合、EFIを無効にしてもVirtualBox 環境で起動出来る。
※3 自アカウントのホームディレクトリをSFTPサーバとして公開する事だったら可能である。

 
参照サイト
https://ubuntu.com/core Ubuntu Core
https://jp.ubuntu.com/blog/canonical-launches-ubuntu-core-24-jp CanonicalがUbuntu Core 24を発表
https://ubuntu.com/core/docs Ubuntu Core Documentation
https://cdimage.ubuntu.com/ubuntu-core/ Ubuntu Coreのダウンロードサイト
https://www.youtube.com/watch?v=F2MJeuGV0Q0 An Introduction to Ubuntu Core 24
https://fedoraproject.org/ja/coreos/ Fedore CoreOS