在 10 月 25 日,微软发布了 Windows DevKit 2023 ,配有 高通 8cx gen3, 32GB RAM 以及 512GB 的 SSD 。大概是搭载 ARM Windows 的硬件天花板了。到手之后一直在探索这个设备的可能性,中间踩了不少坑,也获得了很多惊喜。
之前 Home Assistant 都是部署在 N1 盒子上的,一来存储空间不是很足,经常硬盘空间吃紧;另一方面因为还跑了些别的服务,所以没有直接部署 HAOS ,HA Core 本身对于加载项和重启、升级等功能支持的都不是很好。
Home Assistant 提供三种部署方式,Docker 部署,Core 核心部署和 OS 镜像部署。 一开始为了图方便,准备使用和之前方式相同的 Core 部署,并部署在 WSL 上,但很快就遇到了第一个问题:WSL 闲置时会固定占用 30% 的 CPU(图源自 Github Issue microsoft/WSL #9090),没想到这个 bug 还是 ARM64 设备专属,而且能在自家亲儿子上复现。
这个问题在 1 个月后的 KB5020044 补丁得到了修复,在修复当天,进行了接下来的部署操作。
但 Home Assisant 启动后发现并不能通过局域网 IP 192.168.1.x 访问,只能通过 localhost 访问。这是因为 WSL 与主机共享 IP ,需要进行端口映射才可以。 参考映射命令:
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=8123 connectaddress=localhost
映射完毕后在局域网可以访问了,但是发现了另外一个问题:HomeKit Bridge 无法进行正常设备发现和绑定,这个还是因为和主机共享一个 IP 导致的,WSL 没有在对应 IP 主动监听端口的权利,很多功能就会无法正常运行。所以为了功能正常使用考虑,WSL 方案不可行。
既然 WSL 不行,那就祭出老大 Hyper-V 。Hyper-V 是微软的 Type1 级别虚拟机,它的好处是相比普通的 Type2 虚拟机,虚拟化对性能的损失很低,几乎可以忽略不计。
重启后打开 Hyper-V 管理器
https://github.com/home-assistant/operating-system/releases 在这里下载虚拟机镜像(haos_generic-aarch64-9.4.img.xz)
注意:目前为止 9.4 是不兼容 Hyper-V ARM64 的,Boot 会卡 SCSI 控制器获取,作者在 10.0 开发版中支持了,自测可用,在这里下载: https://os-builds.home-assistant.io/10.0.dev20221210/haos_generic-aarch64-10.0.dev20221210.img.xz 未来 10.0 正式版也会支持。
将 xz 文件解压,得到 img 文件,使用 qemu-img 工具将 img 文件转换为 Hyper-V 专用的 vhdx 文件
点击新建虚拟机,配置完 vhdx 和虚拟机参数后,进入虚拟机设置,将 Secure Boot 关闭
注意,此时虚拟机启动之后是没有独立网卡的,还是会借用宿主机进行上网,我们先不启动,接下来为虚拟机配置网卡。
完成以上步骤后,就可以点击启动,静静的等待 Home Assistant 可用了。
对了最后补两句:Debian aarch64 全系都不可在 Hyper-V ARM64 上使用,GRUB 后面会丢鼠标键盘驱动,没法操作。倒是 Ubuntu 全程兼容。
文章本来是想分享给想对小白一些的同学的,可能部分内容比较啰嗦,高手见谅。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.