1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Hyper-VでUbuntu Coreを利用する方法

Last updated at Posted at 2023-05-27

目次

Ubuntu Coreとは

IoT向けのセキュアで、軽量なUbuntuです。

パッケージ管理システムとして、旧来のUbuntuで採用されているapt/debではなく、コンテナ化されたパッケージの管理システムであるsnapをメインとして利用します。

また、OSのイメージ自体もsnapによりコンテナ化されており、これによってセキュアな環境を実現しています。

また、コンテナ化されているため、通常の環境とは異なる様々な制限も存在します。

圧縮された仮想ディスクを展開・変換するためのツールの導入

Ubuntu Coreは、KVM(QEMU)用のrawフォーマットの仮想ディスクをxz形式で圧縮したものが公開されています。

そのため、Hyper-Vで利用するためには、xzを展開するツールと、rawフォーマットのディスクをHyper-Vで利用できるvhdxあるいはvhdフォーマットに変換するためのツールが必要です。

今回は、そのツールを導入するための環境として、WSL2Ubuntuを利用します。

Windowsネイティブのツールや、別のLinux環境でツールを用意できる場合、そのツールで、上記の手順を代わりに行うことができるため、この手順は不要です。

WSL2環境のセットアップ

既に、WSL2Ubuntu環境をセットアップ済みの場合、この手順は不要です。

WSL2を有効化しつつ、Ubuntuをインストールをします。

もし、別のディストリビューションや、バージョンを指定してインストールしたい場合は、下記のコマンドに、-d ディストリビューション名(wsl.exe -l -oで出てくる名前)を付け加えてインストールを実行して下さい。

他のディストリビューションを選択した場合、以降のディストリビューションのアップデートやツールのインストールコマンドが異なるため、読み替えて実行して下さい。

wsl --install

上記コマンド実行後、WSL2に必要な機能が有効化されていなかった場合は、PCの再起動が要求されるので、再起動を行います。

その後、WSL2Ubuntuの環境上でのユーザー名とパスワードの設定が始まるので、設定を行います。

WSL2Ubuntuをアップデート

インストールしたWSL2Ubuntuをアップデートします。

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 CoreKVM(QEMU)用のrawフォーマットの仮想ディスクをxz形式で圧縮したものが公開されています。

まずは、ダウンロードしたイメージが存在する場所に、cdコマンド等で移動します。

ダウンロードしたxzアーカイブをQEMUrawフォーマットのディスクイメージに展開します。

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上で行っても構いませんが、WSL2Hyper-V仮想マシンはデフォルトの状態では通信をすることができないため、追加手順が必要になります。

ssh-keygen -t ed25519 -P "" -f 鍵を保存するパス

WSL2環境で作成した場合、以下のようなコマンドで、鍵の権限を変更しておいて下さい。

chmod 600 *

Windows環境では、秘密鍵の権限を、AdministratorsSYSTEMを除き、利用するユーザーのフルコントロールのみ(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マネージャーを開き、右側にある新規を選択、仮想マシンを選択と進みます。

CreateVM.png

仮想マシンの名前を設定し、保存場所は各自の保存場所を選択し、次へを選択します。

VMName.png

第2世代を選択し次へ、メモリ容量を設定し次へを選択します。

2thGen.png

Mem.png

ネットワークの構成画面では、インターネットに接続できるネットワークアダプターが必要です。

Windows 10あるいは、Windows 11の場合、デフォルトで、Default Switchが利用できます。

別途利用したいアダプターがない場合は、これをプルダウンメニューから選択し、次へを選択します。

Network.png

仮想ハードディスクの選択では、既存のディスクを使用するを選択し、仮想ディスクのパスを設定し次へを選択します。

仮想ディスクは、WSL2上ではなく、Windows側のファイルシステムに移動させておいて下さい。

インストールオプションでは、既存の仮想ハードディスクを使用するを選択し、作成した仮想ディスクを選択し、次へを選択します。

Disk.png

完了を選択します。

Confirm.png

仮想マシンの設定変更

完了を選択すると仮想マシンが作成されますが、このままでは起動しないため、設定を変更します。

作成した仮想マシンを選択し、右側の設定を選択するか、仮想マシンを右クリックして設定を選択します。

ファームウェアでブート順位を変更します。

ハードドライブが最上段にない場合は最上段に移動します。

Boot.png

次に、セキュリティで、セキュアブートの設定を変更します。

セキュアブートのテンプレートを、Microsoft WindowsからMicrosoft UEFI 証明機関に変更します。

その他、環境に応じて、必要な設定を変更し、適用を選択し、OKを選択し、仮想マシンの設定を閉じます。

UEFI.png

Ubuntu Coreのセットアップ

上記で、Ubuntu Coreの仮想マシンの起動が可能になります。

起動して、Ubuntu Coreのセットアップを開始します。

起動すると、初期起動時の設定が始まります。

しばらくすると、下記のような画面になるので、Enterを押して、初期設定を行います。

Setup.png

ネットワークとUbuntu SSOアカウントのセットアップを開始します。

[OK]となっているので、Enterを押して続行します。

StartConfigure.png

ネットワークの設定を行います。

DHCPを利用でき、特別な設定を行わない場合は、そのままで問題ないので、[Done]にカーソルを合わせた状態で、Enterを押します。

Default Switchを選択した場合、DHCPしか利用できないため、上記と同じ状態になります。

プライベートスイッチや独自の内部スイッチを利用して、IPアドレスの固定を行う場合は、ここで設定を行ってから、次の設定に進みます。

NetworkConfigure.png

作成した、Ubuntu SSOアカウントのE-mailを入力し、[Done]にカーソルを合わせた状態で、Enterを押します。

英語キーボードとなっているため、@を入力する場合は、Shift+2で入力します。

SSOEmail.png

その後は、コンソールに仮想マシンのIPアドレスが表示され、Ubuntu SSOアカウントに設定したSSH鍵でログインできるようになります。

セットアップ完了後は、コンソールログインはできないため、SSHでログインして操作する必要があります。

Ubuntu Coreに、SSHで接続

作成したSSH鍵で、Ubuntu Coreにログインします。

もし、WSL2上で、鍵を利用できる様にした場合は、デフォルト状態では、WSL2Hyper-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で、sshmdnsを許可します。

sshポートを変更する場合は、通常通り/etc/ssh/sshd_configを編集して、編集したポートをufwで許可して下さい。

ただし、Ubuntu Coreでは通常のUbuntuで利用されるnanoは利用できません。

vimで編集して下さい。

sudo ufw allow mdns

sudo ufw allow ssh
sudo ufw enable

設定が完了したら、仮想マシンを再起動します。

sudo reboot
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?