CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程

news2024/11/25 5:03:56

使用到的工具软件与固件下载地址:
https://41ws38-my.sharepoint.com/:f:/g/personal/ddf_41ws38_onmicrosoft_com/EhgM458YouBBshliWJhjcDcBAU-F5Mu6HTIU8PeKJHZnZA?e=ZnJZa6

不能下载,帖子下面评论。


准备工作

  • 设备 / 硬件:CM311-1a YST 电视盒子 + 电源适配器 + 遥控器、网线、HDMI 线、USB 公对公刷机线、个人电脑 PC、显示屏(可以买视频采集卡代替显示屏)、USB 键盘、U 盘、线刷工具(螺丝刀 + 短接工具)。
  • 工具软件:USB Burning Tool V2.2.0、开心电视助手 V4.0、U盘镜像写入工具:balenaEtcher。
  • 固件:安卓卡刷或线刷包、Armbian 系统镜像。

卡刷方法

买来的 CM311-1A 是原生系统,刷成第三方安卓操作系统,使用更方便。刷入的安卓系统最好默认开启了 ADB(未开启,可参见附录一),默认获取了 root 更好(没有也可以)。

1.下载卡刷包

卡刷包一般都有下图所示的三个文件。

2.卡刷包移到 U 盘

下载好后的卡刷包无需解压,直接原封不动的移到 U 盘根目录(卡刷包有几个文件就都移到 U 盘根目录下)。

3. 刷入卡刷包

CM311-1A 关机,将 U 盘插入靠近网口的一侧。然后开机,同时不停的按遥控器左键(上下左右的左键),出现正在安装系统更新进度条时马上关机,然后迅速开机,这样刷机包就会继续刷下去直到刷机成功。成功后会自动开机进入电视安卓系统,这时就可以拔掉 U 盘了。
一定要看准,只有下面这个图片才是进入到了卡刷模式,如果没有进入到卡刷模式,多试几次。第一次看到下面的图片时,马上关闭电源开关,然后迅速打开电源开关,第二次看到下面的图片时,耐心等待进度条走完就可以了。

4. 进系统正常使用

卡刷完成,会自动进入系统。如果要刷 Armbian 系统,请记下机顶盒的 IP 地址,用于从 U 盘启动(可选,也可使用附录一其他方法使机顶盒从 U 盘启动)。


线刷方法

一般情况下,插上 U 盘,重新插入电源,如果可以从 USB 中启动,只要重新安装即可,多试几次。
如果接入显示器后,屏幕是黑屏状态,且无法从 USB 启动,就需要进行盒子的短接初始化了。先将盒子恢复到原来的安卓系统,再重新刷入 Armbian 系统。首先下载 amlogic_usb_burning_tool 系统恢复工具并安装好。准备一条 USB 双公头数据线,准备一个曲别针。在盒子的主板上确认短接点(参见附录二)的位置,下载盒子对应的 Android TV 固件包。

amlogic_usb_burning_tool 系统恢复工具下载地址:https://github.com/ophub/kernel/releases/tag/tools
Android TV 固件包下载地址:https://github.com/ophub/kernel/releases/tag/tools

1. USB Burning Tool

打开刷机软件 USB Burning Tool。
文件 → 导入烧录包
[ 选择 ]:擦除 flash
[ 选择 ]:擦除 bootloader
点击 [ 开始 ] 按钮。

刷机时,线刷包文件名不要出现中文,否则线刷过程中会出现各种错误。

2. 电源适配器插电 + 短接

电源适配器插电,盒子接上电源线,不打开电源开关(有的盒子不接电源线也可以),
使用 [ 曲别针 ] 将盒子主板上的 [ 两个短接点进行短接连接 ],
并同时使用 [ USB 双公头数据线 ] 将 [ 盒子 ] 与 [ 电脑 ] 进行连接。

两选三接,两选是擦除 flash、擦除 bootloader;三接是插电源线、HDMI 免拆神器、USB 双公头数据线。

3. 开始线刷

打开电源开关。
当看到 [ 进度条开始走动 ] 后,拿走曲别针,不再短接;
当看到 [ 进度条 100% ],则刷机完成,盒子已经恢复成 Android TV 系统。

