前言:之前一直使用TN3399跑armbian跑HassIO(Supervisor)版,后面觉得TN3399的RK3399+4G的RAM单跑HassIO太浪费,于是想着OpenWRT+HassIO的组合来跑,确实能跑起来,但是HassIO本身报了很多不兼容的警告,看着有点烦人,而且感觉不知道会不会哪天就崩了,还是想直接使用官方推荐的Home Assistant OS来跑,但是又不想放弃OpenWRT,于是只能另辟途径,从而有了这个通过Docker来跑KVM虚拟机版Home Assistant OS的新姿势,话不多说,开始进入正题。
在开始之前,先在宿主机确认是否支持KVM虚拟化:
ls -l /dev/kvm dmesg | grep kvm
出现如图所示则表示支持
部署:
1、拉取KVM镜像
docker pull iyonghsu/debian-libvirtkvm:latest
2、运行容器,建议使用特权模式,使用host网络,为避免容器的SSH端口与宿主机的端口冲突,我将镜像的SSH端口设定为1022
docker run --name Debian11-Haos -it -d --restart always --privileged --network host iyonghsu/debian-libvirtkvm:latest /bin/bash
3、连接容器的SSH,SSH账号/密码是:root/debian,推荐使用MobaXterm,自带X Server
4、下载 haos.xml,上传到宿主机,目录根据个人喜好自定义,我这里用的是root家目录,执行
virsh define /root/haos.xml
5、在 home-assistant/operating-system 下载最新版的HAOS,选择haos_generic-aarch64-11.1.qcow2.xz,这个是aarch64的通用版本,使用的是efi启动方式,qcow2是KVM的虚拟盘格式,能在虚拟机里启动。
6、在容器中执行命令解压文件
xz -d haos_generic-aarch64-11.1.qcow2.xz
7、在窗口执行 virt-manager ,在弹出的manager窗口可以看到haos虚拟机已经创建成功
8、选择虚拟机右键点击,点击open选项,进入虚拟机详情页,接着点击灯泡按钮
9、点击 Add Hardware 按钮,选择 Storage -> Select or create custom storage 在输入框中输入qcow2文件的全路径,Device type 选择Virtio,点击 Finish 按钮,再点击 yes 按钮
10、将网络改成桥接设备,设备名称填写你宿主机的桥接接口,openwrt一般是br-lan,armbian的话,需要自己创建桥接接口,具体可以百度或者Google搜索查看
11、点击 启动 按钮,等待几分钟可以看到启动成功,如下图2
12、在OpenWRT里找到新增主机名为 homeassistant 的IP地址,在浏览器中输入 IP地址:8123,即可看到Home Assistant增在部署中,视网络情况而定,国内网络情况估计要个好几把钟?建议到这一步直接挂一整晚,第二天再来看。
当看到下图,则表示HASS已部署成功,接下来开始进行初始化设置吧。
优化:
1、在Haos中,执行 journalctl -f 如果看到一直有 [ERROR] plugin/errors: 2 . NS: tls: DialWithDialer timed out 的报错,则需要关闭 ha dns的fallback
2、执行以下命令关闭ha dns的fallback
ha dns op --fallback=false ha dns restart
再次执行 journalctl -f 可看到一直刷屏的 plugin/errors 已经没了
3、如果需要容器启动的同时启动虚拟机,则可以在容器的 /init.sh 文件里新增最后一行
sleep 3m && virsh start haos
sleep 3m 是建议启动容器3分钟后再启动虚拟机,haos为虚拟机名称,如果你自己改名了,则换成自定义的虚拟机名称。
4、原磁盘文件大小只有6G,所以建议在虚拟机上再添加一个20~30G以上的磁盘文件,之后在HA的系统配置里将数据目录转移到新盘上,路径为:配置-> 系统 -> 存储-> 迁移数据磁盘 -> 选择新的数据磁盘,最后点击迁移,等待个几分钟会自动重新启动HA,耐心等待即可。
新姿势到此结束,完结撒花。
发表评论