目次
- 目次
Ubuntu Core
とは- 圧縮された仮想ディスクを展開・変換するためのツールの導入
- Ubuntu SSOアカウントの作成
Ubuntu Core
のイメージをダウンロードHyper-V
で利用できるイメージに変換- 仮想ディスクの拡張
SSH
鍵の作成と登録- 仮想マシンの作成
- 仮想マシンの設定変更
- Ubuntu Coreのセットアップ
Ubuntu Core
に、SSH
で接続- Ubuntu Coreのセットアップ後の設定
Ubuntu Core
とは
IoT
向けのセキュアで、軽量なUbuntu
です。
パッケージ管理システムとして、旧来のUbuntu
で採用されているapt
/deb
ではなく、コンテナ化されたパッケージの管理システムであるsnap
をメインとして利用します。
また、OS
のイメージ自体もsnap
によりコンテナ化されており、これによってセキュアな環境を実現しています。
また、コンテナ化されているため、通常の環境とは異なる様々な制限も存在します。
圧縮された仮想ディスクを展開・変換するためのツールの導入
Ubuntu Core
は、KVM(QEMU)
用のraw
フォーマットの仮想ディスクをxz
形式で圧縮したものが公開されています。
そのため、Hyper-V
で利用するためには、xz
を展開するツールと、raw
フォーマットのディスクをHyper-V
で利用できるvhdx
あるいはvhd
フォーマットに変換するためのツールが必要です。
今回は、そのツールを導入するための環境として、WSL2
のUbuntu
を利用します。
Windows
ネイティブのツールや、別のLinux
環境でツールを用意できる場合、そのツールで、上記の手順を代わりに行うことができるため、この手順は不要です。
WSL2
環境のセットアップ
既に、WSL2
のUbuntu
環境をセットアップ済みの場合、この手順は不要です。
WSL2
を有効化しつつ、Ubuntu
をインストールをします。
もし、別のディストリビューションや、バージョンを指定してインストールしたい場合は、下記のコマンドに、-d ディストリビューション名(wsl.exe -l -oで出てくる名前)
を付け加えてインストールを実行して下さい。
他のディストリビューションを選択した場合、以降のディストリビューションのアップデートやツールのインストールコマンドが異なるため、読み替えて実行して下さい。
wsl --install
上記コマンド実行後、WSL2
に必要な機能が有効化されていなかった場合は、PC
の再起動が要求されるので、再起動を行います。
その後、WSL2
のUbuntu
の環境上でのユーザー名とパスワードの設定が始まるので、設定を行います。
WSL2
のUbuntu
をアップデート
インストールしたWSL2
のUbuntu
をアップデートします。
Ubuntu
上で、下記のコマンドを実行します。
パスワードは、Ubuntu
セットアップ時に設定したものになります。
sudo apt update
sudo apt -y upgrade
sudo apt -y autoremove
sudo apt -y autoclean
圧縮された仮想ディスクを展開・変換するためのツールのインストール
前述した通り、xz
圧縮を展開するためのツールと、raw
形式の仮想ディスクをvhdx
形式に変換するためのツールを導入する必要があります。
xz
圧縮を展開するために、xz-utils
を、仮想ディスクイメージをvhdx
フォーマットに変換するためにqemu-utils
をインストールします。
sudo apt install -y xz-utils qemu-utils
Ubuntu SSOアカウントの作成
下記のリンクから、Ubuntu SSO
アカウントを作成します。
Ubuntu Core
では、Ubuntu SSO
アカウントが必要になります。
Ubuntu SSO
アカウントに、ssh
公開鍵を登録し、そのアカウントと紐付けることで、Ubuntu Core
にログイン可能になるためです。
以下のURLから、アカウントを作成します。
ここで登録したUsername
が、Ubuntu Core
で利用するユーザー名になります。
画面の指示に従って、アカウントをセットアップします。
https://login.ubuntu.com/+login
Ubuntu Core
のイメージをダウンロード
以下のサイトから、Ubuntu Core
のイメージをダウンロードします。
今回は、Ubuntu Core 22
をダウンロードします。
https://cdimage.ubuntu.com/ubuntu-core/
上記のリンクから22
を選択し、安定版を利用するため、stable
を選択します。
この中から、自動テストが行われている最新のcurrentを選択します。
この中から、AMD64(x64)
版であるubuntu-core-22-amd64.img.xzのイメージをダウンロードします。
コマンドラインから実行する場合は、以下の様にしてダウンロードできます。
cmd.exe
あるいは、pwsh
あるいはWSL2
から実行します。
powershell.exe
で実行する場合は、curl
に.exe
をつけて実行して下さい。
curl -fOL https://cdimage.ubuntu.com/ubuntu-core/22/stable/current/ubuntu-core-22-amd64.img.xz
Hyper-V
で利用できるイメージに変換
前述の通り、Ubuntu Core
はKVM(QEMU)
用のraw
フォーマットの仮想ディスクをxz
形式で圧縮したものが公開されています。
まずは、ダウンロードしたイメージが存在する場所に、cd
コマンド等で移動します。
ダウンロードしたxz
アーカイブをQEMU
のraw
フォーマットのディスクイメージに展開します。
unxz ubuntu-core-22-amd64.img.xz
raw
フォーマットからvhdx
フォーマットの仮想ディスクファイルに変換します。
qemu-img convert -f raw -O vhdx ubuntu-core-22-amd64.img ubuntu-core-22-amd64.vhdx
仮想ディスクの拡張
変換後の仮想ディスクの容量は、約4GBです。
用途によっては、このままでも問題ありませんが、今回は64GB
にディスクを拡張します。
Hyper-V
マネージャー->右側のディスクの編集->次へ->拡張するvhdx
ファイルを選択して次へ->拡張を選択して次へ->現在のサイズよりも大きい64GB
と入力し、次へ完了で完了します。
コマンドラインで、実行する場合は、管理者権限のPowerShell
を起動し、ディスクイメージが存在する場所にcd
コマンド等で移動してから、下記のコマンドを実行します。
Resize-VHD .\ubuntu-core-22-amd64.vhdx -SizeBytes 64GB
SSH
鍵の作成と登録
SSH
鍵を作成します。
ターミナルを開き、下記のコマンドを実行します。
鍵を保存したいディレクトリが、存在しない場合は、予めmkdir
コマンド等で作成して下さい。
通常は、ホームディレクトリ(Windows
環境の場合、USERPROFILE
環境変数)以下の.ssh
ディレクトリ内に作成して下さい。
SSH
鍵の作成は、Windows
環境で行ってもWSL2
上で行っても構いませんが、WSL2
とHyper-V
仮想マシンはデフォルトの状態では通信をすることができないため、追加手順が必要になります。
ssh-keygen -t ed25519 -P "" -f 鍵を保存するパス
WSL2
環境で作成した場合、以下のようなコマンドで、鍵の権限を変更しておいて下さい。
chmod 600 *
Windows
環境では、秘密鍵の権限を、Administrators
とSYSTEM
を除き、利用するユーザーのフルコントロールのみ(Users
及びAuthenticated Users
の権限の削除が必要)にする必要があります。
秘密鍵の右クリックメニュー等から、プロパティを選択し、セキュリティタブに移動します。
詳細設定を選択し、継承の無効化を選択します。
継承されたアクセス許可をこのオブジェクトの明示的なアクセス許可に変換します。
を選択します。
Users
及びAuthenticated Users
等の不要な権限を削除します。
もし、自身のユーザーのアクセス権限がない場合は、追加を選択し、プリンシパルの選択を選択します。
自身のユーザー名を入力し、ok
を選択します。
フルコントロールにチェックを入れ、ok
を選択します。
適用を選択し、okを選択すると設定は完了です。
クリップボードに登録する公開鍵をコピーします。
cmd.exe
で実行する場合は、cat
コマンドの代わりにtype
コマンドを利用して下さい。
cat 指定した鍵パス.pub | clip.exe
下記のURL
にアクセスし、テキストボックスに公開鍵をペーストして、Import SSH Key
を選択します。
https://login.ubuntu.com/ssh-keys
以上で、公開鍵の登録は完了です。
仮想マシンの作成
Hyper-V
マネージャーを開き、右側にある新規を選択、仮想マシンを選択と進みます。
仮想マシンの名前を設定し、保存場所は各自の保存場所を選択し、次へを選択します。
第2世代を選択し次へ、メモリ容量を設定し次へを選択します。
ネットワークの構成画面では、インターネットに接続できるネットワークアダプターが必要です。
Windows 10
あるいは、Windows 11
の場合、デフォルトで、Default Switch
が利用できます。
別途利用したいアダプターがない場合は、これをプルダウンメニューから選択し、次へを選択します。
仮想ハードディスクの選択では、既存のディスクを使用するを選択し、仮想ディスクのパスを設定し次へを選択します。
仮想ディスクは、WSL2
上ではなく、Windows
側のファイルシステムに移動させておいて下さい。
インストールオプションでは、既存の仮想ハードディスクを使用する
を選択し、作成した仮想ディスクを選択し、次へを選択します。
完了を選択します。
仮想マシンの設定変更
完了を選択すると仮想マシンが作成されますが、このままでは起動しないため、設定を変更します。
作成した仮想マシンを選択し、右側の設定を選択するか、仮想マシンを右クリックして設定を選択します。
ファームウェアでブート順位を変更します。
ハードドライブが最上段にない場合は最上段に移動します。
次に、セキュリティで、セキュアブートの設定を変更します。
セキュアブートのテンプレートを、Microsoft Windows
からMicrosoft UEFI 証明機関
に変更します。
その他、環境に応じて、必要な設定を変更し、適用
を選択し、OK
を選択し、仮想マシンの設定を閉じます。
Ubuntu Coreのセットアップ
上記で、Ubuntu Core
の仮想マシンの起動が可能になります。
起動して、Ubuntu Core
のセットアップを開始します。
起動すると、初期起動時の設定が始まります。
しばらくすると、下記のような画面になるので、Enter
を押して、初期設定を行います。
ネットワークとUbuntu SSO
アカウントのセットアップを開始します。
[OK]
となっているので、Enter
を押して続行します。
ネットワークの設定を行います。
DHCP
を利用でき、特別な設定を行わない場合は、そのままで問題ないので、[Done]
にカーソルを合わせた状態で、Enter
を押します。
Default Switch
を選択した場合、DHCP
しか利用できないため、上記と同じ状態になります。
プライベートスイッチや独自の内部スイッチを利用して、IPアドレス
の固定を行う場合は、ここで設定を行ってから、次の設定に進みます。
作成した、Ubuntu SSO
アカウントのE-mail
を入力し、[Done]
にカーソルを合わせた状態で、Enter
を押します。
英語キーボードとなっているため、@
を入力する場合は、Shift
+2
で入力します。
その後は、コンソールに仮想マシンのIP
アドレスが表示され、Ubuntu SSO
アカウントに設定したSSH
鍵でログインできるようになります。
セットアップ完了後は、コンソールログインはできないため、SSH
でログインして操作する必要があります。
Ubuntu Core
に、SSH
で接続
作成したSSH
鍵で、Ubuntu Core
にログインします。
もし、WSL2
上で、鍵を利用できる様にした場合は、デフォルト状態では、WSL2
とHyper-V
仮想マシンで、接続できないため、管理者権限のPowerShell
下記のようなコマンドを実行します。
Default Switch
以外を選択した場合は、各自で設定したネットワークアダプター名に変更して下さい。
Get-NetIPInterface | where {$_.InterfaceAlias -eq 'vEthernet (WSL)' -or $_.InterfaceAlias -eq 'vEthernet (Default Switch)'} | Set-NetIPInterface -Forwarding Enabled
ホームディレクトリ(Windows
環境の場合、USERPROFILE
環境変数)以下の.ssh
ディレクトリ内に以下のようなconfig
ファイルを作成します(ディレクトリが存在しない場合は作成して下さい)。
Host sshコマンド実行時に指定する名前
HostName コンソールに表示されているIPアドレス(mdns有効後であればホスト名)
User コンソールに表示されているユーザー名
IdentityFile 秘密鍵ファイルへのパス
Port 22
config
ファイルで設定した名前で、SSH
接続を行います。
ssh configで設定した名前
Ubuntu Coreのセットアップ後の設定
Ubuntu Core
のアップデートを行います。
必要があれば、自動的に再起動されます。
sudo snap refresh
ホスト名を変更します。
sudo hostnamectl set-hostname 設定したいホスト名
ホスト名で、名前解決できる様にmdns
を利用します。
sudo snap install avahi
ファイアウォールとして、ufw
をインストールします。
sudo snap install ufw
ufw
で、ssh
とmdns
を許可します。
ssh
ポートを変更する場合は、通常通り/etc/ssh/sshd_config
を編集して、編集したポートをufw
で許可して下さい。
ただし、Ubuntu Core
では通常のUbuntu
で利用されるnano
は利用できません。
vim
で編集して下さい。
sudo ufw allow mdns
sudo ufw allow ssh
sudo ufw enable
設定が完了したら、仮想マシンを再起動します。
sudo reboot