如果进度条没有走动,可以尝试插入电源。通长情况下不用电源支持供电,只 USB 双公头的供电即可满足刷机要求。
如果以上某个步骤失败,就再来一次,直至成功。

4. 进入 Android TV 系统

点击 [ 停止 ] 按钮,关闭 USB Burning Tool 软件,
然后拔掉 [ 盒子 ] 和 [ 电脑 ] 之间的 [ USB 双公头数据线 ] 。
关闭电源开关,并再次通电重启盒子 CM311-1A。


运行 Armbian 系统

一、制作 Armbian 启动盘

1. 下载自己盒子型号对应的固件

CM311-1A 选择文件名含有 s905l3a 的固件。( Jammy 是 Ubuntu 22.04 的代号;bullseye 是 Debian 11 的代号)

Armbian 系统下载地址:https://github.com/ophub/amlogic-s9xxx-armbian

2. 使用 balenaEtcher 将 Armbian 写到 U 盘

下载好后的压缩包解压,然后使用 balenaEtcher 将 Armbian 写到 U 盘。

balenaEtcher 下载地址:https://www.balena.io/etcher

二、机顶盒运行 Armbian 系统

1. 把制作好的启动盘插到机顶盒 USB 接口上

2. 修改机顶盒从 U 盘启动

使用开心电视助手,远程连接机顶盒。
点击【 调试 】 → 【 从 U 盘 / SD 卡启 】即可。(大佬可参见附录一,查看其他方式来设置从 U 盘启动。)

开心盒子助手下载地址:http://www.kaixindianshi.com/thread-2241-1-1.html

3. 进入 U 盘的 armbian 系统

然后显示器会出现突然花屏,然后再进入跑开机命令的页面,即是成功进入 U 盘的 armbian 系统。

4. 刷入系统到 eMMC(可选)

eMMC 可笼统的理解为硬盘,把操作系统写进 CM311-1A 的硬盘上,覆盖了原系统(实际上此表述不正确)。如果需要机顶盒的安卓系统的话,可以选择不刷入。(双系统:第三方系统刷在 U 盘里面,不插 u 盘启动机顶盒系统,插上 u 盘启动 u 盘系统,不会变砖。)
以下为刷入 eMMC 教程!!!
第三方系统直接写入 emmc,可以脱离 u 盘运行,有变砖风险,变砖后需要线刷恢复。建议备份现在的安卓系统。
等待差不多两分钟后,在路由器上查看机顶盒的 IP。使用 SSH 远程连接 Linux 系统,默认账号 root、密码 1234。然后需要你进行修改密码,输入两遍密码后,直接断开连接。
重新登录 Armbian 系统 → 输入命令:

armbian-install

这里首先要选择盒子型号,这里一定要看仔细,选择 CM311A-YST 版本,因为不同版本的 ARMBIAN 固件序号会有微调,在这一版本为305,就是 s905l3a 的选项。然后选择系统主要文件的存储格式,其中 1 为 ext4 格式、2 为 btrfs 格式,我这里选择了 ext4(常见),输入1。之后耐心等待写入完成。
完成后会有写入成功的提示文字。此时可以关闭电源,拔下 U 盘,并再次通电重启盒子。
最后一步很重要!!!(2022.11.26 的 armbian 不会出现此情况了)刷完系统到 EMMC 后的第一次盒子断电拔 U 盘重启会出现黑屏现象,别着急,第二次给盒子断电、插回 U 盘、通电操作盒子又会正常引导系统。系统引导完成后(盒子指示灯变绿),第三次给盒子断电拔下 U 盘再插电,盒子就能正常从 EMMC 引导并进入 armbian 系统了。

5. 网络设置(可选)

5.1 采用网线

网络配置文件在 /etc/network/interfaces 文件中。默认采用 DHCP 动态分配 IP 的策略(方法1),由 Armbian 所接入的网络路由器自动分配 IP。如果想改为静态 IP,可以把设置方法 1 禁用或删除,启用方法 2 的静态 IP 设置。
方法 1 参考:由 DHCP 动态分配 IP 地址

