4
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 3 years have passed since last update.

FreeBSDAdvent Calendar 2021

Day 18

Ubuntu + Xen 仮想マシン環境に FreeBSD をインストールする

Last updated at Posted at 2021-12-17

はじめに

Ubuntu 20.04 (LTS) Desktop に Xen をインストールして仮想マシン環境を構築し、その仮想マシン上で FreeBSD をインストールする手順を説明します。

Ubuntu のインストール

空いているパソコンなどに Ubuntu 20.04 Desktop をインストールしてください。

  • FreeBSD の仮想マシンを作成する際に virt viewer という GUI のアプリケーションを使用するので、Ubuntu の Desktop 環境を用意してください。
  • 現時点での Ubuntu の最新版は 21.10 ですが、LTS (Long Time Support) の 20.04 を使用しました。
    • Ubuntu 21.10 では試していないので、20.04 の使用をお勧めします。

Xen のインストール

Ubuntu にログインし terminal を起動し、下記のコマンドを実行して Ubuntu に Xen をインストールしてください。

$ sudo apt install xen-hypervisor

Xen のインストールが終了したら、Ubuntu を再起動してくださ。

$ sudo reboot

Ubuntu 再起動後の確認

Ubuntu の再起動が完了したら、再びログインして terminal を起動し下記のコマンドを実行してください。

$ sudo xl list
Name                                        ID   Mem VCPUs	State	Time(s)
Domain-0                                     0 15690    12     r-----      62.9
$ 

上記の実行例のように「Domain-0」と表示されていれば、Xen が正しく動作しています。

  • xl list コマンドがエラーになるなどの場合には、Xen が正しく動作していないかもしれません。
  • VirtualBox など、他の仮想マシン環境がインストールされている Ubuntu に Xen をインストールすると正しく動作しないかもしれません。
    • このような場合は、別のマシンなどに Ubuntu をインストールしなおした後に Xen をインストールしてください。

再起動後の設定

下記のコマンドを実行して、仮想マシンの操作に使用するコマンドをインストールしてください。

sudo apt install libvirt-daemon bridge-utils virtinst libvirt-daemon-system

FreeBSD の ISO イメージの取得

Ubuntu 上の terminal で下記のコマンドを実行し、FreeBSD の ISO イメージを取得します。

  • 以下の例では、ホームディレクトリに tmp というディレクトリを作成し、各作業を tmp ディレクトリで実行しています。
$ cd
$ mkdir tmp
$ cd tmp
$ wget https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/13.0/CHECKSUM.SHA512-FreeBSD-13.0-RELEASE-amd64
$ wget https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/13.0/FreeBSD-13.0-RELEASE-amd64-disc1.iso
$ sha512sum -c CHECKSUM.SHA512-FreeBSD-13.0-RELEASE-amd64
<略>
FreeBSD-13.0-RELEASE-amd64-disc1.iso: OK
<略>
$ 

上記のように、「取得した ISO イメージ名: OK」と表示されれば、ISO イメージは正しく取得されています。

  • CHECKSUM.SHA512-FreeBSD-13.0-RELEASE-amd64 ファイルには他のファイルの情報も書き込まれているので、取得した ISO イメージ以外のファイルに関して下記のエラーが表示されますが、これは無視してください。
sha512sum: FreeBSD-13.0-RELEASE-amd64-bootonly.iso.xz: No such file or directory
FreeBSD-13.0-RELEASE-amd64-bootonly.iso.xz: FAILED open or read

FreeBSD 仮想マシンの作成

下記のコマンドを実行して、FreeBSD の仮想マシンを作成および起動します。

$ sudo virt-install \
--name=freebsd130 \
--memory=2048,maxmemory=4096 \
--vcpus=2,maxvcpus=4 \
--cpu host \
--os-variant=freebsd12.0 \ 
--cdrom=/home/asou/tmp/FreeBSD-13.0-RELEASE-amd64-disc1.iso \
--network=bridge=virbr0,model=virtio \
--graphics=vnc \
--disk path=/var/lib/libvirt/images/freebsd130.qcow2,size=8,bus=virtio,format=qcow

