『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 8278|回复: 44

[新奇玩法] Aarch64 OpenWRT运行Home Assistant OS新姿势

[复制链接]

1

主题

45

帖子

560

积分

高级会员

Rank: 4

积分
560
金钱
510
HASS币
10
发表于 2023-10-30 10:35:43 | 显示全部楼层 |阅读模式
前言:之前一直使用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,耐心等待即可。

                               
登录/注册后可看大图

                               
登录/注册后可看大图

                               
登录/注册后可看大图

                               
登录/注册后可看大图

                               
登录/注册后可看大图

                               
登录/注册后可看大图
新姿势到此结束,完结撒花。



评分

参与人数 3金钱 +60 HASS币 +10 收起 理由
+ 20 + 10 感谢楼主分享!
dscao + 20 感谢楼主分享!
XCray + 20 高手,这是高手!

查看全部评分

回复

使用道具 举报

1

主题

83

帖子

1001

积分

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
918
HASS币
0
发表于 2023-10-30 11:38:41 | 显示全部楼层
有没有X86的docker 虚拟机镜像?我看好像你这个镜像是arm的
回复

使用道具 举报

0

主题

608

帖子

2516

积分

金牌会员

Rank: 6Rank: 6

积分
2516
金钱
1908
HASS币
0
发表于 2023-10-30 11:38:49 | 显示全部楼层
感谢分享,那直接在3399的armbian环境下可以跑os吗
回复

使用道具 举报

1

主题

45

帖子

560

积分

高级会员

Rank: 4

积分
560
金钱
510
HASS币
10
 楼主| 发表于 2023-10-30 11:49:41 | 显示全部楼层
本帖最后由 倚竹聽雨 于 2023-11-6 12:21 编辑
loveyolanda 发表于 2023-10-30 11:38
有没有X86的docker 虚拟机镜像?我看好像你这个镜像是arm的
应坛友要求,已更新X86镜像。

暂时没有,这个适合ARM64并且内存4G以上用,X86直接上PVE下建虚拟机OP+HAOS就行了。



回复

使用道具 举报

1

主题

83

帖子

1001

积分

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
918
HASS币
0
发表于 2023-10-30 11:56:08 | 显示全部楼层
倚竹聽雨 发表于 2023-10-30 11:49
暂时没有,这个适合ARM64并且内存4G以上用,X86直接上PVE下建虚拟机OP+HAOS就行了。 ...

我是用openwrt作旁路由,管理刷机都简单,轻量化,没搞虚拟机。openwrt下的docker跑的homeassistant core版
回复

使用道具 举报

1

主题

45

帖子

560

积分

高级会员

Rank: 4

积分
560
金钱
510
HASS币
10
 楼主| 发表于 2023-10-30 12:18:46 | 显示全部楼层
Ari 发表于 2023-10-30 11:38
感谢分享,那直接在3399的armbian环境下可以跑os吗

可以的,只要内核已经支持KVM。
回复

使用道具 举报

1

主题

45

帖子

560

积分

高级会员

Rank: 4

积分
560
金钱
510
HASS币
10
 楼主| 发表于 2023-10-30 13:48:31 | 显示全部楼层
loveyolanda 发表于 2023-10-30 11:56
我是用openwrt作旁路由,管理刷机都简单,轻量化,没搞虚拟机。openwrt下的docker跑的homeassistant core ...

更新了X86的了,你直接拉取运行,没经过测试,你试试看能不能用,然后创建虚拟机直接在virt-manager中创建,不要用我的xml文件,我的xml文件是根据ARM64适配的。
回复

使用道具 举报

24

主题

579

帖子

2685

积分

金牌会员

Rank: 6Rank: 6

积分
2685
金钱
2106
HASS币
0
发表于 2023-10-30 16:08:26 | 显示全部楼层
对我来说之所以要haos
就是要它能直接使用主机的音频口来播报
不能直接使用的都没有想法
回复

使用道具 举报

1

主题

45

帖子

560

积分

高级会员

Rank: 4

积分
560
金钱
510
HASS币
10
 楼主| 发表于 2023-10-30 20:11:45 | 显示全部楼层
kjjuhfv 发表于 2023-10-30 16:08
对我来说之所以要haos
就是要它能直接使用主机的音频口来播报
不能直接使用的都没有想法 ...

场景不同吧,我的话就直接用dlna连接小度播放。
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2023-10-31 08:05:08 | 显示全部楼层
docker容器里跑kvm、然后kvm里跑haos,这个思路确实是第一次见,也有点颠覆之前的认知
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 03:01 , Processed in 0.172642 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表