source /etc/network/interfaces.d/*
auto eth0
iface eth0 inet dhcp

方法 2 参考:手动设置静态 IP 地址

source /etc/network/interfaces.d/*

auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1

5.2 采用无线 WIFI

需要购买无线 USB 网卡,编译安装驱动。

5.2.1 通过 nmcli 连上 WIFI

nmcli 是一个命令行工具,用于控制 NetworkManager;还可以用来显示网络设备状态;创建、编辑、开启/关闭和删除网络连接 。Armbian 系统默认自带 nmcli, 这里不介绍安装方法。
通过 nmcli 直接连上 WIFI 后,系统会记录已保存的 AP。下面是具体的连接方法:

  1. 查看设备状态
    这里 wlp2s0 类型为 wifi,表示我们的无线网卡,状态为 disconnected,还没有连上 WIFI 热点。
    $ nmcli device status
    DEVICE  TYPE      STATE         CONNECTION
    enp1s0  ethernet  connected     Wired connection 1
    wlp2s0  wifi      disconnected  --
    lo      loopback  unmanaged     --
    
  2. 检查 radio
    $ nmcli radio
    WIFI-HW  WIFI     WWAN-HW  WWAN
    enabled  enabled  enabled  enabled
    
  3. 查看附近无线网络信号
    第 5 列表示信号情况,信号越好的 AP,会越靠前。
    $ nmcli dev wifi list
    SSID                  MODE   CHAN  RATE       SIGNAL  BARS  SECURITY
    MYSSID         Infra  11    54 Mbit/s  100     ▂▄▆█  WPA2
    MYSSID         Infra  132   54 Mbit/s  100     ▂▄▆█  WPA2
    SOMEOTHERSSID  Infra  52    54 Mbit/s  49      ▂▄__  WPA2
    MYSSID         Infra  149   54 Mbit/s  45      ▂▄__  WPA2
    MYSSID         Infra  11    54 Mbit/s  42      ▂▄__  WPA2
    SOMEOTHERSSID  Infra  1     54 Mbit/s  27      ▂___  WPA2
    
  4. 连上 AP 热点
    • 如果是无密码的 WIFI, 执行以下连接命令,SSID 就是我们所说的 WIFI 名。
      $ nmcli device wifi connect <SSID|BSSID>
      
    • 加密的 AP,使用以下命令。
      $ nmcli device wifi connect <SSID|BSSID> password <password>
      
      执行命令没有报错后,再 Ping 下百度是否可达,能 Ping 通就表明已经连上 AP,可以正常上网。
5.2.2 更新 WIFI 系统配置,连上 WIFI

更新 /etc/network/interfaces 文件

  1. 备份 interface : cd /etc/network && cp interfaces interfaces.bak
  2. 更新 interface:
    # armbian-config created
    source /etc/network/interfaces.d/*
    
    # Local loopback
    auto lo
    iface lo inet loopback
    
    auto eth0
    allow-hotplug eth0
    iface eth0 inet dhcp
    allow-hotplug wlan0
    iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp
    
    更新 /etc/wpa_supplicant/wpa_supplicant.conf
  3. 备份 wpa 配置文件: cd /etc/wpa_supplicant/ && cp wpa_supplicant.conf wpa_supplicant.conf.bak
  4. 更新 wpa_supplicant.conf:
    network={
    	ssid="网络 ID"
    	psk="密码"
    }
    
  5. 重启网络,ping 百度试下是否连通,正常应该可以成功连网。
5.2.3 通过其他方法,连上 WIFI

Armbian 配置工具:终端中输入 armbian-config
网络管理 TUI:终端中输入 nmtui

使用 armbian-config 时,请先连接有线网络,因为 armbian-config 有几处需要通过网络获取一些数据。

常见问题

收录一些刷入 armbian 系统的问题及解决方法。

1. 如何恢复原安卓 TV 系统

通常使用 armbian-ddbr 备份恢复,或者使用 Amlogic 刷机工具恢复原安卓 TV 系统。

方法一:使用 armbian-ddbr 备份恢复

建议在全新的盒子里安装 Armbian 系统前,先对当前盒子自带的原安卓 TV 系统进行备份,以便在需要恢复系统时使用。请从 TF/SD/USB 启动 Armbian 系统,输入 armbian-ddbr 命令,然后根据提示输入 b 进行系统备份,备份文件的存放路径为 /ddbr/BACKUP-arm-64-emmc.img.gz ,请下载保存。在需要恢复安卓 TV 系统时,将之前备份的文件上传至 TF/SD/USB 设备的相同路径下,输入 armbian-ddbr 命令,然后根据提示输入 r 进行系统恢复。

方法二:使用 Amlogic 刷机工具恢复

参见线刷方法。
注意:方法一仅支持刷入的系统为 O 大( ophub )的 Armbian 系统。

2. SSH 连接不上解决方法

SSH 连接不上、写入 EMMC 后,22 端口默认关闭了、网卡不工作,几秒后就断开、SSH 运行一段时间后无法登录等。
amlogic-s9xxx-armbian/build-armbian/common-files/rootfs/etc/custom_service/start_service.sh
在 /etc/custom_service/start_service.sh 中,把 26、27 两行反向修改,有人是删除两行的 # 可以工作正常,有人是加上 # 注释了正常。我是删除 # 正常。这个问题是因为启动时没有生成 sshd 目录,但各盒子现象不一样。

# [[ -d "/var/run/sshd" ]] || mkdir -p -m0755 /var/run/sshd
# [[ -f "/etc/init.d/ssh" ]] && /etc/init.d/ssh start 2>/dev/null
# 这个脚本的作用是在启动的最后一步,会自动重启下 ssh 服务,确保 ssh 服务起来。(不放心可以添加以下命令)
[[ -f "/etc/init.d/ssh" ]] && sleep 5 && /etc/init.d/ssh restart 2>/dev/null


附录

附录一、设置盒子从 USB / TF / SD 中启动

方法一:命令版

  • 把刷好固件的 USB/TF/SD 插入盒子。
  • 开启开发者模式:设置 → 关于本机 → 版本号,在版本号上快速连击 5 次鼠标左键, 看到系统显示 开启开发者模式 的提示。
  • 开启 USB 调试模式:系统 → 高级选选 → 开发者选项(设置 开启USB调试 为启用)。启用 ADB 调试。
  • 安装 ADB 工具:下载 adb 并解压,将 adb.exeAdbWinApi.dllAdbWinUsbApi.dll 三个文件拷⻉到 c://windows/ 目录下的 system32syswow64 两个文件夹内,然后打开 cmd 命令面板,使用 adb --version 命令,如果有显示就表示可以使用了。
  • 进入 cmd 命令模式。输入 adb connect 192.168.1.102 命令(其中的 ip 根据你的盒子修改,可以到盒子所接入的路由器设备里查看),如果链接成功会显示 connected to 192.168.1.102:5555
  • 输入 adb shell reboot update 命令,盒子将重启并从你插入的 USB/TF/SD 启动,从浏览器访问固件的 IP 地址,或者 SSH 访问即可进入固件。

adb 下载地址:https://github.com/ophub/kernel/releases/tag/tools 或者
adb 下载地址:https://developer.android.google.cn/studio/releases/platform-tools?hl=zh-cn#downloads

方法二:Root 版

刷入的卡刷包带 ROOT。安装 Reboot to LibreELEC 1.1 Apk 到系统里面打开就会进入 recovery 模式。recovery 模式后系统会自动重启进入 u 盘启动。

Reboot to LibreELEC APK 下载地址:https://apkdownloadforandroid.com/download/1000534/2

方法三:软件版

开心电视助手。参见机顶盒运行 Armbian 系统这小节。

附录二、短接方法

拆机找到 4R32(就在主板四周边缘找),用导电体(如:镊子、钳子、曲别针、剪刀等)连接这两个点。也可以使用免拆机神器,插到 HDMI 接口上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/526210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数

凡事发生必将有益于我&#xff0c;高手&#xff0c;从来都不仅仅是具备某种思维的人&#xff0c;而是那些具备良好学习习惯的人&#xff0c;成为高手&#xff0c;无他&#xff0c;手熟尔&#xff01; -----来自一位IT领域的大神 在最近的学习之中&#xff0c;对于格式化输出这个…

微信小程序图片裁剪功能的实现

文章目录 图片上传与处理图片尺寸适配图片显示与裁剪框裁剪框的拖动与缩放增加canvas并裁剪图片保存图片到相册总结 在之前的博文中&#xff0c;已经介绍了如何使用在前端开发中&#xff0c;实现较方便自由的图片裁剪功能&#xff0c;可见博文&#xff1a; 如何一步步实现图片…

直达CSDN——创作者创收

catalogue &#x1f31f; 写在前面&#x1f31f; 关于创收线下聚会&#x1f31f; 创作是最简单的变现模式&#x1f31f; 知识星球是否适合你&#x1f31f; 独自开-让开发变得简单&#x1f31f; 税/睡后收入&#x1f31f; KOL越具价值&#x1f31f; 期待创收组织的建立&#x1f…

MySQL数据库和Redis缓存一致性的更新策略

目录 专栏导读一、更新策略二、读写缓存1、同步直写策略2、异步缓写策略三、双检加锁策略四、数据库和缓存一致性的更新策略1、先更新数据库,再更新Redis2、先更新缓存,再更新数据库3、先删除缓存,再更新数据库延时双删4、先更新数据库,再删除缓存5、总结五、MySQL主从复制…

解密《永恒之塔私服》龙界要塞全貌

《永恒之塔2.0&#xff1a;进军龙界》将于12月29日14:00正式开放测试&#xff0c;全区全服29日起陆续更新&#xff0c;并将在元旦假期期间完成所有区服更新工作。12月27日&#xff0c;2.0新区抢先免费体验已经开始&#xff0c;凭特权激活码抢先免费体验无外挂《永恒之塔2.0》。…

Transformer通俗笔记:从Word2Vec、Seq2Seq逐步理解到GPT、BERT

前言 我在写上一篇博客《22下半年》时&#xff0c;有读者在文章下面评论道&#xff1a;“july大神&#xff0c;请问BERT的通俗理解还做吗&#xff1f;”&#xff0c;我当时给他发了张俊林老师的BERT文章&#xff0c;所以没太在意。 直到今天早上&#xff0c;刷到CSDN上一篇讲B…

TOGAF®10标准读书会首场活动圆满举办,精彩时刻回顾!

7月21日19:30pm&#xff0c;TOGAF10标准读书会线上系列活动-第一季首场活动圆满举办&#xff0c;读书会活动集聚了行业专家的力量&#xff0c;共同阅读、分享并结合自身实践&#xff0c;来讨论TOGAF标准第10版所阐释的内容。 首期读书会聚焦TOGAF标准第10版中的基本内容展开分享…

AI平台、AI中台架构

选择什么方式接入AI开放平台 1)公有云 形式:在开放平台注册账户,申请权限,调用对应AI能力的API服务 缺点:数据出公司域,存在数据安全 优点:价格相对低 2)私有化 形式:将AI能力以产品包的形式部署到客户的服务器上 缺点:需要后续运维支持、价格昂贵 优点:数据…

字节跳动|后端|提前批|一面+二面+三面+HR 面

一面&#xff5c;1h 自我介绍select、poll、epoll&#xff1f;epoll的两种触发模式&#xff1f;TCP三次握手过程&#xff0c;有什么状态&#xff0c;状态机如何变化&#xff1f;TCP握手的目的有哪些&#xff1f;什么是 TIME_WAIT 状态&#xff0c;为什么需要 TIME_WAIT 状态&a…

168张图,万字长文,手把手教你开发vue后台管理系统

“我报名参加金石计划1期挑战——瓜分10万奖池&#xff0c;这是我的第1篇文章&#xff0c;点击查看活动详情。” 我写这个项目的初衷一方面是为了记录自己自学 vue 的一个过程&#xff0c;另一方面是为了帮助小白快速掌握使用 vue 脚手架创建项目的一个完整过程。 本项目是一个…

STM32之ADC

目录 ADC介绍 ADC特性 ADC通道 ADC转换顺序 ADC触发方式 ADC转化时间 ADC转化模式 实验&#xff1a;使用ADC读取烟雾传感器的值 代码实现 ADC介绍 ADC 是什么&#xff1f; 全称&#xff1a; Analog-to-Digital Converter &#xff0c;指模拟 / 数字转换器 ADC的性能…

OpenCV安装配置教程VS2022(超级顺利)

前言 博主最开始没打算写这篇博客&#xff0c;只是想简单的在网上找一下最新版的OpenCV的安装配置教程&#xff0c;适用于VS2022的&#xff0c;但是我搜了一早上&#xff0c;也没搜到一个能让我成功安装配置的&#xff0c;看了很多很多文章&#xff0c;根本就没有几篇有用的。…

JavaEE三层架构

一. JavaEE三层架构 客户端&#xff1a;发送请求【http://ip:port/工程路径/资源路径】给服务器。 服务器&#xff1a;处理客户端的请求&#xff0c;把结果响应给客户端&#xff0c;由以下三部分组成 1.Web层&#xff08;SpringMVC&#xff09;包括&#xff1a;①使用Servlet…

微服务架构统一异常监控Sentry

Sentry 基本介绍简单使用Java项目应用代码侵入&#xff08;不建议&#xff0c;耦合性大&#xff09;全局拦截器捕获&#xff08;建议&#xff09;Lockback.xml 配置&#xff08;建议&#xff09; 基本介绍 Sentry 是一个开源的实时错误报告工具&#xff0c;支持 web 前后端、移…

《从零开始读懂Web3》读后感 之 Web 3.0的前世今生

介绍什么是 Web 3.0 &#xff08;Web3&#xff09;&#xff1f;网络的演变为什么 Web 3.0 很重要&#xff1f;Web 3.0 将如何运作&#xff1f;Web 3.0 的主要功能和技术Web 3.0 用例和应用程序Web 3.0 的潜在好处是什么&#xff1f;Web 3.0 的潜在挑战是什么&#xff1f;Web 3.…

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

在自定义数据上训练 YOLOv8 目标检测模型的步骤可以总结如下 6 步&#xff1a; &#x1f31f;收集数据集&#x1f31f;标注数据集&#x1f31f;划分数据集&#x1f31f;配置训练环境&#x1f31f;训练模型&#x1f31f;评估模型 1. 收集数据集 随着深度学习技术在计算机视觉领…

Windows安装mysql详细步骤(通俗易懂,简单上手)

文章目录 【确认本地是否安装mysql】【下载mysql安装包】【添加配置文件并安装mysql】【修改mysql密码】【配置环境变量】【总结】 前期在windows电脑尝试安装mysql&#xff0c;经历诸多不顺&#xff0c;特把安装详细步骤以及遇见的问题记录下来&#xff0c;提供给有需者使用。…

Java-Web前后端交互实现登陆注册(附源码)

1.完成用户登录功能。 2.完成注册功能。 3.主体利用Maven导入java中的jar包&#xff0c;使用Servlet实现前后端交互&#xff0c;使用mybatis以及注解&#xff0c;mysql进行数据保存&#xff0c;Tomcat服务器进行开发。 效果图 项目结构 代码 mapper(相对应注解) package com.it…

前端搭建砸地鼠游戏(内附源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ 功能介绍✨ 页面搭建✨ 样式设置✨ 逻辑部分✨ 完整代码 ✨ 写在前面 上周我们实通过前端基础实现了打字通&#xff0c;当然很多伙伴再评论区提出了想法&#xff0c;后续我们会考虑实现的&#xff0c;今天还是继续按照我…

微服务---Redis实用篇-黑马头条项目-优惠卷秒杀功能(使用redis的消息队列对秒杀进行异步优化)

微服务—Redis实用篇-黑马头条项目-优惠卷秒杀功能(使用redis的消息队列对秒杀进行异步优化) 1、Redis消息队列 1.1 Redis消息队列-认识消息队列 什么是消息队列&#xff1a;字面意思就是存放消息的队列。最简单的消息队列模型包括3个角色&#xff1a; 消息队列&#xff1a…