sfezen 发表于 2022-9-8 01:40

魔百和CM311-1a KVM Openwrt& Docker 青龙 宝塔

本帖最后由 sfezen 于 2022-9-8 13:41 编辑

声明:由于固件、软件、镜像等持续更新,本文仅代表当前所使用版本的流畅安装记录。行文略长,关键代码处会配以截图展示,请自行对比是否存在差异导致安装失败!如有疏忽之处,还请见谅!刷机有风险,请慎重选择,一切源于本文造成的后果自负,笔者概不负责!

前沿:创维e900v22c、e900v22d、中兴B863AV3.2-M、魔百和CM311-1a、M411A、UNT403A、UNT413A等一众搭载晶晨S905L3A的电视盒子成为2022年度数码爱好者(la ji lao)们最关注的产品之一,纵使有百兆网口的缺点,Soc综合性能在N1之上,再加上50~80元的价格,这都不是事儿!笔者在3月的某一天逛小黄鱼上偶然看到有人在卖HomeAssistant的盒子,于是便看到了图中硕大的魔百和三个字,凭借养成的垃圾佬嗅觉,加之曾看过神雕(Teasiu) 大佬分享海思机顶盒的相关文章,所以对这个电视盒子饶有兴趣,后来经过多方对比外形+小黄鱼的AI推送算法,终于找到了它——魔百和CM311-1a YST YS(M),虽然笔者家中已有老母鸡、N1、H1、M1、R1、蜗牛星际、我家云、锐角云、随身Wi-Fi等一众“垃圾”,但面对当时50元不到的价格毅然剁手2台,这半年来经过各路大佬的开发调教,目前系统固件已日趋完善,本文以魔百和CM311-1a (CH) 2G RAM+8G ROM为例,探索该系列电视盒子更多整合方案,本文不设置回复可见,希望传递共享精神,也是对各位大佬智慧结晶的进一步传播。



童年记忆之——1987年动画《三个火枪手》剧照:我为人人 人人为我
特别鸣谢各路大佬(排名不分先后):
Flippy、Aidany、Ophub、Calmact、Pinker336、Xcray、一脸懵13、Whyour、Cyberbolt、SuLingGG
本文参考:
CM311-1a_YST代工_安卓9_S905L3A_没无线版Emotn UI桌面线刷固件包-智能电视、网络机顶盒 刷机 破解 root 评测-恩山无线论坛 (right.com.cn)
e900v22c教程汇总v1.0.2 (qq.com)
在 KVM 虚拟机中安装使用 OpenWrt 的说明

Part 1. 线刷Android TV版固件
此步骤非必须,但依然建议!刷Android的目的: 1. 盒子安卓系统可能存在分区大小不一致,有写EMMC后黑屏不启动的风险,故建议刷写该版本 2. 该固件已预装LibreELEC APP 可以直接通过遥控器切换到U盘中的系统,不需要再使用ADB工具进行切换
安装Amlogic USB Burning Tool v3.2软件→打开Aml_Burn_Tool软件→文件→导入烧录包→Amlogic USB Burning Tool自动重启变成2.1版本→把【擦除flash】和【擦除bootloader】两项去勾→点击【开始】→盒子电源关闭→盒子接电源线→把USB线一端插上盒子→保持短接(用平口螺丝刀或镊子)→USB另一端插上电脑→通电开机(非必须,CH版通过USB线即可供电刷机)→盒子进度条在跑了(此时松开短接)→进度条跑完点击停止→移除USB线→盒子电源关闭→插入HDMI线→盒子电源打开→盒子启动Android电视系统,线刷完成!短接点:4R32


图片来自刷机包中,侵删
线刷开始时注意:擦除flash、擦除bootloader 需要勾选!

线刷工具、固件下载:
Amlogic USB Burning Tool:amlogic_usb_burning_tool_v3.2.0_and_driver.tar.gz CM311-1a_ss_new.img:https://www.aliyundrive.com/s/qrVaLvZ2Wci注:阿里盘下载的EXE文件,运行后解压出img文件

Part 2. 制作Armbian启动U盘
O大Armbian镜像:ophub/amlogic-s9xxx-armbian: Armbian for Amlogic s9xxx tv box. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, etc. including install to EMMC and update related functions. (github.com)依据个人喜好选择:jammy(Ubuntu最新发行版代号)或bullseye(Debian最新发行版代号)
Armbian固件及工具下载:Armbian_22.11.0_Aml_s905l3a_bullseye_5.15.62_server_2022.09.06.img.gzRufus 3.20 便携版


