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

标题: 手机linuxdeploy安装homeassistant core过程记录202408 [打印本页]

作者: fluter    时间: 2024-8-17 19:04
标题: 手机linuxdeploy安装homeassistant core过程记录202408
本帖最后由 fluter 于 2024-8-17 19:59 编辑


前言


为什么要用手机安装homeassistant?


家里多少会有跑不动的淘汰下来的旧手机,安装homeassistant跑起智能家居服务器,焕发第二春真香。

敢和官方产品以及各种盒子比功耗比性能。


为什么选择core的安装方式?这种安装方式对安装者有什么要求?


docker需要科学上网,其它的安装方式好象并不适用于手机的linux deploy系统。

确实,core安装是最困难的一种安装方式,本文并不是写给小白的操作教程,需要有一定动手能力,对linux系统有一定了解并具备相应的操作经验的朋友才可以采用这种方式完成homeassistant core的安装。





重点技能:debian升级版本、编译python、能从安装中的报错信息中能找到关键字,安装所缺的包。


真的没有更容易的安装方法了吗?


呃,好吧,笔者把新鲜出炉安装好homeassistant 202408版的镜像分享出来,那么,root好之后的arm64架构的手机可以用linuxdeploy直接挂载使用了。这比docker还要简单了吧。


设备与网络


手机:2G运存/16G存储以上,可root的手机,如本文所用之小米5

电脑:准备好终端工具如putty,传输工具如winscp

网络:手机和电脑在同一局域网


避坑必读


HA的更新太快,对于环境的依赖也在不断变化,这导致网上的安装教程基本上都会卡死在某一步。我仅列出我觉得比较重大的避坑点,也是为现在和以后遇到问题的朋友提供一些参考。



  1. 手机ROOT:不是所有的手机都可以root,而且网上流传的早期教程可能会不适用了。本文只能对小米5的root提供一些经验。其它手机请自行解决。

  2. linux操作系统版本:由于linux deploy自带的操作系统版本都比较陈旧了,网上流传的教程都是安装某个版本后直接安装HA就可以了。但那是几年前的事,现在(2024年8月)的HA要求必须是python 3.12,在旧的linux上编译都会遇到很多问题如openssl版本过低。与其解决这些问题,不如升级到最新的OS版本,未来维护起来也更容易一些。


其它:


使用homeassistant用户安装时会容易遇到报错,可能是权限的问题,我暂时未找到解决方案。本文是以root用户完成的安装。









作者: fluter    时间: 2024-8-17 19:04
本帖最后由 fluter 于 2024-8-17 19:07 编辑

第一步: 手机root(小米5)


此步骤非本文重点,简要介绍一下,详细步骤有不清楚的,请自己百度查找。

小米5是2016年上市的,早期有官方的ROOT方法,后来失效了,好在解锁还是可以,目前比较靠谱的是用magisk(面具)APP来root。


1) 解锁BL


很多小米手机都有一个刷机锁。

在设置 -> 开发者选项 -> 设备解锁状态中查看锁定情况,如果是锁定的并且现在要开锁,那么就下载解锁工具解锁,全过程很简单跟着官方教程走就行了。

刷机锁的网站


2)卡刷


小米手机root需要刷成开发版。



  1. 下载卡刷包到手机

    去[MIUI官方仓库](MIUI官方ROM仓库 - roms.miuier.com)下载小米5的最新开发版卡刷包8.11.22

    手机上下拉出USB充电提示条,点击后选择“文件传输”,从电脑上把卡刷包传到手机的Download目录下。

  2. 打开手机设置 -> 我的设备 -> MIUI 版本 -> 连点数次 MIUI 图标开启系统更新扩展功能 -> 点击右上角菜单 -> 手动选择安装包。 MIUI 开启系统更新扩展功能图解

  3. 选择卡刷包后会检查更新信息,符合要求后方可点击刷机,完成后会自动重启手机


注:开发版线刷包应该也可以,步骤会略有不同,此处略过。


3. 破解


github magisk下载,安装到手机上。

注:若下载不了或太慢,建议使用国内github镜像,这个镜像网站不太稳定,一段时间这个能用,过段时间不能用了又要重新找,笔者目前使用的是:kkgithub.com


把卡刷包/线刷包解压开,找到boot.img,传到手机上,用magisk打开修补。

至此完成root的破解。




作者: fluter    时间: 2024-8-17 19:06
本帖最后由 fluter 于 2024-8-17 19:41 编辑

第二步:安装linux deploy,并安装升级操作系统


一、下载安装linux deploy


