Proxmox に FreeBSD をインストール


# ダウンロードする
proxmox へ ssh でログインし、wget でダウンロード
iso ファイルのディレクトリが
- `/var/lib/vz/template/iso`
なので qcow2 は
- `/var/lib/vz/template/qcow`
に入れることにする

ディレクトリを作成、ダウンロードして解凍
```
mkdir -p /var/lib/vz/template/qcow
cd /var/lib/vz/template/qcow
wget wget ftp://ftp6.jp.freebsd.org/pub/FreeBSD/releases/VM-IMAGES/14.2-RELEASE/amd64/Latest/FreeBSD-14.2-RELEASE-amd64-zfs.qcow2.xz
xz -d FreeBSD-14.2-RELEASE-amd64-zfs.qcow2.xz
```

# 仮想マシンの入れ物を作成
## VM を作成
右上の「VMを作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/7832fcaf-9285-8d2b-4baf-dc36e24cab28.png)

## 名前を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/1cae4706-1ae5-2986-a4a7-9f61bb498f46.png)
VM ID は使っていない id を自動的に付与される。使われていない id を指定することも可能。
(今回は 101)

## インストーラーは指定しない
「メディアを使用しない」を選択
OS の種類は Linux でも Other でも起動するようです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/ec35409e-6652-8882-ffea-84f2b75808ad.png)

## あとはデフォルトで
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/efa212c1-3f07-42bd-67d7-859ccfe6a499.png)

## ディスクは削除する
ゴミ箱アイコンをクリックしてディスクを削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/8d0a0f5d-0c13-62e4-2e84-bd0efe527ff8.png)

「ディスクなし」にする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/e3af5234-c114-11f5-fbd1-0e784ac85798.png)

## CPU は host にする
コア数は適当に
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/3922fb0b-381d-2baf-bffd-0d82323e6c9e.png)
気分で NUMA にチェックを入れておく

## メモリを指定する
適当に 8GB
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/71778c41-b8d9-6b96-91e8-703dbfd23d66.png)

## ネットワークは後で自由にできるので適当に
ここではホストと同じインターフェースを 1つだけ指定しておく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/3a1d0a4f-0c57-ebd9-c4f7-e6bf197f8a20.png)

## 確認画面
完了をクリックして入れ物の完成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/9c590a6d-e3c2-52b2-f626-2cc233b136ea.png)

## できた仮想マシンを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/ae92312a-12ae-b45f-41b5-ed58d38c932b.png)
__vmid は 101__

## ディスクの情報を確認
`qemu-img info <qcow2>` で情報を確認
```
root@hair:/var/lib/vz/template/qcow# qemu-img info FreeBSD-14.2-RELEASE-amd64-zfs.qcow2
image: FreeBSD-14.2-RELEASE-amd64-zfs.qcow2
file format: qcow2
virtual size: 6.03 GiB (6476791808 bytes)
disk size: 3.47 GiB
cluster_size: 65536
Format specific information:
    compat: 0.10
    compression type: zlib
    refcount bits: 16
Child node '/file':
    filename: FreeBSD-14.2-RELEASE-amd64-zfs.qcow2
    protocol type: file
    file length: 3.67 GiB (3938123776 bytes)
    disk size: 3.47 GiB
```

## 仮想マシンにディスクをインポート
```
root@hair:/var/lib/vz/template/qcow# qm importdisk 101 FreeBSD-14.2-RELEASE-amd64-zfs.qcow2 local-btrfs
importing disk 'FreeBSD-14.2-RELEASE-amd64-zfs.qcow2' to VM 101 ...
transferred 0.0 B of 6.0 GiB (0.00%)
transferred 63.0 MiB of 6.0 GiB (1.02%)
transferred 127.2 MiB of 6.0 GiB (2.06%)
transferred 189.0 MiB of 6.0 GiB (3.06%)
...
transferred 6.0 GiB of 6.0 GiB (100.00%)
unused0: successfully imported disk 'local-btrfs:101/vm-101-disk-0.raw'
root@hair:/var/lib/vz/template/qcow#
```
## 仮想マシンにディスクを接続
「未使用のディスク 0」を選択して「編集」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/310eb9c5-6481-783f-f54d-89ecd3b13c71.png)

バスを「VirtIO」にして「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/c6222316-fd57-8707-65d6-d4d8d0ac91f1.png)

ハードディスク (__virtio0__) ができている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/e70a5534-ddac-15b7-508b-626fa035d102.png)

## 起動順序を指定
「オプション > ブート順」を選択、「編集」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/25e26417-90ee-73b3-f8d5-5941a195a527.png)

VirtIO にチェックを入れ、一番上にドラッグ & ドロップ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/a7ba7f10-e444-7e71-2f6c-7cd757b6f392.png)

## ディスクを 100Gへ拡張
__virtio0__ を指定サイズへ変更
`qm resize <VM ID> <ディスク名> <容量>`
拡張や縮小の場合は容量の前に +や -を付ける。
```
root@hair:/var/lib/vz/template/qcow# qm resize 101 virtio0 100G
Image resized.

root@hair:/var/lib/vz/template/qcow# ls -lh /var/lib/pve/local-btrfs/images/101/vm-101-disk-0/disk.raw
-rw-r----- 1 root root 100G Dec 31 13:50 /var/lib/pve/local-btrfs/images/101/vm-101-disk-0/disk.raw
```
ブートディスクサイズ が 100GBになっている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/742b063e-faab-2e27-0691-6f525c0f8c84.png)