下载并解压Armbian固件中的img文件,插入U盘(容量需>=4GB,会格式化U盘,请提前转移重要资料!笔者使用大妈近期比较热门的海康威视 星云R32 USB3.1 U盘 128GB写入速度较快但未能启动,更换金士顿 USB3.0 32GB U盘后成功,如U盘不能启动建议更换闪迪等品牌U盘),在Rufus设备栏选择U盘,点击引导类型选择处的选择 选择解压后的Armbian镜像文件(Armbian_22.11.0_Aml_s905l3a_bullseye_5.15.62_server_2022.09.06.img)

Part 3. 安装Armbian到EMMC中
此时回到电视盒子,使用遥控器打开LibreELEC APP 点击确定


等待电视盒子红灯后将U盘插入到靠近网口的USB口,第一屏后出现花屏,然后出现Armbian启动字符

在界面可见当前IP,通过Xshell、MobaXtrem、Putty、Finalshell、Windows Terminal等软件通过SSH协议登录 密码:1234
但是因为Network服务和NetworkManager服务同时启动导致设备获取两个IP,这里显示的IP不一定可以连接,所以我们还是在路由器中寻找这台设备的IP通过SSH登录,当然也链接键盘登录(登录后需要更改密码)后使用:ip a 命令查看IP


登陆后系统会强制更新密码,且规则为字母+符号或数字+符号,如果输入弱口令,会再次要求更新,所以这里我们设置一个合规的密码,稍后再使用passwd更新:)
第二步,选择Shell终端,这里根据个人喜好选择。
添加br0桥接并设置固定IP
nano /etc/network/interfaces.d/br0这段编辑器里总出现问题 所以下面我又再发一次图,以图片为准!
<blockquote>allow-hotplug eth0

关闭并禁用NetworkManager服务(设备会重启)
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
init 6等待重启后再次通过SSH连接盒子后我们开始使用命令将系统写入EMMC
armbian-install


输入305 选择:s905l3aCM311-1a-YST


ext4、BtrFS各有优缺点,这里根据自己情况选择,这里笔者选择BtrFS,等待写入成功


此时您有两种选择:关闭盒子电源,移除U盘,再接通电源 或者优雅的使用 poweroff关机再移除U盘 关开电源
修复写入EMMC后可能出现的网络问题(非必须,如果写入后网络正常请无视)
rm /run/resolvconf/resolv.conf
ln -s /etc/resolv.conf /run/resolvconf/resolv.conf重新插拔网线后查看盒子IP
另,这个U盘暂时请保留内容!下一次可以用来装HomeAssistant。
Part 4. 安装Docker及青龙、宝塔面板
这里先换源:nano /etc/apt/sources.listCtrl+K全部删除 复制清华源 鼠标中键(滚轮)粘帖deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-freeCtrl+X → y → 回车 保存
更新源并安装以下软件:apt update && apt install -y apt-transport-https apparmor udisks2 gpiod lrzsz安装Docker(使用清华源):mkdir -p /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullapt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
新建目录后安装青龙,青龙登录地址:盒子IP:5700 (注意英文冒号)mkdir -p /data/docker && cd /data/dockerdocker run -dit \
-v $PWD/ql/config:/ql/config \
-v $PWD/ql/log:/ql/log \
-v $PWD/ql/db:/ql/db \
-v $PWD/ql/scripts:/ql/scripts \
-p 5700:5700 \
--name qinglong \
--hostname qinglong \
--restart always \
whyour/qinglong:latest
继续安装宝塔面板:这里使用cyberbolt/baota,需要生成测试环境并复制文件后删除再生成正式环境,注意命令中的username 不能使用admin,否则会报错docker run -itd --net=host \
--name baota-test cyberbolt/baota \
-port 8888 -username sfezen -password 987654321使用以下命令查看容器是否已启动,此处面板链接IP需更正为盒子IP,下同docker logs baota-test 新建宝塔映射目录mkdir -p /data/docker/baota复制容器中www目录到/data/docker/baota中docker cp baota-test:/www /data/docker/baota复制完成后停止并删除测试容器docker stop baota-test && docker rm baota-test创建正式容器,此处port将成为宝塔面板登录端口,修改username、password建议改成强口令docker run -itd -v /data/docker/baota/www:/www --net=host --restart=always \
--name baota cyberbolt/baota \
-port 9888 -username sfezen -password 987456321再次使用' docker logs 容器名 '查看容器是否已启动docker logs baota
通过盒子IP:端口登录宝塔面板,少年,快去建站吧!
现在已经安装好了青龙和宝塔,让我们来看看这个8GB的ROM还剩多少?

