折腾All in one系列(一)
折腾All in one系列(一)
系列文章
第一部分 基础知识
-
什么是All in one?
由于笔者近期研究生学习生活中遇到了一些事情,导致之前ESP32的学习任务发生了中断,并且最近实在是调整不过来学习状态,因此笔者想要临时更换一下学习方向,消遣一下时光。这次笔者打算折腾一下All in one,智能家居是一个我非常感兴趣的方向(尽管这是与我研究生专业背道而驰的),我一直想要打造一套属于自己的智能家居体系,当然这是一个听起来十分远大的理想,就近期而言我想要打造一个智能家居式的工作桌面:无论是学校的工位还是家里的书桌都是只有一个网口,但是目前我有很多的嵌入式机器需要通过网口链接网络,因此需要一个交换机或者软路由将网口进行拓展。另一方面,就我个人而言我比较喜欢收集各类的电子书、壁纸、笔记、代码、视频等相关资料,这些资料会占据大量的电脑、平板的存储空间,而移动硬盘每次使用起来也不是很方便网络硬盘也存在一定程度上的空间限制与网速限制,因此我想要搭建一个Nas(成品的Nas太贵了,实在是买不起,而且我还是喜欢折腾对于成品Nas的需求并不是很高)。最后,想要在机器上跑一些相关代码和服务。
根据上述的需求进行整理,我入手了一个X86的mini主机,其不仅具有非常高的颜值并搭载了一块低功耗CPU(N100),并拥有4个2.5G网口,支持HDMI、Typec音视频输出,16G的内存与1TB的存储空间……
-
什么是虚拟机?
根据笔者曾经的学习经历来说,共在两个地方基础过“虚拟机”:一个是在学习Linux系统时,在Windows操作系统下安装VMware运行Ubuntu操作系统,一个是在学习Java语言时,配置Java虚拟机编译运行Java代码(这个虚拟机实现了Java语言的跨平台特性)。虚拟机即通过软件模拟具有完整硬件系统功能的运行在一个完全隔离环境中的完整计算机系统[1]。常见的虚拟机有VMware、VirtualBox等,这类虚拟机通常安装在Windows操作系统之上,相较于安装双系统的方式而言,其以牺牲一部分性能为代价,从而可使用多个系统的软件生态。
1
用户在Windows操作系统上像打开软件一样打开linux操作系统,既可以使用linux系统上的软件,也可以同时使用windows系统上的软件,并且两个操作进行文件传输也非常方便。
1
由于Linux操作系统与Windows操作系统挂载磁盘的格式不同,所以在安装双系统后,Linux操作系统可以访问划分给Windows的磁盘文件,但是在Windows操作系统下并不能访问划分给Linux的磁盘文件。
除了上述虚拟机外,还有一些虚拟机可直接将轻量级虚拟机管理系统部署在一个硬件设备上,并支持同时运行多个虚拟系统,实现所谓的“All in one”。这类虚拟机主要有PVE、ESXI两类。通过查询相关资料与视频[2][3][4][5]笔者最终选择PVE虚拟机来搭建All in one。
-
什么是硬件直通?
首先我们知道虚拟系统要么运行在底层操作系统的虚拟管理软件中,要么运行在诸如PVE的虚拟机管理系统软件中,其使得多个操作系统可以部署在一个设备,并且每个操作系统都可以通过虚拟接口访问硬件设备。在All in one的某些场景中可能有且只有一个操作系统需要使用某个硬件设备,其余操作系统并不需要使用这个设备,那么我们可以通过硬件直通操作使这个操作系统直接控制硬件设备,这个操作就是硬件直通。直通给某个系统的硬件设备,不能在被其他虚拟系统访问。
第二部分 烧录PVE虚拟机管理系统
-
首先下载PVE虚拟机镜像Download Proxmox software, datasheets, agreements。
-
其次将U盘格式化为FAT32格式,然后使用镜像烧录工具将刚才下载的镜像文件烧录到U盘中去,烧录完成后弹出U盘。
-
将U盘插到迷你主机上,链接电源、键盘、鼠标、屏幕。开机,不停的按DEL键进入bios,在启动项中设置U盘启动为首选项,保存配置退出重启机器即可。
-
重启后进入到PVE安装引导界面,根据提示输入相关信息:
1
2
3
4
5
6
7
8
9
10
11@烧录硬盘:我的mini主机只有一个硬盘,因此默认即可
@国家:China
@地区:Asia/shanghai
@键盘:U.S Keyboard
@密码:即root用户登录密码
@邮箱:根据自己邮箱填写即可,我的邮箱为ChenZR20010509@outlook.com
@网卡选择:我的mini主机有四个网卡,这里我选择网卡二(enp2s0)
@域名:随便填写一个即可
@IP地址:我设置为192.168.100.254/24
@Gatewy:我设置为192.168.100.1
@DNS server:我设置为1.1.1.1 -
依据引导界面填写相关信息后进行PVE系统的安装,安装完成后根据提示拔出U盘重启机器。
-
使用网线链接小主机和自己的电脑,打开自己电脑的网络适配器设置界面,设置以太网的属性,双击Internet网络协议版本4(IPV4)属性:
1
2@IP地址:192.168.100.xxx(除去254其他都行)
@子网掩码:255.255.255.0 -
到这一步我们就可以通过在网页上输入192.168.100.254:8006访问PVE的管理后台,同时我们也可以使用Putty工具、WinScp工具SSH访问我们的mini主机。
1
2@用户名:root
@密码:安装PVE时自己设置的密码 -
OK,PVE管理系统安装完成!!!
-
查询自己的mini主机是否支持硬件直通【即是否支持VT-D技术】:
- Intel CPU查询:英特尔 | 数据中心解决方案、物联网和电脑创新 (intel.cn)
- AMD CPU查询:AMD ׀ 同超越,共成就 _ 人工智能
-
配置硬件直通:
1 | 修改grub文件: |
第三部分 Ikuai主路由系统的安装
CzrTutingB:
尽管目前我可以通过网线使我的笔记本与mini主机进行通信,但是mini主机自身现在并不能够链接到互联网进行系统软件的换源与更新操作。在之前玩树莓派的时候我们通常将笔记本的WLAN网络共享给以太网,进而使得树莓派链接互联网,但是由于这里我们自行设置了笔记本以太网的IPV4地址管理PVE,如果使用网络共享方法的话,笔记本电脑以太网IPV4地址必须为192.168.137网段下的地址使得mini主机联网,可这样我们就无法通过192.168.100网段下的地址进行PVE的管理操作【毕竟笔记本电脑只有一个网口】,因此我们需要另一根网线连接到Mini主机,使其能够连接到互联网。
我的mini主机有4个有线网口,根据我的应用需求,需要将一个有线网卡直通给Ikuai系统作为WAN口,其余三个网卡作为MINI主机的LAN口与管理口。s
第一章 网卡的配置
-
设置Eth1、2、3为管理口,Eth0为WAN口直通给Ikuai:
-
进入PVE管理后台页面,点击页面左侧导航栏中的pve----系统----网络,配置vmbr0桥接给Eth1、2、3
-
双击vmbr0,桥接端口中输入:enp2s0 enp4s0 enp5s0。每项之间用英文空格隔开,这里需要根据自己的实际情况自行配置。
-
点击应用配置后,重启PVE。
-
将网线拔出,依次插入Eth1、2、3三个网口,验证三个网口是否都能通过网址登陆到PVE后台。
第二章 虚拟系统的安装
-
前往https://www.ikuai8.com/component/download下载Ikuai系统的ISO镜像。
-
进入PVE管理后台页面,点击页面左侧导航栏中的pve----local(pve),点击页面中的上传按键,上传Ikuai镜像文件。
-
创建ikuai虚拟机:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27常规页面:
节点:PVE
资源池:默认
VM ID:100
名称:Ikuai
操作系统页面:
选择使用CD/DVD光盘映像文件(ISO)
存储:local
类别:linux
ISO镜像:选择前一步上传的ikuai系统镜像
版本:6.x-2.6 kernel
系统页面:
显卡:默认
SCSI控制器:默认
机型:q35
Qemu代理:不选择
BIOS:默认
添加TPM:不选择
磁盘:
只需要更改磁盘大小为1GB,其余选项默认
CPU:
插槽:1
类别:host
核心:根据自己主机CPU进行选择,N100为4核CPU,因此这里我设置为4
内存:2048
网络页面:
所有选项默认即可 -
配置网卡直通:
- 点击Ikuai系统----硬件----添加PCI设备----原始设备----选择网卡0。
- 如果显示No IOMMY……即前面的直通步骤失败,需要进行排查。
-
修改引导顺序:
- 点击Ikuai系统----选项----引导顺序----将ide2设置为第一引导,关闭网络引导。
-
启动虚拟机,安装Ikuai:
-
启动后打开控制台输入数字1,将系统安装到硬盘,Y确认。
-
安装完成后,在硬件中删除CD/DVD硬件,并在选项中配置开机自启动。
-
使用网线通过ETH0网口连接至光猫。
-
输入数字1设置网卡绑定:
1
2明明我们刚才是把ETH0直通给了Ikuai为什么这里要把Eth1绑定到wan1呢,因为在Ikuai系统中,Eth0即为系统自带虚拟网卡其会自动默认绑定到lan1,而Eth1才是我们刚才直通的Eth0
set wan1 eth1 -
输入数字2设置Ikuai的登陆地址:
1
2
3
4输入数字0,设置lan1地址,这里的地址要与PVE管理的地址为同一网段下
0
输入IP地址即可
192.168.100.1/255.0.0.0 -
打开浏览器登陆上一步配置的IP地址:
1
2用户名:admin
默认密码:admin -
初次登陆设置登陆密码。
-
第三章 Ikuai网络配置
CzrTuringB:
网络配置完成后,电脑即可连接上有线网网络,笔记本打开网络适配器选项,将以太网的IPV4地址改为自动获取。
-
外网设置:
1
2
3@网卡:刚才直通的网卡
@接入方式:DHCP动态获取
@其余选项默认即可 -
内网设置:
1
2
3@网卡:ikuai系统的虚拟网卡
@IP地址:192.168.100.1
@子网掩码:255.255.255.0 -
DHCP服务配置:
1
2
3
4
5
6
7
8
9
10
11@服务接口:lan1
@客户端地址:192.168.100.10 - 192.168.100.200
@子网掩码:255.255.255.0
@网关:192.168.100.1
@首选DNS:180.76.76.76
@备选DNS:223.5.5.5
@租期:120分钟
@过期地址保留时间:0小时
@检查接口IP有效性:勾选
@只应用于DHCP中继:不开启
@关联接口:全部线路 -
IPV6设置:
-
电脑通过网线连接到光猫,通过IPv6 测试 (test-ipv6.cz)测试自己的网络是否支持IPV6。【大部分情况下都是支持的,如果显示不支持可以查询一下自己光猫的IPV6设置】
-
进入Ikuai系统的IPV6外网设置页面:
1
2
3
4
5
6@IPv6:开启
@外网接口:wan1
@接入方式:DHCPv6客户端(动态获取)
@请求前缀长度:自动
@强行获取前缀:开启
@客户端DUID标识:随机生成 -
进入Ikuai系统的IPV6内网设置页面:
1
2
3
4
5
6
7
8
9@内网接口:lan1
@配置类型:自动获取
@绑定外网线路:wan1
@前缀分配长度:自动
@DHCPv6:开启
@DHCPv6模式:无状态+有状态
@RA通告绑定:开启 (开启RA通告绑定后,终端必须匹配前缀静态分配规则, 才能获取无状态v6地址或网关地址)
@IPv6 DNS:开启
@租期:120分钟 (提示:wan口IPv6前缀变化会影响终端IP租期)
-
第四章 开启Ikuai的DMZ主机功能
CzrTuringB:
我家里的网络情况目前如下:光猫的一个千兆网口接到了路由器的wan口,光猫的另一个千兆网口原先是直接到我的电脑主机上的,现在我将其接到了MINI主机的wan口,之后电脑主机通过网线接软路由的Lan口实现上网。但是由于MINI主机硬件主板没有多余的PCIE接口插入无线网卡共享WIFI,因此我的联网设备只能通过网线连接到MINI主机的Lan口上访问NAS,这对于我的手机和平板非常的不友好,因此需要在Ikuai中开启DMZ主机功能使得路由器下的设备可以访问到NAS设备。
-
什么是DMZ?
DMZ即为“demilitarized zone”的缩写,中文名称为“隔离区”,也称“非军事化区”。通俗的理解,其可以让外网设备访问到内网设备,首先应提前说明的是这里的外网并非指代的是互联网而是路由器管理之外的网络。以我家里的网络拓扑为例,光猫拨号连接互联网,其仍充当了一个交换机的作用,在某个网段下分IP地址给路由器和我的MINI主机,MINI主机又下分另一个网段的IP地址给各个虚拟机和连接到MINI主机LAN口的物理设备。路由器下分一个网段的IP地址给通过无线连接到路由器的设备。我的笔记本电脑可以Ping同MINI主机的IP以及路由器的IP,但是我无法Ping通连接到路由器设备的IP,同理路由器下的设备也一样。
为了使路由器下设备能够访问到MINI主机下的设备,我们只需要在Ikuai中开启DMZ主机功能,这样我们就可以直接通过Mini主机的IP地址直接访问到我们的NAS设备。
-
操作过程:
-
登陆到Ikuai的控制页面,查询ikuai的IP地址:
1
2@wan口地址:即光猫分配给MINI主机的IP,192.168.1.8
@NAS虚拟机地址:192。168.100.12 -
打开网络设置----端口映射----DMZ主机,新增配置信息如下:
1
2
3
4
5@映射类型:外网接口
@外网地址:wan1
@内网地址:192.168.100.12
@排除协议:无
@备注:NAS -
启动后,此时手机连接路由器wifi,在网页中输入:192.168.1.8:5000即可访问NAS管理页面。并且华为手机或平板可以在文件管理器中的网络邻居中添加NAS设备,进行文件的上传与下载。
-
第四部分 OpenWrt旁路由系统的安装
第一章 虚拟系统的安装
-
前往[OpenWrt Wiki] Downloads下载OpenWrt系统的镜像。
-
进入PVE管理后台页面,点击页面左侧导航栏中的pve----local(pve),点击页面中的上传按键,上传openwrt镜像文件。
-
创建oepnwrt虚拟机:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23常规页面:
节点:PVE
资源池:默认
VM ID:101
名称:OpenWRT
操作系统页面:
不适用任何介质
系统页面:
显卡:默认
SCSI控制器:默认
机型:q35
Qemu代理:不选择
BIOS:默认
添加TPM:不选择
磁盘:
删除磁盘
CPU:
插槽:1
类别:host
核心:根据自己主机CPU进行选择,N100为4核CPU,因此这里我设置为4
内存:1024
网络页面:
所有选项默认即可 -
打开PVE控制台输入:
1
2
3101:根据自己安装虚拟系统的ID来设置
openwrt-23.05.4-x86-64-generic-ext4-combined-efi.img:根据自己img镜像具体文件名来设置
qm importdisk 101 /var/lib/vz/template/iso/openwrt-23.05.4-x86-64-generic-ext4-combined-efi.img local-lvm -
在OpenWRT虚拟机硬件中----删除CD/DVD驱动器。
-
在OpenWRT虚拟机硬件中----选中未使用的磁盘----设置总线/设备为SATA格式。
-
在OpenWRT虚拟机选项中设置引导顺序,只勾选SATA即可。
-
打开OpenWRT虚拟机的控制台,等待OpenWRT安装完毕。
-
配置管理页面IP地址:
1
2vim /etc/config/network
更改lan1的option ipaddr为192.168.100.2 -
登陆管理页面:
- 第一次登陆用户名为root,密码随便输入即可
- 根据要求设置新的密码
第二章 网络配置
-
修改lan口配置:
1
2
3
4
5
6
7@协议:静态地址
@IPv4地址:192.168.100.2
@IPv4子网掩码:255.255.255.0
@IPv4网关:192.168.100.1
@自定义DNS服务器:192.168.100.1
@忽略DHCP接口,并禁用所有的IPV6设置
@取消勾选桥接接口,接口保持为eth0 -
创建lan6口配置:
1
2
3
4@协议:DHCPV6
@设备:ETH0
@防火墙区域:lan
@其余选项默认 -
进行Ping测试IPV4和IPV6的连接性。
第五部分 PVE虚拟机管理系统配置
第一章 PVE源的修改
-
设置PVE系统的DNS【PVE----设置----网络----PVE】:
1
2
3
4@搜索域:czrturingb.com
@DNS服务器1:10.0.0.1
@DNS服务器2:223.5.5.5
@DNS服务器3:119.29.29.29 -
测试网络链接状态:
1
ping baidu.com
-
SSH链接PVE命令行控制系统:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15修改基础系统(Debian)源
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
修改 Proxmox 源
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
修改Ceph 仓库源
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list
修改CT Templates源
sed -i.bak 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm && systemctl restart pvedaemon
注释企业源
sed -i.bak 's/^/#/g' /etc/apt/sources.list.d/pve-enterprise.list
更新索引, 升级安装软件包
apt update && apt dist-upgrade
更新完成后重启系统
reboot -
删除订阅弹窗:
1
2sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service
删除完成后重启系统
第二章 PVE安装软件
-
Vim:
1
apt-get install vim
-
网络工具软件的安装:
1
2
3apt-get install iptables
apt-get install iptables-persistent
apt-get install net-tools
第三章 PVE开启IPV6
-
编辑sysctl.conf文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14vim /etc/sysctl.conf
文件末尾添加
net.ipv4.ip_forward=1
net.ipv6.conf.all.accept_ra=2
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.vmbr0.accept_ra=2
net.ipv6.conf.all.autoconf=1
net.ipv6.conf.default.autoconf=1
net.ipv6.conf.vmbr0.autoconf=1
net.ipv6.conf.all.forwarding=1
使更改生效
sysctl -p
重启系统
reboot -
查询IP地址:
1
2ifconfig | grep inet6
我家里的网络是电信的,所以IPV6地址为240e开头 -
测试IPV4和IPV6地址的连通性。
第六部分 HomeAssistantOS的安装
第一章 虚拟系统的安装
-
选择冬瓜大佬的HAOS镜像,【新提醒】pe安装x86原生HAOS的方法(虚拟机可用)内有PVE安装教程(12.4) - 『冬瓜HA』专区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com),进入这个网址下载iso镜像。
-
进入PVE管理后台页面,点击页面左侧导航栏中的pve----local(pve),点击页面中的上传按键,上传HomeAssistantOS镜像文件。
-
创建HomeAssistantOS虚拟机:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29常规页面:
节点:PVE
资源池:默认
VM ID:102
名称:HAOS
操作系统页面:
选择使用CD/DVD光盘映像文件(ISO)
存储:local
类别:linux
ISO镜像:选择前一步上传的haos系统镜像
版本:6.x-2.6 kernel
系统页面:
显卡:默认
SCSI控制器:默认
机型:q35
Qemu代理:不选择
BIOS:UEFI
添加TPM:不选择
磁盘:
更改磁盘大小为100GB
磁盘格式为SATA
其余选项默认
CPU:
插槽:1
类别:host
核心:根据自己主机CPU进行选择,N100为4核CPU,因此这里我设置为4
内存:4096
网络页面:
所有选项默认即可 -
打开虚拟机控制台,进入win10系统,右键桌面上自带的脚本,根据提示输入1安装Haos,安装完成后关机。
-
打开HAOS----硬件----删除CD/DVD硬件。
-
打开HAOS----选项----QEMU Guest Agent----启用
-
打开控制台启动虚拟机,大概需要等待上二十多分钟,等待HomeAssistant标识出现
1
2
3
4
5
6
7登陆
login
haos开始后台安装
输入下面的指令查看安装进度
ha-install -t
安装完成后,重启
ha host reboot -
可以在HAOS虚拟机的概要中看到其IP地址,根据IP地址我们就可以登陆到HAOS的管理页面。
第二章 HomeAssistantOS初步配置
-
相关端口:
1
2
3@8123:系统的管理界面端口
@4357:系统的日志端口
@7681:系统的命令行端口 -
进入到HAOS的管理页面,选择创建我的智能家居,根据提示输入相关信息:
1
2
3
4@姓名:CzrTuringB
@用户名:czrturingb
@密码:######
@确认密码:###### -
选择自己的地址定位
-
取消掉共享自己的相关信息服务
-
完成初始化配置
第七部分 黑群晖系统的安装
-
前往https://pan.baidu.com/s/11MFVGDO9llVdwejIeYWscg?pwd=7rdm下载系统的镜像【提取码:7rdm】。
-
进入PVE管理后台页面,点击页面左侧导航栏中的pve----local(pve),点击页面中的上传按键,上传群晖镜像文件。
-
创建群晖虚拟机:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23常规页面:
节点:PVE
资源池:默认
VM ID:103
名称:NAS
操作系统页面:
不适用任何介质
系统页面:
显卡:默认
SCSI控制器:默认
机型:q35
Qemu代理:不选择
BIOS:默认
添加TPM:不选择
磁盘:
删除磁盘
CPU:
插槽:1
类别:host
核心:根据自己主机CPU进行选择,N100为4核CPU,因此这里我设置为4
内存:2048
网络页面:
所有选项默认即可 -
打开PVE的控制台输入:
1
2
3101:根据自己安装虚拟系统的ID来设置
rr.img:根据自己img镜像具体文件名来设置
qm importdisk 103 /var/lib/vz/template/iso/rr.img local-lvm -
添加一个Sata设备,给NAS虚拟机,由于我的MINI主机只有一块1T的固态硬盘,因此不能进行直通,把固态硬盘的一部分虚拟给NAS系统即可。
-
通过Ikuai查询群晖的IP地址,然后在网页上输入IP:7681端口,进入网页安装:
1
2
3@Choose the model 3622
@choose the version 7.2
@Build the loader -
编译完成后,在网页上输入IP:5000端口,进入群晖的初始化配置界面,根据提示完成相关配置即可。
第八部分 Debian12
-
前往Debian – 下载 Debian下载系统的镜像。
-
进入PVE管理后台页面,点击页面左侧导航栏中的pve----local(pve),点击页面中的上传按键,上传群晖镜像文件。
-
创建群晖虚拟机:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27常规页面:
节点:PVE
资源池:默认
VM ID:104
名称:Server
操作系统页面:
选择使用CD/DVD光盘映像文件(ISO)
存储:local
类别:linux
ISO镜像:选择前一步上传的Debian12系统镜像
版本:6.x-2.6 kernel
系统页面:
显卡:默认
SCSI控制器:默认
机型:q35
Qemu代理:不选择
BIOS:默认
添加TPM:不选择
磁盘:
只需要更改磁盘大小为100GB,其余选项默认
CPU:
插槽:1
类别:host
核心:根据自己主机CPU进行选择,N100为4核CPU,因此这里我设置为4
内存:4096
网络页面:
所有选项默认即可 -
打开虚拟机,根据引导程序自行安装Debian12系统即可,这里我选择的是最小化安装,并且没有对其进行分区规划操作(毕竟是虚拟机,系统玩坏了删除或者快照恢复即可)。