linuxdeploy github下载

注:同magisk下载。

重要提示:此步安装完成后,符合条件的朋友可以跳到最后,下载本人分享镜像文件直接加载运行,免去自行安装之苦。


二、在linux deploy中安装debian 10


打开linux deply app

点击右下角的设置图标,进入设置界面:

[attach]62558[/attach]

配置项很多,修改下面这些即可,未列出的保持缺省设置。






























































发行版 debian 我选debian,ubuntu应该也可以,但我没完整尝试过,个人觉得debian更稳定
架构 arm64 小米5的CPU是骁龙820支持arm64,其它手机自行查找核对应该选哪种架构
发行版版本 buster 这是debian 10,linux deploy最高只提供这个版本,但已经过时了,难以安装最新版的homeassistant,先装它。
源地址 http://mirrors.ustc.edu.cn/debian/ 国内镜像都可以,不过升级时需要用中科大的源来升级
安装类型 镜像文件 用镜像文件的好处是方便备份和分享
安装路径 ${EXTERNAL_STORAGE}/ha202408.img 这个文件就在手机存储的根目录下,取这个名字是homeassistant202408版的意思。
镜像大小 8192 8G够用了,万一以后不够的话还有办法扩容。
用户名 homeassistant 用这个用户名,后面安装ha的时候就不用再新建用户了。
用户密码 888888 自己安装的话,自己定密码。我分享的镜像统一用这个密码,拿到镜像后请自已修改密码。
允许使用初始化系统 勾选
启用SSH服务器 勾选

配置好之后,回APP首页,点开右上角三个点,选“安装”,即可自动安装。

安装完成后,点左下的启动,即可启动debian 10。

如果一切顺利的话,现在就可以用终端工具登录到系统上进行操作了。

我使用的终端工具是putty,并习惯于用winscp传输文件。接下来的操作主要是通过这俩完成的。

这两个都是开源软件,官网无墙,请自行百度下载安装。

工具用法本文不表,请自备技能。


三、 升级debian 10 到12


在同一局域网的电脑上,用putty登录前面安装好的debian 10,切换到root用户,并设置root密码。

后面的系统升级操作都要以root用户来进行的。

注:我分享的镜像中root密码也是888888,拿到后请自己修改密码。


login as: homeassistant
[email protected]'s password:
Linux localhost 3.18.71-perf-g4a0ef96 #1 SMP PREEMPT Thu Nov 22 00:40:45 CST 2018 aarch64
Debian GNU/Linux 10 (buster) [running via Linux Deploy]
$ su -
root@localhost:~# passwd root
New password:
Retype new password:
passwd: password updated successfully
root@localhost:~#

(一)升级debian 10 到11


1.更新现有软件包

升级前先更新当前的软件包核安全补丁到最新版本,并删除未使用的依赖项:


apt update && apt upgrade -y
apt --purge autoremove

2.修改 sources.list 文件

我是用vi来修改的,你们喜欢用什么都可以,也可以通过winscp来打开这个文件进行修改。


vi /etc/apt/sources.list

修改后应该是这样的:


deb http://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free

deb http://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free

deb http://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free

deb http://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free

3.执行升级

apt update
apt full-upgrade

升级过程中有几个地方有交互的:


[attach]62559[/attach]

这里选Y,确认继续。


[attach]62560[/attach]

这里选Yes


[attach]62561[/attach]

这里要选N,也是缺省值。


[attach]62562[/attach]

此处选默认的第二项即可。


4.完成后的验证

执行:


cat /etc/debian_version

输出应该是11.X


本步骤参考链接:

https://zhuanlan.zhihu.com/p/400092868

https://www.jiloc.com/49766.html ... 8%E6%8F%8F%E8%BF%B0


(二)由11升级到12


除了第二步sourcelist的内容不一样,如下所示,其余步骤同10升级到11:


deb http://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware

deb http://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware

deb http://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware

deb http://mirrors.ustc.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware

本步骤参考链接:

https://zhuanlan.zhihu.com/p/636675047


升级要点回顾:


要点一:升级之前要修改root的密码,后面用root登录做下面的升级。

也是避免sudoer文件在升级中不小心选错了被初始化,导致linuxdeloy生成的用户不再具备sudo的权限。

这会导致系统中没法执行超级用户的命令。

要点二:采用中科大的源,因为只有这个源支持http的方式,其它源仅支持https会产生问题。





作者: fluter    时间: 2024-8-17 19:08
本帖最后由 fluter 于 2024-8-17 19:16 编辑

第三步: 安装homeassistant