上記の virt-install コマンドを実行すると画面上に新しいウィンドウ「virt viewer」が表示されます。

  • 以降の FreeBSD のインストール操作は、この「virt viewer」で実行します。
    virt-viewer-001-boot.png

FreeBSD のインストール

上記の画面が表示されたのち、しばらくすると FreeBSD のインストーラーの画面が表示されます。
virt-viewer-0011-installer.png

FreeBSD のインストールに関しては、Install FreeBSD の「インストール手順」で解説されているので、そちらを参照してください。

ただし、実際には以下で説明する画面以外では、デフォルトで選択されている「Yes」あるいは「OK」などのまま Enter キーを押下すればよいはずです。

  • インストール中には以下で説明する画面も表示されます。
  • 画面数が多いので、特に説明が必要と思われる画面のみを掲載します。
  • Install FreeBSD の「インストール手順」には全ての画面を掲載しています。

ホスト名の入力

virt-viewer-002-hostname.png
仮想マシン上で動作する FreeBSD のホスト名を入力してください。

ドメイン名の入力

virt-viewer-004-domain.png
ネットワークのドメイン名 (example.co.jp など) を入力してください。取り敢えず「my.domain」のようなものを指定してもよいです。

インストール先の HDD の選択

virt-viewer-005-zfsSelectHDD.png
インストール先 (ZFS ファイルシステムで初期化する HDD) を選択してください。前述の virt-install コマンドを使用した場合には、一つの HDD が表示されているので、スペースキーを押してその HDD を選択して ([ ] の表示が [*] に変わります) Enter キーを押してください。

ZFS ファイルシステムによる初期化の確認

virt-viewer-006-zfsConfirm.png
HDD を初期化する旨の確認メッセージが表示されます。デフォルトでは「NO」が選択されているので、矢印キーあるいは TAB キーで「YES」を選択して HDD の初期化を開始します。

root パスワードの設定

FreeBSD では Ubuntu (sudo コマンドを使用する) とは異なり、初期状態では su コマンドを使用してスーパーユーザーの権限を取得するようになっています。
virt-viewer-007-rootPassword.png
インストール終了後、スーパーユーザー権限で下記のコマンドを実行して sudo コマンドをインストールすることができます。

$ su
Password: (root のパスワードを入力します)
# pkg install sudo
# visudo (sudo コマンドの設定ファイルを編集します)
# exit

以降は、Ubuntu と同様に sudo コマンドを使用できます。

$ sudo sh
[sudo] password for USERNAME: (自分のアカウントのパスワードを入力します)
# 
![virt-viewer-0080-timeZone.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/915655/ca3e6d01-1f3a-0ea2-5415-424c0befa971.png)

IPv6 の設定の無効化

virt-viewer-003-ipv6.png
前述の virt-install コマンドで起動した仮想マシンでは IPv6 が使用できないようなので、「Would you like to configure IPv6 for this interface?」に対しては、矢印キーあるいは TAB キーで「No」を選択してから Enter キーを押してください。

タイムゾーンの設定

virt-viewer-0080-timeZone.png
virt-viewer-008-timeZone.png
タイムゾーンを設定します。
BIOS の時計が日本時間であれば、デフォルトの「UTC」のまま Enter キーを押してください。BIOS の時計が UTC の場合には、「Asia」を選択して Enter キーを押してから「Japan」を選択して Enter キーを押してください。

一般ユーザーの登録

virt-viewer-009-addUser.png
virt-viewer-010-addUser.png
一般ユーザーの登録を行います。
下記の画面では、「Username: yamada」を登録しています。
「Login group is yamada. Invite yamada into other group? []: 」に対しては wheel を指定してください。これを指定しないと、su コマンドを使用してスーパーユーザーの権限を取得できません。

以降の設定