我的天呐!居然还有3.5G的空间,反正宝塔青龙又不是很耗费CPU,我们就匀出来1G+2G来给OpenWRT吧~说干就干!
Part 5. 安装KVM及OpenWRT
有朋友可能会问,这里为什么不通过Docker安装OpenWRT呢?KVM会不会损失性能?这里主要基于3个原因:1. Turbo ACC 网络加速 2. 在Docker中使用OpenWRT需打开特权模式(--privileged)影响宿主机稳定性 3. 性能损坏基本可以无视,这一点F大在《在 KVM 虚拟机中安装使用 OpenWrt 的说明》中已有说明,所以本着价值最大化原则,这里使用KVM进行
安装KVM及依赖apt-get install -y gconf2 qemu-system-arm qemu-utils qemu-efi ipxe-qemu libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager seabios vgabios gir1.2-spiceclientgtk-3.0 xauth fonts-arphic-ukai与此同时,下载OpenWRT所需的镜像,这里使用O大的编译好的镜像openwrt_qemu-aarch64_R22.9.1_k5.15.62-flippy-76+o.qcow2
将下载后的文件通过rz命令上传至:/var/lib/libvirt/images并改名openwrt.qcow2当然你也可以在终端中使用wget下载cd /var/lib/libvirt/images/mv openwrt_qemu-aarch64_R22.9.1_k5.15.62-flippy-76+o.qcow2 openwrt.qcow2
然后我们给镜像减肥(16G -> 3G)这哪是减肥,这分明是!!!为什么要就减肥?这是因为宿主机实际可使用空间不到4G 而OpenWRT镜像默认是16G的虚拟磁盘 可能会出现OpenWRT镜像占满宿主机空间导致系统不稳定额外的空间可以通过 OpenWRT 网络存储中的 挂载 SMB 网络共享 实现 当然也可以在宿主机中的Docker中挂载阿里云盘等qemu-img resize --shrink openwrt.qcow2 -13G

F大在文章中列举了使用X Server的一些客户端,这里为了更简便,我们使用MobaXtrem来进行演示下载地址:MobaXterm
首先在MobaXtrem中使用SSH连接盒子运行以下命令后会弹出创建虚拟机窗口virt-manager
选择新建虚拟机
选择导入已存在的镜像 → Forward
点击Browser后点选我们上传的OpenWRT镜像(qcow2) → Choose Volume
如果这是我们继续点击Forward就会出现如下错误,莫慌,这是因为我们没有选择操作系统类型
这里我们输入 debian 点选 debian 10(实在是因为没有OpenWRT可以选,那就选宿主机较接近的)
接下来分配内存和CPU核心,这里选默认的1G、双核,对于OpenWRT而言已经很阔绰了
重要到了最后一刻,我们现在更改为他本来应该叫的名字,这里强烈建议没有强迫症的同学命名全部使用小写字母,勾选Customize configuration before install,检查网卡名称是否是br0(Part 3. 中新建的网桥名)
补充:有网友反馈虚拟机启动失败,请检查 Overview-Details-Firmware 这是是否选择UEFI aarch64 如果选错会导致启动失败

这里我们勾选开机自动启动,点击底部的Apply,点击头部的Begin installation
此时,熟悉的窗口就会出现,他来了!他来了!
这时我们按下Enter键,进入OpenWRT Shell
nano /etc/config/network 修改option ipaddr 中的地址为同主路由网段的其它未占用地址,如:192.168.2.253
添加网关、DNS、广播地址,根据自己网络情况更改:option gateway '10.0.1.1'
option broadcast '10.0.1.255'
option dns '10.0.1.1'Ctrl+X → y → 回车保存
重启网络:/etc/init.d/network restart现在可以使用浏览器访问你的OpenWRT啦!默认密码:password
下一步我们换个源吧:使用SuLingGG大佬的openwrt.cc源在系统 → 软件包 → 配置中 注释验证签名 #option check_signature点击提交!X1
更换openwrt.cc源#src/gz openwrt_core https://mirrors.cloud.tencent.com/lede/snapshots/targets/armvirt/64/packages
#src/gz openwrt_base https://mirrors.cloud.tencent.com/lede/snapshots/packages/aarch64_cortex-a53/base
#src/gz openwrt_luci https://mirrors.cloud.tencent.com/lede/releases/18.06.9/packages/aarch64_cortex-a53/luci
#src/gz openwrt_packages https://mirrors.cloud.tencent.com/lede/snapshots/packages/aarch64_cortex-a53/packages
#src/gz openwrt_routing https://mirrors.cloud.tencent.com/lede/snapshots/packages/aarch64_cortex-a53/routing
#src/gz openwrt_telephony https://mirrors.cloud.tencent.com/lede/snapshots/packages/aarch64_cortex-a53/telephony

