FreeBSD 12.0-RELEASE 发行说明(2018 年 12 月 11 日)
摘要
FreeBSD 12.0-RELEASE 的发行说明总结了在 12-STABLE 开发分支中对 FreeBSD 基本系统所做的变更。本文档列出了自上一个版本以来发布的适用安全公告,以及对 FreeBSD 内核和用户空间的重大变更。同时,还提供了一些有关升级的简要说明。
引言
本文档包含 FreeBSD 12.0-RELEASE 的发行说明,介绍了 FreeBSD 最近新增、变更或删除的功能,并提供了从之前版本升级的一些注意事项。
这些发行说明适用于自 12-STABLE 创建以来 12-STABLE 开发分支的最新状态。有关此分支上预构建的二进制发布版本的信息,请访问 https://www.FreeBSD.org/releases/。
这些发行说明所涉及的发行版本处于 12-STABLE 开发分支的 11.2-RELEASE 和未来的 13.0-RELEASE 之间。有关此分支上预构建二进制版本的信息,请访问 https://www.FreeBSD.org/releases/。
FreeBSD 12.0-RELEASE 的分发版本是一个正式发布版本。可在 https://www.FreeBSD.org/releases/ 或其镜像站点找到。获取此版本(或其他版本)FreeBSD 的更多信息,请参阅 FreeBSD 手册 的 获取 FreeBSD 附录。
建议所有用户在安装 FreeBSD 前,先查看发布勘误。勘误文档会更新,补充在发布周期后期或发布后发现的“最新”信息,通常包含已知的错误、安全公告及文档修正。可以在 FreeBSD 网站上找到最新的 FreeBSD 12.0-RELEASE 勘误。
本文档介绍了自 11.2-RELEASE 以来 FreeBSD 最为显著的用户可见的新功能或变更。通常,这里所述的变更是 12-STABLE 分支特有的,除非特别标注为已合并(MERGED)的功能。
典型的发行说明条目包括自 11.2-RELEASE 后发布的最新安全公告、新驱动程序或硬件支持、新命令或选项、主要错误修复或第三方软件升级。此外,也可能列出主要的 Ports/软件包变更或发布工程实践的改动。显然,发行说明无法列出每一次 FreeBSD 发布之间的所有变更;本文档主要关注安全公告、用户可见的变更和主要架构改进。
从旧版 FreeBSD 升级
[amd64, i386] 使用 freebsd-update(8) 工具支持 RELEASE 版本之间(及各安全分支快照)的二进制升级。二进制升级过程将更新未修改的用户空间工具以及官方 FreeBSD 发布中分发的未修改 GENERIC 内核。freebsd-update(8) 工具要求升级的主机具有互联网连接。
支持从之前版本进行基于源码的升级(通过从源码重新编译 FreeBSD 基本系统),请按 /usr/src/UPDATING 中的说明操作。
重要
在尝试升级 FreeBSD 之前,应先备份 所有 数据和配置文件。
安全与勘误
本节列出了自 11.2-RELEASE 以来发布的各种安全公告和勘误通知。
安全公告
无公告。
勘误通知
无勘误通知。
用户空间
本节涉及用户空间应用程序、第三方软件和系统工具的变更和新增内容。
用户空间配置变更
变更了 /dev/acpi 的组权限,允许 operator GID 的用户调用 acpiconf(8) 来暂停系统。[r335864](由 DARPA, AFRL 赞助)
已更新默认的 devfs.rules(5) 配置,允许在 jail(8) 中使用 mount_fusefs(8)。[r336565]
默认的 PAGER 现在默认为 less(1),适用于大多数命令。[r337497]
newsyslog(8) 工具已更新,拒绝指定 setuid(2) 或可执行日志文件的配置条目。[r338165](由 Dell EMC Isilon 赞助)
已默认启用选项 WITH_REPRODUCIBLE_BUILD src.conf(5)。[r338642](由 FreeBSD 基金会赞助)
LDNS 现在启用 DANE-TA,并移除了 GOST。[r339303]
新增了 src.conf(5) 选项 WITH_RETPOLINE,用于启用用户空间构建的 retpoline 缓解措施。[r340773](由 FreeBSD 基金会赞助)
用户空间应用程序变更
移除了 xlint 以及构建 lint 库或 lint 源代码的功能。
dtrace(1) 工具已更新,支持 if 和 else 语句。[r304200]
基本系统中包含的旧版 gdb(1) 工具现在已安装到 /usr/libexec 目录,供 crashinfo(8) 使用。gdbserver 和 gdbtui 工具不再安装。对于交互式调试,应使用 lldb(1) 或从 devel/gdb 安装的现代版本的 gdb(1)。新添加的 src.conf(5) 选项 WITHOUT_GDB_LIBEXEC 可用于禁用构建 gdb(1)。在 sparc64 上,gdb(1) 工具仍然安装在 /usr/bin 中。[r317416]
setfacl(1) 工具已更新,增加新选项 -R,用于递归操作目录。[r332396](由 FreeBSD 基金会赞助)
cat(1) 工具已更新,使输出在使用 -ne 或 -be 调用时始终保持对齐一致。[r323865]
默认的引导链接器已变更为 ld_lld(1),适用于 amd64。[r334391](由 FreeBSD 基金会赞助)
dhclient(8) 工具已更新,新增配置选项,允许覆盖由配置错误的 DHCP 服务器提供的选项 interface-mtu。[r334443]
已移除 asf(8) 工具,因为 kgdb(1) 现在内部处理内核模块状态。[r335222](由 FreeBSD 基金会赞助)
新增了 sha224(1) 工具。[r336126]
已更新 geli(8) 工具,支持在使用相同密码短语和/或密钥时一次性初始化多个提供者。[r336659]
默认的引导链接器已变更为 ld_lld(1),适用于 i386。[r336901](由 FreeBSD 基金会赞助)
默认的引导链接器已变更为 ld_lld(1),适用于 armv7。[r337057](由 FreeBSD 基金会赞助)
已更新 dd(1) 工具,新增了选项 status=progress,该选项每秒在一行上打印一次操作状态,类似于 GNU dd(1)。[r337505]
date(1) 工具已更新,新增了选项 -I,该选项以 ISO 8601 格式打印输出。[r337332]
新增 bectl(8) 工具,提供用于管理 ZFS 启动环境的管理接口,类似于 sysutils/beadm。[r337663]
ls(1) 工具已更新,新增了选项 --color=when,其中 when 可以是 always、auto(默认)或 never。[r337956]
bhyve(8) 工具已更新,为选项 -l 和 -s 新增了 help 子命令,使用时会分别打印支持的 LPC 和 PCI 设备列表。[r338210](由 iXsystems 赞助)
tftp(1) 工具已更新,将默认的传输模式从 ASCII 变更为二进制。[r338258]
last(1) 工具已更新,新增了对 libxo(3) 的支持。[r338352]
lastlogin(8) 工具已更新,新增了对 libxo(3) 的支持。[r338353]
chown(8) 工具已更新,防止 UID 或 GID 参数分别在超过 UID_MAX 或 GID_MAX 时溢出。[r338950](由 Dell EMC Isilon 赞助)
ctm(1) 及相关工具已标记为弃用,并将在 FreeBSD 13.0 中移除。[r340444]
第三方软件
ELF 工具链已更新至版本 r3614。[r333063](由 FreeBSD 基金会赞助)
zstd(1) 工具已更新至版本 1.3.4。[r331602](由 Dell EMC Isilon 赞助)
vt(4) Terminus BSD 控制台字体已更新至版本 4.46。[r332452](由 FreeBSD 基金会赞助)
xz(1) 工具已更新至版本 5.2.4。[r333783]
clang、llvm、lld、lldb、compiler-rt 工具和 libc++ 已更新至版本 6.0.1。[r335799]
bsnmp 工具已更新至版本 1.13。[r335885]
WPA 工具已更新至版本 2.6。[r336203]
ntpd(8) 工具已更新,允许作为非 root 用户运行。[r336525]
注意
从 FreeBSD 11.x 及更早版本进行基于源代码的升级时,需要在运行
installworld目标之前确保ntpd的 UID(123)和 GID(123)已存在。有关基于源代码升级的详细步骤,请参阅UPDATING文件中的“重建所有并安装”部分。
已为 dtrace_udplite(4) 添加了对 UDP-lite 的支持。[r337018]
file(1) 工具已更新至版本 5.34。[r337442]
lua 工具已更新至版本 5.3.5。[r337810]
已为 dtrace_sctp(4) 添加对发送、接收和状态变化提供程序的支持。[r338213]
ntpd(8) 工具已更新至版本 4.2.8p12。[r338126]
OpenSSH 已更新至版本 7.8p1。[r338561]
mandoc(1) 工具已更新至版本 1.14.4。[r338826]
已为 sshd(8) 添加了额外的 capsicum(4) 支持。[r339216]
Serf 已更新至版本 1.3.9。[r339256]
ACPICA 已更新至版本 20181003。[r339262]
Unbound 已更新至版本 1.8.1。[r339278]
时区数据库文件已更新至版本 2018g。[r339937]
OpenSSL 已更新至版本 1.1.1a。[r340711]
安装和配置工具
bsdinstall(8) 安装程序和 zfsboot(8) 启动代码已更新,允许 UEFI+GELI 安装选项。[r338282](由 Klara Systems 赞助)
/etc/rc.d 脚本
新增了 rc(8) 脚本来创建 cfumass(4) LUN。[r332857](由 FreeBSD 基金会赞助)
geli(8) rc(8) 脚本已更新,新增变量 geli_groups 支持,当在 rc.conf(5) 中设置时,可以支持附加多个提供者。[r335673]
rc(8) 子系统已更新,支持在 rc.conf(5) 中使用新的关键字 enable、disable 和 delete,这些关键字适用于 rc.d(8) 脚本和 service(8) 工具。使用说明请参见 rc.conf(5)。[r340348](由 Smule, Inc. 赞助)
运行时库和 API
已添加系统调用 getrandom(2) 和 getentropy(3) 库,兼容 Linux 和 OpenBSD 实现。[r331279]
arc4random(3) 库已更新,匹配 OpenBSD 版本 1.35。[r338059]
libarchive(3) 库已更新至版本 3.3.3。[r338600]
ABI 兼容性
已添加 get_s(3)。[r331936]
pthread(3) 库已更新,整合了 POSIX/SUSv4-2018 合规性改进。[r337992]
arc4random(3) 库已更新,移除了 arc4random_stir() 和 arc4random_addrandom()。[r338331]
内核
本节涉及内核配置、系统调优以及未分类的系统控制参数的变更。
内核修复
ACPI 子系统已更新,实现了 ACPI 6.0 支持的 Device 对象类型,满足一些 Dell, Inc. Poweredge(TM) AMD Epyc(TM) 系统的要求。[r326956](由 Dell EMC Isilon 赞助)
修复了 IPv6-AH IPSEC 填充问题,使其符合 RFC4302。[r334625](由 Dell EMC Isilon 赞助)
amdsmn(4) 和 amdtemp(4) 驱动已更新,支持 AMD Ryzen 2(TM) 主机桥。[r340446]
amdtemp(4) 驱动已更新,修复了 AMD 2990WX CPU 的温度报告问题。[r340447]
内核配置
内核配置选项 VIMAGE 已默认启用。[r324810]
dumpon(8) 工具已更新,增加了对内核配置文件包含选项 GZIO 时压缩内核崩溃转储的支持。更多信息请参见 rc.conf(5) 和 dumpon(8)。[r324965](由 Dell EMC Isilon 赞助)
ext2fs(5) 文件系统已更新,提供对 ext4 的完全读/写支持。[r327584]
pmtimer 设备已从 i386 GENERIC 内核配置中移除。其功能现在成为 apm(4) 的一部分。[r327774]
dumpon(8) 工具已更新,增加了对内核配置文件包含选项 ZSTDIO 时,支持 zstd(1) 压缩的内核崩溃转储的支持。更多信息请参见 rc.conf(5) 和 dumpon(8)。[r329240](由 Dell EMC Isilon 赞助)
新增了 src.conf(5) 选项 WITH_KERNEL_RETPOLINE,用于启用内核构建的 retpoline 缓解。[r330110](由 FreeBSD 基金会赞助)
内核配置选项 EKCD、GZIO、ZSTDIO 和 NETDUMP 已默认启用,适用于 amd64、i386、aarch64、powerpc、powerpc64 和 sparc64 架构。[r333890]
新增内核配置选项 KASSERT_PANIC_OPTIONAL,能在运行时变更 KASSERT(9) 的行为,而不一定会调用 panic(9)。此选项默认禁用。[r338214](由 Dell EMC Isilon 赞助)
选项 NUMA 已默认启用,适用于 amd64 GENERIC 和 MINIMAL 内核配置。[r338602](由 Dell EMC Isilon 和 Netflix 赞助)
设备与驱动
本节涉及自 11.2-RELEASE 以来的设备和设备驱动程序的变更和新增内容。
设备驱动程序
random(4) 设备已更新,允许通过 ^C 终止大规模读取操作。[r331070](由 Dell EMC Isilon 赞助)
新增了对 Microchip LAN78xx(TM) USB3-GigE 控制器的支持。[r333713](由 FreeBSD 基金会赞助)
新增了 multifunction 设备到 usb_template(4),可以同时提供大容量存储、CDC ACM(串口)和 CDC ECM(以太网)功能。[r333760](由 FreeBSD 基金会赞助)
random(4) 驱动已更新,移除了 Yarrow 算法。Fortuna 算法仍是默认的唯一可用算法。[r338324]
新增了 netdump(4) 驱动,通过它可以在系统崩溃后将内核崩溃转储传输到远程主机。更多信息和配置细节请参见 netdump(4) 和 dumpon(8)。[r333283](由 Dell EMC Isilon 赞助)
random(4) 驱动已更新,以修复在伪随机数生成期间的过度活动问题。[r338292]
vt(4) 驱动已更新,性能得到改进,文本绘制速度提高了 2 到 6 倍。[r338316]
ichwd(4) 驱动已更新,增加了对 Intel Lewisburg PCH (C620) 芯片组的 TCO 看门狗定时器支持。[r340190](由 Panzura 赞助)
网络驱动
ixl(4) 驱动已更新到 1.9.9-k 版本。[r333149](由 Intel Corporation 赞助)
cxgbe(4) 驱动已更新,为 setsockopt(2) 选项 SO_MAX_PACING_RATE 提供硬件支持,当内核配置中包含选项 RATELIMIT 时。[r334143](由 Chelsio Communications 赞助)
ixlv(4) 驱动已更名为 iavf(4) 并更新为使用 iflib(9)。为了向后兼容从较早 FreeBSD 版本升级,ixlv(4) 内核模块现在是 iavf(4) 的硬链接。[r339338](由 Panzura 赞助)
已弃用和已移除的驱动程序
已移除 lmc(4) 驱动。[r333144](由 FreeBSD 基金会赞助)
已移除 ixgb(4) 驱动。[r333173](由 Limelight Networks 赞助)
已移除 nxge(4) 驱动。[r333322](由 Limelight Networks 赞助)
已移除 vxge(4) 驱动。[r333717](由 Limelight Networks 赞助)
在 12.0-RELEASE 中移除了 jedec_ts(4) 驱动,其功能由 jedec_dimm(4) 替代。[r337033]
现代图形芯片组的 DRM 驱动已标记为弃用,并计划在 FreeBSD 13 中移除。DRM 内核模块可通过 Ports 中的 graphics/drm-stable-kmod 或 graphics/drm-legacy-kmod 获取,也可以通过 pkg(8) 安装。此外,已将内核模块添加到 lua loader.conf(5) 的 module_blacklist 中,强烈建议通过 Ports 或 pkg(8) 进行安装。[r339218]
以下驱动在 FreeBSD 12.0 中已弃用,且在 FreeBSD 13.0 中不存在:ae(4)、de(4)、ed(4)、ep(4)、ex(4)、fe(4)、pcn(4)、sf(4)、sn(4)、tl(4)、tx(4)、txp(4)、vx(4)、wb(4)、xe(4) [r339735]
硬件支持
本节涉及对物理机器、虚拟机监控程序和虚拟化环境的一般硬件支持,以及不属于其他部分的硬件变更和更新。
硬件支持
新增了对 powernv POWER9 MMU 初始化的支持。[r333273]
图形支持
FreeBSD 改变了在 amd64 和 i386 上处理图形驱动的方式。现在可以通过 Ports 获取现代 ATI/AMD 和 Intel 显卡的图形驱动。基本驱动仍然可用,并将默认安装,但它们不支持当前一代的笔记本和台式计算机系统。
在大多数情况下,只需从 Ports 或软件包中安装 graphics/drm-kmod 即可安装适合系统的驱动程序,然后将相应的驱动程序添加到 rc.conf(5) 中的 kld_list。
对于 Broadwell(TM) 之后的 Intel(i915)系统,rc.conf(5) 条目为:
配备 ATI/AMD 显卡的系统有两种选择。从 HD7000 系列 GPU 开始的现代系统应使用:
配备早于 HD7000 GPU 发布的显卡的系统使用:
注意
安装
graphics/drm-kmod后,必须把用户添加到 GIDvideo中,才能正常启动 X。
注意
当使用基本系统的图形驱动时,
x11-drivers/xf86-video-ati提供的xserver驱动存在已知问题;应改用x11-drivers/xf86-video-ati-legacy。
注意
已知问题:在使用 UEFI 启动并使用 ATI/AMD 图形驱动时,可能会导致屏幕在加载适当的驱动程序之前出现乱码。有关 FreeBSD 图形支持的更多信息,请参见 Graphics Wiki Page。
虚拟化支持
Amazon EC2(TM) AMI 实例现在默认安装 sysutils/amazon-ssm-agent,但该服务默认在 rc.conf(5) 中未启用。要启用该服务,请添加: [r325254](由 DARPA, AFRL 赞助)
到 EC2(TM) 用户数据中。
Amazon EC2(TM) AMI 实例现在默认禁用 sshd_config(5) 中的 ChallengeResponseAuthentication。[r326564]
Amazon EC2(TM) AMI 实例现在默认使用 Amazon 内部 NTP 服务。[r326565]
bhyve(8) 工具已更新,允许从用户空间控制 CPU 拓扑结构。[r332298]
bhyve(8) 工具已更新,增加了 virtio_scsi(4) 存储支持。[r334940](由 iXsystems 赞助)
bhyve(8) 工具已更新,增加了对 NVMe 设备仿真的支持。[r335974](由 iXsystems 赞助)
新增了 sysctl(8) security.jail.vmm_allowed,将其设置为 1 可允许在 jail(8) 中使用 bhyve(8)。[r337023](由 HardenedBSD, G2, Inc. 赞助)
Amazon EC2(TM) AMI 实例现在默认禁用 PS/2 键盘和鼠标设备,使整体启动时间减少 2.5 秒。[r338321]
ARM 支持
默认启用了对 ARM 系统的 USB OTG 串行终端的支持。[r335004](由 FreeBSD 基金会赞助)
armv6 和 armv7 镜像现在默认使用 EFI 启动。[r336998]
已添加对 PINE64-LTS 系统的 aarch64 镜像构建的支持。[r337000]
默认启用了对 armv6 和 armv7 上 capsicum(4) 的支持。[r338666](由 FreeBSD 基金会赞助)
存储
本节涉及文件系统和其他存储子系统(包括本地和网络存储)的变更和新增内容。
通用存储
UFS/FFS 文件系统已更新,支持对圆柱组映射的校验哈希。校验哈希支持仅适用于 UFS2。[r323923]
CAM 目标层(CTL)前端和后端选项已进行了全面重构,采用 nv(3) 来创建多个 ioctl(2) 前端端口。[r333446](由 iXsystems 赞助)
默认的 auto_master(5) 配置已更新,为 /media 挂载点添加了 noautoro automount(8) 参数(默认注释掉)。[r337749](由 DARPA, AFRL 赞助)
UFS/FFS 文件系统已更新,合并了 TRIM/BIO_DELETE 命令,由于同时发送的 TRIM 消息更少,从而减少了读写请求。[r338056](由 Netflix 赞助)
TRIM 合并支持在 UFS/FFS 文件系统中默认启用。可以通过将 vfs.ffs.dotrimcons sysctl(8) 设置为 0,或将 vfs.ffs.dotrimcons=0 添加到 sysctl.conf(5) 来禁用 TRIM 合并。[r338517](由 Netflix 赞助)
geom(8) 工具已更新,增加新参数 -p,用于打印指定提供程序的 GEOM 类。[r338640](由 DARPA, AFRL 赞助)
geom(8) 工具已更新,增加新参数 -t,用于打印 GEOM 层次结构。[r338684](由 DARPA, AFRL 赞助)
网络存储
NFS 版本 4.1 服务器已更新,包含 pNFS 服务器支持。[r335012]
ZFS
ZFS 已更新,新增了 sysctl(8) 参数 vfs.zfs.arc_min_prefetch_ms 和 vfs.zfs.arc_min_prescient_prefetch_ms,以提高 zpool(8) scrub 子命令的性能。[r334844]
引导加载程序变更
本节涉及引导加载程序、启动菜单以及其他与启动相关的变更。
引导加载程序变更
lua loader(8) 已更新,可检测已安装的可启动内核列表。[r329501](由 Dell EMC Isilon 赞助)
loader(8) 已更新,以支持所有架构和所有类似磁盘的设备使用 geli(8)。[r336252](由 Microchip Technology, Inc. 赞助)
init(8) 工具已更新,支持执行用非 sh(1) 语言编写的可执行文件,例如 Python。[r337321](由 DARPA, AFRL 赞助)
loader(8) 已更新,添加了对在启动过程中早期加载 Intel 微代码更新的支持。[r337715](由 FreeBSD 基金会赞助)
loader(8) 中新增了 kenv(1) 变量 init_exec,允许 init(8) 在打开控制台后执行文件,取代作为 PID 1 的 init(8)。[r337740](由 DARPA, AFRL 赞助)
默认的 libstand(3) 解释器已变更为 Lua。[r338050]
lua loader(8) 已更新,支持模块黑名单。[r339218]
默认的 lua loader.conf(5) 已更新,新增了选项 kernels_autodetect,默认值为 YES,补充了在修订版 329501 中引入的 loader(8) 列出可用启动内核的支持。[r339308]
网络
本节介绍了影响 FreeBSD 网络的变更。
通用网络
carp(4) 接口已更新,当 sysctl(8) net.inet.carp.allow 设置为 0 时,保持状态为 INIT,而不是 MASTER。[r333322](由 iXsystems 赞助)
包过滤器 pf(4) 现在可以在使用 vnet(9) 的 jail(8) 中使用。
包过滤器 pf(4) 已更新,使用 rmlock(9) 代替 rwlock(9),性能得到显著提升。[r334375]
网络栈添加了选项 SO_REUSEPORT_LB,能让多个程序或线程绑定到同一端口,并使用哈希函数对传入的连接进行负载均衡。[r334719](由 Limelight Networks 赞助)
pf(4) ioctl 接口和 pfctl(8) 现在支持 altq(4) 带宽参数为 2^32 bps 或更大的值。HFSC 调度规则已升级,可正确处理高达 100 Gbps 的带宽参数,提供给未升级调度规则的带宽参数将饱和至之前的 32 位限制。[r338253]
网络协议
已移除对令牌环网络的支持。[r331714](由 DARPA, AFRL 赞助)
已移除对 Arcnet 协议的支持。[r332490](由 DARPA, AFRL 赞助)
Ports 和软件包基础设施
本节涉及 FreeBSD Ports、软件包基础设施以及软件包维护和安装工具的变更。
软件包变更
pkg(8) 工具已更新至版本 1.10.5_5。
KDE 已更新至版本 5.12.5。
Perl 已更新至版本 5.26.2。
Python 已更新至版本 2.7。
文档
本节涉及 FreeBSD 文档项目的源代码和工具链的变更。
文档源代码变更
新增手册页面 arch(7),包含了特定架构的详细信息。[r303033](由 FreeBSD 基金会赞助)
发布工程和集成
本节涉及特定于 FreeBSD 发布工程过程的变更。
集成变更
FreeBSD/i386 U 盘安装镜像已变更为使用 MBR 分区方案,代替 GPT,以解决某些 BIOS 启动问题。[r332446](由 FreeBSD 基金会赞助)
FreeBSD/amd64 U 盘安装镜像已变更为使用 MBR 分区方案,代替 GPT,以解决某些 BIOS 启动问题。[r334337](由 FreeBSD 基金会赞助)
最后更新于