virt-viewer-011-finalConfiguratrion.png
「Final Configuration」画面に対しては、デフォルトの「OK」のまま Enter キーを押してください。
この後、しばらく画面に変化がありませんが、数分後に下記の「Macual Configuraion」画面が表示されます。
virt-viewer-00111-manualConfiguration.png
デフォルトの「No」のまま Enter キーを押してください。

virt-viewer-012-reboot.png
「Complete」画面に対しては、デフォルトの「Reboot」のまま Enter キーを押してください。

FreeBSD が再起動されます。

再起動後の画面

virt-viewer-001-boot.png
ISO イメージから起動した時と同様に、FreeBSD の boot loader の画面が表示された後、
virt-viewer-013-smMta.png
このような画面が表示されて数分経過したのちに、以下のように「ログインプロンプト (login: )」が表示されます。
virt-viewer-014-login.png
前述の「一般ユーザーの登録」で登録した Username と Password を指定してログインします。

shutdown

下記のコマンドを実行して shutdown します。

$ su
Password: (root のパスワード)
# shutdown -p now

shutdown コマンドに渡す第一引数の「-p」には 小文字 の「p」を指定します。

pkg install sudo を実行して sudo コマンドをインストール済みであれば、下記のように sudo コマンドを使用してもよいです。

$ sudo shutdown -p now

Ubuntu 上で仮想マシンを操作するコマンド

virt-install を使用して仮想マシンの作成とインストールを行なっている最中や、インストール終了後に FreeBSD を再起動 (Reboot) した後で

  • 仮想マシンの状態を知りたい。
  • 仮想マシンを停止したい。
  • 仮想マシンを削除したい。
    といったことが必要になるかもしれません。

その際に使用する virsh コマンドの解説を行います。

  • 細かい解説は省いて、コマンドの使用例のみを掲載します。

仮想マシンの状態を見る

$ sudo virsh list --all         
 Id   Name         State
-----------------------------
 -    freebsd130   shut off

$ 

FreeBSD にログインしてから shutdown コマンドを実行して shutdown が完了した状態です。

仮想マシンを起動する

$ sudo virsh start freebsd130
Domain freebsd130 started

$ sudo virsh list --all      
 Id   Name         State
----------------------------
 4    freebsd130   running

$ 

「virsh start」で起動しても virt-viewer は起動されないので、次の手順で virt-viewer を起動します。

仮想マシンのコンソールに接続する

$ sudo virt-viewer freebsd130

仮想マシンを shutdown する

$ sudo virsh list --all
 Id   Name         State
----------------------------
 4    freebsd130   running

$ sudo virsh shutdown freebsd130
Domain freebsd130 is being shutdown

$ sudo virsh list --all         
 Id   Name         State
-----------------------------
 -    freebsd130   shut off

$ 

仮想マシンを削除する

$ sudo virsh undefine freebsd130
Domain freebsd130 has been undefined

$ sudo virsh list --all         
 Id   Name   State
--------------------

$ 

この操作では仮想マシンが削除されるだけで、仮想マシンに割り当てた HDD イメージは残ったままになっています。HDD イメージの操作を以降に掲載します。

HDD イメージの操作

$ sudo virsh pool-list --all                         
 Name     State    Autostart
------------------------------
 images   active   yes
 tmp      active   yes

$ sudo virsh vol-list images                         
 Name               Path
--------------------------------------------------------------
 freebsd130.qcow2   /var/lib/libvirt/images/freebsd130.qcow2

$ sudo virsh vol-delete --pool images freebsd130.qcow2
Vol freebsd130.qcow2 deleted

$ sudo virsh vol-list images                          
 Name   Path
--------------

$ 

仮想マシンの再インストール

前述の「仮想マシンの削除」と「HDD イメージの操作 (vol-delete)」により仮想マシンと HDD イメージを削除すると、同名の仮想マシン (freebsd130) と HDD イメージ (freebsd130.qcow2) を指定して、最初に使用した virt-install コマンドにより仮想マシンを再び 作成・起動 できます。

  • 仮想マシン名、HDD イメージ名に別のものを指定すれば、最初に作成した仮想マシンを削除しなくても、新しい仮想マシンを作成できます。
4
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
4
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?