官方安装文档:

https://www.home-assistant.io/installation/linux


步骤基本上是按上面的来,但针对我的环境现状,做了调整,记录如下:


安装前的准备


开始之前,先更新一下


sudo apt-get update
sudo apt-get upgrade -y

安装依赖


sudo apt-get install -y python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff6 libturbojpeg0-dev tzdata ffmpeg liblapack3 liblapack-dev libatlas-base-dev

这一步会安装python3,得到的是3.11的版本,并不满足homeassistant的安装需要(python 3.12)。所以在这一步之后编译安装python 3.12。


编译安装python 3.12


在Ubuntu/debian上编译安装Python 3.12的步骤如下:



  1. 安装必要的依赖项:
    sudo apt update
    sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev wget

  2. 下载Python 3.12源代码:(建议下载最新版,当时最新版是3.12.5)
    wget https://www.python.org/ftp/python/3.12.5/Python-3.12.5.tar.xz
    tar -xvf Python-3.12.5.tar.xz
    cd Python-3.12.5

  3. 配置并编译安装:
    ./configure --enable-optimizations
    make -j $(nproc)

  4. 安装Python 3.12:   
    sudo make altinstall

  5. 验证安装:   
    python3.12 --version

  6. 修改软链接
    rm -rf /usr/bin/python3
    rm -rf /usr/bin/python
    ln -s /usr/local/bin/python3.12 /usr/bin/python3
    ln -s /usr/local/bin/python3.12 /usr/bin/python

    修改pip源:



pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

生成帐户


这一步可以免掉了,前面linux deploy已生成了。其实笔者在后面用homeassistant安装时报错,而加了sudo则完成,但这样就装到root用户下面了。那么,就当是root用户安装了吧。


生成虚拟环境


创建目录并改变用户为 homeassistant


sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant

下面为Home Assistant Core生成一个虚拟环境并切换过去,这件事是用homeassistant 用户来做的。


sudo -u homeassistant -H -s
cd /srv/homeassistant
python3 -m venv .
source bin/activate

注:前面的步骤都是从原文操作步骤中翻译过来的,实际也是按这个来进行的。但后面的操作必须加sudo才能过。我想啊,是不是直接用root用户来安装得了,反正这手机也不用来做别的,把root用户密码设复杂一点就行了呗。当然这样做是不太安全,但我并不清楚这个安装过程必须什么样的权限,如果把homeassistant加到root组或赋于root权限,不也同样不安全吗?


sudo python3 -m pip install wheel

安装Home Assistant Core!


sudo pip3 install homeassistant==2024.8.2

第一次执行homeassistant,完成安装


第一次执行homeassistant时,还是会检查所需的包,并安装之,这个过程仍然需要root权限,而且即使是root,过程中仍然可能报错。


su -
hass

第一次运行需要比较长的时间,可能是5到10分钟,根据设备性能和遇到错误的情况,这个时间会有不同。

笔者根据遇到的错误信息,新增的安装如下:


apt install libpcap-dev
pip3 install numpy
pip3 install zlib_ng
pip3 install isal

如果遇到的错误多的话,建议另外开一个终端专门用于安装缺失的包。

==注:这里是难点,不同的安装时间和安装环境遇到的错误信息可能不同,特别依赖于安装者的解决问题的经验和能力。==


再次运行


hass

现在可以了,打开手机或电脑的浏览器,输入:"http://IP:8123" ,这里IP是你手机的IP,显示在linux deploy的首页上端。

见到以下页面,即大功告成。



[attach]62557[/attach]



作者: fluter    时间: 2024-8-17 19:09
本帖最后由 fluter 于 2024-8-17 19:49 编辑

追加彩蛋


前述步骤的安装后的镜像,可以复制到符合以下条件的手机上直接使用。

同一架构(arm64)的手机,且已成功root并安装了linuxdeploy


使用步骤:



  1. 下载镜像压缩包,解压后传到手机存储的根目录下。

  2. 打开linuxdeploy配置同前述第二步。

  3. 配置好后不要安装,而是点配置。

  4. 直接点击启动

  5. 用putty登录,root/888888,登录后立即修改密码。

  6. 启动homeassistant,打开浏览器验证。


下载地址


链接:https://pan.baidu.com/s/1iqycx34nofFXzFPuZvwaWw
提取码:2ljs