## 仮想マシンを起動
root でログイン (パスワード無し)
中の FreeBSD はディスクが拡張されていない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306041/af68099b-c8d9-a448-c19e-c973a1254fb3.png)

コンソールでの操作は面倒なので、ssh で接続する。
passwd で root パスワードを設定

ssh で root ログインを許可する
```
vi /etc/ssh/sshd_config
PermitRootLogin yes
```

sshd の自動起動を有効にし、起動する
```
echo 'sshd_enable="YES"' >> /etc/rc.conf

sh /etc/rc.d/sshd start
```

## 内部のパーティションは拡張されていない
```
root@freebsd:~ # gpart show
=>      34  12649917  vtbd0  GPT  (100G) [CORRUPT]
        34       345      1  freebsd-boot  (173K)
       379     66584      2  efi  (33M)
     66963   2097152      3  freebsd-swap  (1.0G)
   2164115  10485836      4  freebsd-zfs  (5.0G)
```
vtbd0 の 4番目が 5.0GBytes

## 拡張する
vtbd0 の 4番目を拡張する
```
root@freebsd:~ # gpart resize -i 4 vtbd0
gpart: table 'vtbd0' is corrupt: Operation not permitted
```
何か壊れているっぽいのでリカバリーする
```
root@freebsd:~ # gpart recover vtbd0
vtbd0 recovered
```
エラーメッセージが表示されないので成功？

改めて拡張する
```
root@freebsd:~ # gpart resize -i 4 vtbd0
vtbd0p4 resized
root@freebsd:~ # gpart show vtbd0
=>       34  209715126  vtbd0  GPT  (100G)
         34        345      1  freebsd-boot  (173K)
        379      66584      2  efi  (33M)
      66963    2097152      3  freebsd-swap  (1.0G)
    2164115  207551045      4  freebsd-zfs  (99G)

root@freebsd:~ #
```

## ディスクはまだ拡張されていない
```
root@freebsd:~ # df -h
Filesystem            Size    Used   Avail Capacity  Mounted on
zroot/ROOT/default    4.3G    3.8G    556M    88%    /
devfs                 1.0K      0B    1.0K     0%    /dev
/dev/gpt/efiesp        32M    647K     31M     2%    /boot/efi
zroot/tmp             556M    428K    556M     0%    /tmp
zroot/var/audit       556M    428K    556M     0%    /var/audit
zroot/home            556M    420K    556M     0%    /home
zroot/var/mail        556M    420K    556M     0%    /var/mail
zroot/var/crash       556M    424K    556M     0%    /var/crash
zroot/var/log         556M    532K    556M     0%    /var/log
zroot/var/tmp         556M    424K    556M     0%    /var/tmp
zroot/usr/obj         556M    420K    556M     0%    /usr/obj
zroot/usr/ports       556M    420K    556M     0%    /usr/ports
zroot/usr/src         556M    420K    556M     0%    /usr/src
```

## zfs も拡張されていない
```
root@freebsd:~ # zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zroot  4.50G  3.82G   699M        -     93.5G    10%    84%  1.00x    ONLINE  -
```

## autoexpand フラグを有効にして自動的に拡張してもらう
デフォルトでは有効ではない
```
root@freebsd:~ # zpool get autoexpand zroot
NAME   PROPERTY    VALUE   SOURCE
zroot  autoexpand  off     default
```
autoexpand を有効にする
```
root@freebsd:~ # zpool set autoexpand=on zroot
root@freebsd:~ # zpool get autoexpand zroot
NAME   PROPERTY    VALUE   SOURCE
zroot  autoexpand  on      local
```

## zfs を拡張する
```
root@freebsd:~ # zpool online -e zroot vtbd0p4
root@freebsd:~ # zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zroot  98.5G  3.82G  94.7G        -         -     0%     3%  1.00x    ONLINE  -

root@freebsd:~ # df -h
Filesystem            Size    Used   Avail Capacity  Mounted on
zroot/ROOT/default     95G    3.8G     92G     4%    /
devfs                 1.0K      0B    1.0K     0%    /dev
/dev/gpt/efiesp        32M    647K     31M     2%    /boot/efi
zroot/home             92G    420K     92G     0%    /home
zroot/tmp              92G    428K     92G     0%    /tmp
zroot/var/tmp          92G    424K     92G     0%    /var/tmp
zroot/var/audit        92G    428K     92G     0%    /var/audit
zroot/var/crash        92G    424K     92G     0%    /var/crash
zroot/usr/ports        92G    420K     92G     0%    /usr/ports
zroot/var/log          92G    544K     92G     0%    /var/log
zroot/var/mail         92G    420K     92G     0%    /var/mail
zroot/usr/obj          92G    420K     92G     0%    /usr/obj
zroot/usr/src          92G    420K     92G     0%    /usr/src
```
成功🎉