src/gz openwrt_core https://openwrt.cc/snapshots/targets/armvirt/64/packages
src/gz openwrt_base https://openwrt.cc/snapshots/packages/aarch64_cortex-a53/base
src/gz openwrt_luci https://openwrt.cc/snapshots/packages/aarch64_cortex-a53/luci
src/gz openwrt_packages https://openwrt.cc/snapshots/packages/aarch64_cortex-a53/packages
src/gz openwrt_routing https://openwrt.cc/snapshots/packages/aarch64_cortex-a53/routing
src/gz openwrt_telephony https://openwrt.cc/snapshots/packages/aarch64_cortex-a53/telephony点击提交!X2
保存后在KVM终端中使用命令更新opkg update作为旁路由,请关闭DHCP,在 网络 接口 LAN 修改 勾选忽略该接口 物理设置中取消勾选桥接 保存并应用在网络 防火墙 常规设置 转发 拒绝改为接受在网络 Turbo ACC 网络加速设置 勾选 BBR 拥塞控制算法 保存并应用
结尾:至此,本篇也就进入尾声了,此时我们的8GB存储还有3.2GB的空间,这里需要留出空间给宝塔安装lnmp等,这个方案是否稳定,是否经得起长久的折腾,需要您和我一同来实践、去探索,也希望这篇文章能给您带来一点点启发,以上。

sfezen 发表于 2023-2-6 11:55

20221207更新补丁:
1. 文中所使用的ophub的OpenWRT版本存在一些bug如:半双工、CPU主频等,建议使用haiibo的kvm版:https://github.com/haiibo/OpenWrt/releases,记得选openwrt_qemu-aarch64_xxx+o.qcow2
,对于绝大多数人来说,mini版本就足够
2. Openwrt升级可在OP菜单中使用晶晨宝盒自动升级,记得先备份下载配置,完整更新全系统

kknd22 发表于 2022-9-8 01:56

都涨价了,现在接近100
关键没WIFI没千兆有线这两点有点坑

路还长 发表于 2022-9-8 08:26

技术贴帮顶

Zhang-ss 发表于 2022-9-8 08:50

kknd22 发表于 2022-9-8 01:56
都涨价了,现在接近100
关键没WIFI没千兆有线这两点有点坑

我也有两台cm311-1a-ch,你说的都是小问题,掉盘才是硬伤,最新版也掉盘。目前来说,要挂载硬盘的朋友,慎买,掉盘真的折磨人

Yxin 发表于 2022-9-8 09:25

真的是技术贴,这步用KVM建虚拟机真的是打开小白使用KVM的第一步。好教程,已收藏!

一脸懵13 发表于 2022-9-8 10:12

Zhang-ss 发表于 2022-9-8 08:50
我也有两台cm311-1a-ch,你说的都是小问题,掉盘才是硬伤,最新版也掉盘。目前来说,要挂载硬盘的朋友, ...

掉盘我觉得是供电不行

nimh 发表于 2022-9-8 11:08

感谢分享!!!

Yxin 发表于 2022-9-8 11:14

没想到失败的这么快

Yxin 发表于 2022-9-8 11:24

Yxin 发表于 2022-9-8 11:14
没想到失败的这么快

实践过后,重新看了一下f大的KVM教程(https://github.com/unifreq/openwrt_packit/blob/master/files/qemu-aarch64/qemu-aarch64-readme.md),发现了一个问题就是在概况选择uefi时,要选择uefi-aarch-64.
https://user-images.githubusercontent.com/68696949/180735777-878b7661-22fc-473b-ad72-f64d1dc75b58.png

axzy 发表于 2022-9-8 11:41

谢谢楼主分享,思考了

sfezen 发表于 2022-9-8 11:49

Zhang-ss 发表于 2022-9-8 08:50
我也有两台cm311-1a-ch,你说的都是小问题,掉盘才是硬伤,最新版也掉盘。目前来说,要挂载硬盘的朋友, ...

掉盘的问题 我看O大的issues上也有人反馈 不过我使用的uuid挂载固态硬盘 并未出现这个问题 建议你试试关闭自动休眠:https://github.com/ophub/amlogic-s9xxx-armbian/issues/543

sfezen 发表于 2022-9-8 11:51

Yxin 发表于 2022-9-8 11:24
实践过后,重新看了一下f大的KVM教程(https://github.com/unifreq/openwrt_packit/blob/master/files/qe ...

这里不知道什么原因 我当时检查默认的是uefi启动 所以没有提及这一步 不过解决了就好!

cxincn 发表于 2022-9-8 14:09

好教程,已收藏!

andioy 发表于 2022-9-8 21:12

我买的是2+16,正在安装依赖中,还是很慢的不知道是不是网络的原因

andioy 发表于 2022-9-8 22:55

KVM依赖安装失败,请问一下依赖的最新的出处在哪里
页: [1] 2 3 4 5
查看完整版本: 魔百和CM311-1a KVM Openwrt& Docker 青龙 宝塔