作者: jimgo    时间: 2024-8-17 21:17
这个厉害,我只能看看了
作者: mitch    时间: 2024-8-17 21:35
谢谢分享,做个标记
作者: lqf1206    时间: 2024-8-18 12:11
请教之前装宝塔ssh连不上了,宝塔正常运行!
作者: 隔壁的王叔叔    时间: 2024-8-18 18:19
老早就有此意,我有个红米,k30手机,屏幕坏了,6G+256G,我觉得跑个ha卓卓有余吧。
作者: fluter    时间: 2024-8-18 18:51
隔壁的王叔叔 发表于 2024-8-18 18:19
老早就有此意,我有个红米,k30手机,屏幕坏了,6G+256G,我觉得跑个ha卓卓有余吧。 ...

足足有余,多余的部分可以做点别的,比如做个本地的人脸识别怎么样?
作者: fluter    时间: 2024-8-18 18:58
lqf1206 发表于 2024-8-18 12:11
请教之前装宝塔ssh连不上了,宝塔正常运行!

SSH连不上应该是SSH服务没有启动,可能是你装宝塔的时候强制更换了某个库,和SSH服务用的库版本不一致冲突了,导致SSH服务起不来,而宝塔能起来。
SSH服务起不来的话,在linuxdeloy界面上会有提示的。
我升级OS的思路应该可以给你借鉴。
作者: 隔壁的王叔叔    时间: 2024-8-18 19:41
fluter 发表于 2024-8-18 18:51
足足有余,多余的部分可以做点别的,比如做个本地的人脸识别怎么样?

可以,我先搞定黑屏如何连上他。
作者: lqf1206    时间: 2024-8-18 21:03
本帖最后由 lqf1206 于 2024-8-18 21:07 编辑

[attach]62598[/attach]
[attach]62599[/attach]
镜像亲测可用,感谢分享!!!
作者: lqf1206    时间: 2024-8-18 23:15
本帖最后由 lqf1206 于 2024-8-19 21:35 编辑
隔壁的王叔叔 发表于 2024-8-18 19:41
可以,我先搞定黑屏如何连上他。

电脑USB投屏/局域网无线

[attach]62607[/attach]
[attach]62640[/attach]

作者: mitch    时间: 2024-8-19 07:16
fluter 发表于 2024-8-17 19:09
[md]
## 追加彩蛋
前述步骤的安装后的镜像,可以复制到符合以下条件的手机上直接使用。

没有addons集成,请问可以加吗
作者: 隔壁的王叔叔    时间: 2024-8-19 08:24
lqf1206 发表于 2024-8-18 23:15
电脑USB投屏/局域网无线

我知道这一招儿,但是黑屏了,没办法点那个adb信任连接。是屏幕直接掉下来了。触屏才做不了。
作者: 隔壁的王叔叔    时间: 2024-8-19 08:25
lqf1206 发表于 2024-8-18 23:15
电脑USB投屏/局域网无线

你这个是哪个软件?
作者: fluter    时间: 2024-8-19 11:20
lqf1206 发表于 2024-8-18 21:03
镜像亲测可用,感谢分享!!!

谢谢回馈,哈哈。我做个镜像也只是自己试了下,这是首例用户认可。开心
作者: lqf1206    时间: 2024-8-19 20:51
隔壁的王叔叔 发表于 2024-8-19 08:24
我知道这一招儿,但是黑屏了,没办法点那个adb信任连接。是屏幕直接掉下来了。触屏才做不了。 ...

otg 接鼠标点
作者: lqf1206    时间: 2024-8-19 21:14
本帖最后由 lqf1206 于 2024-8-19 21:18 编辑
隔壁的王叔叔 发表于 2024-8-19 08:25
你这个是哪个软件安卓投屏


[attach]62638[/attach]
作者: 隔壁的王叔叔    时间: 2024-8-19 21:33
是完全看不到屏幕,只能试着摸黑打开adb,并添加信任,剩下的就好办了。
作者: xyduane    时间: 2024-8-26 08:27
完美运行
作者: edwards1018    时间: 2024-10-8 19:06
感谢,镜像成功进入
作者: edwards1018    时间: 2024-10-8 20:27
大神,添加任何集成都显示:无法加载配置向导: 500 Internal Server Error Server got itself in trouble怎么处理

作者: monipc    时间: 2024-12-10 01:05
我用termux效果一样。基本步骤没变化。但是切记要termux下面先安装ubuntu再说。如果用termux自己的默认环境直接安装hass,会有意想不到的惊喜。有兴趣尝试的周五晚上可以开始搞
作者: [email protected]    时间: 2024-12-10 08:19
感谢分享...
作者: lqf1206    时间: 2024-12-21 17:19
请教,那个镜像升级2024.12.5怎么操作





欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5