FreeBSD 常见问题解答
版权所有 © 1995-2023 The FreeBSD Documentation Project
摘要
这是 FreeBSD 的常见问题解答(FAQ)。我们已尽一切努力使此 FAQ 尽可能信息丰富。
1. 简介
欢迎来到 FreeBSD 的世界!在本部分中,我们提供了 FreeBSD 是什么、其起源、目标、用例以及支持它的社区的综合概述。
探索其名称背后的原因,了解如何为该项目做贡献,并在开源操作系统的背景下探索 FreeBSD 丰富的生态系统。
1.1. 什么是 FreeBSD?
FreeBSD 是一款多才多艺的开源类 UNIX® 操作系统,以其出色的稳定性、安全性和性能而闻名。由一群热心的志愿者社区开发,它基于伯克利软件发行版(BSD)UNIX 操作系统。
FreeBSD 提供了一个功能强大且可定制的环境,适用于各种应用,从服务器和嵌入式系统到桌面和网络设备。其对开源原则的承诺确保了一个透明和协作的开发过程,使 FreeBSD 成为那些寻求可靠且高度适应性操作系统的可信选择。
1.2. 为什么叫做 FreeBSD?
名称“FreeBSD”源自它在伯克利软件发行(BSD)UNIX 操作系统中的根源,该操作系统以其在开源软件世界中的贡献而闻名。“Free”中的“自由”代表了其对自由和开源软件原则的承诺,这些原则赋予用户研究、修改和分发代码的自由。
值得指出的是,这里使用了“Free”一词两种不同的含义:一种是指“没花费”,另一种是指“随你喜欢做任何事情”。
1.3. FreeBSD 项目的目标是什么?
FreeBSD 项目有一个明确而坚定的目标:提供一个在性能、安全性和稳定性方面表现卓越的高质量、开源的类 UNIX 操作系统。
它旨在提供一个多功能平台,适用于各种计算需求,从服务器和工作站到嵌入式系统等各种领域。FreeBSD 秉承开源原则,致力于打造一个协作环境,在这里来自全球开发者社区的贡献帮助塑造和完善操作系统。这种对质量、自由和可靠性的承诺是 FreeBSD 的独特之处,也推动着它作为开源项目不断取得成功。
1.4. FreeBSD 适用于哪些使用场景?
FreeBSD 是一个多功能操作系统,在各种使用场景中表现出色。它特别适用于服务器环境,在那里其稳定性和性能使其成为 Web 托管、数据库和网络应用的热门选择。FreeBSD 强大的安全功能也使其成为防火墙和安全设备部署的强有力候选。除了服务器,FreeBSD 还可以定制以在专业环境中运行,包括嵌入式系统和游戏主机设备。其适应性、可靠性和开源特性使 FreeBSD 成为各种计算需求的引人选择。
1.5. 谁对 FreeBSD 负责?
FreeBSD 是一个以社区驱动的开源项目,具有分散的结构。它的开发和维护是由全球一群奉献的志愿者、开发人员和组织共同合作来增强和扩展这个操作系统。
有关 FreeBSD 项目的关键决定,如项目的总体方向或谁被允许向源代码树添加代码,是由一个由九个人组成的选举产生的核心团队做出的。
这种协作和社区驱动的方式对于 FreeBSD 作为可靠且强大的类 UNIX 操作系统的成功和长期发展至关重要。
1.6. 我怎样才能为 FreeBSD 做出贡献?我能做些什么来帮助?
我们接受各种类型的贡献:文档、代码,甚至艺术作品。请参阅有关如何进行贡献的文章,以获取具体建议。
并感谢您的想法!
1.7. FreeBSD 许可证有任何限制吗?
FreeBSD 基于 BSD 许可证发布,以其宽松性著称。
此许可证对您如何使用 FreeBSD 几乎没有任何限制:
不要声称您编写了此内容。
如果出现故障,请不要起诉我们。
不要删除或修改许可证。
许可证意味着您可以自由修改、分发甚至出售 FreeBSD,而无需将您的修改作为开源发布。但是,在分发 FreeBSD 时,仍需保留原始版权声明和免责声明等一些最低限度的条件。总体而言,BSD 许可证提供了高度的自由和灵活性,使 FreeBSD 成为各种应用和项目的吸引人选择。
我们源代码树中受 GNU 通用公共许可证(GPL)或 GNU 库通用公共许可证(LGPL)约束的代码,虽然在强制访问方面略微受限,但至少不同于通常的相反情况。
1.8. FreeBSD 能否取代我的当前操作系统?
对于许多用户和管理员来说,是的。但这个问题并不是那么简单明了。
FreeBSD 是一个强大而多才多艺的操作系统,可以取代或与许多其他操作系统共存,这取决于用户和管理员的特定需求。然而,FreeBSD 能否取代您当前的操作系统取决于诸如您的硬件、软件需求和对 FreeBSD 的熟悉程度等因素。
尽管它提供了一个强大且功能丰富的替代方案,但在转换之前,评估您的特定用例和兼容性要求是至关重要的。
如果一个应用程序只在一个操作系统上可用,那么该操作系统不能被替换。
从另一个类 UNIX 环境迁移到 FreeBSD 的用户会发现 FreeBSD 很相似。像 Windows® 用户这样的非 UNIX 用户应该准备投入一些额外的时间来了解 UNIX 的运作方式。
1.9. FreeBSD 能运行流行的开源软件吗?
是的,FreeBSD 非常适合运行流行的开源软件。其与各种应用程序和库的兼容性使其成为那些希望部署和使用开源软件包的人的首选。FreeBSD 提供了一个强大稳定的环境,支持各种编程语言、数据库、Web 服务器和其他在开源社区中常用的软件。其 ports 和软件包系统简化了这些软件的安装和管理,确保用户可以轻松访问并在 FreeBSD 上运行他们喜爱的开源工具和应用程序,减少麻烦。
1.10. 我如何在 FreeBSD 中安装软件?
FreeBSD 提供多种软件安装方法。最常见的方法之一是使用内置的 pkg(8)包管理器,它通过获取和安装预构建的二进制软件包简化了该过程。另一种方法是使用 ports(7)集合从源代码编译和安装软件,提供了一种灵活且可定制的安装软件方式。
FreeBSD 的文档详细介绍了这两种方法,确保用户可以轻松地通过所需的软件扩展其系统的功能。
1.11. FreeBSD,NetBSD,OpenBSD 和其他开源 BSD 操作系统之间有哪些区别?
FreeBSD、NetBSD、OpenBSD 和 DragonFly BSD 都是开源 BSD 家族的一部分,共享共同的类 UNIX 基础,但每个项目都有自己独特的重点和优先事项。这些差异反映了每个项目的独特目标,虽然它们有相似之处,但它们的具体优势和重点满足了 BSD 生态系统中不同的用例和偏好。
1.12. FreeBSD 是 Linux® 发行版吗?
不,FreeBSD 不是 Linux 发行版。
虽然 FreeBSD 和 Linux 都是类 UNIX 操作系统,共享许多相似之处,但它们有各自独特的内核。Linux 使用 Linux 内核,而 FreeBSD 使用基于伯克利软件发行(BSD)UNIX 操作系统的 FreeBSD 内核。
FreeBSD 和 Linux 各自拥有其独特的开发社区、发布周期和系统架构,使它们成为独立的操作系统。
FreeBSD 提供了自己一套优势,包括不同的许可模型、系统设计和用户态工具与 Linux 发行版相比。
1.13. 是否可以在 FreeBSD 上运行 Linux 程序?
是的,FreeBSD 提供了一个被称为 linuxulator(linux(4))的兼容层,允许许多 Linux 程序在 FreeBSD 上运行。该功能可以在没有专用 Linux 环境的情况下执行广泛范围的 Linux 二进制文件。
尽管如此,值得注意的是,许多广泛使用的开源软件通过 ports 和软件包系统在 FreeBSD 上有原生版本可用。
2. 安装 FreeBSD
安装 FreeBSD 是利用这个强大的开源操作系统的初始步骤。本节提供了关于在哪里获取 FreeBSD、详细的安装说明以及有关 FreeBSD-CURRENT 和 FreeBSD-STABLE 等概念的基本信息。还深入探讨了发布和快照时间表、安装后配置工具、软件包搜索方法,并解答了关于软件包更新的常见问题。
2.1. 我在哪里可以获取 FreeBSD?
FreeBSD 可从官方 FreeBSD 网站免费下载。
此外,FreeBSD 也可以通过各种镜像站点获得,确保全球用户可以访问。官方网站是获取最新 FreeBSD 版本和更新的主要且最可靠的来源,是开始 FreeBSD 之旅的理想起点。
2.2. 安装 FreeBSD 的说明在哪里?
安装说明可在手册的安装 FreeBSD 章节中找到。
2.3. 什么是 FreeBSD-CURRENT 概念?
FreeBSD-CURRENT 代表 FreeBSD 操作系统的开发分支。这是 FreeBSD 的最前沿版本,是活跃开发的地方。
虽然它包含了最新的特性、改进和实验性变化,但它并不总是像 FreeBSD-STABLE 或发布版本那样稳定。
FreeBSD-CURRENT 作为开发人员和爱好者的平台,他们希望为 FreeBSD 的未来做出贡献,并始终保持在其发展的前沿,尽管它偶尔会经历重大变化,不建议用于生产系统。
2.4. FreeBSD-STABLE 概念是什么?
FreeBSD-STABLE 分支是一个比 CURRENT 更稳定的开发分支。它包含正在进行进一步测试和完善的代码,然后才会合并到 RELEASE 分支中。对于那些想要跟踪 FreeBSD 开发但更喜欢比 CURRENT 更稳定的环境的人来说,STABLE 是一个不错的选择。
2.5. FreeBSD 的发布是如何进行的?
发行工程团队re@FreeBSD.org大约每 18 个月发布一个新的 FreeBSD 主要版本,每 8 个月发布一个新的次要版本,平均而言。发布日期会提前宣布,这样系统上工作的人就知道他们的项目需要在何时完成和测试。每次发布之前都会有一个测试期,以确保新功能的添加不会影响发布的稳定性。
2.6. FreeBSD 快照是何时生成的?
FreeBSD 快照通常定期生成,涵盖所有正在积极开发的分支。这些快照捕获了 FreeBSD 源代码和相关二进制软件包的某一时刻。这些快照的频率可能有所不同,但通常每周或每两周进行一次。这些快照为用户提供了访问 FreeBSD 最新发展和变化的机会,帮助他们保持与项目进展同步。
2.7. 是否有工具执行安装后配置任务?
是的。bsdconfig(8)提供了一个很好的界面,用于配置 FreeBSD 安装后的设置。
2.8. 我如何在 FreeBSD 中搜索要安装的软件?
通过 pkg(8)软件包管理器和 pkg search 命令,可以轻松地搜索要在 FreeBSD 中安装的软件。
用户可以使用此命令使用关键字、软件包名称或描述搜索可用软件包。此功能帮助用户快速在庞大的 FreeBSD ports 软件包集合中定位他们需要的软件,简化向其 FreeBSD 系统添加新应用程序和工具的过程。
2.9. 为什么我的 FreeBSD 系统中没有获取到最新的软件包?
FreeBSD 中最新软件包的可用性受多种因素影响,包括软件包仓库的更新频率和使用的具体 FreeBSD 版本。
还应该添加的是,FreeBSD ports 有两个分支。最新的称为 latest ,最稳定的称为 quarterly 。要使用最新的软件包,需要配置 latest 分支。有关如何配置分支的信息,请参阅手册的 Ports 章节。
3. 硬件
硬件部分探讨了 FreeBSD 与各种硬件配置的兼容性。涵盖了一系列主题,包括支持的架构,最大内存容量,处理器可扩展性,显卡兼容性,Wi-Fi 卡支持,以及包括 10 千兆以太网网络卡支持。无论是计划在服务器、工作站还是专用硬件上部署 FreeBSD,本节提供了有关 FreeBSD 能力和限制的见解,提供有关硬件选择和配置的信息。
3.1. FreeBSD 支持哪些架构?
FreeBSD 支持多种架构,使其成为适用于各种硬件环境的灵活选择。其兼容性扩展到诸如 amd64 、 arm64 、 riscv 等架构。
支持架构的完整列表可以在平台页面找到。
3.2. FreeBSD 支持多少 RAM?
作为一个操作系统,FreeBSD 通常支持与其运行的平台相同的物理内存(RAM)。请记住,不同的平台对内存有不同的限制。
例如, amd64 平台支持高达 4TB 的物理内存。
FreeBSD 支持多少处理器?
FreeBSD 的处理器支持因不同架构而异。在 amd64 和 arm64 系统上,FreeBSD 可以高效地利用多达 1024 个处理器的性能。对于基于 powerpc 的系统,FreeBSD 支持多达 256 个处理器,而在 risc-v 系统上,它可以有效地利用多达 16 个处理器。
FreeBSD 支持哪些显卡?
类似 Intel®、AMD® 或 NVIDIA® 这样的热门图形供应商得到了良好的支持。
可在 FreeBSD Wiki 中找到对 Intel 和 AMD 支持的图形卡列表。
3.5. FreeBSD 支持哪些无线网络卡?
发现 FreeBSD 与各种 Wi-Fi 卡的兼容性,使得将系统连接到无线网络变得容易。
以下是在 FreeBSD 上已知工作良好的 USB Wi-Fi 设备列表:
RT5370 USB 设备(支持 hostap 模式)
TP-Link TL-WDN3200(RT5592,if_run(4))
TP-Link TL-WN725N v2(RTL8188EU,rtwn(4))
TP-Link Archer T4U(RTL8812AU,rtwn(4))
D-Link DWA-131(RTL8192CU,rtwn(4))
D-Link DWA-171 rev A1(RTL8821AU,rtwn(4))
ASUS USB-N10 NANO(RTL8188CUS,rtwn(4))
在 FreeBSD 上已知工作良好的 Mini PCIe Wi-Fi 设备列表:
Realtek RTL8188CE Mini PCIe
3.6. FreeBSD 是否支持 10 Gigabit 以太网网络卡?
FreeBSD 为 10 千兆以太网网络卡提供强大支持,使其成为高速网络环境的可行选择。FreeBSD 内核包含来自各种制造商的广泛范围的 10 千兆以太网适配器的驱动程序,确保无缝集成和最佳网络性能。
更多信息可在 FreeBSD Wiki 上获得。
4. 文档和支持
本节为那些希望深入了解 FreeBSD 的人提供了宝贵的资源。它涵盖了一系列主题,包括学习 FreeBSD 推荐的书籍,商业培训和支持途径,了解 FreeBSD 内部工作原理的见解,以及在 FreeBSD 社区内寻求帮助的地方。
4.1. 有关 FreeBSD 的好书有哪些?
FreeBSD 爱好者和学习者可以探索一系列致力于该操作系统的信息书籍。这些书籍涵盖了从 FreeBSD 基础知识到高级系统管理和开发的各种主题。
一些值得注意的标题包括迈克尔·W·卢卡斯(Michael W. Lucas)著的《绝对 FreeBSD:FreeBSD 完全指南》,以及迈克尔·W·卢卡斯(Michael W. Lucas)著的《FreeBSD 掌握系列》,等等。这些资源提供有价值的见解和知识,帮助用户各个级别的用户掌握 FreeBSD 并最大程度地发挥其潜力。
除了图书以外,FreeBSD 项目还制作了各种广泛的文档,可在线在文档门户中获取。
4.2. 在哪里可以获得商业 FreeBSD 培训和支持?
对于那些寻求 FreeBSD 专业培训和支持的人,有几家商业提供商提供定制服务。FreeBSD 项目维护着一个可以请求支持的公司列表。
4.3. 如何更深入地了解 FreeBSD 的内部情况?
对于想深入了解 FreeBSD 内部运行机制的人来说,可以探索《FreeBSD 操作系统设计与实现》等资源。FreeBSD 架构手册是另一个宝贵的资源,提供了有关 FreeBSD 架构、系统组织和设计原则的详细信息。
此外,审阅 FreeBSD 源代码,可通过 FreeBSD 源代码存储库获得,可为操作系统的核心组件提供宝贵的见解。
4.4. 如何在 FreeBSD 系统中获取帮助?
在 FreeBSD 系统中获取帮助非常简单。FreeBSD 提供丰富的内置文档,可通过 man(1)命令访问,该命令提供有关各种命令和系统组件的全面信息。
另外,FreeBSD 手册在系统上可在线获取,也作为深入指导的宝贵资源。
如果出现特定问题,通过邮件列表、论坛或 IRC 寻求 FreeBSD 社区的帮助可以提供及时的解决方案,并获得经验丰富的 FreeBSD 用户和开发人员的见解。
5. 社区问题
探索此部分,以发现与 FreeBSD 社区互动的方式。
了解有关 FreeBSD IRC 频道的实时讨论,用于分享见解的基于 Web 的论坛,以及用于深入讨论和新闻更新的 FreeBSD 邮件列表和新闻组。
5.1. 是否有 FreeBSD IRC(Internet Relay Chat)频道?
是的,大多数主要的 IRC 网络都设有一个 FreeBSD 聊天频道,而 FreeBSD 维基上有一个最新的 IRC 频道列表。
这些频道各不相同,彼此之间没有连接。由于它们的聊天风格不同,请尝试每一个找到适合您聊天风格的频道。
5.2. 是否有任何基于 Web 的论坛可以讨论 FreeBSD?
官方的 FreeBSD 论坛位于 FreeBSD 论坛主页。
5.3. 我在哪里可以找到有关 FreeBSD 邮件列表的信息?
公共邮件列表可以在 FreeBSD 邮件列表找到。
6. 其他问题
探索有关 FreeBSD 的各种有趣和实用的查询,涵盖从 shell 选择到系统怪癖,甚至是 FreeBSD 宠物的名字。
6.1. /bin/sh 为什么如此简洁?为什么 FreeBSD 不使用 bash 或其他 shell?
很多人需要编写 shell 脚本,这些脚本需要在许多系统上可移植。这就是为什么 POSIX® 详细规定了 shell 和实用程序命令。大多数脚本都是用 Bourne shell(sh(1))编写的,因为规定了使用 Bourne shell 解释命令的几个重要编程接口。由于 Bourne shell 经常被广泛使用,因此它启动迅速、行为确定性并且具有较小的内存占用量非常重要。
现有的实现是我们尽最大努力同时满足尽可能多的这些要求。为了保持 /bin/sh 小,我们没有提供其他 shells 通常具有的许多便利功能。
这就是为什么其他更加功能丰富的 shells 像 bash 、 scsh 、tcsh(1)和 zsh 都是可用的。
6.2. 如何在 sh 和 csh 中使用删除键?
对于 Bourne Shell,请将以下行添加到~/.shrc 中:
对于 C Shell,请将以下行添加到~/.cshrc 中:
6.3. 我忘记了 root 密码!我该怎么办?
不要惊慌!重新启动系统,在 Boot: 提示符下输入 boot -s 以进入单用户模式。在询问要使用的 shell 时,按 Enter 键,屏幕将显示 # 提示符。输入 mount -urw / 重新挂载根文件系统为读写,然后运行 mount -a 重新挂载所有文件系统。运行 passwd root 更改 root 密码,然后运行 exit(1) 继续引导。
6.4. 我在 rc.conf 或其他启动文件中犯了一个错误,现在无法编辑它,因为文件系统是只读的。我该怎么办?
在加载程序提示符处使用 boot -s 重新启动系统以进入单用户模式。在提示输入 shell 路径名时,按 Enter 并运行 mount -urw / 以将根文件系统重新挂载为读/写模式。您可能还需要运行 mount -a -t ufs 以挂载定义您喜爱编辑器的文件系统。如果该编辑器位于网络文件系统上,则在挂载网络文件系统之前手动配置网络,或者使用位于本地文件系统上的编辑器,例如 ed(1)。
为了使用诸如 vi(1)或 emacs(1)等全屏编辑器,请运行 export TERM=xterm ,以便这些编辑器可以从 termcap(5)数据库中加载正确的数据。
执行这些步骤后,编辑/etc/rc.conf 以修复语法错误。内核引导消息之后立即显示的错误消息应指出错误文件中出错的行号。
6.5. 有多少可用的空闲内存?
有几种"空闲内存"。最常见的是立即可用的内存量,而无需重新获取已经在使用的内存。这是空闲页面队列的大小加上一些其他保留页面。这个数量由 vm.stats.vm.v_free_count sysctl(8)导出,例如,由 top(1)显示。另一种"空闲内存"是可供用户空间进程使用的虚拟内存总量,这取决于交换空间和可用内存的总和。还有其他可能的"空闲内存"描述,但定义这些描述相对无用,更重要的是确保页面交换率保持低水平,并避免耗尽交换空间。
6.6. 我的时间不对,如何更改时区?
使用 tzsetup(8)。
即使计算机有空闲内存, FreeBSD 也会使用大量交换空间。为什么?
FreeBSD 会主动将完全空闲未使用的主内存页面移动到交换空间中,以便为活动使用提供更多的主内存。这种大量使用交换空间的行为是通过使用额外的空闲内存进行缓存来平衡的。
请注意,虽然 FreeBSD 在这方面是积极主动的,但它并不会在系统真正空闲时任意决定交换页面。因此,将系统保持空闲过夜后不会全部分页出。
为什么即使我运行的程序很少,top 显示很少的空闲内存?
简单的答案是,空闲内存是浪费的内存。
程序没有主动分配的任何内存都被用作 FreeBSD 内核中的磁盘缓存。 top(1)显示的标记为 Inact 和 Laundry 的值是不同老化级别的缓存数据。 这些缓存数据意味着系统不必再次访问慢速磁盘以获取最近访问过的数据,从而提高整体性能。 通常情况下,在 top(1)中显示的 Free 内存的低值是好的,前提是不是很低。
6.9. 这只可爱的小红色家伙叫什么名字?
他没有名字,只被称为“BSD 守护程序”。如果你坚持要给他起个名字,请叫他“比斯蒂”。请注意,“比斯蒂”是按照“BSD”的发音来念的。
更多关于 BSD 守护程序的信息,请访问他的主页。
6.10. 我可以使用 BSD 守护进程图像吗?
或许。BSD 守护进程的版权归 Marshall Kirk McKusick 所有。请查看他关于 BSD 守护进程图像使用条款的声明以获取详细信息。
简而言之,该图像可以在个人使用时以得体的方式使用,只要给予适当的授信。在商业上使用该标志之前,请联系 Kirk McKusick mckusick@FreeBSD.org 以获得许可。有关 BSD 守护进程主页的更多详细信息,请访问主页。
6.11. 为什么我要在意车棚的颜色是什么?
确实非常简短的答案是你不应该在意。稍微长一点的答案是,只是因为你有能力建造一个车棚,并不意味着你应该阻止他人建造一个,只是因为你不喜欢他们计划油漆的颜色。这只是一个比喻,表明你不需要为每一个小特性争论,只因为你知道足够这样做。有些人评论说,一个变化产生的噪音量与变化的复杂性成反比。
更长而完整的答案是,在经过一场关于 sleep(1)是否应该接受小数秒参数的争论后,Poul-Henning Kamp < phk@FreeBSD.org> 发表了一封长长的帖子,标题为任意颜色的车棚......
7. FreeBSD 趣闻
从技术细节中休息一下,深入了解 FreeBSD 的有趣一面。
7.1. FreeBSD 有多酷?
有人在运行 FreeBSD 时做过温度测试吗? 不,但我们对被蒙上眼睛并事先服用了 250 微克 LSD-25 的志愿者进行了大量口味测试。35%的志愿者说 FreeBSD 尝起来有点橙色,而 GNU/Linux® 尝起来像紫雾。两组都没有提到任何明显的温度变化。
严肃地说,FreeBSD 使用 ACPI(高级配置和电源接口),因此 FreeBSD 可以将 CPU 置于低功耗模式。
7.2. 写入 /dev/null 的数据会去哪里?
它进入 CPU 中的特殊数据汇聚处,转化为热量,通过散热器/风扇组件排出。这就是为什么 CPU 冷却变得越来越重要;随着人们习惯于更快的处理器,他们对数据变得更加粗心,越来越多的数据最终进入 /dev/null,使 CPU 过热。
如果删除 /dev/null(实际上是禁用 CPU 数据汇聚),你的 CPU 可能会运行得更凉爽,但你的系统很快会因为所有多余的数据而变得混乱,并开始表现异常。
如果你有一个快速的网络连接,你可以通过从 /dev/random 读取数据并发送到其他地方来降低 CPU 温度;然而,你会面临过热网络连接的风险,或者激怒你的 ISP,因为大部分数据最终会被他们的设备转化为热量,但他们通常有良好的冷却,所以如果不过度使用,你应该没问题。
7.3. 我的同事坐在电脑前太久了,我该如何恶作剧他们?
安装 games/sl 并等待他们将 ls 误输入为 sl 。
8. 致谢
这个常见问题解答已经在过去几十年里经历了无数次的修订和改进,由不同背景的贡献者组成的群体共同完成。
最后更新于