# Установите Home Assistant на FreeBSD внутри виртуальной машины bhyve

Для этого на FreeBSD 13.1-p1 vm vm-bhyve 1.5.0 в качестве менеджера виртуальных машин bhyve и qemu-tools 7.0.0\_1 требуется преобразовать образ из qcow2 в raw, как я полагаю.

## Требования

### Требуемые pkgs

- вм-бхиве
- qemu-инструменты

Для этого вам нужно настроить vm-bhyve, о чём я не буду рассказывать.

### Шаблон операционной системы Centos8

Создайте файл с именем centos8.conf. Поместите этот файл в папку vm\_dir в разделе «.templates».

```
loader="uefi"
cpu=1
memory=512M
network0_type="virtio-net"
network0_switch="public"
disk0_name="disk0"
disk0_dev="sparse-zvol"
disk0_type="virtio-blk"
```

## Установка

При запуске vm img url образ будет загружен, распакован и помещён в нужную папку. Папка vm\_dir определена в /etc/rc.conf в подкаталоге ".img". На тот момент последней версией образа была 8.4. Однако после установки мне сразу же предложили обновиться до версии ОС 8.5.

### Загрузить изображение

```
vm img <a href="https://github.com/home-assistant/operating-system/releases/download/8.4/haos_ova-8.4.qcow2.xz">https://github.com/home-assistant/operating-system/releases/download/8.4/haos_ova-8.4.qcow2.xz</a>
```

### Создание виртуальной машины

Теперь мы создаём виртуальную машину с помощью команды vm create. Параметр **-t centos8** определяет шаблон, созданный ранее. Параметр -c 2 указывает, сколько ядер вы хотите назначить виртуальной машине. Параметр -m 8G указывает объём оперативной памяти, 4 ГБ должно быть достаточно. Ознакомьтесь с требованиями на веб-странице Home Assistant. Параметр -s 100G указывает объём дискового пространства, которое вы хотите назначить виртуальной машине. Когда я впервые настраивал это, я выделил только 50 ГБ, чего должно быть более чем достаточно. Однако я использую разреженный ZFS, так как он не будет использовать все 100 ГБ сразу, поэтому я могу выделить больше.

```
vm create -t centos8 -c 2 -m 8G -s 100G -i haos_ova-8.4.qcow2 haos
```

### Боковое примечание

По какой-то причине при первом запуске этой команды иногда возникает ошибка «Диск занят».

```
qemu-img: /dev/zvol/tank/bhyve/haos/disk0: error while creating output image: Protocol driver 'host_device' does not support image creation, and opening the image failed: Could not open '/dev/zvol/tank/bhyve/haos/disk0': Device busy
/usr/local/sbin/vm: ERROR: failed to write img file with qemu-img

```

Если удалить виртуальную машину и создать её заново, она появится.

```
vm destroy haos
```

Затем снова выполните команду vm create, и она создаст виртуальную машину. Если проблема не исчезнет, вы можете изменить шаблон, чтобы он использовал образы дисков, а не zfs. С образами дисков такой ошибки никогда не возникало. Также можно указать открытый ключ для аутентификации с помощью -C -k your\_key.pub. Но на текущей странице руководства нет информации об этом. И я не уверен, как это работает. По крайней мере, я не могу найти это на странице руководства. С помощью флага -n вы можете задать статический IP-адрес. Кроме того, я смог найти в исходном коде vm-core на GitHub.

```
Example netconfig param: "ip=10.0.0.2/24;gateway=10.0.0.1;nameservers=1.1.1.1,8.8.8.8"
```

Я бы хотел, чтобы у вас была возможность задать параметры для выбора сетевого коммутатора, который вы хотите использовать. Но, похоже, такой возможности нет.

## Завершение

### Проверьте конфигурацию

Завершите настройку, выполнив команду vm configure. В частности, проверьте, подключена ли виртуальная машина к нужному коммутатору виртуальных машин

```
vm configure haos
```

### Запуск виртуальной машины

Запустите машину, выполнив команду vm start

```
vm start haos
```

Контролируйте запуск, запустив консоль виртуальной машины

```
vm console haos
```

https://github.com/stiana/tcbsd-haos-installer

https://forums.truenas.com/t/installing-haos-home-assistant-os-in-a-vm/108

wget [https://github.com/home-assistant/operating-system/releases/download/16.2/haos\_ova-16.2.qcow2.xz](https://github.com/home-assistant/operating-system/releases/download/16.2/haos_ova-16.2.qcow2.xz)

unxz -v haos\_ova-16.2.qcow2.xz

qemu-img convert -p -O raw haos\_ova-16.2.qcow2 ha\_.img