Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
作者:FreeBSD 基金会
原文发布时间: 2024 年 10 月 4 日
长期以来,要寻求现代企业级开源操作系统,FreeBSD 始终是首选。FreeBSD 宽松的许可证、卓越的安全性、出色的性能和坚如磐石的稳定性使其成为各类企业和组织的不二选择。
FreeBSD 13.4-RELEASE 在基础设施、硬件兼容性和安全性方面有了重大改进,进一步证明了 FreeBSD 在业内的价值。此版本在 13.x 系列先前版本的坚实基础上进行了扩展,并与 2023 年 11 月推出的 FreeBSD 14 分支的开发时间表相一致。
FreeBSD 13.0-RELEASE 有重大改进,设定了新的系统稳健性和性能标准。包括工具链的战略性调整,全面过渡到 LLVM/Clang,使其作为默认编译器,这简化了开发过程并增强了系统稳定性。此外,作为一种现代 VPN 协议,WireGuard 显著增强了 FreeBSD 的网络安全,为 IPSec 和 OpenVPN 提供了一种更简单、快速的替代方案。
随着 13.x 系列的推进,每个版本都在用户空间和内核中引入了重要的增强功能,解决了重大的安全漏洞,并确保系统在面对不断演变的威胁时依然岿然如山。13.x 系列扩展了硬件支持和网络功能,进一步巩固了 FreeBSD 项目对适应性和前瞻性的承诺,满足了从服务器管理员到桌面用户的普遍需求。
mbuf 类型增强: 引入了一种新类型的 mbuf,能够将多个未映射的物理页面作为一个缓冲区来表示。这一增强由 Netflix 赞助,提升了 sendfile 操作的性能,突显了 FreeBSD 对网络性能的重视。
安全内存回收(SMR): 将 SMR 集成到内核中,改进了多线程环境中的内存管理,优化了系统整体性能。
基于内核的 TLS: 实现了基于内核的 TLS 数据帧和加密功能,支持 TCP 套接字上的 TLS 1.0 到 1.3 版本。包括通过内核加密驱动程序进行 AES-CBC 和 AES-GCM 密码套件的发送卸载,以及 TLS 1.2 中的 AES-GCM 接收卸载。这些增强功能由 Netflix 和 Chelsio Communications 赞助,进一步强化了 FreeBSD 在安全和高效数据传输方面的承诺。
TCP 改进: 在 TCP 中启用了 PRR 功能,以增强在突发丢包和 ACK 削减场景下的丢包恢复性能。此功能改进了丢包恢复表现,并防止了超时重传(RTO)阻塞,提供了更强大的网络体验。
重写的路由栈: 引入了一种基于“下一个跳点”(nexthop)的新路由栈,持有所有必要的状态信息,能高效地将数据包路由到目的地。这使得路由操作更加高效和可扩展。
增强的多路径路由支持: 重新设计的多路径路由支持,支持 64 宽的多路径路由和 O(1) 查找时间,在多路径路由场景中显著提高了可扩展性和性能。
自定义路由查找算法: 支持自定义路由查找算法,将控制平面和数据平面操作解耦,从而在负载下实现更快速的查找和更好的收敛时间。
QoS 增强: 现在,工具 ping
能使用 IP DSCP 和以太网 PCP 设置网络服务质量(QoS),方便进行更精细的流量管理和优先级排序。 (在 FreeBSD 13.3 中引入)
拥塞控制算法改进: cc_cubic
TCP 拥塞控制算法已更新,与 RFC 8312 中的标准更加一致,优化了 TCP 拥塞控制行为。 (在 FreeBSD 13.3 中引入)
SCTP 作为可加载内核模块: SCTP 支持已迁移到新的内核模块 sctp.ko
,使其变为可选功能,不再默认编译进 GENERIC 内核,从而提供了更灵活的部署场景。
堆叠 VLAN(802.1ad)支持: 引入对堆叠 VLAN 的支持,增强了在复杂网络环境中 VLAN 配置的灵活性和可扩展性。
高级网络功能: 对 TCP/IP 栈的增强,如为改善 SACK 丢包恢复引入 PRR,展示了 FreeBSD 在保持网络性能和可靠性竞争力方面的承诺。
ctld 中的网络 QoS: 工具 ctld
现在支持使用差分服务代码点和以太网优先级代码点(Ethernet PCP)设置网络 QoS,进一步提升了 FreeBSD 在高性能存储解决方案中的表现。 (在 FreeBSD 13.3 中引入)
更新的 NFS 支持: NFS 客户端和服务器已更新,以支持 NFSv4.2,包括扩展属性,展示了 FreeBSD 在兼容性和功能丰富性方面的持续承诺。
基于 TLS 的安全 NFS: FreeBSD 支持通过 TLS 配置 NFS,专注于提供安全存储解决方案。
迁移到 OpenZFS: ZFS 作为 FreeBSD 存储能力的基石,现在是 OpenZFS 2.1.14,确保了 FreeBSD 享受该强大文件系统的最新发展成果。
Bhyve 中增强的虚拟机支持: 内核模块 vmm
现在支持的虚拟 CPU 可大于 16 个,使得虚拟机能够更有效地使用主机的 CPU 资源。此外,Bhyve 还引入了对 virtio-input 设备仿真的支持,通过支持将键盘和鼠标输入事件注入到虚拟机中,改善了与虚拟化环境的交互。
进程管理增强: 用户现在能直接从 ~/.login_conf
设置进程优先级和 umask
值,更精细地控制进程管理和文件权限。 (在 FreeBSD 13.3 中引入)
报告与配置增强: 对定期输出的流线化和对 head
、tail
等工具的更新,确保了参数 -q
(安静模式)和 -v
(详细模式)的一致性,同时采用 SI 后缀表示数值参数,提升了系统可用性和配置灵活性。 (在 FreeBSD 13.3 中引入)
增强的认证: libtacplus 库现在符合 POSIX shell 语法规则,提高了 TACACS+
认证的安全性和可配置性。 (在 FreeBSD 13.3 中引入)
安全性改进: 实现了针对 64 位可执行文件的地址空间布局随机化(ASLR),通过随机化内存地址空间提高安全性,可有效缓解某些类型的攻击。此外,还针对特定英特尔 CPU 的硬件页面失效问题提供了变通解决方案,强调了 FreeBSD 对安全性的重视。 (在 FreeBSD 13.3 中引入)
调试增强: 新的配置参数 SPLIT_KERNEL_DEBUG
能分别处理内核和模块的调试数据,优化了调试流程,而不影响系统性能。
libmd 提升加密多样性: 增加了对 SHA-512/224 的支持,这是一种截断版的 SHA-512 哈希函数,提供了紧凑而安全的哈希替代方案。 (在 FreeBSD 13.3 中引入)
全面改进的加密框架: 内核中的加密框架经过了大幅度改进,增强了对现代加密算法的支持,并简化了设备驱动程序和框架消费者的接口。废弃的算法已被移除,以提升安全性。
驱动程序支持增强: 将 aesni 驱动程序添加到 GENERIC 内核中,支持 AMD64 和 i386 架构,通过硬件加速的加密功能提升软件加密和安全性。
以太网控制器支持: 引入了驱动程序 igc,支持 Intel I225 以太网控制器,支持各种速度及高级功能,如校验和卸载和多队列操作。
驱动程序更新: 驱动程序 ice 已添加固件日志记录和初步的数据中心桥接(DCB)支持,进一步提升了 FreeBSD 在管理和优化网络接口方面的能力。 (在 FreeBSD 13.3 中引入)
处理器支持: 完善对英特尔 Alder Lake(12 代)CPU 的支持,并整合进 hwpmc 框架,以充分利用 CPU 的新特性。
在 FreeBSD 13.x 系列中,多个功能和支持被弃用/移除,反映了 FreeBSD 项目面向未来的理念,致力于采用现代技术和标准。
工具链现代化: 过时的 binutils 2.17 和 GCC 4.2.1 已被移除,标志着所有受支持的架构全面过渡到了 LLVM/Clang 工具链。这一变化强调了 FreeBSD 在提升系统稳定性和开发灵活性方面,致力于利用现代工具链的承诺。
许可证与软件更新: GPL 许可证版本的 dtc
被 BSD 许可证版本取代。此外,BSD 版本的 grep
取代了 GNU 版本。工具 bc
和 dc
被 Gavin D. Howard 开发的版本所替代,这些版本不依赖外部的大数库,并提供了 GNU bc 的扩展功能。 (在 FreeBSD 13.3 中引入)
弃用的工具: 像自动挂载守护进程 ctm
和 amd
等工具已被移除,现代替代工具如 autofs
已取代其功能。 (在 FreeBSD 13.3 中引入)
过时的网络驱动: 一些不再使用的过时网络驱动被移除,以简化对较新和更常用硬件的支持。这使得可以更加专注于提升对现代网络接口的支持。
Bhyve 精细化改进: FreeBSD 对其本地虚拟化管理程序 Bhyve 进行了精细化改进,移除了已弃用的设备模型,并支持更新的功能,如 VirtIO-9p 文件系统共享和虚拟机快照。
CPU 类型更改: i386 架构的默认 CPUTYPE
从 486 变更为 686,要求使用 686 类 CPU。这与行业标准一致,i686 已成为基准。 (在 FreeBSD 13.3 中引入)
FreeBSD 13.4-RELEASE 是 13-STABLE 分支的最新版本。它包含了错误修复、安全补丁和更新的驱动程序,以增强用户体验和系统稳定性。
从早期版本升级的用户将发现升级过程非常顺利,升级过程有详细的文档支持。建议在进行安装前,先查阅发布说明中的勘误表,以了解任何最新的紧急问题。
该版本解决了若干个重要的安全漏洞:
重要修复包括:
性能改进: libcapsicum 已改进,缓存了更多的时区信息,减少了对 tzset(3)
的调用,提升了性能。
贡献软件更新:
SQLite3: 升级到版本 3.46.0。
OpenSSH: 升级到版本 9.7p1。此次发布重点修复了 bug,并将 DSA 签名算法支持设为编译时参数,计划在今年稍晚禁用该算法,并在 2025 年完全移除支持。
LLVM/Clang: 升级到版本 18.1.5。
bc: 升级到版本 6.7.6。
atf: 升级到 0.22 快照 55c21b2c。
libarchive: 升级到版本 3.7.4。
capsicum-test: 升级到快照 eab7a83b。
驱动程序更新:
irdma 和 ice: 这两个驱动已更新,以提高性能和稳定性。
u3g 支持: 增加了对设备 SIM7600G 的支持,扩展了移动网络的硬件兼容性。
无线驱动程序: 对原生和基于 LinuxKPI 的无线驱动进行了多个稳定性修复,提升了 FreeBSD 的无线网络性能(由 FreeBSD 基金会赞助)。
SCTP 改进: 增加了对环回接口上 SCTP 校验和卸载的支持,同时对 SCTP 堆栈进行了性能提升和 bug 修复。
处理器支持: 为 AMD Ryzen 7 “Phoenix” 处理器增加了对驱动程序 amdsmn
和 amdtemp
的支持,可以通过 sysctl
获取温度读取值。
手册页: 删除了对旧工具 disklabel
的引用,改为使用 gpart
。后续的 FreeBSD 版本将完全移除该工具,推广现代的磁盘管理方法。
软件包变更:
现代化的 DVD 软件包集: 反映了当前的软件包装趋势。
已移除的 Port:
archivers/unzip
(现在已包含在基本系统中)。
emulators/linux_base-c7
(没有其他 Linux 软件包时不再有用)。
ports-mgmt/portmaster
(不推荐使用,推荐使用 pkg 和二进制包)。
x11-drivers/xf86-video-vmware
(在当前版本的 xorg-server
中不再有用)。
已替换的 Port:
devel/git
被 devel/git@lite
替换,后者足以满足大多数需求。
新增的 Port:
sysutils/seatd
和 x11-wm/sway
用于 Wayland 支持。
随着 FreeBSD 的不断发展,项目的开发战略和未来版本的路线图反映了其致力于拥抱现代计算架构的同时,确保广泛的兼容性和支持。FreeBSD 15.0 将是这一旅程的一个重要节点,多个关键决策将塑造操作系统的发展方向:
逐步淘汰 32 位平台支持: FreeBSD 15.0 预计不再支持 32 位平台,除 armv7 外,这标志着战略的转变,重点将转向 64 位计算。armv6、i386 和 powerpc 平台将被废弃,并计划移除,尽管 64 位系统仍将保留运行旧版 32 位二进制文件的能力。
armv7 架构状态: 预计 armv7 架构将在 FreeBSD 15.0 和 stable/15 分支中作为二级架构提供支持。然而,预计 armv7 支持可能会在 FreeBSD 16.0 中被取消,关于 armv7 支持的状态将在 15.0 版本发布时提供更新。
继续支持 32 位二进制文件和应用程序: 尽管有向 64 位平台转型的趋势,FreeBSD 将继续支持在 64 位平台上执行 32 位二进制文件,至少在 stable/15 和 stable/16 分支中以参数 COMPAT_FREEBSD32
提供支持。此外,stable/15 分支将继续支持编译单个 32 位应用程序,确保与广泛的软件兼容性。
Ports 和软件包基础设施: 从 FreeBSD 15.0 开始,后续版本将不再支持为已废弃的 32 位平台从 Ports 构建软件包。这一决定反映了行业趋势,即逐步淘汰 32 位架构,并将开发精力集中在更广泛使用的 64 位平台上。
32 位支持的生命周期结束(EOL): stable/14 分支将继续支持 32 位内核和用户空间,以及 Ports 系统对 32 位系统的支持,直到 FreeBSD 14.0 发布五年后达到生命周期结束(EOL)。这一时间表为依赖 32 位平台的用户和开发者提供了过渡期,便于迁移到支持的架构。
社区反馈和未来决策: FreeBSD 项目重视社区反馈,承诺在形塑废弃平台的支持策略方面做出努力。社区的需求和贡献将对是否在 FreeBSD 15.0 或更高版本中扩展某些平台的支持产生影响。
FreeBSD 13.x 系列展示了该项目在持续改进、安全性和现代化方面的承诺。FreeBSD 一直在增强系统的健壮性、安全性和硬件兼容性,跟上并有时超越其他操作系统的技术进步。FreeBSD 13.4-RELEASE 是 FreeBSD 不断适应用户需求的坚定体现,巩固了其作为开源操作系统之一的领先地位。
对于那些有兴趣深入了解 FreeBSD 13.x 系列详细演变的用户,官方的 FreeBSD 文档和发行说明提供了对每个版本的进展和改进的全面见解。
其他资源:
原文地址:
2024 年 8 月 26 日
投资将加速零信任构建、软件物料清单(SBOM)、安全工具和开发者体验的提升
2024 年 8 月 26 日,科罗拉多州博尔德市 致力于推动开源 FreeBSD 操作系统发展及支持社区的 FreeBSD 基金会宣布,德国主权科技基金(Sovereign Tech Fund,STF)已同意向 FreeBSD 项目投资 68.64 万欧元,以推动改进基础设施、安全性、合规性及开发者体验。
由 FreeBSD 基金会组织和管理的这一工作将于 2024 年 8 月开始,并持续到 2025 年,主要涉及以下五个关键项目:
零信任构建:改进工具和流程
自动化 CI/CD:优化软件交付与操作
偿还技术债务:实施工具和流程以减轻技术债务
安全控制:现代化、加固安全工件,如 FreeBSD Ports 和软件包,助力合规性
改进 SBOM:优化和实施 FreeBSD 软件物料清单(SBOM)的新工具和流程
开发者是每个开源项目的核心。主权科技基金对 FreeBSD 基础设施的投资将确保开发者的一流体验,同时维护和扩展 FreeBSD 以其闻名的安全性和数字主权。
德国主权科技基金委托的工作与美国国家网络总监办公室(ONCD)于 2024 年 8 月 9 日发布的密切相关。该报告整合了 2023 年有关加强开源软件生态系统安全的关键优先事项的反馈意见。通过增强安全控制和 SBOM 工具,FreeBSD 基金会帮助确保 FreeBSD 在改进漏洞披露机制和软件安全基础方面处于前沿。
“主权科技基金很高兴赞助 FreeBSD 项目,”德国主权科技基金联合创始人 Fiona Krakenbürger 表示。“这一针对关键数字基础设施的投资将加速 FreeBSD 的现代化,提升安全性并改善开发者体验。FreeBSD 的广泛应用意味着这些改进将在全球公共部门、研究领域以及商业用户中产生深远影响。我们很高兴为其持续现代化做出贡献,以更好地服务于公共利益和 FreeBSD 社区。”
“我们非常感谢主权科技基金的这笔重要投资,这将进一步提升 FreeBSD 开发者和用户的安全性及基础设施。”FreeBSD 基金会执行董事 Deb Goodkin 表示,“在过去的 30 年中,FreeBSD 项目始终处于开源安全性、兼容性和可靠性的前沿。各国政府越来越认识到开源项目如 FreeBSD 在共享数字基础设施中发挥的重要作用。这项主权科技基金委托的工作将为面临新法规的商业用户,以及公共部门、学术界和个人用户,提供必要的透明度、可审计性和信任。”
主权科技基金()支持开放数字基础设施的开发、改进和维护,以服务公共利益。其目标是可持续地加强开源生态系统,关注安全性、兼容性、技术多样性以及代码背后的人。主权科技基金由德国联邦经济事务和气候行动部(BMWK)资助,并由德国联邦颠覆性创新署(SPRIND)主办和赞助。
如何参与:
FreeBSD 基金会承诺保持透明和协作的沟通。将通过已建立的公共渠道发布全部公告和更新。如有问题或者希望参与潜在的咨询委员会,为主权科技基金资助的工作提供反馈和指导,请联系 partnerships@freebsdfoundation.org
。
原文链接:
作者:Jason Perlow
原文发布时间:2024 年 9 月 17 日
在不断发展的开源软件世界中,稳定性和可预测性往往是稀缺资源。最近,红帽企业版 Linux(RHEL)生态系统的变化,包括限制访问源代码,激起了社区的反应,并导致了开放企业 Linux 协会(OpenELA)的成立。
在这场动荡之中,自 1993 年以降, 始终作为一致性和可靠性的典范脱颖而出。本文将探讨 FreeBSD 的稳定开发模型与即将变化的发布计划,如何与 Linux 社区面临的挑战形成鲜明对比。
FreeBSD 是一款开创性的开源操作系统,继承了由加州大学伯克利分校计算机系统研究小组(CSRG)在 1970 和 1980 年代开创的原始伯克利软件分发(BSD)遗产。同模块化和碎片化的 Linux 发行版不同,FreeBSD 采取整体方法进行系统开发,提供了包含内核、用户空间、实用程序、库和文档的统一软件包。这一原始概念为向最终用户交付完整的开源操作系统设定了标准。
红帽企业版 Linux(RHEL)长期以来一直是企业级 Linux 部署的基石。2023 年 6 月,,这一决定显著影响了下游项目,如流行的免费开源 RHEL 克隆项目 。根据他们对 和 的解读,红帽通过按要求提供源代码履行了义务,但并不一定以易读和可复现的格式提供。作为回应, 成立,旨在提供开放和免费的企业 Linux 源代码。OpenELA 已经自动化其流程,使得每次 RHEL 新版本发布后的几天内,新版企业 Linux 源代码便能提供,确保其他发行版可以继续基于当前的 RHEL 代码构建。
在比较开源软件时,FreeBSD 和 Linux 有着显著的不同。Linux 提供数百个适应特定需求、偏好和哲学的发行版。这种去中心化方法允许高度定制和专业化,但也可能引发碎片化和不一致性。而 FreeBSD 则独树一帜,它是一款单一的、完整的且完全可定制的操作系统。其集中化的开发模型确保了统一的软件包,能提供系统一致性和可靠性,并促进了更统一、稳定的环境。
去中心化方法(如 Linux 发行版)与集中化方法(如 FreeBSD)并没有固有的优劣之分。每种方法都有其优劣。然而,最近的 RHEL/CentOS 代码可用性事件突显了当供应商仅按照其对版权和 GPL 的解释履行义务时,可能对社区利益产生的影响,与从社区最佳利益出发的做法之间的对比。
FreeBSD 的核心理念是坚守 BSD 许可证,这反映了项目在自由与开放创新方面的基本原则。这一宽松的许可证几乎不限制软件的使用、修改和分发。FreeBSD 力求减少 GPL 许可证组件的使用,展示了其致力于保持尽可能开放和自由的基础系统,促进创新和协作的环境。
展望未来,FreeBSD 将继续适应和发展。转向双年度发布周期以及引入四年支持期限是确保项目继续与时俱进、响应用户需求的重要步骤。这些变化,加上 FreeBSD 已经建立的稳定性,使其在开源生态系统中继续成功发展的前景广阔。
FreeBSD 在开源世界经历重大变化与挑战的时期,依然屹立不倒,成为稳定性和可靠性的灯塔。其集中化的开发模型、宽松的许可证以及对一致性发布的承诺,提供了引人注目的替代方案,展现了与其他项目中动荡局面相对立的优势。随着 FreeBSD 开启加速发布计划,它继续展示着稳定且可预测的开源操作系统的持久价值。
Jason 是一位拥有超过 25 年开源经验的作家和内容制作人,专注于分布式系统和企业架构等技术话题。曾担任 Linux 基金会的编辑总监,目前是 FreeBSD 基金会的高级撰稿人,亦为 ZDNet 的高级特约撰稿人。他的作品遍布于各大平台,涉及人工智能、云计算、网络安全和 Linux 等领域。
原文地址:
2024 年 9 月 24 日
(2024 年 9 月 20 日,科罗拉多州博尔德市)FreeBSD 基金会宣布与 Quantum Leap Research(量子跃迁研究)建立战略合作伙伴关系,共同投资总额达 75 万美元,用于增强对 FreeBSD 在笔记本电脑和通用平台的支持。Quantum Leap Research 是一家专注于为国家安全威胁提供解决方案的公司,承诺捐赠 25 万美元,而 FreeBSD 基金会将投资 50 万美元。
整个计划的预算估计为 100 万美元,基金会欢迎其他组织提供资金支持,以填补资金缺口 25 万美元。
该计划将专注于笔记本电脑和通用计算的关键可用性功能,包括现代 WiFi、完整音频支持、现代化的待机和恢复功能、改进显卡性能、蓝牙以及其他已确定的功能。
“FreeBSD 是一款高性能、安全的操作系统,可支持 Dell ThinOS 等笔记本电脑以及多种流行桌面设备。我们最近的 FreeBSD 社区调查显示,43% 的受访者将 FreeBSD 用作日常使用的系统。Quantum Leap Research 和 FreeBSD 基金会的投资将明显丰富 FreeBSD 平台的支持范围,使其成为那些重视稳定性、安全性、简洁性和性能的用户的绝佳选择。”——FreeBSD 基金会高级技术总监 Ed Maste 表示。
FreeBSD 基金会执行董事 Deb Goodkin 补充道:“这一举措是 FreeBSD 的重大进步,尤其是对于依赖笔记本电脑完成日常计算任务的用户而言。通过增加硬件支持和改进可用性功能,我们正在使 FreeBSD 对更宽泛的受众更加友好。此项投资不仅强化了 FreeBSD 生态系统,也符合我们推广 FreeBSD 作为稳健、安全和多功能操作系统的使命。”
增强 FreeBSD 在笔记本电脑上的支持和可访问性将有助于实现基金会的战略目标,即加速开发者和企业的采用。确保 FreeBSD 在多种个人计算设备上“开箱即用”表现良好,不仅会吸引开发者使用、测试和为 FreeBSD 项目做出贡献,还将扩大企业的应用范围。
“Quantum Leap Research 认为,FreeBSD 是新一代安全计算计划的绝佳基础,得益于其在安全性和稳定性方面的悠久历史。”Quantum Leap Research 总裁 Jim Miller 表示。Quantum Leap 计划在现代笔记本电脑上运行 FreeBSD,作为一种类似虚拟机管理程序的解决方案,利用 Bhyve 来虚拟化其他操作系统,如 Linux 和 Windows。
Quantum Leap Research, LLC 为美国政府开发符合未来需求的技术,专注于解决国防部和美国情报界面临的一些最复杂的问题。更多信息请访问 。
FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于支持 FreeBSD 项目及其社区。基金会接受来自个人和企业的捐赠,用于开发新功能、雇佣软件工程师、改进构建和测试基础设施、通过线下和在线活动宣传 FreeBSD,以及提供培训和教育材料。基金会还代表 FreeBSD 项目处理法律事务,是合同、许可和其他法律安排的公认实体,完全依赖捐赠支持。了解更多信息,请访问 。
原地址:
作者:FreeBSD 基金会
原文发布时间:2024 年 8 月 28 日
是一款稳定可靠的开源操作系统,历史悠久,已成为一些全球关键基础设施的支撑平台。FreeBSD 以其稳定性、安全性和卓越性能著称,服务于广泛的用户群体,从寻求大规模部署可靠基础的经验丰富的系统管理员,到重视良好文档和社区驱动环境的开源新手。
FreeBSD 受益于一种协作开发模式,这与其他某些由单一独裁式人物主导的操作系统不同。这种模式促进了平衡的决策过程,确保操作系统的发展方向能够反映其多样化用户群体的需求。一支由选举产生的,经验丰富的开发团队负责该项目,提供了长期的稳定性和清晰的发展路线图。
此外,FreeBSD 拥有庞大而友好的社区,以乐于助人和响应迅速而闻名。新用户可以利用广泛且组织良好的文档资源,这些资源涵盖了从安装到高级配置的各个方面。 是一本全面的指南,而在线论坛、邮件列表和用户制作的内容提供了额外的故障排除和学习途径。强大的社区感促进了合作,确保用户有一个可靠的支持网络来解答他们的问题并应对各种挑战。
FreeBSD 采用的宽松许可证——BSD 许可证,与 Linux 使用的更为严格的 GNU 通用公共许可协议(GPL)截然不同。BSD 许可赋予了用户极大的自由,可自由使用 FreeBSD:哪怕用于商业应用,亦无需支付许可费和版税。此外,用户可以自由修改源代码以满足他们的特定需求,如果选择分发修改后的软件,他们亦无需公开这些更改。这种灵活性使 FreeBSD 成为企业和开发人员的理想选择,尤其是在需要可定制且具有成本效益的基础平台时。公司可以利用 FreeBSD 的稳定性和性能来支撑其基础设施,而不受 GPL 的约束;开发人员则可以自由修改代码,创建定制化的解决方案,而不必担心许可的限制。
FreeBSD 在网络密集型环境中表现优异,提供了高效的网络性能和出色的 CPU 利用率的结合。这使其成为需要最大网络吞吐量和响应性的应用程序和部署的理想选择。
经 FreeBSD 优化的 TCP/IP 堆栈是其强大性能的核心。其简化的设计提供了低延迟和卓越的响应时间,特别是在网络流量和输入/输出(I/O)操作方面。这转化为实际应用中的优势,如更快的数据传输、更流畅的流媒体播放和更灵敏的 Web 应用程序。
进一步提升性能的是 FreeBSD 的轻量级和可扩展的基本系统。与一些体积较大的操作系统不同,FreeBSD 仅包含核心功能所需的基本组件。这种精简的方法带来了几项优势:
启动时间更快: 由于需要初始化的组件较少,FreeBSD 启动速度很快,特别适合需要高可用性和快速恢复的环境。
缩减攻击面: FreeBSD 通过最小化安装的组件数量,缩小了潜在攻击者的攻击面。这减少了系统遭受攻击和恶意软件的风险。
易于定制: 用户可以根据特定需求轻松添加/删除组件。这使得 FreeBSD 可以针对不同的使用场景进行定制,从最简化的服务器安装到具有更广泛应用的功能齐全的桌面环境。
高效的硬件利用率: 精简的基本系统确保了硬件资源的有效利用。这意味着在现代和旧版硬件上都能获得更好的整体性能,使 FreeBSD 成为更多部署场景下的多功能选择。
ZFS 是一款大容量、容错的文件系统,为 FreeBSD 带来了多个性能优势。ZFS 的一些关键特点包括:
池化存储:通过将多个磁盘合并为一个存储池,简化了存储管理。
数据完整性:通过端到端的校验和确保数据完整性,能够检测并修正静默数据损坏。
快照与克隆:支持快速高效的文件系统快照和克隆,用于备份和复制目的。
可扩展性:能够有效扩展以支持大量数据和存储设备,适用于企业环境。
bhyve 是 FreeBSD 原生的虚拟化程序,为用户提供了一种强大而高效的虚拟化解决方案。bhyve 的主要特点包括:
轻量级与灵活性:设计轻量且高度灵活,适用于多种虚拟化需求。
虚拟机支持多种操作系统:虚拟机可以运行多种操作系统,包括 FreeBSD、Linux 和 Windows。
高效的资源利用:优化资源使用,确保虚拟机以最低的开销高效运行。
与 FreeBSD 的集成:与 FreeBSD 基础系统无缝集成,提供一致的虚拟化体验。
通过 Port 软件包,FreeBSD 为用户提供了海量的软件应用。Ports 由 FreeBSD 项目自己维护着,有 30,000 款余应用,涉及包括 Web 服务器、数据库、桌面环境和开发工具等多个类别。
安全性是 FreeBSD 哲学的核心原则之一。开发者在设计和开发过程中优先考虑安全性,以最小化攻击面并实施强大的访问控制。以下几个关键特性有助于 FreeBSD 强大的安全性:
最小特权:服务以最小权限运行,限制了安全漏洞发生时可能带来的损害。这种隔离方法限制了被攻破服务对系统其他部分的影响。
单一代码库开发:FreeBSD 项目将整个核心操作系统开发在单一的代码库中。这种集中式方法简化了安全维护,减少了必须监控和修补的外部组件数量。
关注代码质量:FreeBSD 开发者在开发过程中高度重视代码质量和安全最佳实践。这种主动的方法有助于在漏洞被利用之前识别并缓解潜在的安全问题。
除了核心安全措施外,FreeBSD 还提供了一些独特的功能,进一步增强了系统安全性:
Jail:Jail 提供了一种强大的机制,可以在操作系统内创建隔离的虚拟环境。这些环境作为独立的服务器运行,具有有限的资源和文件系统访问权限。隔离性有助于防止安全漏洞蔓延到系统的其他部分或危及主机操作系统本身。Jail 为需要强隔离的场景提供了传统全虚拟化的轻量级替代方案。
Capsicum:Capsicum 为开发者提供了一个有价值的安全框架,允许他们创建在受限沙箱环境中运行的应用程序。Capsicum 强制执行安全策略,限制应用程序的功能,从而大大减少了代码中漏洞可能带来的影响。
CheriBSD:CheriBSD 是 FreeBSD 的扩展,提供了先进的内存保护功能。通过实施硬件辅助的内存保护机制,CheriBSD 使得攻击者更难以利用系统漏洞。这种增强的保护级别对于安全关键的应用程序尤为重要。
FreeBSD 采用严格且安全的构建过程,以确保操作系统的完整性和可信度。这个多方面的方法包含了几个关键原则:
隔离与封闭:构建环境与外部网络及其他潜在干扰源隔离。这有助于防止在构建过程中注入恶意代码,并确保系统的完整性。
最小外部依赖:构建过程主要依赖内部工具和资源,减少了通过第三方软件引入的漏洞风险。
源代码验证:所有进入构建过程的代码都经过严格验证,以确保其真实性和完整性。这有助于识别并防止未经授权的修改或恶意代码的加入。
一致性与可重现性:构建环境设计为稳定和可预测的。能检测到任何异常或不规则性,从而识别潜在的安全问题。可重现的构建过程还确保源代码始终生成相同的二进制输出,便于验证和审计。
FreeBSD 在稳定性与进步之间达到了完美的平衡。新特性会谨慎地集成到版本中,并经过严格的测试,确保在生产环境中的完美运行。这种对稳定性的承诺使 FreeBSD 成为开发和部署关键系统的可信选择。
最小惊讶原则(POLA)是这一方法的指导思想。POLA 确保系统升级和变更不会破坏现有的功能或工作流程。在 FreeBSD 中,这一原则的应用方式如下:
一致的用户体验:升级旨在保持熟悉的用户体验。用户可以期待最小的工作流程中断,避免由于不可预见的变化而浪费时间进行适应。
可预测的系统行为:系统组件和工具遵循既定的约定,始终如一。这种可预测性使得用户更容易理解系统的行为,并有效地与系统进行互动。
清晰的沟通:FreeBSD 开发者重视清晰透明的沟通。详细的发布说明和文档会通知用户即将发生的变更及其潜在影响。这种透明度使得用户能够做好升级准备,并进行必要的调整。
以用户为中心的设计:FreeBSD 的开发过程积极寻求用户反馈,确保变更与用户的期望一致。这种关注最小化了在升级过程中用户遇到的不必要的复杂性和惊讶。
FreeBSD 的升级过程简单且无痛,即使是重大版本升级也是如此。系统设计上确保升级过程流畅,最小化停机时间和复杂性。以下是 FreeBSD 升级过程中非常友好的几个特点:
可预测且一致:升级旨在可预测且一致,确保系统功能在整个过程中保持不变。
最小的停机时间:升级过程优化了最小的停机时间,非常适合那些需要持续运行的生产环境。
简单执行:通常升级仅需执行几个命令即可完成。丰富的文档和用户指南可以在整个过程中为用户提供帮助。
向后兼容性:FreeBSD 优先考虑向后兼容性。现有的应用程序和配置在升级后依然可以正常运行,减少了系统管理员的中断和重复工作。
严格测试:每个版本都会经过广泛的测试,确保在问题进入用户环境之前就被发现和解决。
快照与回滚:通过 ZFS,用户可以在升级前创建系统快照。如果在升级过程中出现不可预见的问题,可以轻松回滚到之前的状态。
安全更新集成:升级机制无缝集成了定期的安全补丁和更新。这确保了系统在引入最新功能和改进的同时,也能防御最新的安全威胁。
FreeBSD 提供了性能、安全性、稳定性、灵活性和支持性社区的完美结合。其宽松的许可使其成为各类企业和开发者的成本效益高的选择。无论你是寻求大规模部署可靠基础的经验丰富的系统管理员,还是寻求强大、安全操作系统的开源新手,FreeBSD 都值得考虑。凭借其对安全、稳定性和对用户社区的强烈承诺,FreeBSD 成为其他操作系统的可行替代方案,并继续为全球关键基础设施提供动力。
在线浏览地址:
原文地址:
作者:Michael Plura
发布时间:2024 年 6 月 7 日上午 10:07
他在 BSD-Unix 开源项目中发挥了重要作用,BSD 许可证正是由他一手创建,他一直致力于 FreeBSD 的发展。让我们一起追忆永远离开我们的 Michael J. Karels 先生。
(图片:FreeBSD 基金会)
Michael J. Karels 曾在加利福尼亚大学伯克利分校(University of California, Berkeley)攻读分子生物学学位,那是他首次接触到伯克利软件发行版计划(Berkeley Software Distribution,BSD)。他所在的实验室涉足了两个领域:研究细菌基因的遗传学,他曾说那里的高科技设备是由牙签和培养皿构成的。另一个领域是分析细菌基因的子部分,该部分提供了某种特定酶的建模说明。实验室有许多专业设备,其中就包含了一台用于数据收集和数据分析的 PDP 11/40。
这台机器上运行着第六版 Unix(V6 Unix),附带了一些来自 2.8BSD、2.9BSD 的增强功能。PDP11/40 引起了他的兴趣,为了科学评估,他编写了个 Fortran 程序。在系统发生错误后,一位员工将 V6 Unix 替换为第 7 版 Unix(V7)——他就是于 2022 年 3 月去世的 Bill Jolitz。Bill 和他的妻子在 386BSD 的开发中发挥了重要作用。Unix V7 并不能完美运行在 PDP11/40 上,技术仪器的设备也无法正常驱动。在对计算机几乎一无所知的情况下,Michael J. Karels 开始研究这个问题,并在 Bill Jolitz 的帮助下适配了 V7 Unix 的软件和驱动。
1974 年,加州大学伯克利分校的 Bob Fabry 教授从 AT&T 获得了 UNIX 源代码许可证。他与同事开始修改 UNIX,并将修改成果以伯克利软件发行版(BSD)的名义进行销售。 1980 年 4 月,为了满足 ARPAnet(美国国防部高级研究计划局)的特殊需求,Fabry 与 DARPA 签订合同,以继续开发 UNIX。在此资助下,Fabry 成立了计算机系统研究小组(CSRG)。
Michael J. Karels 也早早加入了 CSRG,成为负责 BSD TCP 堆栈开发的一员。BSD4.2 中并没有版权声明,但许多美国公司在略微修改后却加入了自己的版权信息,Karels 对此感到不满。因此,他与律师合作,创造了如今在每个源代码文件中都存在的版权声明,该声明随 4.3BSD 分发。随着时间的推移,FreeBSD、NetBSD、OpenBSD、DragonFly BSD 和 Sun Solaris 等系统因此而诞生。
1992 年 2 月,Karels 转职到 BSDi(伯克利软件设计公司),参与 BSD/OS 的开发。BSD/OS 曾是多年唯一在英特尔平台上提供的商业化类 BSD Unix 操作系统。BSDi 的所有软件资产于 2001 年 4 月被凤河收购,Karels 随后成为风河的首席技术专家,负责 BSD/OS 平台。
2003 年,Karels 转职成为 Secure Computing Corporation 的高级首席工程师,该公司以 BSD/OS 作为 SecureOS 的基石。在这,他主要开发的产品是 Sidewinder 防火墙,后来被称为 McAfee Firewall Enterprise(即臭名昭著的迈克菲防火墙企业版)。由于 BSD/OS 的开发逐渐停滞,Karels 提议将 SecureOS 从 BSD/OS 迁移到 FreeBSD。多年来,该项目中的许多重要成果都回馈给了 FreeBSD。Karels 在 2017 年被正式任命为 FreeBSD 的提交者。退休后,他继续在业余时间为 FreeBSD 做贡献。
1993 年,USENIX 协会为加利福尼亚大学伯克利分校计算机系统研究小组授予终身成就奖,以表彰包括 Karels 在内的 180 位人士,他们为 CSRG 发布 4.4BSD-Lite 做出了贡献。
Michael J. Karels 与 Marshall Kirk McKusick 合著了多本关于《4.3BSD UNIX 操作系统设计与实现》的书籍。去年五月,Karels 在渥太华举行的 FreeBSD 开发者峰会 2023 上谈到了他在 BSD 生态系统内的职业生涯。
FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于支持 FreeBSD 项目和社区。基金会接受个人和企业的捐赠,用于开发功能、雇佣软件工程师、改进构建和测试基础设施、通过线上和线下活动宣传 FreeBSD,以及提供培训和教育材料。基金会还代表 FreeBSD 项目处理法律事务,是合同、许可和其他法律安排的公认实体,完全依赖捐赠支持。了解更多信息,请访问 。
FreeBSD 项目的组织稳定性是其关键区别之一,自 1993 年以来持续开发着。FreeBSD 是许多企业设备(如 Juniper 的交换机和 NetApp 的 NAS 单元)、消费电子、网络与安全解决方案以及像 这样的高流量内容分发系统的基石。这一长期稳定的组织和社区为 FreeBSD 的开发工作提供了可靠性和持续的创新。
受到原始启发,FreeBSD 的开发方法采用了集中式模型,这与 Linux 的高度分布式开发生态系统有着很大的不同。与第三方 Linux 发行版将内核与许多外部项目的软件结合不同,FreeBSD 所有系统组件和文档均由单一项目框架内的团队进行开发。这一方法确保了系统的一致性和安全性,突显了 FreeBSD 对统一操作系统的坚持。
推动着 FreeBSD 的开发和采用。尽管它对使用 BSD 许可证代码的开发者要求较少(并且较为简洁,仅 200 余字,而 长达近 3000 字),FreeBSD 项目由于其领导和结构方式,仍显得更加利他。与像红帽这样的公司不同,红帽虽有贡献于开源项目,但它是以商业利益为驱动,FreeBSD 则来自于其自身的源头,作为一款统一体开发内核和操作系统。这一集中式开发方法确保了所有组件的紧密集成,带来更大的一致性和可靠性。
是一家非营利性 501(c)(3) 组织,旨在支持 FreeBSD 项目。该项目的目标是开发一款 BSD 许可证下的开源操作系统。由于项目的组织方式以及它们各自的目的,未来的代码可用性不成问题,项目对开源的承诺也无可置疑。FreeBSD 基金会提供资金和支持,以确保 FreeBSD 继续作为顶级开源操作系统存在。该组织结构强化了 FreeBSD 对开源原则的承诺,确保其持续开发和可访问性。
FreeBSD 的以安全为基础原则进行设计。通过隔离构建环境、最小化外部依赖、严格验证源代码并确保一致的构建过程,FreeBSD 有效地减少了与更复杂和控制较少的构建环境相关的风险。这些设计原则共同提升了系统的完整性和安全性,确保了安全和受控的构建过程,减少了漏洞。
为了提升用户体验、改善系统安全性并简化维护,FreeBSD 更新了其。用户现在可以期望每个季度发布一个新的次要版本,每两年发布一次主要的 .0
版本。从 FreeBSD 15.x 开始,稳定分支将支持四年,较之前的五年有所缩短。这一新计划确保了持续的更新流动,实现在维持稳定性的同时应对新出现的安全威胁的实际平衡。
FreeBSD 的开发模型秉承了伯克利 BSD 的协作精神。社区的对整个系统产生了重要影响,从内核到实用程序和文档。这种集中式的开发意味着单一贡献就能改善整个系统的性能、安全性和可用性,产生连锁反应,每一次提升都对项目的整体健康和发展做出贡献。
对于有兴趣参与 FreeBSD 的新成员,有很多方式可以参与。无论是担任导师、推广 FreeBSD,还是参与论坛和邮件列表,您的努力都会推动项目的创新和发展。今天就支持 FreeBSD 项目,加入其充满活力的社区,帮助构建这个长期发展的开源生态系统。您可以通过、处理、和来帮助提升 FreeBSD。每份贡献,无论大小,都会帮助 FreeBSD 成为一款更稳定、安全和高效的开源操作系统。
pkg 包管理器的流程。与其他系统中可能出现的复杂且易错的依赖管理不同,pkg 会自动处理所有依赖关系,确保用户能够快速高效地安装所需软件,无需担心依赖冲突和错误。
无论是通过指导、推广 FreeBSD,还是参与论坛和邮件列表,你的努力都推动着 FreeBSD 项目的创新与发展。今天就加入我们的充满活力的社区,通过帮助建设这个长期发展且不断壮大的开源生态系统来支持 FreeBSD 项目!通过、处理、和,来提升 FreeBSD。每份贡献,不论大小,都有助于使 FreeBSD 变得更加稳定、安全和高效。
FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于支持 FreeBSD 项目和社区。,基金会将资金用于开发新特性、雇佣软件工程师、改善构建和测试基础设施、通过线上和线下活动推广 FreeBSD,并提供培训和教育材料。作为 FreeBSD 项目的法律事务代表,基金会是合同、许可和其他法律安排的公认实体,完全依赖捐赠资金支持。了解更多信息,请访问 。
公告
日期
主题
FreeBSD-SA-24:03.unbound
2024 年 3 月 28 日
Unbound 中的多个漏洞
FreeBSD-SA-24:04.openssh
2024 年 7 月 1 日
OpenSSH 预认证远程代码执行
FreeBSD-SA-24:05.pf
2024 年 8 月 7 日
pf 在状态表中错误匹配不同的 ICMPv6 状态
FreeBSD-SA-24:06.ktrace
2024 年 8 月 7 日
ktrace(2) 在执行 setuid 二进制文件时未能解除附着
FreeBSD-SA-24:07.nfsclient
2024 年 8 月 7 日
NFS 客户端接受包含路径分隔符的文件名
FreeBSD-SA-24:08.openssh
2024 年 8 月 7 日
OpenSSH 预认证异步信号安全问题
FreeBSD-SA-24:09.libnv
2024 年 9 月 4 日
libnv 中的多个漏洞
FreeBSD-SA-24:10.bhyve
2024 年 9 月 4 日
bhyve(8) 通过 TPM 设备传递特权来宾逃逸
FreeBSD-SA-24:11.ctl
2024 年 9 月 4 日
ctl(4) CAM 目标层中的多个问题
FreeBSD-SA-24:12.bhyve
2024 年 9 月 4 日
bhyve(8) 通过 USB 控制器特权来宾逃逸
FreeBSD-SA-24:13.openssl
2024 年 9 月 4 日
OpenSSL 中 X.509 名称检查的可能 DoS 漏洞
FreeBSD-SA-24:14.umtx
2024 年 9 月 4 日
umtx 内核 panic 或使用后释放问题
Errata
日期
主题
FreeBSD-EN-24:05.tty
2024 年 3 月 28 日
TTY 内核 panic
FreeBSD-EN-24:06.wireguard
2024 年 3 月 28 日
WireGuard 中 if_wg(4) 的屏障不足
FreeBSD-EN-24:07.clang
2024 年 3 月 28 日
启用某些优化时 Clang 崩溃
FreeBSD-EN-24:08.kerberos
2024 年 3 月 28 日
使用弱加密时 Kerberos 崩溃
FreeBSD-EN-24:09.zfs
2024 年 4 月 24 日
与 ZFS 相关的内核线程导致高 CPU 使用
FreeBSD-EN-24:10.zfs
2024 年 6 月 19 日
ZFS 中的内核内存泄漏
FreeBSD-EN-24:11.ldns
2024 年 6 月 19 日
ldns 使用在 resolv.conf 中注释掉的名称服务器
FreeBSD-EN-24:12.killpg
2024 年 6 月 19 日
killpg 中的锁顺序反转导致活锁
FreeBSD-EN-24:13.libc++
2024 年 6 月 19 日
向堆分配的 std::string 删除传递了错误的大小
FreeBSD-EN-24:14.ifconfig
2024 年 8 月 7 日
ifconfig 中的网络掩码分配错误
FreeBSD-EN-24:15.calendar
2024 年 9 月 4 日
cron(8) / periodic(8) 会话登录问题
原文链接:https://it-notes.dragas.net/2023/04/03/make-your-own-vpn-wireguard-ipv6-and-ad-blocking-included/
VPN 是连接到自己的服务器和设备的基本工具。许多人出于各种原因使用商业 VPN,从不信任其提供商(尤其在连接到公共热点时)到希望使用不同 IP 地址(也许是其他国家的)在互联网上“活跃”。
无论出于何种原因,解决方案都不会匮乏。我一直在设置管理 VPN,以允许服务器、客户端使用安全通道进行通信。最近,我在所有设备上(包括桌面/服务器和移动设备)启用了 IPv6 连接,我需要快速创建一个节点,集中一些网络并允许它们在 IPv6 网络上出站。我使用并将要描述的工具是:
VPS——在这种情况下,我使用了基本的 Hetzner Cloud VPS,但所有提供 IPv6 连接的提供商都可以:如果您需要 IPv6 的话。
OpenBSD——一款干净、稳定且安全的操作系统。
Wireguard——轻量级、安全,同时也不会“唠叨”,因此对移动设备电池也很友好。在没有流量时,它不会传输/接收任何内容。被所有主要的桌面和服务器操作系统以及 Android 和 iOS 设备广泛支持。
Unbound——可以直接向根域名服务器发出 DNS 查询,而非转发器。还允许插入阻止列表,类似于 Pi-Hole 的结果(即广告拦截)。
列表——立即阻断与黑名单用户之间的连接。
第一步是激活 VPS 并安装 OpenBSD。在 Hetzner 云控制台上,没有有预置的 OpenBSD 镜像,只有 Linux 发行版可选。别怕,只需选择其中一个 Linux 并创建 VPS。创建完成后,OpenBSD ISO 镜像将出现在“ISO 映像”中。只需插入虚拟光驱,重启 VPS,OpenBSD 安装程序就会出现在控制台中。
我就不细说了,操作简单明了。唯一的注意事项(对于 Hetzner Cloud VPS)是使用“自动配置”进行 IPv4 设置,但暂时别配置 IPv6。稍后再配置。
使用 syspatch
命令安装所有 OpenBSD 更新并重新启动,内核将被重新链接。
在 OpenBSD 上,Wireguard 完全集成到了基本系统中,无需安装外部软件包。这是一个重大优势,因为随着时间的推移,所有与 Wireguard 相关的支持将由主要的 OpenBSD 开发团队直接管理。
第一步是在 VPS 上配置 IPv6。在 Hetzner 下,不幸的是,他们只提供 /64 的地址,因此需要对分配的网络进行分段。在这个例子中,它将被划分为 /72 子网络 - 可以使用计算器来查找有效的子类。
文件 /etc/hostname.vio0
应该看起来如下:
简而言之,保留 Hetzner 分配的基地址,但将子网掩码改为/72 - 从而可以使用其他网络。
它将重新配置网络接口并允许 IPv6 开始工作。要测试它:
若一切配置正确,可执行 ping 命令且 google.com 将回复。
现在需要为 IPv4 和 IPv6 启用转发。在文件 /etc/sysctl.conf
中输入以下内容:
要应用这些更改,您可以重新启动或直接输入:
配置 Wireguard,需要进行一些步骤。首先,需要创建私钥:
会出现类似以下内容:
YUkS6cNTyPbXmtVf/23ppVW3gX2hZIBzlHtXNFRp80w=
现在创建一个名为 /etc/hostname.wg0
的新文件:
正在创建一个新的 Wireguard 接口,名为 wg0。它将拥有 IPv4 地址“172.14.0.1”,Wireguard 将监听端口 51820,并使用稍后创建的私钥。它还将在供应商提供的子类别之一上拥有 IPv6 地址。
保存并激活该接口:
如果所有内容都正确输入,它应该会启用接口。现在:
将返回类似这样的内容:
记录下 wgpubkey——它将用于配置客户端。
就防火墙而言,OpenBSD 带有基本的 pf 配置。在我的设置中,我倾向于阻断不需要的内容,并允许可能有用的内容。但是,我喜欢把“坏人”挡在门外,所以我使用黑名单。pf 允许在运行时向表中插入和移除元素,因此防火墙可以相应地进行配置。
要下载并应用 Spamhaus 列表,我使用在互联网上找到的一个简单而有效的脚本。
所以在/usr/local/sbin/spamhaus.sh 中创建脚本:
使其可执行并运行:
配置 pf 的方法很多。一个相当简单的例子可能是这样的:
这是一个非常简单的配置:它阻止了来自 Spamhaus 下载列表中的所有内容,允许 Wireguard 网络到公共接口的 NAT,允许 IPv6 中的 icmp 流量(这对网络正常运行至关重要),同时阻止了针对 Wireguard IPv6 LAN 的传入流量(请记住,IP 地址将是公共的且可直接到达,因此我们不希望默认情况下公开我们的设备)。允许 Wireguard 接口上的所有流量通过。然后将阻止所有流量并指定异常,即允许 ssh 和 Wireguard 连接(当然)。还将授权允许流量从公共网络接口流出。
重新加载 pf 配置:
倘若一切正常,防火墙应该已加载新的参数。
现在是配置 Unbound 来实现 DNS 查询缓存和相关广告拦截的时候了。一段时间前,我找到了一个脚本,稍作调整后使用。我记不清楚原始作者是谁了,所以我只在这里贴出来脚本。
创建一个脚本来更新 /usr/local/sbin/unbound-adhosts.sh
中的 unbound 广告拦截。
类似地,使脚本可执行并运行它:
现在,可以修改位于 /var/unbound/etc/unbound.conf
的 Unbound 配置文件如下:
在启动 unbound 之前,必须给予适当的权限:
现在可以启用并启动 unbound。由于需要加载(长)阻止列表,这将需要几秒钟:
如果一切都正确,unbound 将能够响应来自各自 LAN 的请求,位于 172.14.0.1
和 2a01:4f8:cafe:cafe:100::1
上。
现在可以配置 Wireguard 客户端了。每种实现都有其自己的过程(Android、iOS、MikroTik、Linux 等),但基本上只需在服务器和客户端上创建正确的配置即可。例如,在 OpenBSD 服务器上输入“ifconfig wg0”命令可查看服务器的公钥,应将其插入到客户端上将创建的“peer”配置中;而客户端的公钥则将在服务器上这样使用:
重新打开文件 /etc/hostname.wg0
添加:
重新加载配置:
在客户端上,通过在本地 IP 地址中插入“172.14.0.2/32, 2a01:4f8:cafe:cafe:100::2/128”(在主机名为 wg0 的对等配置中输入的)创建一个新配置。将 DNS 服务器地址设置为“172.14.0.1”及/或其对应的 IPv6 地址(在本例中为 2a01:4f8:cafe:cafe:100::1 - 您的将会不同)。在对等端,插入服务器的数据,包括其公钥、IP 地址:port(在示例中,port是 51820),以及允许的地址(设置“0.0.0.0/0, ::0/0”意味着“所有连接将通过 Wireguard 发送” - 所有流量将通过 VPN 传输,无论是 IPv4 还是 IPv6)。
也可以将 VPN 仅用作广告拦截器,只通过其路由 DNS 流量。要实现此结果,只需配置客户端,使得唯一允许的地址是刚配置的 unbound 的地址(在本示例中,172.14.0.1 或 2a01:4f8:cafe:cafe:100::1) - DNS 解析将通过 VPN 进行,但浏览将继续通过主提供商运行。
如果您希望垃圾邮件和广告屏蔽列表能够自动更新,创建/etc/daily.local 文件并添加以下行:
所有这些都可以通过简单安装 OpenBSD 来实现,无需安装任何额外的软件包。这既有助于更新管理,也有助于安全性。
点击此处可以观看弥撒的录制视频。
Michael "Mike" John Karels(1956 年 8 月 2 日 - 2024 年 6 月 2 日),享年 67 岁,来自伊甸草原。
Michael 于加拿大渥太华因突发心脏病猝然离世。仅余他挚爱的妻子 Theresa “Teri”(娘家姓 Spartz)仍在人世间;女儿 Sarah 及其男友 Ivan Munkres、姐妹 Colleen (Stuart) Lind、Mary Beth (Brad) Schleif 和 Katherine Karels、兄弟 Eugene (Ann) Karels 以及许多家人和朋友,包括他的父母 Patricia 和 Charles Karels 都在他之前去世了。
Michael 毕业于圣母大学(即诺特丹大学),取得微生物学学士学位,并在加州大学伯克利分校完成了研究生学业。在攻读博士学位期间,他接触到了计算机,使他的兴趣发生转向。他最终成为了一名软件工程师,并在 BSD UNIX 历史上扮演了重要角色,这是现代计算史上一个重要的里程碑。通过在伯克利大学的工作,他为早期互联网的实现做出了贡献,为现代网络奠定了基础。他是《4.4 BSD 操作系统的设计与实现》的作者之一,这是该领域的重要著作。”
在完成伯克利的学业后,他曾在多个组织担任高级首席工程师,包括风河公司、安全计算公司、迈克菲、英特尔和 Forcepoint。2021 年他退休了,并将时间和才能倾注于为 FreeBSD(一款免费操作系统)做志愿工作。尽管他在相关领域取得了成功并占据重要地位,但 Michael 被人描述为是一个非常谦逊、有耐心和善良的人,并且乐于与他人分享知识。”
除了在工作上取得的成功,Michael 还是他的家庭中的关键一员,他是个乐于奉献,能支撑的儿子、兄弟、丈夫及父亲。从小,他就承担着额外的责任,在许多方面带领、帮助和指导家庭成员,但他总是以善良、坚持和智慧来面对这些。
Michael 也是一位热情的环保主义者。他对自然的热爱始于早年与家人的野营之旅,其中在冰川国家公园独自过夜的经历成为他成长中的深层记忆。这份热情随着时间的推移而增长,成年后的他成为了许多环保组织的积极支持者,致力于对抗气候变化,并在当地参与清除植物入侵物种的工作。他和妻子最后一次同游国家公园是在 2023 年秋,他们观光了大峡谷和锡安国家公园。
多年来,他的爱好各异,比如音乐和摄影。他的音乐品味多样,从杰思罗·塔尔乐队到贝多芬再到戴夫·布鲁贝克。他对摄影的兴趣始于高中时期,他在其童年卧室里搭建了自己的暗室,并随之进入了现代摄影和数码单反相机时代。在圣母大学就读期间,他担任了校园广播电台的站长,白天播放古典音乐,晚上拍摄巡演的摇滚乐队。
Michael 原本期盼着在退休后的余生中进行编程、改善家居环境,并见证女儿从医学院毕业并成家。他的离世使家人和朋友乃至整个科技界都倍感遗憾。
6 月 18 日(周二)上午 11:00 在 Pax Christi 天主教社区举行基督葬礼,地址:Eden Prairie,12100 Pioneer Trail。
Michael 将安眠在 Pleasant Hill 公墓。
6 月 17 日(星期一)下午 5:00 至 8:00 在 Gearty-Delmore Park 殡仪馆(地址:St. Louis Park,3960 Wooddale Avenue South)举行追思会,其中包括下午 6:30 的回忆时光(弥撒前一小时在教堂举行)。
祭奠活动请优先考虑捐赠至 Free BSD 基金会;3980 Broadway Street; STE #103-107; Boulder, CO 80304 或捐款至环境保护基金会(EDF)。
上次更新于 2023 年 07 月 16 日发布于 2023 年 06 月 24 日
自家服务器的硬盘使用量即将超过 80%^ 1^,再加上使用已经超过了 10 年,因此判断还是该更换硬盘了。于是我购买了新的硬盘并进行了更换。本文记录了实际进行硬盘更换的过程。
尽管本文作者的服务器操作系统是 FreeBSD,但是即使在 Linux 上使用 ZFS 的情况下,ZFS 相关操作也是类似的(作者也在 Linux 上使用 ZFS)。
目标服务器的操作系统是 FreeBSD,作为系统存储有一台 256GB 的 SSD,作为数据存储有两台 2TB 的硬盘,全部使用 ZFS 配置。为了数据保护,两台硬盘配置为 ZFS 镜像,因此尽管有两台硬盘,但容量上等同于一台。本次将两台 2TB 的硬盘更换为各自 6TB 的硬盘。
在實際進行更換操作之前,請確認當前狀況。使用 zpool list 來確認硬碟的使用量等信息如下所示。
zroot 是用於系統的 SSD。而 zvol0 是此次更換的硬碟目標,可以看到 ZFS 鏡像配置的使用量達到了 82%。
配置的详细信息可以在 zpool list -v 和 zpool status 中查看。
从这些信息我们可以看出,ndisk1 和 ndisk2 的磁盘分区已经设置成了镜像。实际上,这 3 个存储设备分别是 ada0(固态硬盘)、ada1(硬盘)、ada2(硬盘),硬盘分区的配置如下。
可以看出 ada1 和 ada2 都是采用 GPT 格式,ada1 的用于 ZFS 的分区命名为 ndisk1,ada2 的分区则命名为 ndisk2。
不仅限于 ZFS,对于镜像(RAID 1)配置的两个硬盘都需要更换的步骤,大概有以下两种方法。
使用新硬盘准备镜像,然后从现有镜像复制数据,复制完成后再进行更换。或者先更换再从原始硬盘复制数据。
更换一侧硬盘,使用镜像功能同步数据,完成后再更换另一侧硬盘重新同步数据
使用前一种方法,数据复制只需一次,但同时需要连接 3 台或 4 台硬盘,还需要考虑 SATA 接口数量等。在这种情况下,虽然硬盘可以使用 USB 连接,但由于 USB 2.0 传输速度慢,复制所需时间较长,因此最好使用 USB 3.0。
作者选择了后一种逐一更换的方法。这种方法在更换硬盘时可能会有些影响,但即使在同步期间(性能会有所降低),也能像平常一样继续使用服务器,这是其优点。
在更换 ZFS 镜像中的驱动器时,请注意在执行任何操作(如 zpool detach zvol0 gpt/ndisk2 )之前最好不要从 ZFS 池中移除 ndisk2。因为一旦使用 zpool detach 命令将 ndisk2 从池中移除,ndisk2 中的数据将被视为已清除。如果在数据同步到新硬盘时发生 ndisk1 读取错误,并且需要用 ndisk2 重新进行同步,那么一旦 ndisk2 被移除,就无法再次使用它进行同步了。如果只是关闭电源并移除 ndisk2,那么 ndisk2 中的数据将保持与 ndisk1 相同,这样即使发生意外,也可以使用 ndisk2 进行重新同步。
首先更换第一台硬盘,将包含 ndisk2 分区的硬盘取出进行更换。关闭服务器并切断电源,取下旧硬盘,连接新硬盘后通电。
启动后确认 zvol0 的状态。
两个硬盘应该构成镜像,但其中一个 gpt / ndisk2 不见了,只剩下一个,因此在 HEALTH 或 STATE 方面显示为 DEGRADED。另外,在 zpool status 中,显示了 gpt / ndisk2 所在位置的 config:部分中不见了,而是显示为“12897545936258916783”,并以“was /dev/gpt/ndisk2”结尾。稍后将使用此 ID。
为备用硬盘准备工作,要进行 GPT 初始化,并准备用于 ZFS 的分区。
首先,使用 GPT 初始化硬盘。
然后为 ZFS 分配分区。我将新分区命名为 sdisk1 以区别于旧分区。
由于已准备好新分区,因此将用 sdisk1 替换旧 ndisk2。为此操作使用 zpool replace 。
通常情况下,您需要指定构成池的设备作为 zpool replace 的源设备,但是在这种情况下,由于设备已被取下,因此没有这样的设备。在这种情况下,请指定显示的 ID,即 zpool status zvol0 。
这将开始同步来自 ndisk1 的镜像到 sdisk1。
同期在后台进行,如前所述,在此期间通常可以正常使用服务器。由于数据量大约为 1.5TB,因此同步需要相当长的时间,而在此期间如果无法了解进展情况,可能会感到有些不安。在 ZFS 中可以通过 zpool status 确认同步进度,从而获得结束时间的大致参考。
在 status: 下显示 One or more devices is currently being resilvered 和 resilver^ 3^ 中(同步中)的状态。在 action: 下显示指示等待 resilver 完成。而在 scan: 中显示处理量和预计时间,但正如 no estimated completion time 所示,同步刚开始时由于无法预知时间,因此不会显示。
过一段时间,将会显示预计完成时间,但根据经验,在这个阶段这些时间通常不可靠。
进一步确认后,显示需要大约 14 小时才能完成。
一小时后再次确认时,显示时间已减少到约 6 小时,但第一台镜像的同步最终花了约 15 个半小时。以下是第一台同步完成时检查到的 zpool list 和 zpool status 的结果。
HEALTH 和 STATE 均为 ONLINE,无错误发生,第一台同步顺利完成。
由于第二个硬盘的更换和同步步骤与第一个完全相同,因此只记录命令的执行和结果。
更换第二个硬盘并启动。
镜子用隔板准备
启动第二台同步
第二台同步大约需要 14 小时。
交换和数据同步已顺利完成,但仍有一些工作要做。因为仅仅更换了硬盘,2TB→6TB 的容量扩展还没有生效。
再次确认 zvol0 的容量时,SIZE 显示为 1.81T,与更换前相同。但仔细观察到 EXPANSZ 显示为 3.62T,可知有 3.62TB 的扩展空间。
这个容量扩展的设置是 ZFS 池的 autoexpand 属性。首先检查当前的 autoexpand 值,通常默认为 off。
尝试将 autoexpand 设置为 on。
但仅仅将 autoexpand 设置为 on 并不会改变容量。
为了扩展容量,您需要设置 autoexpand=on 并执行 zpool online -e 。
由于忘记指定设备名称导致错误😅,但在正常情况下,指定设备名称是必需的。当使用 -e 选项时,好像可以不指定设备名称。无论如何,在 zpool online -e 中,只需指定池内的任何一个设备名称即可解决问题。
如果重新指定设备名称并执行,容量增加到了 5.45TB^ 4^。
这次在更换硬盘后,我们修改了 autoexpand 属性,如果在更换之前设置好,那么在第二台同步完成后容量将会自动扩展。此外,autoexpand 不仅在镜像中可以使用,在 raidz 等配置中也同样适用。
2023 年 07 月 16 日添加:收到关于使用 zpool online -e 进行扩展时不需要设置 autoexpand 属性的指示。autoexpand 属性被用于自动扩展容量的设置。
由于新硬盘的传输速度提高,我能感受到整体性能有所提升。虽然 CPU 已经使用了 10 年以上,但主要用途是文件服务器,所以似乎可以继续使用。
因为在 ZFS 中采用写时复制的方式进行数据更新,当剩余空间不足时,与其他文件系统相比性能会急剧下降(在硬盘上更为明显),因此不建议使用到容量的极限。使用到什么程度会导致性能下降取决于工作集的配合,因此不能简单地说清空容量是否会对 ZFS 的性能造成影响,就算是其他文件系统中不受影响的剩余空间,在 ZFS 中也可能导致性能下降。
即使将 ndisk2 分离,使用 zpool import -D 可以恢复数据,但我没有尝试过。
「resilver」这个词是我开始使用 ZFS 时了解到的,原意是指擦拭银饰品,但在 ZFS 中表示 RAID 正在进行恢复。
硬盘的 TB 容量以十进制表示,所以 6TB 相当于 6,000,000,000,000 字节,而以二进制表示的 1TB 是 1,099,511,627,776 字节,因此是 5.45TB。
发布于 2021 年 03 月 11 日,最后更新于 2021 年 03 月 18 日
在查找如何指定 CPU 型号时^1^,突然想起自己好像没有看过日文文档…于是我下定决心进行调查备忘录。
这个规定基本上是追加的,所以我打算查看每个操作系统版本之间的差异 bsd.cpu.mk ^ 1 ^。我会先查找版本的差异并告诉你。请注意,区分大小写。
如果你使用的是最新的 CPU,并且未在此列表中,那么请指定最接近的 CPU 类型。大多数 CPU 都继承了之前架构的功能^ 2 ^,所以不应该会输出错误的代码。
现在让我们来谈谈 CPU 类型是什么,通过在 /etc/make.conf 中指定正在使用的 CPU,编译时将生成针对该 CPU 优化的代码,这就是所谓的 CPU 类型。对那些使用包管理系统的人来说,这是无关紧要的^ 3 ^。
这里列出的内容不能保证适用于旧的 CPU 架构进行编译。
特别是在编译器从 GCC 4 切换到 LLVM 时,可能会导致之前可用的 CPU 类型不再被支持。
正在调查10.0-R。不调查比这更旧的版本。
怎么处理其他的架构呢。有些复杂的和前后关系不明确,难以解释。
在其他架构中,一些消失了(IA64,SPARC64),一些增加了(AARCH64,RISCV),各种各样。
※调查版本:13.0、12.2、12.1、12.0、11.4、11.3、11.2、11.1、11.0、10.4、10.3、10.2、10.1、10.0
尽量确保最新的项目排在前面进行调查
希望将 amd64/i386 双用 CPU 和仅 i386 的 CPU 进行区分
当搭载 SSE3 的时期, Opteron 是什么来着?还有, Blue Lightning 和 Cyrix 之类的,还有 NexGen ,所有的回忆都飘到哪里去了!...
/usr/share/mk/bsd.cpu.mk
偶尔会回归到原点的架构存在。 ↩
因为在包构建系统内指定了 CPU 类型而进行编译。 ↩
向后和向前的兼容性。
最后更新于 2020-11-11 发布于 2018-12-13
近年来在 FreeBSD 中,“分区”几乎总是使用 GPT(GUID Partition Table)无论磁盘大小如何,这几乎是不言而喻的选择。但是,“BIOS 引导”和“UEFI 引导”在分区方案上有细微差异^1^。本文将阐明两者之间的区别,并展示可用于引导的分区配置示例。
本文假定操作的是 SATA 硬盘,设备名称表示为(/dev/)ada0。如果操作的是 SAS/USB 硬盘,则设备名称应为 dan;对于 NVMe 硬盘应为 nvdn;对于 eMMC 存储则为 mmcsdn(其中n为 0 或更大的整数)。
因为它是 GPT 分区,所以在任何步骤中,都有一些必须执行的命令^ 2^。
为了简化讨论,假定要划分如下所示的分区。
设备名称 | 分区类型 | 用途 |
---|---|---|
在本次講話中,ada0p2 和 ada0p3 被視為相同的共同步驟。換句話說,執行以下命令在「當前時刻無實際用處」^4^^5^^6^。
定义“freebsd-boot”分区作为引导分区。如果不是“freebsd-boot”,引导程序将无法找到该区域。
从逻辑块地址(LBA)40 处开始,指定起始位置为 40 个扇区(LBA 40)。
GPT 分区头大小(GPT 头大小)为 34 扇区^ 7 ^,但对于 4KiB 扇区兼容磁盘,扇区起始位置将被舍入为 8 的倍数。
可能为了考虑这一点,最近 GPT 头大小变成了 40 扇区(从哪个版本开始尚未确认)。
个人建议指定区域大小( -s )为 984 个扇区。
下一个区域(freebsd-ufs)从 512Kib 起始位置开始有好处 ^ 8 ^。
由于引导加载程序的限制,必须将大小限制在 545Kib 以下(本次大小为 492Kib)。
因此,缩小没有意义,也没有必要进一步扩大。
完成引导加载程序的安装。引导加载程序将在FreeBSD分区^ 9^^ 10^上搜索,并将控制转移到 /boot/loader 或 /boot/zfsloader。
定义一个名为「efi」的分区作为引导分区。如果不是「efi」,UEFI将无法检测到这个区域。
从扇区 40(LBA40)指定开始位置( -b )。
GPT 分区标头大小(GPT 标头大小)为 34 个扇区^7^,但是对于 4Kib 扇区对齐的磁盘来说,扇区起始位置会被舍入到 8 的倍数。
最近,为了考虑这一点,GPT 标头大小可能变为了 40 个扇区(版本未知)。
领域大小的指定( -s )建议指定为 40960 个扇区。
对于这个设置,freebsd-ufs 的下一个区域的起始位置将从 200 MiB 的边界开始 ^ 8 ^。
领域大小严格来说略小于 200 MiB(少了 40 个扇区,即 20 KB),不过这个误差可以忽略。
目前(11.2-R 版本)/boot/boot1.efifat 引导区的大小为 800KiB。
在 10.4-R 或 11.1-R 版本中,建议将此区域保留 200MiB,考虑到与其他操作系统(如 macOS)的兼容性设置,因此如果单独启动 FreeBSD,当前的 800KiB 大小是没有问题的。
在 bsdisnstall: increase EFI partition size to 200MB 的讨论中,认识到对于类似固件更新工具的 EFI 应用程序还需要空间,因此认为 800KiB 的大小实在是太少了。
到此为止,启动加载程序的安装就完成了。启动加载程序会查找 FreeBSD 区域^ 11^ 来继续引导过程。
一切都好。沒問題。時代已經追上我了。
一切都好。沒問題。但是不建議使用任何這些步驟。
/boot/boot1.efifat 是分区镜像本身。极端来说可以认为是 dd if=/dev/ada0p1 of=/boot/boot1.efifat 的内容。实际在构建时正在做类似的事情。
因此,无论是使用 dd(8)还是 gpart(8)写入都是一样的。但毫无疑问,更智能的选择是使用 gpart(8)。
但最好不要使用/boot/boot1.efifat。关于之前提到的 200 MiB 扩展的问题,使用它会将 200 MiB 区域中的 800 KiB 变成只能访问的区域。
尽管已经保留了 200 MiB 的空间,但却无法运行 EFI 应用程序。
在新安装中没有问题,但如果想要更新,可能会走入不必要的方向而消失。
常常需要但并非总是必要。然而…
如果从 UFS 启动,由于 UFS 格式的稳定性,bootloader 代码没有更改,因此几乎不会出错。如果出现问题,可能是在从 UFS1 升级到 UFS2 时。因此,即使未更新,也不会出现问题,或者可能不会被发现。
如果从 ZFS 启动,由于 ZFS 格式的不稳定性,bootloader 代码会发生变化,因此需要经常维护,否则可能无法启动。在这方面, /usr/src/UPDATING 的 ZFS notes 中提到了“当升级启动的 ZFS 池版本时,需要更新 bootloader”的说明。
从这个角度来看,更新引导程序的步骤也应该进行系统化。
对于 freebsd-boot 分区,只需使用 gpart bootcode -p 进行覆盖即可,但对于 efi 分区,则需要在挂载后,使用 cp 进行覆盖(详见后文)。
不要紧,最好不要做。
MBR 有 2 TiB 的限制,如果使用后续区域,BIOS 可能无法找到引导加载程序(freebsd-boot)。此外,如果分区编号与区域顺序不匹配,将会变得很麻烦。
很遗憾。因为 GPT 是 MBR 的更高兼容性版本,所以别想了。
就 UEFI 启动来说,GPT 会被解释为 GPT,所以可以断然地说“无关紧要”。
但对于 BIOS 启动,GPT 会被看作 MBR 来操作。因此,在前 2TiB 的区域内需要存在引导加载程序(freebsd-boot)。不过,仅仅存在是问题的关键,并不关心分区号是多少。
答:启动 Live CD 后执行 sysctl machdep.bootmethod 命令,可以确认是 UEFI 启动还是 BIOS 启动。
首先,在 /etc/fstab 中添加以下设置。
接下来创建 /boot/efi 目录。
手动挂载一次,当然也可以忽略重启后的问题。
以后的更新如下。
在 BIOS 中通常被称为“MBR(Master Boot Record)引导”,但由于 2TB 限制和几乎消失了多重引导需求,现在已经统一为 GPT 启动(?)
此命令的执行无需任何更改。从兼容性的角度看,根本不应修改默认值。
虽然有时可能想将 freebsd-ufs 更改为 freebsd-zfs,但本次讨论将略过此内容。
实际上,需要使用 -s サイズ 选项来指定大小。如果未指定,则表示将剩余的全部内容作为意味着不能分配交换空间。
注意执行顺序。如果继续进行,将无法分配启动区域(分区编号将错一位)。
尽管可以使用 -i パーティション番号 或 -b 開始位置 -i パーティション番号 选项进行控制,但作为基本说明,我们愿意放弃。
LBA 0 到 LBA 33 是 GPT 头区域。
近来,各种媒体(包括 4Kibytes HDD 和 NAND Flash 等)中充当边界的最小公倍数(即使有 512KiB,也适用于任何媒体)并不是一个糟糕的数字(应该)。
gptboot 在 freebsd-ufs 区域中查找 /boot/loader,gptzfsboot 在 freebsd-zfs 区域中查找 /boot/zfsloader。 ↩
仅与存储着"/boot/(zfs)loader"的领域的文件系统相关联,因此在引导时会被视为 UFS,而在根目录中会被视为 ZFS,因此对于混合环境中的解释将作为"UFS"来处理。
尽管在搜索 freebsd-ufs 或 freebsd-zfs 领域时,它们的优先级和控制在这里很难解释,因此请参考参考资料。虽然并不复杂。但是由于需要对文件系统级别进行调整,因此需要深入了解一下。
原作者:Jason Perlow
原文发布时间:2024 年 7 月 8 日凌晨 5:00
认识到 BSD 在苹果成功中的重要性,有助于我们更好地理解开源贡献在塑造我们日常使用的技术中之价值。
想一想:苹果时尚且易用的设备,如强大的 MacBook 和无处不在的 iPhone,它们的可靠性和性能,在很大程度上得益于开源操作系统。那么,苹果究竟使用的是哪款开源操作系统呢?尽管常有人说,苹果的 macOS、iOS、iPadOS、watchOS、visionOS 和 tvOS 直接源自 FreeBSD,但其实这是一种误解。
这些操作系统的真正基石在于苹果较早期的操作系统技术与 NeXTSTEP 的结合,而 NeXTSTEP 本身是 Mach 和 BSD 的混合体——早于 FreeBSD。尽管多年来,FreeBSD 的一些用户空间元素被整合进上述操作系统,但苹果的内核(XNU)并不直接来源于 FreeBSD。然而,它们确实共享一脉共同的 BSD 传统。
要了解苹果操作系统的发展,理解不同版本的 BSD(伯克利软件发行版)及其影响至关重要:
BSD 起源于 1970 年代末的加州大学伯克利分校。作为对 AT&T 原始 UNIX 操作系统的增强,BSD 引入了许多成为现代操作系统标准的创新。第一个版本 1BSD 发布于 1977 年,随后是 1978 年的 2BSD。重要版本包括 4.1BSD(1981 年)和 4.2BSD(1983 年),它们引入了快速文件系统(FFS)、TCP/IP 网络和套接字 API,这些基础要素至今仍在使用。
FreeBSD 是从原始 BSD 衍生而来的,以其出色的性能、先进的网络功能和广泛的硬件支持而著称。它源自 1993 年的 386BSD 项目,至今广泛应用于服务器、桌面和嵌入式系统。FreeBSD 强大的性能和可靠性使其成为高可用性应用和互联网基础设施的首选。
NetBSD 以其在多种硬件平台上的可移植性而闻名。其座右铭“Of course it runs NetBSD”(它当然可以运行 NetBSD)体现了它在各种硬件架构上运行的能力,从服务器和桌面到嵌入式设备和大型机。自 1993 年成立以来,NetBSD 一直是 BSD 系列中可移植性和简洁设计的典范。
OpenBSD 是于 1995 年,从 NetBSD 复刻出来的,重点关注安全性、正确性和代码简洁性。它以严格的安全实践而闻名,并且是许多安全技术的先驱,如 OpenSSH、PF(包过滤器)和安全内存管理技术。OpenBSD 对安全性的承诺使其成为那些安全至关重要的应用程序的首选。
出现了几款衍生的 BSD,每款变种都有其独特的重点和增强功能。例如,DragonFly BSD 注重性能和可扩展性,而 Darwin 则是苹果 macOS 和 iOS 的内核。
macOS 的核心是 XNU 内核,这是一款混合内核,结合了 Mach 微内核、BSD 组件和 I/O Kit(设备驱动的面向对象 API)。这种集成确保了 macOS 受益于 BSD 类 Unix 的强大稳定性,同时利用了 Mach 微内核的灵活性。
Darwin 是苹果操作系统(macOS、iOS、watchOS、tvOS 和 iPadOS)的开源基石,它包括了 XNU 内核、各种 BSD 组件和其他开源项目。Darwin 的起源可以追溯到 NeXT,这是一家由史蒂夫·乔布斯在 1985 年创办的公司,他离开苹果后创办了这家公司。NeXT 开发了 NeXTSTEP,这是一种基于 Mach 微内核和 BSD 的操作系统。它发展成为 OpenStep,并最终在史蒂夫·乔布斯回归苹果时演变成 Darwin,带回了 NeXT 的技术。
2000 年,苹果发布了 Mac OS X 的一些核心组件(现在的 macOS)作为开源项目,采用 Apple 公共源代码许可证(APSL),允许更广泛的社区受益并为其开发做出贡献。这些组件包括 launchd、Grand Central Dispatch 和 Core Foundation,其中一些后来在更宽松的 Apache 许可证下重新授权,以促进更广泛的应用。然而,高级组件如 Cocoa 和 Carbon 框架仍然是专有的,以保持苹果的竞争优势。GPL 和 BSD 许可的组件未重新授权,保持了其原有的开源许可证。
1969 年:AT&T 贝尔实验室开发了 UNIX 操作系统。
1977 年:加州大学伯克利分校发布了 BSD 的首个版本(1BSD),作为对 AT&T 原始 UNIX 操作系统的增强。
1978 年:2BSD 发布,继续在 1BSD 的基础上进行改进和工具开发。
1980 年:3BSD 发布,加入了更先进的特性和改进。
1983 年:4.2BSD 发布,包含了像快速文件系统(FFS)和 TCP/IP 网络这样的重大创新,这些成了未来操作系统的基础元素。
1985 年:史蒂夫·乔布斯在离开苹果后创办了 NeXT 公司。
1989 年:NeXTSTEP 发布,它基于 Mach 微内核和 BSD,结合了先进的功能和面向对象设计。
1993 年:FreeBSD 和 NetBSD 从 386BSD 衍生出来,分别专注于性能、安全性和可移植性。
1995 年:OpenBSD 从 NetBSD 复刻出来,强调安全性和代码正确性。
1996 年:苹果收购 NeXT,带回了 NeXTSTEP 技术,为 Mac OS X 奠定基础。
2000 年:苹果发布了基于 Darwin OS 的 Mac OS X 第一版。这个操作系统结合了 Mach 微内核和来自 BSD 的组件,成为苹果现代操作系统的核心。
2006 年:OpenDarwin 停止发布,标志着苹果不再提供可独立安装的 Darwin OS 版本。
苹果的 macOS 是一款混合化的操作系统,集成了来自不同 BSD 变种的各种组件,形成了一个强大且多功能的平台。macOS 的内核是 XNU,它是一款混合内核,结合了来自 Mach、NeXTSTEP 和 OpenStep 的元素,并且加入了来自 BSD 的其他组件。这一基础架构利用了每个系统的优势,提供了一款可靠且高性能的操作系统。
网络栈:macOS 的网络栈源自 FreeBSD 和其他 BSD 变种,集成了它们可靠和高效的网络功能。早期的网络元素,如 TCP/IP 栈,受 FreeBSD 设计的影响,因其性能和可靠性而闻名。包括最初为 FreeBSD 开发的 kqueue 事件通知接口,也增强了 macOS 处理 I/O 事件的能力。苹果的实现结合了来自 BSD 和 FreeBSD 的代码,但也包含了像网络内核扩展(NKE)、面向对象的设备驱动系统(IOKit)以及磁盘仲裁层等独特机制。这些组件与传统 BSD 实现有所不同。
虚拟文件系统:macOS 的虚拟文件系统组件来自 FreeBSD 和其他 BSD 系统,确保了稳定和安全的文件管理系统。
内存管理:macOS 的内存管理系统主要来源于 Mach,并受 NetBSD 的影响,特别是在共享/合并缓冲区缓存方面。
进程模型:macOS 的进程模型基于 Mach,使用 Mach 系统线程作为进程子系统的基础层。
Mach IPC 和安全性:Mach IPC 广泛应用于 macOS 和 iOS 的内核及用户空间,引入了进一步的差异。例如,Mach Security Trailers 是受信任的 IPC 的基础部分。应用程序沙箱中使用的强制访问控制(MAC)机制也与 *BSD 系统中的机制大相径庭。
随着时间的推移发生的分歧:由于 FreeBSD 不愿意整合 UNIX03 兼容性更改,导致了分歧,尽管有一些混合的努力,像 libc 和 libm 这样的库还是出现了复刻。此外,像 NeXTBSD 项目这样的倡议,旨在将像 launchd、Mach IPC 和 Grand Central Dispatch 等苹果的技术带到 FreeBSD,但这些努力未能得到普遍支持。结果,代码库继续出现分歧,尤其是在苹果推进定制芯片支持和优化时,进一步拉大了它们之间的差距。
已知的集成和贡献:macOS 在很大程度上受益于 FreeBSD,尤其是在网络概念上。尽管 macOS 并未完全采用 FreeBSD 的网络栈,但它集成了几款 FreeBSD 衍生的组件,经过调整以满足其独特的需求。macOS 中的早期网络元素,如 TCP/IP 栈,受 FreeBSD 设计的影响,以其性能和可靠性而著称。此外,像最初为 FreeBSD 开发的 kqueue 事件通知接口也被集成到 macOS 中,增强了它处理 I/O 事件的能力。
苹果对 BSD 代码的采用遍及其整个产品线。macOS 驱动着 Mac 台式机和笔记本,iOS 运行在 iPhone 上,iPadOS 运行在 iPad 上,watchOS 运行在 Apple Watch 上,visionOS 运行在 AR/VR 设备上,tvOS 运行在 Apple TV 上。每款操作系统都包含了 BSD 组件,突显了 BSD 在苹果生态系统中的广泛影响。
BSD 的稳健性、安全性和性能特点在塑造苹果操作系统的稳定性和效率方面发挥了重要作用。集成 BSD 衍生的网络概念和组件,使得 macOS 能够提供高性能的网络功能,使其成为消费者和企业应用的可靠选择。BSD 的先进内存管理和进程调度也对 macOS 的响应能力和多任务处理能力作出了贡献。
通过将 BSD 的强大特性与其专有技术相结合,苹果创造了一系列稳定、高效、创新且功能强大的操作系统。这种共生关系凸显了开源贡献在苹果软件生态系统持续演变中的重要性。
苹果公司在高度依赖 BSD 的同时,也积极参与着开源社区。公司通过其开源网站和 GitHub 发布了多项 Darwin OS 组件,包括 XNU 内核、各种用户空间工具和库。这些贡献确保了开源社区能够从苹果的创新和改进中受益。
苹果会定期更新其开源项目,发布 Darwin OS 组件的新版本。这些更新通常与新的 macOS 和 iOS 版本发布同步,体现了苹果对开源社区的持续承诺。通过共享其改进和增强功能,苹果推动了开源软件开发,为开发者和用户带来益处。
Darwin OS 是苹果操作系统的开源核心,目前已不再作为完整的、可安装的系统发布。苹果将 Darwin 的各个组件分开发布,例如 XNU 内核仓库在 GitHub 上,用户空间工具则发布在苹果的开源网站上。这种分散的发布策略使得从苹果的官方渠道组装完整的 Darwin OS 变得困难。
通过 OpenDarwin 项目,苹果曾使这些组件能够单独安装并作为独立系统存在。然而,由于开发的兴趣有限和分歧逐渐加大,OpenDarwin 于 2006 年停止发布。苹果当时的目标值得称赞,但随着复刻过多,最终无法维持该项目,导致了当前的碎片化分发方式。
尽管从苹果处获得完整的 Darwin OS 存在挑战,开源社区仍尝试将这些组件整合为可安装的操作系统,取得了一定的成功。像 PureDarwin(以及之前的 OpenDarwin)这样的社区驱动项目,旨在通过整合苹果发布的各种开源组件,提供可用的 Darwin OS 版本。这些项目展现了开源开发的合作精神,并证明了 Darwin OS 作为独立操作系统的潜力。
苹果与 BSD 代码的关系仍然相当神秘。尽管苹果在开源方面作出了重大贡献,但该公司在操作系统中 BSD 代码的具体使用程度仍然较为模糊。这种封闭的开发过程使得很难准确指出 macOS、iOS 及其他苹果系统中有多少部分仍依赖于 BSD 基石。BSD 许可证的宽松性允许苹果使用并修改代码,而无需公开其使用方式和位置,这与 GPLv2 的“传染性”要求有所不同,后者要求修改后的代码必须共享。
苹果的开源软件策略随着时间的推移发生了变化。公司将焦点从 CoreOS 的开源组件转向了其他领域,如编程语言和编译器技术。苹果投入大量时间和精力开发项目如 Swift、clang 编译器和 LLVM 运行时。这些项目代表了苹果对开源社区的主要贡献,并展示了苹果与 BSD 之间的技术转移,尤其是在编译工具链方面。
此外,随着苹果对原始 BSD 组件的大量修改,传统 BSD 代码与现代改编之间的界限变得模糊。苹果在不断修改和扩展这些组件后,已经很难区分哪些部分是直接继承自 BSD 的,哪些是苹果的创新。这种不透明性限制了我们对 BSD 在苹果产品中全貌的理解,也突出了 BSD 的宽松许可证与 GPL 的传染性要求之间的差异。
有证据表明,苹果仍在其操作系统中使用着当前的 BSD 组件。最近,2024 年 6 月的提交由 Klara 公司提交,该公司代表多个客户(如 NetApp)向 FreeBSD 项目提交代码,这表明 FreeBSD 代码的持续集成和使用,证明了尽管苹果的开发过程封闭,BSD 代码(尤其是 FreeBSD)仍然是其操作系统的重要组成部分。
苹果在其产品中使用 BSD 对消费电子行业和创意内容行业产生了重大影响。BSD 的稳健性、安全性和性能使得苹果设备对消费者和专业人士极具吸引力。电影、音乐制作、图形设计等创意领域的行业尤其青睐苹果产品,因为它们可靠且功能强大。
BSD 的先进内存管理、进程调度和高性能网络能力确保了苹果的桌面和笔记本电脑为高要求的应用提供所需的性能。这使得 macOS 成为视频编辑、音乐制作和图形设计的优秀选择,在这些领域,稳定性和性能至关重要。
虽然苹果集成 BSD 对其成功起到了关键作用,但 BSD 的特性也使其成为其他各行各业供应商的首选。例如,NetApp、Netflix、Juniper(均为 FreeBSD 用户)等公司,利用 BSD 的先进功能应用于不同的领域:
安全性: BSD 强大的网络功能和安全措施使其在安全通信和数据保护领域尤为适用。
互联网流量管理: BSD 可靠的 TCP/IP 栈确保了高数据量的有效处理,使其在互联网流量管理中大有作为。
嵌入式系统: BSD 的先进内存管理和进程调度提高了嵌入式系统的效率和可靠性。
存储解决方案: NetApp 等公司利用 BSD 提供强大而高效的存储解决方案。
通过认识到 BSD 的广泛应用,我们可以更好地理解 BSD 对苹果产品以及广泛行业的影响,彰显了这一开源操作系统的多样性和稳健性。
苹果发布了多款运行 macOS、iOS、iPadOS、watchOS、tvOS 和 visionOS 的产品。因此,全球许多设备中都包含 BSD 代码。这些设备的出货量和运行数量,包括嵌入式设备、桌面/笔记本电脑,甚至苹果公司数据中心内的服务器计算机,可能与运行 Linux 的设备和系统数量相当,甚至更多。这强有力地证明了 BSD 在苹果生态系统中的广泛采用与影响。
苹果的设备遍布各行各业,满足不同消费者群体的需求。这种广泛的市场覆盖展示了 BSD 对苹果操作系统成功和可靠性的贡献。来自 BSD 的无缝用户体验、强大性能和安全性使得苹果产品成为全球数百万用户的首选。
苹果在开发其操作系统(包括 macOS、iOS、iPadOS、watchOS、visionOS 和 tvOS)时,极度依赖 BSD 代码。通过集成 BSD 组件,苹果为创新、稳定性和性能奠定了坚实的基础。尽管苹果系统中 BSD 代码的具体使用程度不透明,但显然,BSD 在苹果产品的设计和功能中起到了重要作用。
展望未来,苹果可能会继续利用 BSD 的优势,并为开源社区作出贡献。BSD 和苹果操作系统的不断演进,暗示了开源合作在技术进步中的重要性。认识到 BSD 在苹果成功中的重要性,有助于我们更好地理解开源贡献在塑造我们日常使用技术中之价值。
参考文献与进一步阅读:
Jason Perlow 是一位技术专家,拥有超过二十年的经验,曾在财富 500 强公司中整合大型异构多供应商计算环境。他曾担任 Linux 基金会的前编辑总监。目前,他在佛罗里达州科勒尔斯普林斯经营着自己的技术媒体咨询公司——Argonaut Media Communications LLC。
上次更新于 2022-12-26 发布于 2022-12-23
在之前发布的“尝试破坏 ZFS 池”的文章中,我们发现 ZFS 能够正确检测到磁盘上的非法数据。
能够检测到非法数据要比读取无法检测到非法数据的文件系统并导致错误操作要好得多。但是如果能够检测到非法数据,那么是否无法恢复它呢?这种想法也是很自然的。
如果配置冗余池,则即使存在非法数据,也可以获得正确的数据。具体来说,使用镜像、RAID-Z、RAID-Z2 等池。
在这里,将尝试使用镜像配置的 ZFS 池进行类似于破坏 ZFS 池的实验。
在 2022-12-26 进行 scrub 后,补充了磁盘状态。
为实验准备两台 USB 连接的硬盘,分别创建一个 4GB 的分区,并准备一个镜像配置的 ZFS 池。
硬盘为/dev/da1,/dev/da2,在 GPT 下创建分区,并分别创建标记为 tt1 和 tt2 的分区。
这样,两个 HDD 上的每一个都创建了一个用于镜像的分区。
将这两个分区组合起来创建一个 ZFS 镜像池。当然,就像上次实验一样,不会进行 ZFS 压缩。
如下所示,已经完成了镜像配置的 ZFS 池。
现在使用 dd 命令以零数据填充文件系统,就像上次的实验一样。
然后强行写入垃圾数据,故意制造 ZFS 错误。这是为了验证镜像冗余和 ZFS 修复功能,因此仅在 da1 侧写入垃圾数据。
通常从镜像配置的磁盘读取时,为了负载平衡和加速,会交替访问两个磁盘。在 ZFS 镜像配置下也会有类似的行为。因此,与上次一样破坏一个块是无法访问到该块的正常驱动器侧的,而是会访问到另一个正常的驱动器侧。因此,这次我们将写入约数十 MB 的数据,更大的区域数据将会引起错误。正好内核接近 30MB,我们将写入它并试图破坏它。
为了确认是否发生错误,仅使用 da1 一侧进行导入。由于这是 USB 硬盘,因此物理上拔掉 da2 会更容易。
无法访问 da2 侧的 gpt/tt2。将继续导入 ztest。
只有一个驱动器,但/ztest/dummy 确实存在。那么让我们实际读取它。为了使数据内容可见,我们将使用 hd 命令进行读取。
无法读取文件,发生了错误。
尝试重新配置为镜像并进行相同操作。
在这里连接已拆下的 DA2 端的 USB HDD。
GPT / TT2 端目前处于在线状态。现在将导入 ztest。
导入成功,现在让我们像刚才一样读取/ztest/dummy。
能够正常读取,并确认所有内容都为 0。检查 ztest 的状态后,似乎没有问题。
因为 ZFS 可能存在无法读取的部分,所以执行 scrub 以确认完整性。
等待 scrub 完成后,再查看状态。
可以看到 da1 侧的 tt1 出现了大量的校验和错误。
最后再次尝试读取数据。为了排除操作系统磁盘缓存的影响,先导出再导入后再执行。
尽管发生了错误,但由于镜像配置的帮助,成功读取了正确的数据。
文章发布后,我们收到了一个问题:“通过 scrub,da1 侧是否被修复并可读取?”实际上,scrub 执行后显示 scan: scrub repaired ,因此我进行了确认。
尽管实验环境已被销毁,我会重新进行部分内容的省略,破坏 da1 侧数据并进行 scrub,然后尝试读取 da1 侧数据。
从创建 ZFS 镜像池到破坏 da1 侧数据,执行 scrub,然后将池导出。
由于导出成功,我将物理地移除 da2 端口,尝试导入并读取 da1 端口。
我成功无误地读取了被破坏的 da1 端口的全部数据。也就是说,通过 Scrub 写回并修复了数据。而且实际导入后检查 status,CKSUM 的值也是 0(截屏失败…)。
再次尝试,将 da2 连接到导出的 ztest 并进行导入。
这样错误已被清除。
通过在 ZFS 中将磁盘配置为镜像或 RAID-Z,我们确认可以避免部分数据错误。此外,通过执行 scrub 可以修复数据,我们也发现修复后的数据可以恢复到原始状态。
无论是 ZFS 还是其他卷管理器或 RAID 系统,正确地配置镜像或 RAID 可帮助规避部分数据错误。修复能力可能取决于具体实现。
发布于 2024 年 01 月 07 日
当我试图创建ports时,我参考了模板和手册进行工作。在这个过程中,我遇到了一些不符合模式的情况,或者一些特殊行为的情况。我不知道如何跟踪这些情况,如何巧妙地处理它们,这让我感到很困惑。
例如,如果要从ports进行安装( make install )的话,通常会按照以下顺序进行。
另外,通过将 pre- 和 post- (以及 pre-fetch 和 post-patch 等)作为每个目标的前缀,可以在所需执行的目标前后注入希望执行的操作。此外,通过指定(覆盖) do- 前缀,甚至可以控制 ports 的默认行为。这些顺序和控制如下所示。
实际上,对于每个 ports ,有各种情况,例如希望禁用该目标的情况( NO_BUILD / NO_INSTALL / NO_TEST ,每个 make build , make install , make test 都被禁用),或者明确希望启用目标的情况( HAS_CONFIGURE / GNU_CONFIGURE ,均启用 make configure )。情况千差万别。
实际上,还有更多细节的地方,发生了各种各样的挂钩。要完全列出它们太困难了,因此在调查要点中也要做笔记。
如前所述,众所周知的目标是
all
fetch
extract
patch
configure
build
install 可能会发生这种情况。对此
config
/showconfig
/rmconfig
package
/repackage
test
clean
deinstall
/reinstall
makesum / makepatch 等,将添加一些要了解的目标。
在上述目标中,在ports构建中执行的一系列目标通过 _TARGETS_STAGES 变量进行定义。当然,这是在 bsd.port.mk 变量中定义的变量,不希望被覆盖。通过在适当的ports目录下运行 make -V_TARGETS_STAGES ,可以了解其中包含 SANITY PKG FETCH EXTRACT PATCH CONFIGURE BUILD INSTALL TEST PACKAGE STAGE 的内容。
根据上述变量的内容,在每个阶段都使用 _ステージ名_SEQ 变量详细设置顺序,并使用 _ステージ名_DEP 定义依赖关系。特别是以 _SEQ 结尾的变量被定义为 優先順位:ターゲット ,即使稍后添加也会被控制以顺序执行。
例如,对于 Go 语言应用程序,将执行特定于 Go 的 go mod download 检索。
如果在非常特殊的时机想要插入,请根据这个流程进行必要的准备。
当 ports 的情况下,为实现各种简化表示,表面上变得相对简单。 但是,结果是实现变得非常复杂。 对于前面的目标阶段,可能可以大略理解,但要调查实际发生了什么错误是非常困难的。 这就是 make 命令的调试选项( -dX / X 是另外的功能选项)的出现。
特别是 -dl 选项会显示在 Makefile 中包含 bsd.port.mk 等的命令执行,而它们一直隐藏在 @ 中。
或者也许是 make -de 吧。 这会仅显示执行失败的命令。 如果构建失败,想知道执行了哪些命令导致失败,首先检查 make -de ,然后在 make -dl 中查看整个流程是发生了什么,以便更容易地掌握问题。
再次 make -dx 的情况下,调用的 shell 命令将使用 -x 选项调用,因此在 shell 脚本中执行的内容将显示出来。当然,每次命令调用时... 所以有时候可能无法区分 make -dl 。
A. Maven 或者 Gradle 有问题。这些家伙像 Go 语言一样频繁预取,就算能容许这一点,但它们没有很好地缓存,所以我在疯狂地调查该怎么办。
A. 详细内容请查看网页!
最后更新于 2023-01-27 发布于 2022-12-18
我想在 Bhyve 的 Windows 宾客中使用主机设备,因此尝试设置 PCI 直通。我使用 vm-bhyve 作为管理软件,基于这一前提,我将进行以下说明。关于 vm-bhyve,您可以在搜索时找到相当多的解释,请参考那些解释。
这些硬件是我去年购买的,就是这篇文章中提到的硬件。https://qiita.com/yshdsnd/items/e8ba8d417851ae56f2fc 但是,内存已扩展到 128GB。我正在使用 FreeBSD 13.1-STABLE。
PCI passthrough 需要使用 VT-d 功能。由于通常情况下默认是禁用的,所以请进入 UEFI 菜单启用 VT-d。
虽然本次不使用,但同时也启用了 SR-IOV。
首先查找要使用的设备 ID。 尽管可以使用 pciconf,但 vm-bhyve 的 vm passthru 命令更简单。
→ 我想在 Windows 上使用最后的这个 NIC(Killer E3000 2.5GbE 控制器)和 xhci1 设备。
然后在/boot/loader.conf 中写下要作为传递设备保留的设备。
/boot/loader.conf:
pptdevs 现在会记录刚才在 vm passthru 中显示的 ID。此外,必须在此处明确加载 vmm 模块。否则,xhci 驱动程序将首先识别设备,导致设备无法被预留为透传设备。如果只想使用没有 FreeBSD 驱动程序的 Killer E3000 2.5GbE Controller,则无需明确编写 vmm 模块。它将在启动 bhyve 时自动加载。
编辑 loader.conf 后,重新启动操作系统后再次运行 vm passthru。
指定的设备已被注册为 ppt0、ppt1 并作为透传设备。
在 vm-bhyve 的设定文件中注册透传设备。因为已经创建了名为 Windows 的客人,所以使用 vm config windows 来编辑设定文件。
以 "passthruX="BUS/SLOT/FUNC"" 的形式进行记录。只需直接记录 vm passthru 显示的内容即可。 虽然与透传无关,但最近的-STABLE 版本增加了通过 VNC 连接时指定键盘映射的选项(-K),因此即使通过日本键盘使用,也不会出现无法正确输入符号的情况。我已将该选项指定为 bhyve_options。
到这一步只需启动即可。
在 Windows 设备管理器中确认是否已添加。如有需要,请安装驱动程序。
如果一切正常识别就是这样。ASMedia USB 3.1 eXtensible Host Controller 是透传设备,其下的 Intel xhci 控制器是 Bhyve 的虚拟设备。再往下的 Killer E3100G 也是透传设备。
在 Windows 端安装驱动并重启后,bhyve 进程异常终止。无论启动多少次都不行。查看日志显示,以 status 4 结束。
在日志中如下所示。
从配置文件中删除 passthru 后,可以正常启动。此外,重新启动主机然后启动可以正常运行。然而,如果重新启动来宾,则无法再次启动。
我认为可能有某种问题导致无法重新初始化 passthrough 设备,无法解决。每次重新启动来宾都需要重启主机,来宾重启没有意义,让我很困惑...如果有人知道解决方案,请告诉我。
*添加于2023年1月27日
由于 13-STABLE 源代码树中 bhyve 命令和内核的 vmm 相关部分有重大更改,因此我怀疑并尝试更新到最新的 13-STABLE 后,成功地使客户机可以重新启动。现在可以放心地充分使用了。
最后更新于 2023-12-02 发布于 2023-12-02
介绍了一个名为 Got 的由OpenBSD项目衍生出来的 Git 替代品。虽然它是一个 git 命令的替代品,但对于那些对 git 命令的使用没有疑问,并且对其许可证没有疑问的人来说,这是一个完全不必要的工具。由于开发者是开发者,因此其用途非常独特。
据说它的目标是支持 Git 的裸仓库兼容^ 1^。对于裸仓库的操作是兼容的。但是在所谓的工作目录(包括索引)级别上不兼容。因此,需要根据工作流程切换命令。
既然开始写一个泛论的介绍,最近的 FreeBSD 中删除了 portsnap 命令,看到使用 Git 的建议^ 2^,对于那些希望使用 portsnap 而不是 git 的人来说,可能有点不情愿……
由于 Got 专注于实现 OpenBSD 开发的工作流程,因此其代码量非常少,几乎没有依赖。它被宣称为轻量级、紧凑且不会造成头痛的工具。然而,关于其轻便性能的评价,我就不发表评论了。另外,由于要求独特的使用体验,我认为在需要严格使用 Git 的情况下最好不要使用它。
以下用例将描述目标作为 portsnap 的替代。
这周围也没有变化。由于没有依赖项,因此不会安装其他软件包。
通过 GOT 的版本验证为 0.93 。由于版本升级,此处记录的内容可能不再适用。
got clone 和 git clone 之间的区别如下。
仅克隆裸库(相当于 git clone --bare )
无法指定来源(裸仓库指定来源没有意义?)
可以指定分支,默认好像是单分支
但是好像不能进行浅克隆
存在镜像模式(无法向克隆的存储库提交更改的模式)
支持的模式较少 ※ 详见下文
非常慢(在多线程下不执行解析差异) 详见下文
与上述命令相对应的是 got 命令,具体如下。首先需要展开裸存储库的区域。由于这个过程非常耗时(后文将介绍),如果有余地的话,可能最好直接使用 git 命令。
git://
git+ssh:// (或 ssh:// )
git+http:// (或 http:// )※错误(策略上不打算支持)
https:// ※未实装错误(待办事项)
ftp:// ※那是什么?(确认存在与否)
ftps:// ※那是什么?(确认存在与否)
执行环境大约 5 分 37 秒与 14 分 1 秒的差异,有 2.5 倍的差距。
另外,Git 的 CPU 使用率较高,表明处理效率偏向于 CPU 带宽(由多线程处理产生的效果)。
相反地,GOT 具有較高的系統使用率,可以看出瓶頸往往偏向 I/O 帶寬。
※单分支: git clone --single-branch 或 got clone ※多分支: git clone 或 got clone -a
一応通过选项指定确认了容量的变化。此外, git 和 got 之间的差异很大,尽管为什么会出现这种差异尚不明确。可能是某种开销导致的……。
对上述命令的执行相当于下面的 got 命令。
本案例中的大致用法如下。有关在开发流程中可能需要的用法,请参阅命令对应表以及其他参考文献。
这是一个基于 ncurses 的日志查看器。它可以显示一行日志,同时在选择该日志(按下回车键)时,会显示详细日志和修改内容,非常实用。据说类似于 Git 的第三方工具中的 tig 命令。
在 gotadmin 和 got 命令应用于存储库和工作树时有所不同。具体而言,安全使用的子命令大约是 info 。根据存储库或工作树的状态,显示内容会有所变化。
在 git clone --bare 目录中运行 gotadmin info 并比较,显示增加了 remote 行。查看存储库下的文件时,发现不是 remote "origin" 文件中的 config ,而是 got.conf 中的 remote "origin" 设置。实际上,创建了 got.conf 文件后,显示了 remote 行。
另外,如果在工作树上运行 gotadmin info ,将显示存储库的状态。此外, got info 的执行结果将提供有关工作树的信息。
A. 可能是因为它不依赖于 curl 。在普通的 HTTP 通信实现中,可能会遇到无法进行并行处理的问题……这只是我的猜测。如果使用 ssh:// ,那里到处都安装了 ssh 命令,感觉很安心【需要出典】。
A. 未调查。可能情况与 Git 类似。
A. 我已验证。 got clone 可成功,但 got checkout 将失败。
即是说实际上是个裸仓库的目录! 做完 git clone 后接着做 gotadmin info 就会得到惊人的结果。
答:处理 .gitignore 文件时出现了一个错误,这是个 bug。按照正常情况 .gitignore 文件指定的目录或文件等不会显示。轻轻地调查了一下,应该并不是没有处理 .gitignore 文件。所以这就是 bug 所在。
A.没有。希望有这个功能。请有心人实现。
A.好好使用并报告。在当前时点可能无法评价基础系统的质量是否足够。至少在我所接触的范围内,似乎还未达到那种质量水平。
从 Game of Trees Goals ↩
Ports Collection 的安装 ↩
最后更新于 2023-12-28 发布于 2023-12-25
通过改进第三方工具安装机制(ports 和 packages),FreeBSD 中的二进制包使用已经得到改善。特别是引入了 flavors 功能,尽管安装的内容是相同的,但由于依赖的包版本变化,可能会导致组合变得复杂的情况,现在可以简单地准备包。只要针对所有被依赖的包的版本都有适合的包... 这里总结了经常使用的命令,以享受二进制包带来的好处。然而,细致到每个选项会很麻烦,所以只明确列出常用选项。另外,大多数命令都会询问是否执行。因此,几乎所有命令都有一个常见的 -y 选项,但在这方面的说明将省略。熟悉后再使用。此外,我没有写太多执行示例。如果不清楚如何使用等问题,请告诉我。我会补充详细说明。
在这里,我们为命令名称(子命令名称)添加 [R] 和 [L] 符号。具体如下。
[R] :引用外部包/存储库中的信息。
[L] :查看已安装或存在于本地文件系统中的软件包的信息。
[RL] :根据环境表现出与 [R] 和 [L] 相适应的行为。
用于收集软件包元数据的命令。首先需要收集元数据,这在某种程度上类似于 yum check-update 。 值得一提的是,并非总是需要运行的命令,因为有一些命令会自动更新元数据后再执行,如果这不是问题的话,就无需运行。具体来说,以下子命令将根据最新的元数据执行。
pkg install
pkg upgrade
pkg version
pkg search
pkg fetch
pkg rquery
进行软件包安装。与前述 pkg add 的区别在于,使用关键词进行特定及通过网络获取软件包安装。
执行指定软件包文件的安装。与前述 pkg install 不同之处在于,明确指定软件包文件名进行安装。
删除指定的软件包。
将无情且毫不留情地删除所有( -a )软件包。直观来看,只需使用 -ay 选项就足够了,但由于依赖关系的原因,可能需要使用 -f 选项来处理无法删除的情况。如果打算全部删除,就毫不犹豫地全部指定吧。
将进行软件包版本比较。简单来说,由于它有些古怪,我们将分解用例并进行解释。
将与名为 /usr/ports/INDEX-OSメジャーバージョン 的元文件进行比较。如果该文件不存在,则将参考每个ports的源(目录)(相当于指定 -P 选项)。如果该目录不存在,则将参考远程存储库(相当于指定 -R 选项)。
在前两种情况下,相当于 [L] ,在后一种情况下相当于 [R] 。
通常使用 -L 选项进行比较已安装的软件包,并显示等于「不存在」的内容。惯用法上,只指定 = 就足够了。除了参考 = 之外,还可以指定 > 、 < 、 ? 和 ! ,但所有这些字符都需要用引号括起来。
各个字符的含义如下,对于 -L 选项,意味着除了该字符以外的所有内容。反过来,如果需要该字符的含义,则使用 -l 选项。
:如果发布了比当前安装的更新版本
= :如果发布了与当前安装的相同版本
< :如果发布了比当前安装的更旧版本,通常在更新元数据不完整、新 ports 测试安装等情况下发生
? : 由于当前安装的软件包的源已不存在(已删除或重命名),无法进行版本比较
! : 无法与当前安装的版本进行版本比较
指定任意版本号(即普通字符串)进行比较,并返回结果。这不仅仅是针对软件包的功能,而是为了测试多种版本号而设计的功能。与其他子命令相比,这是一种不同的功能。特别是在替换版本指定如α版、β版时,用于尝试和错误解决不确定哪个更大(最新)、哪个更小(最旧)的情况。有关版本比较规则,请参阅 FreeBSD Porter's Handbook - 5.2.2. Versions, DISTVERSION or PORTVERSION。
更新指定 更新指定的软件。如果没有特别指定,将会检查并更新所有包。
指定されたパッケージ情報を表示します。指定されない場合、全てのパッケージの概要を一覧表示します。
显示指定的包信息。如果没有指定,将列出所有包的概览。
显示安装了指定软件包的路径列表。
显示与指定软件包相关的注意事项。可能包含设置提示信息。
锁定指定软件包,以防止其更新。此锁定的影响优于防止软件包本身的更改。
锁定的软件包阻止重新安装、升级、降级或删除
如果依赖于锁定的软件包的其他软件包依赖于锁定的软件包的另一个版本,则阻止该软件包的升级或降级
阻止依赖于锁定软件包的软件包的删除、升级或降级
对于与上述间接有依赖关系的情况,也将被阻止
解除指定软件包的锁定。
不区分大小写,通过正则表达式搜索软件包名称。您可以使用 -e 选项进行严格搜索,但这将包括版本号搜索,因此并不是很用户友好。 -g 选项允许进行 shell glob(通过 ? 或 * 进行模糊搜索)。但是,由于包含版本号搜索,实际上最后需要 * 。
显示所属于指定文件、目录等的软件包名称。您可以使用 -o 选项来显示原始位置。
报告已安装软件包与脆弱性信息的比对结果。由于需要从外部获取脆弱性信息,因此这有些像 [R] ,但如果您没有紧急需要立即更新信息,不必指定 -F 选项来获取脆弱性信息。这通常是因为每天有一个脆弱性信息自动获取脚本在取得脆弱性信息。
检查指定的软件包是否被篡改,以确保一致性。通常与 -a 选项一起使用。
检查指定软件包的依赖项是否损坏,以确保一致性。通常与 -a 选项一起使用。
删除孤立的软件包。所谓“孤立”是指由于其他软件包的依赖关系而安装的软件包,随后该软件包被删除,或者(通过更新等方式)不再被依赖,不再被使用。
可能有一些情况下,实际上会使用到“孤立”的软件包,但这并不能从软件包依赖信息中读取出来,因此在使用时需要格外注意。例如通常使用 bash ,但由于某些依赖关系安装了 bash ,因此直接使用它可能需要注意。可以明确安装 bash ,或者通过后续的技巧来解决。
对于 ports 系统而言,在构建时需要的主要软件包(如编译器等)可能会被删除。
显示软件包更新时需要注意的步骤(手动更新指示)。具体来说,通过阅读 /usr/ports/UPDATING 并与已安装的(或指定的)软件包信息匹配,以显示可能需要的部分。这个文件主要面向人类阅读,因此存在相当的启发式设计,严密性可能有所欠缺。同时,需要这个文件的情况下,特意下载它也有些微妙。
更改指定软件包的元数据(数据库)。通常情况下,这是基于 pkg updating 信息执行的操作,因此不应该由用户主动操作。
使用 -A 选项并指定以下值,以更改指定软件包的元数据。此更改将影响 pkg autoremove 的结果。
0 :将指定的软件包排除在 pkg autoremove 的范围之外。
1 : 指定的软件包将定制为 pkg autoremove 的目标。
对于对此项感兴趣的人,可能会关心 pkg autoremove 的工作原理,但由于此标志必须有效且不受其他软件包依赖的影响,因此仅靠此标志无法使 pkg autoremove 成为目标。
同样,直接由 pkg install 或 pkg add 指定的内容将在安装时设置为无效此标志。此标志仅对通过依赖关系安装的软件包有效。
通过 -o 旧オリジン:新オリジン 的形式,修改依赖于旧原始包的所有软件包的元数据中的原始信息。
通过 -n 旧パッケージ名:新パッケージ名 的形式,修改软件包名。不过,由于软件包名中是否包含版本号存在争议,因此这存在一些不确定性。
在 /usr/local/etc/pkg.conf 中显示定义的别名信息。
以指定的格式显示软件包的元信息。如果未指定软件包名称,则将显示所有软件包的信息。可以使用以下格式字符串:
%n :软件包的名称
%v : 软件包版本
%o : 软件包来源
%p : 软件包前缀
%m :软件包的维护者(电子邮件)
%c :软件包的注释
%e :软件包的描述
%w : 软件包的网站
%l : 软件包的许可逻辑(无、单一、和、或)
%sb 或 %sh : 软件包的大小(以字节为单位或易读的单位)
%a : 软件包自动安装标志
%Q : 软件包架构支持候选
%q : 软件包架构(操作系统、版本、CPU 架构)
%k : 软件包的锁定标志
%M : 软件包的消息
%t : 软件包安装时的时间戳
%R :软件包安装来源存储库
%X :软件包检查和校验和
%?C : C (具体是 d / r / C / F / O / D / L / U / G / B / b / A )中指定情况下的标志(说明略)
%#C
: C
(具体的には d
/r
/C
/F
/O
/D
/L
/U
/G
/B
/b
/A
・説明は省略)として指定された内容の数
%dC : 定制的依赖包列表,通过 C (具体的には n / o / v )获取 N 名称、 O 来源、 V 版本信息
%rC : 包的反向依赖包列表,通过 C (具体的には n / o / v )获取 N 名称、 O 来源、 V 版本信息
%C : 软件包类别列表
%FC : 软件包文件列表, C (具体是 p / s )通过 P ath 或 S um 获取
%D : 软件包目录列表
%OC : 获取软件包选项列表,通过 C (具体地说,通过 k / v / d / D )获得 k ey、 v alue、 d efault value、 D escrition
%L : 获得软件包许可证列表
%U : 获得软件包用户列表
%G : 软件包组列表
%B : 软件包程序使用的共享库列表
%b : 软件包提供的共享库列表
%AC :包的注释标签列表,通过 C (具体地说是 t / v )获取 t ag、 v alue
缩小到与指定查询匹配的包。如果心情好的话,会详细写的。
对远程元数据的 pkg query 进行操作。这里暂时不详细说明。
为软件包添加、修改或删除“注释信息标签”的命令。您可以使用 pkg info -A 查看显示效果。没有特别说明注释标签的含义和使用方法。
直接访问管理软件包元数据的数据库(即 SQLite3)的命令。大概只有 pkg shell VACUUM 这么一点点用途。如果想要利用查询, pkg query 就足够像找零钱一样的工具。
以下别名参考自动安装标志,返回自动安装标志为 0 的明确指定安装的命令。
pkg prime-list
[L]
pkg prime-origins
[L]
pkg noauto
[L]
显示依赖树中叶子节点的软件包。不包含在 pkg noauto 中但属于 pkg autoremove 的对象。
指定的软件包安装路径列表。
仅仅是可供任选调用的别名。甚至可以用类似 pkg vanish 这种充满中二病氛围的 神圣而强大的词汇来定义子命令,也是毫无问题的。系统会默认定义一些安全的值。
pkg remove
= pkg delete
这些命令大多用于内部,或者被其他工具调用(例如从其他软件包管理系统到 FreeBSD pkg 系统的注册等),即使不了解也没有问题。
pkg stats :显示统计信息。
pkg clean :清除软件包缓存。
pkg config :引用设置为 /usr/local/etc/pkg.conf 的内容(不区分大小写)。
pkg create :创建软件包...尽管在ports构建时经常使用,但单独使用的情况并不常见。
pkg fetch : 获取软件包。 pkg install = pkg fetch + pkg add 的关系。
pkg register : 将软件包注册到本地数据库。这完全是内部使用的东西。
pkg repo : 创建软件包存储库目录。在此处,请参考 pkg-repository(5) 创建存储库。
pkg shlib :显示提供的共享库以及依赖于该库的其他软件包。这主要用于安全诊断。
pkg ssh :这是为完全内部使用而不是为人类使用的命令,因此略过。
pkg triggers :延迟触发的执行。由于涉及内部使用,因此省略了谁延迟了这个问题?
起源是 TODO。想写的话会写。
A.是的。pkg 命令是一个软件包。
A.这只是一个安装 pkg 软件包的引导。然后调用 pkg 软件包( /usr/local/bin/pkg-static )。
答:由于旧软件包系统给我们带来了许多麻烦,因此演变成了这种形式。如果 pkg 命令没有进步,我们将一事无成(即使发布新版本也会被迫使用旧功能)。
它们完全相同。pkg-static 在执行一些微妙操作,比如删除自身时才会需要。通常情况下,使用 pkg 命令即可。在某些内部处理中,为了安全起见才会使用 pkg-static。
A.自己也对此感兴趣,正在进行调查。
A.让我们尽力而为吧。尽管我们不谈什么“让我们 SQL 吧!”,但确实如你所说,pkg query 没有输出顺序或汇总功能。或许可以考虑通过管道连接其他工具(例如 sort、awk、grep 等)来解决问题。
A.常用的我记得。我自己以为记得的可能就数个,但实际上大约有十几个左右,所以还是得依赖记忆写下来,觉得值得去记忆。有些细微的差别可能有点微妙,那就得仔细查阅手册了。总之,平常不使用的东西就放在记忆的深处也没问题。
A.很遗憾,请记住,这是另一个包系统, update 和 upgrade 可能是相同的,但很不幸,消息在这里中断了
这是非常古老的事情(在 10.0-RELEASE 之前),请忽略这部分内容。它只有历史价值,对设置和运营毫无价值。
列出了这些我都知道的东西后的绝望感。日常使用是什么?但如果不列出这些的话……地狱感。并且在读手册时发现了一个 bug(pkg-query(8):重复的%#b)。orz
实现版本 | CPU 类型(别名) | CPU 代码名(架构名) | 备注 |
---|---|---|---|
命令 | 单分支※ | 多分支※ |
---|
ada0p1
FreeBSD 引导或者 EFI
引导区域
ada0p2
免费 bsd-ufs^ 3^
自由的 BSD 領域
ada0p3
免费 bsd 交换
交換空間
13.0
tigerlake
Intel Tiger Lake
13.0
cooperlake
Intel Cooper Lake
13.0
cascadelake
Intel Cascade Lake
11.3 / 12.1
icelake-server
Intel Ice Lake-SP
11.3 / 12.1
icelake-client
Intel Ice Lake
11.2 / 12.1
cannonlake
Intel Cannon Lake
11.3 / 12.1
skylake-avx512
(skx
)
Intel Skylake]
11.2
skylake-avx512
Intel Skylake]
11.0
skylake
Intel Skylake
11.0
broadwell
Intel Broadwell
11.0
haswell
(core-avx2
)
Intel Haswell
11.0
ivybridge
(core-avx-i
)
Intel IvyBridge
11.0
sandybridge
(corei7-avx
)
Intel SandyBridge
10.0
core-avx-i
Intel IvyBridge
10.0
corei7-avx
Intel SandyBridge
13.0
znver2
AMD Zen2
11.2
znver1
AMD Zen
11.0
bdver4
AMD Excavator
10.1
bdver3
AMD Steamroller
10.0
bdver2
AMD Piledriver
10.0
bdver1
AMD Bulldozer
13.0
btver2
AMD Jaguar
10.0
btver1
AMD Bobcat
11.3 / 12.1
tremont
Intel Tremont
11.3 / 12.1
goldmont-plus
Intel Goldmont+
11.2
goldmont
Intel Goldmont
11.0
silvermont
(slm
)
Intel Silvermont
10.1
slm
Intel Silvermont
11.0
bonnell
(atom
)
Intel Bonnell
10.0
atom
Intel Bonnell
11.2 / 12.1
knm
Intel Knights Mill
11.0
knl
Intel Knights Landing
10.0
penryn
Intel Penryn
10.0
core2
Intel Core2
10.0
westmere
Intel Westmere
10.0
nehalem
(corei7
)
Intel Nehalem
10.0
yonah
Intel Yonah
10.0
prescott
(core
)
Intel Prescot
10.0
nocona
(prescott
)
Intel Nocona
在 amd64 环境中,prescott
被视为nocona
。
10.0
pentium4
(p4
)
Intel Pentium 4
10.0
pentium4m
(p4m
)
Intel Pentium 4M
10.0
pentium3
(p3
)
Intel Pentium 3
10.0
pentium3m
(p3m
)
Intel Pentium 3M
10.0
pentium-m
(p-m
)
Intel Pentium M
10.0
pentium2
(p2
)
Intel Pentium 2
10.0
pentiumpro
(i686
)
Intel Pentium Pro
FreeBSD13/i386 最低配置
10.0
pentium-mmx
(i586/mmx
)
Intel Pentium MMX
10.0
pentium
(i586
)
Intel Pentium
10.0
i486
Intel i80486
10.0
i386
Intel i80386
10.0
opteron-sse3
AMD Opteron
10.0
athlon64-sse3
AMD Athlon64
10.0
k8-sse3
AMD K8
10.0
opteron
AMD Opteron
10.0
amdfam10
(barcelona
)
AMD K10
10.0
athlon64
AMD Athlon64
10.0
athlon-fx
AMD Athlon FX
10.0
athlon-mp
AMD Athlon MP
10.0
athlon-xp
AMD Athlon XP
10.0
athlon-4
AMD Athlon 4
10.0
x86-64
AMD Opteron
FreeBSD/amd64 最低配置
10.0
k8
AMD K8
11.0
athlon
(k7
)
AMD Athlon
10.0
athlon
AMD Athlon
10.0
athlon-tbird
AMD Athlon Thunderbird
10.0
k7
AMD K7
10.0
k6
AMD K6
10.0
k6-2
AMD K6-2
10.0
k6-3
AMD K6-3
10.0
geode
NSC Geode
10.0
k5
AMD K5
与 pentium
处理相同(不确定是不是别名)。
10.0
crusoe
Transmeta Crusoe
10.0
c7
VIA C7
与 c3-m
相同。
10.0
c3-2
VIA C3-2
10.0
c3
VIA C3
10.0
winchip2
Centaur WinChip 2
10.0
winchip2-c6
Centaur WinChip C6
组件
来源
XNU 内核
Mach/NeXTStep/OpenStep
网络栈
FreeBSD/BSD,以及额外的 NIKE 和 IOKIT
虚拟文件系统
FreeBSD/BSD
用户空间工具
FreeBSD/BSD
内存管理
Mach/NetBSD
进程模型
Mach IPC、Mach Security Trailers 和强制访问控制(MAC)机制
| 1,306,944KB | 1,326,872KB |
| 1,322,480KB | 1,350,344KB |
作者:Deb Goodkin
译者:Canvis-Me & ChatGPT
2023 年 10 月 4 日
基金会在 2023-2024 年的目标之一是提高 FreeBSD 的使用率和知名度。这是一个相当广泛而宏伟的目标,因此我们将其分解为一些我们计划针对的关键市场/受众群体。我们确定的一个群体是大学生。在他们教育生涯的早期介绍 FreeBSD 将有助于为他们在系统编程方面的工作做准备,并为未来的许多机会提供有市场价值的技能。此外,通过有更多人为 FreeBSD 做贡献,项目也会受益。
以下是我们正在制定的 FreeBSD 大学计划的简要概述,尽管它目前还在规划阶段。然而,我们有一位最近的实习生愿意与我们合作,并在本学期在他的大学介绍 FreeBSD。
首先,我们将确定 2-3 所大学,与其合作开发这个试点项目。我们已经确定了两所我们正在合作开展项目的大学,同时也在关注其他可能性。
项目的一些目标包括:
在几所大学内培养 FreeBSD 大使,以促进 FreeBSD 的意识和采用。
将 FreeBSD 纳入操作系统课程,确保学生了解这个可行的选择。
制定教育/培训材料,帮助学生学习如何使用 FreeBSD 并过渡为开发人员和贡献者。
改进新手接触 FreeBSD 的流程。这将包括入门文档、系统管理员和开发人员培训视频、改进桌面体验以及简化在裸机系统上的安装。
为学生与潜在雇主互动创造途径,以深入了解雇主在招募大学生时寻找的技能。
将该计划的可用性扩展到其他大学。
我们很高兴开始推动这个计划,并将随时向大家通报最新进展。如果您有兴趣在您的大学介绍 FreeBSD,请通过 deb@freebsdfoundation.org 与我联系,并告诉我您希望在该计划的初始阶段参与的方式。
原文:https://qiita.com/nanorkyo/items/db1374b5c821dfe5113c
最后更新于 2022-11-16 发布于 2021-12-03
虽然现在有点晚了,但这是关于缓存的话题。作为在构建时加快速度的工具而闻名,但调查后发现,只能找到旧信息。最近的 FreeBSD 中,指定方法已经改变,类似的信息也找不到,所以这次主要介绍这一点,解释其效果。
※传统设置方法已更改,现在可以极其简单地进行控制。
FreeBSD 13.0-RELEASE-p5
FreeBSD 12.2-RELEASE-p11
ccache 的安装过程本次不讨论(没有特殊步骤)。然而,为了调查磁盘使用量,请预先运行以下命令,以防止缓存失效的情况发生。简而言之,(仅构建 FreeBSD 时)使用默认容量(5GB)没有问题。
缓存容量扩展(5GB→32GB)
另外,“字节”的 SI 前缀基本上是以 103 为基础的,所以如果想要变为 210,就需要明确指定为 32Gi (即使这样,显示仍然无法更改)。另外,如果仅仅指定数字而不指定单位,将被解释为 G 。
/etc/src.conf
只使用 cache buildworld 的话,只需进行上述设置即可。现在不再需要将环境变量 CC 设置为 CC="ccache cc" (这很重要!)。
buildworld 或者 buildkernel 时,需要或者编译安装的组件的打开/关闭情况,请参阅 src.conf(5),里面列出了一切,但我还没有核对过(太多了…)。
从无缓存状态执行 make buildworld 。为了审查缓存命中率等信息,在 buildworld 结束后,获取统计信息(执行 ccache -s 命令)。
以下几乎所有文件都已经编译完毕。在这种情况下,由于缓存造成了额外开销,因此编译时间会比平常更长。另外有一些重新编译,但数量非常少,最多不超过 0.2%,可以忽略不计。
第一轮执行结果(从无缓存状态开始构建)
同时,有些结果并不可靠,因为实际的缓存使用量并没有反映在内。这部分内容将在后续提及。
收集上述数据后,再次进行了 buildworld 。获得了以下结果。正如后面所述,缓存命中率为 100%时的结果为“50.09%”。
第二次执行结果(从缓存状态下的构建)
运行 ccache -z ,然后再次执行 buildworld 。得到如下结果。第二轮执行时无法知道的“100% 命中”已被确认。因为在此时没有进行任何编译,所以 buildworld 的执行时间已经缩短。
清除统计信息后的第三轮执行结果(从缓存状态构建)
关于缓存大小不反映的问题,执行 ccache -c 可以将其反映到统计数据中。
清理后的统计信息处于正常化状态
正如您所看到的,即使是 5GB,也可以在最后一刻完成。
我从卡尔先生那里收到了在以下环境中进行 make buildkernel 测量的结果,我将其总结在表格中。
CPU: AMD Ryzen9 3900 (3.10GHz/4.30GHz)
内存:32GB
存储:WesternDigital SN550(NVMe 连接)・ZFS 操作
构建目标:FreeBSD 14-CURRENT
据说并没有消耗尽所有 CPU 资源。
CPU: Intel Pentium N4200(1.10GHz/2.50GHz・Apollo Lake/Goldmont 架构)
内存:16GB
存储:Transcend MTS400S(SATA 连接)・ZFS 操作
构建目标:12.2-RELEASE-p11
※均需指定 make -j5 buildworld
无论设置 -j 选项的并行度如何,当缓存达到 100% 时,都能显著减少构建时间(仅需数分钟即可完成构建)。
在几乎只包含 C 语言的 buildkernel 中,可以获得大约两倍的效果;而包含重型构建(如 LLVM)的 buildworld 中,可以获得约六倍的效果。
使用缓存会导致初始开销增加 14%,但作为获取第二次及以后效果的代价而言,这可以忽略不计。
在需要稍作修改然后构建整个项目(例如开发等)的情况下,效果非常显著。
另外,这次就纯粹重新构建而言,即使是 make clean 中对象已经消失的情况,也表明了不需要 100%重新编译。
最近的 FreeBSD 开发环境(LLVM)构建花费的时间变得非常长,但这可以极大地缩短(无论是时间还是内存上)。
尽管如此,在第一次编译时仍然需要大量内存,因此在内存较少的环境下构建仍然是一件困难的事情。
缓存本身很简单,或许正因为如此,不怎么看到有人记载过这一点,因此我简单总结了一下。
※ n 可指定的后缀包括 " k "、" M "、" G "、" T "、" Ki "、" Mi "、" Gi "、" Ti "。
答:/etc/make.conf 会被必然地读取,因此实际上相当于在 /etc/src.conf 中设置。然而,如果设置在非 FreeBSD 构建中可能会产生不确定的行为。如果不在意这一点,设置也并无问题。为了与引用相同 make 命令的其他构建进行区分,请设置在 /etc/src.conf 中。
目前该文章已经过期,没有翻译的必要。仅做存档
https://qiita.com/nanorkyo/items/d33e1befd4eb9c004fcd
最后更新于 2023-06-12 发布于 2021-04-07
在 Windows 10 Pro 20H2 上安装 Hyper-V。在 Hyper-V 上安装 FreeBSD 13。
有关各种 FreeBSD 安装事项,请参考该部分,同时假定已完成了 Hyper-V 相关设置事项。
尤其是有关设置方式的部分将被省略。这次我把重点放在与物理环境和其他虚拟环境不同的方面。
由于这次设置没有考虑到目的和持久性,相当大一部分是“随意的”。请按需分配资源。
使用 FreeBSD 13( FreeBSD 13.0 )的 iso 进行镜像安装
Windows 10( Windows 10 Pro 20H2),安装了 Hyper-V
创建虚拟机时,根据 FreeBSD 兼容设备进行配置
虚拟机代际:第二代(支持 UEFI 环境和 64 位操作系统)
内存:随意分配并开启使用动态内存
网络配置:连接到 Default Switch
硬盘:随意分配虚拟硬盘
安装参数:从启动光盘/光盘安装操作系统,并指定要安装 ISO 镜像文件
对创建的虚拟机进行额外设置
安全性:禁用安全启动
处理器:随意更改虚拟处理器的数量
自动启动 & 自动停止:根据用途进行设置
为创建的虚拟机进行附加设置 :🆕: ※需要 CUI 设置和确认
串行控制台:命名管道设置
在硬件(虚拟机)上采用 UTC。由于没有自定义项,因此假设 CMOS 时钟时间设置为 UTC。
具体以下步骤确认。
没有 /etc/wall_cmos_clock 这个文件。如果有,则删除。
执行 sysctl machdep.wall_cmos_clock ,结果值为 0
。如果不为 0
,则置为 0
。
现在的安装程序不会执行该设置,因此建议,即使在物理环境下,也使用 UTC 时间。
在第二代虚拟机环境中,所谓的 PS/2 旧设备已经没有了。这意味着可以使用非标准键盘和鼠标设备驱动程序。这反而浪费时间去查找再禁用,不如将以下设置写入 /boot/loader.conf
以禁用它。
/boot/loader.conf
:
键盘输入由设备 hvkbd0
处理。遗憾的是,目前不支持鼠标(HID)的使用。截至 2023/04/01,已经集成到 13-STABLE,但未包含在 13.2-RELEASE 中(参见 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221074)。
对我个人来说,我关注的 hvkbd0 尚未集成到 kbdmux0 中,以及 kbd0 尚未完全封装等问题。虽然它在运行中没有问题...
存储设备(连接至 SCSI 控制器的 HDD)可以被引用为 dan (n≥0)。
网络接口(连接至网络适配器的 NIC)可以被引用为 hnn (n≥0)。
关于这一点没有特别说明,但 if_hn(4) 设备可能看起来很陌生,仅供参考。
再者, dan 处于虚拟化主机总线适配器( hv_storvsc(4) 驱动程序)之上,因此已 CAM 化。
临时支持标签队列,因此要充分利用(以下是在 ZFS 中的设置示例)。
在调整这些参数时,在执行 gstat 命令期间进行一些负载操作,监视 L(q) 值(队列数)、 r/s (读 IOPS)、 w/s (写 IOPS)。同时观察 ms/r (每读操作时间)、 ms/w (每写操作时间)以及整个系统的负载,以便在不影响主要性能的情况下进行调整。
在某些微妙的地方很难判断,因为指标会随着是 HDD 还是 SSD 而变化,所以不能一概而论。
Hyper-V 的规格书中也写道,执行 sysctl kern.geom.disk.dan.flags 后会显示 CANDELETE ,表明支持 TRIM/UNMAP。在此前提下进行设置。
所谓的 TPM 2.0。遗憾的是,目前还不支持。由于不支持安全启动,因此不涉及此类功能。
这里也嵌入了虚拟事件驱动程序,但选择了 LAPIC( kern.eventtimer.timer 设置)。 这不是什么大不了的事,但不清楚是否可以这样。 因此,不再深入研究。
计时器计数器实际上选择了 Hyper-V-TSC( kern.timecounter.hardware 的设置)。
就个人感觉而言,虚拟环境的计时器精度不佳,在 1/100 秒级别会出现抖动(波动)。始终存在大约±3%/秒的误差,最大可达±10%/秒。在物理环境中,精度约为 1/1000 秒级别,通常为±0.1%/秒以下,最大为±3%/秒左右。
根据规范,这是一个使用 NAT 封闭环境,可以使用 DHCP 的尽善尽美的环境。如果不考虑太复杂的事情,让我们在 /etc/rc.conf 写下以下设置来操作。
/etc/rc.conf
暂时不讨论 IP 地址的固定方式等。此外,从运行 Hyper-V 的机器(在笔记本电脑上验证)可以通过 SSH 命令连接,当然,还可以使用诸如 PuTTY 等终端软件连接到 FreeBSD(客户操作系统)。
内部到外部的连接没有问题,但外部(PC 外部)到内部的通信方法尚未验证。
在检查dmesg时注意到,主机的电源状态可以从虚拟机(客户机)中看到。在像 Azure 这样的虚拟化平台上运行时可能无关紧要,但在笔记本电脑上运行时,这可能是一个参考。例如,执行top命令时,在头部显示当前的充电状态( battery: 49% ・表示维护充电,正常显示)。此时,由于显示列数的限制,top命令需要在至少 91 列的终端仿真器上运行。
同样,可以使用sysctl命令检查电源状态。sysctl名称、值及其状态如下所示对应。
最近的硬件特征是,在连接电源时也可能会放电电池,因此需要注意。此外,在电池模式下,可以通过 hw.acpi.battery.time 获取剩余运行时间(单位:分钟)。
确实无法获取 CPU 运行频率和 CPU 温度。
在第二代 VM 中,无法在管理控制台上设置或引用串行,而是需要在以管理员权限启动的终端(PowerShell)上执行。要确认当前设置,请运行 Get-VMComPort -VMName "仮想マシン名" 以检查状态。
这时可以发现不会在任何地方输出 COM 控制台。
要进行设置,请决定一个合适的命名管道名称,并进行设置。我个人选择了类似 Hyper-V-仮想マシン名-ComPort-ポート番号 的命名规则。然后使用 Set-VMCOmPort 命令进行设置。
再次检查设置,可以看到已设置路径。
请注意,设置的命名管道只在虚拟机运行时可见,在停止后将不可见。
实际上,访问此命名管道的方法并不是很好找到合适的工具,这也是一个问题。
从这个结果可以看出,半虚拟化设备被放置在 acpi_syscontainer0 上。由于没有 PCI(PCIe)桥,因此 pciconf 命令不会显示任何内容。存在 UART,但正在调查如何使用它。如果完全无头运行,使用 UART 会非常方便。
译者:Canvis-Me & ChatGPT
2023 年 10 月 4 日
FreeBSD 项目始终对新用户和贡献者充满期待!参与其中的最简单方式是通过社区本身:邮件列表、社交媒体和本地聚会。这里充满了热衷于帮助新用户的 FreeBSD 用户、开发者和爱好者。它们是讨论 FreeBSD、认识社区成员以及询问有关操作系统的问题的绝佳场所。
想要回馈社区吗?新的贡献者可以帮助校对现有文档、提供全新的详细文档、推荐错误修复,并将新软件移植到 FreeBSD。无论您的专业知识如何,都有一个适合每个人的地方!
通过 FreeBSD 邮件列表建立联系!
FreeBSD-Questions 邮件列表是与更广泛的 FreeBSD 社区建立联系的绝佳起点,同时可能找到在使用 FreeBSD 时遇到的任何问题的答案。
FreeBSD-Current 邮件列表包含大量关于使用 FreeBSD Current 的讨论。
在社交媒体上找到 FreeBSD 社区!
加入 FreeBSD Discord。
在 IRC 频道上参与讨论。
在官方 FreeBSD 论坛上提问并讨论。
找到本地用户组和活动!
查找您最近的 FreeBSD 用户组。
在您所在地区查找即将举行的 FreeBSD/Unix 活动。
原文链接:
作者:Drew Gurkowski
译者:Canvis-Me & ChatGPT
2023 年 11 月 14 日
在上个月,我前往北卡罗来纳州的罗利参加了 2023 年的 All Things Open 大会。虽然基金会过去曾在展台设有工作人员,但这是我第一次亲自参加这个会议。我在会议前一天飞到了罗利,并在设置基金会展台之前有时间参观了这个城市。我结束了这一天,尝试了我的第一顿北卡罗来纳烤肉,真是让人满意!
会议的第一天早早开始,基金会的合作与研究总监 Greg Wallace 带着一台由 捐赠的 Ampere 2U 服务器亲自到场。不幸的是,我们在安装过程中遇到了问题,但即便如此,这台服务器还是吸引了许多与会者,讨论 Ampere 上的 FreeBSD 是一个很好的话题。
FreeBSD 展台最终吸引了相当多的参与者,我很兴奋能够与来自北卡罗来纳地区的 FreeBSD 社区成员以及许多当地渴望了解该项目的学生们见面。我在类似 ATO 这样的大会上最喜欢的部分是它们培养了一个非常多元化的开源社区。这使我们有机会与经验丰富的 FreeBSD 用户互动,他们乐于分享与 FreeBSD 历史相关的故事,以及寻求首次安装 FreeBSD 的新开发人员和用户。我们分发了大量的 FreeBSD 周边产品,我终于能够亲自见到一些我之前只在虚拟空间中互动过的社区成员的真实面孔。
我非常享受我的第一次 All Things Open,很高兴有机会与 FreeBSD 用户和更广泛的开源社区讨论有关 FreeBSD 的话题。我期待着 All Things Open 2024!
原文链接:
作者:Mark Johnston
译者:Canvis-Me & ChatGPT
2023 年 10 月 24 日
FreeBSD 基金会慷慨地资助了我前往葡萄牙科英布拉参加 EuroBSDCon 2023 的行程。与往常一样,会议包括为期两天的 FreeBSD 开发者峰会,然后是为期两天的正式会议。会议在科英布拉大学的几幢建筑中举行,这本身就值得一游:大学建筑壮丽宏伟,坐落在山上,可以俯瞰整个城市。每天早上爬上山有点辛苦,但非常值得。
由于技术问题,开发者峰会的第一天开始得有些晚,但这提供了与其他与会者聊天和了解的好机会。我与 Ruslan Bukin(br@)聊了一些关于他计划将一些软件移植到 Morello 的计划,Morello 是 ARM 的 CHERI 的硬件实现。我还与 Bojan Novković 交谈,他是我今年谷歌编程之夏的学生,谈论了他一直在努力实现的一些补丁。他在谷歌编程之夏结束后继续为 FreeBSD 做贡献。我终于见到了 Olivier Certner,他最近开始为内核贡献高质量的补丁和代码审查。
技术问题得到解决之后,一些演讲按计划进行。几位 FreeBSD 基金会的工作人员介绍了基金会活动的最新进展;看到众多正在进行中的实习项目的反馈很不错。在此之后,Justin Gibbs 进行了一场题为“如果你不害怕,你会做什么?”的演讲,讲述了 FreeBSD 开发者社区的技术成就和“第一次”的历史。一个统一的主题是,项目需要近乎鲁莽的雄心壮志,以及勇于尝试的意愿,而不必过多担心失败的可能性。演讲中强调了很多这样的例子,CHERI 和最初将 ZFS 移植到 FreeBSD 的例子就是其中几个。然后,Justin 邀请我们设想如果不必考虑失败,我们会做什么,人们分享了各种想法。
我们中的一些人一起在学生餐厅用午餐并聊了起来。午餐后,来自基金会的 Greg Wallace 提出了 SWOT 分析的想法,该分析对组织的优势、劣势、机会和威胁进行概述,以提供未来工作规划的客观背景。房间分成小组,每个小组都对 FreeBSD 进行了自己的 SWOT 分析。下午,我终于见到了 Christos Margiolis(christos@),他最近完成了基金会的实习,也是我在 2022 年的谷歌编程之夏学生。尽管我们在几个项目上一直一起工作,但这是我们首次面对面会面,所以见到他真是太好了。我们和其他一些人聊了很多有关 FreeBSD 的话题。在这一天的最后,Jordan Hubbard 进行了一场演讲,诉说了他的职业生涯,并提出了他认为大型语言模型和其他机器学习创新将如何在短期内改变软件领域的观点。
开发者峰会的第二天以几场技术演讲开始。首先,Ruslan Bukin 介绍了他最近在 CPU 跟踪方面的一些工作,该工作使得可以使用 ARM CoreSight 和 Intel PT 等技术。这些设施允许 CPU 实时记录其操作,以相对较小的开销对 CPU 的行为进行细粒度跟踪。Ruslan 的实现, HWT,目前针对 ARM 但已设计为可扩展。Ruslan 还进行了一些有趣的演示,其中他使用启用跟踪的小命令行实用程序(例如 uname(1))。这展示了 HWT 的符号解析能力。 HWT 在精神上与 Christos 最近由基金会赞助的有关 DTrace 的工作相似,该工作使得可以跟踪单个 CPU 指令,但具有完全不同的权衡。
然后,Bojan 介绍了他为谷歌编程之夏开始的一些工作,具体是一个用于内核性能基准测试的框架。这是因为要总结他所开发的主要功能(一个执行在线内存碎片整理的内核子系统)的性能改进和影响是一项挑战。特别地,这样的系统必然会有一些性能开销,因为它消耗 CPU 资源,但它(希望)通过为系统的其余部分提供更连续的物理内存而带来一些好处,这可以改善某些工作负载的性能。因此,确定该功能的净效果是一项棘手的任务,因此需要进行基准测试。
接下来的一天的日程相对较轻松,所以我花了一些时间来开发一个个人项目,目的是让运行 FreeBSD 回归测试套件变得更容易,并与其他一些 FreeBSD 开发人员讨论了我们的开发工具中的各种差距和不一致。
随后的几天举办了 EuroBSDCon。我参加了相当多的演讲,一些亮点包括:
Hiroki Sato 针对他在 FreeBSD 的 USB 堆栈上的补丁进行演讲,以启用 USB 调试功能。这是一种存在于一些 USB 控制器中的硬件特性,允许在 USB 上创建通信通道。这样就能为任何带有兼容 USB 控制器的设备提供调试控制台。这对于调试与笔记本电脑的挂起/恢复相关的问题应该非常有用,否则缺乏可用于调试的带外通道。这项工作需要一些特殊的硬件,特别是 USB 交叉线;幸运的是,Hiroki 在演讲后带来了几个,大家可以买。我不得不迅速行动,最后抢到了一个。
Christos Margiolis 关于 kinst 的演讲,这是他在谷歌编程之夏 2022 和他在 2023 年基金会实习期间开发的新 DTrace provider 程序。我以前已经与他在这方面合作过,因此对技术背景已经很熟悉,但看到他向更广泛的观众展示它还是很不错的。kinst 是一种相当底层的技术,需要一些 CPU 内部知识才能理解。Christos 在向多样化的观众解释它时做得非常出色。演讲后有许多有趣的问题和讨论,我也参与其中。
Michael Chiu 对 xc 的工作进行了介绍,这是一个针对 FreeBSD 的新的容器运行时。这是一项非常令人印象深刻的工作,提供了几个围绕管理 FreeBSD jail 的便利功能。演讲包括相当多的演示,例如使用 xc 在 FreeBSD 上的 Linux jail 中启动 MariaDB。我受到演讲的启发,尝试使用 xc 来运行一些我自己的工作负载;特别是,它似乎将成为在 FreeBSD 上运行最小设置的自动化测试的一种相当有用的方式。我一直在开发一个 xc 配置,可以用在 FreeBSD 上运行 syzkaller。总体而言,我对 Michael 的工作感到非常激动。
我还与 Warner Losh 进行了一些交流,了解他启用通过 LinuxBoot 引导 FreeBSD 的一些工作。LinuxBoot 通过将传统的引导固件替换为一个负责初始化硬件然后引导主 Linux 内核的最小 Linux 内核,简化了某些平台上的引导过程。以这种方式引导 FreeBSD 涉及实现一个称为 kexec(2) 的二进制接口;这个工作是 Warner 演讲的主题。最近,我一直在进行一个在精神上类似的项目,有相当多的技术重叠,所以听到他的工作很有帮助,当我们要将各自的项目提交到 FreeBSD 时,我们可以一起努力。
我想感谢 FreeBSD 基金会对我行程的赞助;我进行了很多非常富有成效的交流,并了解了 FreeBSD 社区中其他人正在从事的工作。
原文链接:
作者:Boulder, CO & San Jose, CA
译者:Canvis-Me & ChatGPT
2023 年 11 月 3 日
新报告帮助 FreeBSD 商业用户遵守美国政府安全软件开发报告要求。
FreeBSD 基金会,是一家致力于推动开源 FreeBSD 操作系统并支持其社区的公共慈善机构,今天宣布推出一项新服务,以帮助使用 National Institutes of Standards and Technology(NIST,美国国家标准及技术研究所)安全软件开发框架(SSDF)的 FreeBSD 商业用户。
SSDF 将于 2023 年第四季度部分生效,并在 2024 年彻底生效,它是基于 BSA、OWASP 和 SAFECode 等组织的已建立的安全软件开发文档的一套软件开发实践。SSDF 旨在减少美国政府使用的软件解决方案中的软件漏洞。
一旦生效,OMB 和 CISA 要求所有向美国政府颁发软件许可证的组织自我证明其自身软件及其使用的所有开源组件均符合 SSDF。
“FreeBSD 社区从其创立以来一直是安全、分布式开源软件开发的先驱。随着世界各地的政府认识到开源的普及性,认识到开源对创新的重要性,以及对设计和默认安全性的需求,FreeBSD 基金会自豪地向我们的商业合作伙伴提供 SSDF 认证,”——FreeBSD 基金会技术高级总监 Ed Maste 表示。
鉴于美国政府广泛使用 FreeBSD 为无数解决方案提供支持,这项新的基金会服务旨在使供应商和云提供商能够轻松证明他们使用的 FreeBSD 软件的安全开发实践。
为确保各种规模的商业用户的访问权,FreeBSD SSDF 认证报告对所有 FreeBSD 基金会合作伙伴开放,无论捐赠级别是银牌、金牌还是白金。要了解更多信息,请联系 。
“我们在 NIST 很高兴看到 SSDF 被证明是有用的,并被诸如 FreeBSD 基金会之类的组织采用,因为它试图通过为开源社区开发与安全软件开发实践相对应的认证映射来支持《改善国家网络安全行政命令(EO 14028)》。”——国家标准与技术研究所信息技术实验室计算机安全部的计算机科学家 Murugiah Souppaya 表示。
“NetApp 自豪地利用 FreeBSD 提供高性能产品,始终满足我们客户对可靠性、安全性和可支持性的期望,包括众多美国军方和文职政府机构,”——NetApp 的 ONTAP 工程高级总监 Matt Hambrick 表示。“在向我们的政府客户报告 NetApp 的安全软件开发流程和程序时,FreeBSD 基金会的 SSDF 认证报告对这些工作是一项有价值且受欢迎的支持。”
“FreeBSD 是 Metify 技术堆栈的关键部分,我们使用它提供裸机服务器和无线 ISP 解决方案。FreeBSD 的可靠性、安全性、可支持性以及开放而创新的社区对我们来说是关键优势,”——Metify 联合创始人兼首席执行官 Mike Wagner 表示。“作为一家初创公司,FreeBSD 基金会的 SSDF 认证报告对我们的联邦政府增长战略是一个受欢迎的帮助和重要的推动因素。”
关于 FreeBSD 基金会
FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于支持 FreeBSD 项目和社区。接受个人和企业的捐赠,基金会利用资金开发功能,雇用软件工程师,改进构建和测试基础设施,通过线上和线下活动倡导 FreeBSD,并提供培训和教育材料。在法律事务方面代表 FreeBSD 项目,基金会是合同、许可和其他法律安排的承认实体,完全由捐赠支持。了解更多信息,请访问
原文链接:
译者:Canvis-Me & ChatGPT
2023 年 10 月 27 日
基金会执行董事 Deb Goodkin 与 上就 FreeBSD 的现状进行了深入探讨,消除了人们对开源软件的常见误解,讨论了 FreeBSD 在日益重要的安全领域中所扮演的角色,并展望了开源生态系统的未来。
原文链接:
译者:Canvis-Me & ChatGPT
2023 年 11 月 2 日
FreeBSD 厂商峰会始终是一个绝佳的机会,让人更深入地了解公司是如何以及为何使用 FreeBSD。Metify,这家背后是屡获殊荣的 Mojo 平台的公司,将在今年的峰会上展示两款创新产品,为大家提供这样的机会。
Metify Mojo 是一个虚拟设备,可以从所有地方被发现、配置和维护服务器。Metify 的首席技术官 Ian Evans 将讨论 FreeBSD 在创建 Mojo 中的关键角色。
Metify 提供两个产品:
Mojo Edge 数据中心配置——平台 - 这是一个综合解决方案,旨在在数据中心和边缘发现、配置和配置裸机服务器和存储。该解决方案注重保持用户体验简洁,避免与供应商绑定。该工具与 Metify 的 Photon ISP 平台配合使用,无缝管理分布在不同位置的裸机资产。该平台完全依赖于 BSD 和 bhyve,在 Oracle Cloud Infrastructure (OCI) 成熟后,平台将立即过渡到 BSD 本机。
Photon ISP 平台——作为对无线 ISP 服务的补充层,确保了不间断的 4G/5G 和 Starlink 故障切换。基于强大的 FreeBSD 13.2 构建,它完全取代了 Starlink 的路由器功能。这一创新将过渡到目前为我们的弗吉尼亚州布鲁蒙特客户提供服务的 Photon WISP 平台。
“FreeBSD 是 Metify 堆栈的基石,帮助我们推动 Mojo 的创新。我们从 Linux 切换到 FreeBSD,是因为其许可的灵活性和无与伦比的性能能力,使我们能够一次性配置数千个数据中心节点。此外,它显着简化了我们的软件架构,同时提高了系统的稳定性,”Metify 的 CTO Ian Evans 评论道。
在 FreeBSD 厂商峰会上,Evans 将讨论:
从 Linux 过渡到 FreeBSD:Metify 从 Linux 过渡到 FreeBSD 以及从 KVM 到 Bhyve 的方式和原因。他将讨论 Metify 如何将 Bhyve 整合到其系统中。
用 FreeBSD 简化的价值:通过 FreeBSD,Metify 简化了其软件堆栈并提高了可靠性。它将讨论如何构建零触及的 FreeBSD 安装流程,并使用 Ansible 自动化其堆栈。
灵活性和创新:Metify 将讨论 FreeBSD 许可结构如何在未来允许更大的灵活性(特别是与 Linux 相比)。它还将讨论 Metify 如何使用 FreeBSD 开发设备,用于通过 4G 和 5G 网络进行远程设置,以及基于 FreeBSD 的边缘设备,通过 4G 和 5G 网络实现远程裸机配置。
增强的安全性:Metify 还将分享如何将 FreeBSD 用作 Mojo 的安全网关。这将包括围绕 pf、ipfw、dummynet 和 NTOPNG 的流量监控的讨论。
构建步骤 | 无缓存时间 | 有缓存时间 |
---|---|---|
构建步骤※ | 构建时间 |
---|---|
命令 | 意味 | 备注 |
---|---|---|
sysctl 名称 | 1 | 0 | 备考 |
---|---|---|---|
第二天,我有更多的时间参观其他展台。由于有超过 4300 名注册参与者,会议场面热烈,所有人都聚集在一起庆祝和倡导开源。虽然没有专门的 BSD 行动方针,Greg Wallace 参与了开源倡议组织的开源与公共政策小组讨论,。这次讨论引发了一些关于更大范围的开源软件社区如何合作以影响公共政策的精彩对话。当我们拆卸我们的展台时,和与会者的一次即兴对话涉及到 BSD 许可证的好处和开源的未来,并持续到了会议结束后。
您可以在峰会上听到 Ian 的演讲,也可以通过在线观看。
make buildkernel
1406 秒
837秒
make -j4 buildkernel
366秒
-
make -j8 buildkernel
200秒
-
make -j12 buildkernel
155秒
82秒
make -j16 buildkernel
136秒
-
make -j20 buildkernel
123秒
-
make -j24 buildkernel
115秒
55秒
无缓存
22317 秒
ccache有り(一周目)
25603 秒
ccache有り(二周目)
3841 秒
ccache有り(三周目)
3854 秒
ccache -M n
设置缓存容量(未指定时 G )
指定最大缓存容量※
ccache -s
显示统计信息
ccache -z
统计信息清除
ccache -c
缓存目录审查
清理操作(不删除缓存数据)
ccache -C
缓存清除
hw.acpi.acline
电源连接
电源未连接
电源线连接状态
hw.acpi.battery.state
电池放电中
电池充电中
电池充放电状态
发布日期:2023-8-29
译者:ykla & ChatGPT
自 2005 年以来,FreeBSD 项目一直以参与谷歌编程之夏计划为傲。随着 2023 季接近尾声,基金会要求我们的一些 GSoC 学生分享更多关于自己以及他们与项目合作的经验。
问:请简要介绍一下自己以及您的教育之旅的进展。
我叫 Sudhanshu Mohan Kashyap,我去年刚刚获得了在皮拉尼比尔拉科学技术学院果阿校区的电气与电子专业的学士学位。目前,我在摩根大通担任初级分析员(SE1)。我热爱 Linux 和 FreeBSD,并且把很多空闲时间都用来玩 VPS 服务器。我对像 FreeBSD 这样的开源项目做贡献感到兴奋,也希望进一步提升我的技能。
问:您以前参与过谷歌编程之夏项目吗?
没有,这是我第一次参加谷歌编程之夏项目。
问:为什么想要与 FreeBSD 合作?
我是通过一个亲近的朋友,他曾经通过贡献 FreeBSD 的 ports 来初次接触到 FreeBSD 的。我对创建网站和服务器管理产生了浓厚的兴趣,通过托管 Minetest 服务器,我积累了相当多的知识。由于我的电气与电子背景以及基础设施工程方面的经验,我认为 FreeBSD 是一个很好的平台,可以结合我的技能并为一项著名的开源项目做出贡献。
问:请简要介绍一下您的谷歌编程之夏项目。
我的项目提案是为 FreeBSD 的引导加载程序创建一个 CI 测试工具。目前的脚本 full-test.sh
在所有支持的体系结构和组合上缺乏全面的测试。我计划用 Lua 重新编写此脚本,以便测试多个体系结构组合并生成关于损坏的组合和预期功能的报告。如果时间允许,我将把该脚本与现有的构建基础设施(如 Jenkins 或 Github Actions)集成,以提供全面的测试结果。
问:迄今为止,您从这次经历中学到了什么?
在 Warner Losh 的指导下,通过这次经历,我获得了宝贵的技术技能,包括部署服务器、Lua 编程和模块化脚本编写。我学会了在协作编码环境中进行详细项目规划的重要性,有效沟通的重要性,以及系统测试的重要性。在 Warner 的指导下,我成功配置了服务器,解决了设计问题,并通过深入测试提高了代码质量。这个过程不仅扩展了我的技术专长,还提高了我的问题解决能力和注重细节的能力,使我成为了一名更加熟练和适应性强的软件开发人员。
问:与 FreeBSD 项目合作的经验如何?
与 FreeBSD 项目合作是一次启发性的经验。来自 Warner Losh 等导师的反馈和指导对于完善我的项目提案非常重要。这个项目与我的兴趣和技能很好地契合,我很高兴能为这样一个著名的开源社区做出贡献。
发布日期:2023-8-24
译者:ykla & ChatGPT
自从 2005 年谷歌编程之夏项目创立以来,FreeBSD 项目很自豪地参与其中。随着 2023 年季节即将结束,基金会请几位我们的学生分享更多关于他们自己以及他们与该项目合作经验的信息。
问:请简单介绍一下你自己,以及你在教育旅程中的进展。
我是 Soobin Rho,这是我在南达科他州的奥古斯塔纳大学的第三个学年,预计于 2025 年毕业。我主修哲学、数学和计算机科学。
我出生于韩国,在迪拜长大,几年前来到美国上大学。我的目标是白天在一家有使命感的优秀公司工作,然后在空闲时间做我真正关心的事情,比如为环境和可持续性开展开源项目。
问:你以前有参与过谷歌编程之夏项目吗?
没有,2023 谷歌编程之夏是我第一次参与。我是在 Hacker News 上第一次听说谷歌编程之夏的。其中一条评论提到 FreeBSD 是参与的开源项目之一。所以,我就申请了。我从 FreeBSD 维基的谷歌编程之夏项目创意列表中选择了我的项目。
问:你为什么想与 FreeBSD 合作?
我尝试过很多操作系统(虽然我不会逐一列举)也尝试过很多桌面环境。然而最终,至少目前来说,我决定我最喜欢的编码环境是没有桌面环境,只有终端的 FreeBSD 加上 vim 和 tmux。
当然,每当我需要使用图形界面时,我会不时地回到其他操作系统。尽管如此,它就是感觉对了。我所有的开发工作都是通过 FreeBSD 进行的。加入 2023 谷歌编程之夏是我第一次为 FreeBSD 做贡献,但我也打算继续作为贡献者,并继续维护 mfsBSD 集成。
问:请简要介绍一下你的谷歌编程之夏项目。
说到 mfsBSD,这是由 Matuska 于 2007 年创建的,mfs 代表内存文件系统。基本上,一旦你在系统中安装了 mfsBSD 并引导到它,整个操作系统现在都在内存文件系统下运行。这意味着你现在可以做很多事情,比如恢复操作和系统诊断。特别是,我对 mfsBSD 的最喜欢用途之一是用于我的一台只有一块硬盘的笔记本电脑。我可以在硬盘中引导 mfsBSD,然后在我安装了 mfsBSD 的特定的硬盘上安装 FreeBSD。由于 mfsBSD 中的每个文件都被移动并加载到内存文件系统中,甚至可以删除原始磁盘,并使用 mfsBSD 中的 bsdinstall
完全覆盖为全新的 FreeBSD 实例。
我的项目将 mfsBSD 集成到 FreeBSD 发布工具集中,这样 mfsBSD 镜像(.img 用于光盘,.iso 用于光盘)现在将在 FreeBSD 主页上提供。【注 1】
问:到目前为止,你从这个经验中学到了什么?
在接手这个项目之前,我对 MAKE(1) 一无所知。阅读/usr/src/Makefile
和/usr/src/release/Makefile
对我帮助很大。此外,阅读/usr/src/release/Makefile.vm
非常有价值,事实上,我很多的代码都是基于这些 make 文件的。
问:与 FreeBSD 项目合作的经历如何?
有趣而令人兴奋!每周与我的导师 Joseph Mingrone 和 Juraj Lutter 进行会议很有趣。看到我的代码生成了我自己可以使用的 mfsBSD 镜像,以及为所有需要的其他人生成的镜像,这让我感到兴奋。
https://wiki.freebsd.org/SummerOfCode2023Projects/IntegrateMfsBSDIntoTheReleaseBuildingTools
原文:OpenBSD Router Guide 原文链接:https://openbsdrouterguide.net/
译者:basebit
发布日期:2023-8-29
译者:ykla & ChatGPT
自从 2005 年谷歌编程之夏项目创立以来,FreeBSD 项目很自豪地参与其中。随着 2023 年季节即将结束,基金会请几位我们的谷歌编程之夏学生分享更多关于他们自己以及他们与该项目合作经验的信息。
问:请简单介绍一下你自己,以及你在教育旅程中的进展。
嗨!我叫 Aymeric Wibo,目前正在比利时鲁汶天主教大学攻读计算机科学学士学位。
问:你以前有参与过谷歌编程之夏项目吗?
没有!这是第一次。
问:你为什么想与 FreeBSD 合作?
我已经将 FreeBSD 作为我的主要操作系统使用了 2 年多,之前我已经提交过一些补丁,因此我认为下一步自然的进展就是为 FreeBSD 做一些更有实质性的工作,特别是在今年的 FOSDEM 上简要会见了项目的一些成员之后。
问:请简要介绍一下你的谷歌编程之夏项目。
我的项目是使 FreeBSD 支持 BATMAN mesh 网络。BATMAN 是由 Freifunk 开发的一种路由协议,用于基于网络中立原则构建城市规模的开放 Wi-Fi 网络。
具体来说,这包括将 Linux 中的 batman-adv 内核模块移植到 FreeBSD(作为 batman_adv)。这利用了 LinuxKPI,这是一个将 Linux 调用转换为 FreeBSD 代码的内核接口,以及 FreeBSD 中的新 Netlink 支持。
问:你从这次经验中学到了什么?
学到了很多!
更具体地说,我对 Linux 和 FreeBSD 网络堆栈的内部了解更多,现在更加熟悉浏览它们各自的源代码并跟踪与网络相关的问题。我还学会了如何使用 FreeBSD 提供的出色内核调试工具(kgdb,dtrace,以及最重要的 printf ;))。
总体而言,在短时间内作为开发者取得了很大的进步,并获得了很多可迁移的经验!
问:与 FreeBSD 项目合作的经历如何?
非常棒!在开源项目上工作总是一种乐趣。FreeBSD 社区的人们反应迅速,乐于助人,我非常感激有一位导师(嗨,mmokhi@!)在我遇到困难时指导我。
我期待未来继续在 FreeBSD 上工作!
发布日期:2023 年 4 月 17 日
译者:ykla & ChatGPT
在我努力使 WireGuard 正常运行的过程中,我碰到了许多指南和教程。但它们都缺少关键信息,或者依赖于过时的信息。通常只是微妙的指示出现了问题。当与其他潜在故障点一起出现时,这很快就会变成一个令人沮丧的打地鼠游戏,让人走入很多死胡同。
话虽如此,以下是一个最小化的设置,截止到今天,在运行 FreeBSD 13.2 的具有单个以太网连接的树莓派 3 上有效。
首先,安装所需的软件:
开启 Wireguard 服务:
启用 IP 转发并立即激活:
设置防火墙和日志记录:
接下来生成服务器密钥:
你还需要客户端密钥。这个示例假设使用 iPhone
作为名称,但对于任何客户端,流程都是相同的:
创建服务器配置:
创建客户端配置:
对于额外的客户端,使用不同的文件名重复密钥生成。然后在服务器配置中添加另一个 [Peer]
部分,其中包含唯一的 IP 和客户端密钥内容。还要创建相应的客户端配置。在更改了服务器配置之后重新启动 WireGuard。
为了方便传输到 iPhone,在 WireGuard 应用程序中生成一个二维码,并通过摄像头导入:
开启 Wireguard 服务:
现在,你应该能够成功地使用 iPhone 进行连接,并且能够访问你的内部网络以及互联网了。
几点注意事项:
在家中进行此操作时,请不要忘记在路由器中设置端口转发。WireGuard 专门使用 UDP。
可以使用本地 DNS 服务器,比如 Adguard Home。我就是这么做的。这样你就可以在任何地方实现全面的广告拦截。
如果遇到问题,首先重新启动机器。如果问题仍然存在,请使用 tcpdump -n -e -i pflog0
检查连接日志。
在几乎所有连接无法工作的情况下,要么你忘记设置 IP 转发,要么有其他干扰的防火墙规则,要么 NAT 规则错误。
我发现握手可靠性不稳定。你可能需要多次停止和启动客户端连接才能使其正常工作。
原文链接:https://www.infoworld.com/article/3699263/happy-30th-freebsd-why-the-freebsd-open-source-project-has-endured.html
作者:Deb Goodkin
译者:ykla 使用 deepl【】部分为 ykla 注释
在庆祝成功的 FreeBSD 的三十年里,我们可以归功于开源自由、强大的文化、共享的领导模式、现代的开发实践和不断演进的稳健代码。
FreeBSD 的 30 岁生日为我们提供了一个机会,回顾并探究为什么这个开源操作系统不仅能够长久存在,而且在许多组织和应用场景中蓬勃发展。虽然开源项目诞生的背景各不相同,但 FreeBSD 从一开始就有着独特的发展模式。该项目所采取的路径与其长寿有着密切关系,这也解释了为什么 30 年之后,你会发现 FreeBSD 的代码帮助驱动着从 Netflix 上的内容到 PlayStation 上的游戏等各种应用。
FreeBSD 最初于 1993 年发布,它扎根于 Berkeley 软件发行版(BSD,即伯克利发行版套件)的代码基础上,该发行版自上世纪 70 年代以来一直在开发中。先驱性的 BSD 项目引入了套接字网络接口、TCP/IP 的首个实现、包括 VFS、FFS 和 NFS 在内的文件系统、mmap 内存模型等。尽管 BSD 不是开源的,但其受许可的代码仍然得到了许多学术界和工业界用户的贡献。
大部分的 BSD 代码在 4.4BSD-Lite 发行版中以开源软件的形式提供,为 FreeBSD 提供了基础。其技术的基础性质自那时起就成为其成功的重要因素之一。
为了管理领导继任并避免与许多其他开源项目普遍采用的单一领导结构相关的风险, FreeBSD 项目的创始人成立了 FreeBSD 核心团队( FreeBSD Core Team),这是一个负责项目方向和控制提交者特权的领导小组。尽管在最初由创始人自己分配这些领导者,但在 2000 年,核心团队的九个席位变为由选举产生。使提交者能够为 FreeBSD 的领导层投票并让自己晋升为领导角色,使该项目保持了特别的强大性和能够不断演进的能力。
FreeBSD 从一开始就利用源代码控制、错误报告和其他工具来支持远程开发。在一个时代,开源项目发行版通常由个人维护,个人负责添加所有代码贡献时, FreeBSD 的策略的新颖优势已经成为定义现代实践的标志。这种超越标准限制的加速开发的自由意味着迅速整合代码,包括从 NetBSD 和 OpenBSD 获取的有价值的功能。
FreeBSD 项目从一开始就决定选择推荐的硬件并提供细致、有针对性的支持。因此,当涉及可靠性和性能指标时, FreeBSD 一直处于领先地位。这种区别是为什么它成为从拨号时代到现代 Web 服务器提供商都持久受欢迎的选择的原因。
由于 FreeBSD 支持远程开发和全球贡献,该项目在开发邮件列表方面特别注重策略,以保持工作和设计讨论的组织和高效。因此, FreeBSD 迅速实现了思考周到的沟通管理,通过监控和调节保持讨论的文明(是的,文明!)和专注,同时不限制言论自由,并为来自不同文化背景的开发者提供服务。
FreeBSD 在软件文档方面也取得了出色的成绩。从一开始就专注于招募文档贡献者,并要求开发者参与确保文档的准确和完整。为了实现这个目标, FreeBSD 专门引入了一个与代码提交者拥有相同特权的文档提交者小组。该项目还支持多语言文档框架,使得 FreeBSD 的知识更加易于全球各地的开发者获取。
在开源领域,文化与技术同样重要, FreeBSD 拥有一个友好和包容的文化,给予所有提交者相同的投票权利(以及在社区中平等的发声权)。蓬勃发展的 FreeBSD 基金会是业界最早成立的之一,提供了一系列深度的项目支持服务。
FreeBSD 的最初版本包含了许多贡献的实用工具和库,而现在这些已经发展成为庞大的 FreeBSD Ports。这个 Ports 在 FreeBSD 之上提供了对先进开源技术的强大且得到良好支持的访问。再次证明, FreeBSD 是一个早期的领导者。多年来, FreeBSD 的软件包管理工具 pkg 一直在不断改进。Poudriere 是一个 FreeBSD 软件包创建和测试工具,它利用了 FreeBSD 的一个重要优势—— jail,允许开发者可复现地测试 port 更改并可靠地构建我们的 30000 多个 port。最后,所有的 port 都以二进制形式提供【除了一些有分发限制的软件,比如 jdk】,使用户可以通过使用 pkg 命令更轻松地安装应用程序。
也许对于 FreeBSD 成功的 30 年来说,最重要的贡献者是它的开源 BSD 许可证。BSD 许可证不要求组织将源代码更改与他人共享,而 Linux 则要求如此。那些必须将代表专有知识产权的代码置于产品中的公司需要这种许可自由,例如那些在设备和嵌入式操作系统市场中的公司。这种开源自由,加上强大的领导力、强大的文化和不断演进的稳健代码,是为什么 FreeBSD 现在庆祝着 30 周年生日的原因。
FreeBSD 的 30 周年纪念提醒我们,持久的成功不是偶然发生的。回顾我们的社区在这一时期面对的巨大技术变化和挑战的方式,也可以为我们提供对如何确保在未来几十年庆祝类似里程碑的洞察。通过提供最佳平台,快速尝试和开发新技术,同时提供可靠的商业化基础和广泛采用,我们预计 FreeBSD 将继续蓬勃发展。我们邀请并鼓励你成为未来 30 年的一部分。
作者 Deb Goodkin 是 FreeBSD 基金会的执行主任,该基金会支持开源的 FreeBSD 操作系统。Deb 自 2005 年 8 月起就加入了该基金会。她在市场营销、销售和数据存储设备的开发方面有超过 20 年的工作经验。她在圣塔克拉拉大学获得了电子工程硕士学位(MSEE),并在加利福尼亚大学圣地亚哥分校获得了计算机工程学士学位(BSCE)。
发布日期:2023-8-24
译者:ykla & ChatGPT
这个工作组的成立始于长期使用 FreeBSD 的用户 Michael Osipov,他花时间向基金会提供了关于他在使用 FreeBSD 时遇到的阻碍的详细笔记。
接下来的步骤是评估兴趣——我在 LinkedIn 和 Discord 上发布了招募兴趣的信息,反应非常好。有 40 人举手加入了工作组。以下是这 40 人按角色划分的情况。
幸运的是,有 13 人,包括我在内,参加了 8 月 16 日举行的企业工作组的第一次会议。以下是会议回顾。
在整理日常事务后,包括提醒遵守 FreeBSD 行为准则,我们批准了工作组章程,并继续讨论了现有的差距。
在此过程中,我们就以下几个领域展开了愉快的讨论:
讨论的第一个重点涉及相近但我认为稍有不同的科学计算用例。这是很好的时机,因为就在那周早些时候,我与长期使用 FreeBSD 的用户和社区成员进行通话,他正在努力改进 FreeBSD 在这个领域的应用。通话结束后,我将所有人联系在了一起,我的基金会同事 Joe Mingrone 还加入了在这个领域工作的一些 Port 维护者。如果您有兴趣在这个领域提供帮助,请让我知道,我会将您与合适的人联系起来。
下一个讨论涉及加强对 Samba 的支持。Allan Jude 提到 Klara 正在开发一个特殊的 Samba 模块,以便在上游使用,从而使其能够利用新的块引用树 ZFS 功能。要在 Samba CI 系统中获得更通用的 FreeBSD 上游支持,我们需要在 Samba 中引入 FreeBSD 的工作人员。下一步是从社区中寻找愿意在 FreeBSD 支持上游方面工作的志愿者。如果您可以提供帮助,请与我联系。
一位与会者评论说,在所有议题中,在他们看来云原生是最重要的,可能比其他所有议题加在一起还要重要。Allan 向大家介绍了一个名为 XC 的新项目:https://github.com/michael-yuji/xc 其他人询问了这与 runj 有什么关系。开放容器倡议社区正在为 FreeBSD 提供支持,一些企业工作组的参与者表示有兴趣提供帮助。谢谢大家!
一名在数据中心服务器制造商工作的参与者询问了 FreeBSD 中用于人工智能和高性能计算应用(例如 Nvidia h100/a100)的 Nvidia GPU 驱动的情况。
人们提出了以下要添加到差距清单的项目:
eBPF
零信任 FreeBSD 构建
可重复的 FreeBSD 构建
FreeBSD 的软件供应链和组成清单(SBOM)
一名与会者问了 SALT、Puppet 和 Ansible 对 FreeBSD 的支持情况。
这三者在生产中都被使用,并且运行良好——Ansible 和 SALT 似乎更受欢迎。以下是一些资源:
Ansible
在 BSD 主机上使用 Ansible:https://docs.ansible.com/ansible/latest/os_guide/intro_bsd.html
使用 Ansible Playbooks 自动部署 FreeBSD 上的各种服务
您可以在此处查看会议的录像:FreeBSD 基金会企业工作组会议#1
如果您对此感兴趣,并且希望提供帮助,请填写此 Google 表单,帮助使 FreeBSD 成为一个更好的通用企业操作系统。
作者:Sean Michael Kerner
时间:2023 年 11 月 22 日 7:04
译者:Canvis-Me & ChatGPT
Linux 并不是唯一的开源操作系统(OS)。还有许多类 Unix 的开源 BSD 操作系统,其中就包括仍在积极开发中的 FreeBSD。
FreeBSD 项目于 1993 年首次发布,是最早的开源操作系统项目之一,也是加州大学伯克利分校最初的开源 BSD 工作的直接继承者。本周,FreeBSD 14 正式发布,这是自 2021 年以来该开源操作系统的第一个主版本号更新。这个在 14 分支上的首个稳定版本为这个开源操作系统带来了重要的更新和新功能。
“FreeBSD 14 代表了一些新功能和对各个子系统的大量更新,以提高性能、稳定性和安全性,”FreeBSD 基金会技术高级总监 Ed Maste 与 SDxCentral 说道。
FreeBSD 14 的新特性之一是将 ZFS 文件系统更新为 OpenZFS 2.2 版本。
ZFS 起源于 Oracle(之前是 Sun Microsystems)的 Solaris UNIX 操作系统,长期以来一直承诺支持庞大的存储容量。Maste 指出,OpenZFS 2.2 包括诸如块克隆之类的增强功能,为需要大量复制的工作负载提供了巨大的性能提升。除了对 OpenZFS 本身的改进,还添加和更新了新的工具,以提高 ZFS 在 FreeBSD 中的集成度。
此外,还进行了更新,使 ZFS 在虚拟化环境中运行得更好,FreeBSD 还将 ZFS 支持添加到 makefs 镜像创建工具中。
“这使得 FreeBSD 发布工程团队可以开始为云提供商构建基于 ZFS 的根镜像,”Maste 说道。
新版本还包括了许多安全改进。
Maste 指出,FreeBSD 的 Capsicum 沙盒框架已应用于基本系统中的其他工具。还更新了基本系统中的关键安全工具,包括将 OpenSSL 升级到 3.0.12,将 OpenSSH 升级到版本 9.5p1。
性能和可扩展性也在提高,同时增强了对硬件的支持。
“还有一些支持当代硬件的变化,例如将支持的 CPU 数量增加到 1024,”Maste 说。
他补充说,还有一大堆可用性和“外观和完成”改进,如缩短引导时间,解决与某些 UEFI(统一可扩展固件接口)固件实现不兼容性,改进 NVMe 设备错误处理等等。
尽管 Linux 作为开源操作系统可能在许多企业中更广为人知,但 FreeBSD 也绝对不陌生,尤其是在网络系统方面。
“网络仍然是 FreeBSD 的强项,包括 Juniper 在内的许多公司都依赖于 FreeBSD 的网络功能,并贡献代码来改进 FreeBSD 的网络功能,”Maste 说。 “其他在网络安全和性能前沿的公司,如 Netflix,Nvidia Mellanox Metify,Netgate,Chelsio 和 Nginx(F5),也使用并为 FreeBSD 做出贡献。”
Juniper 的 Junos 网络操作系统基于 FreeBSD。Maste 指出,商业友好的 BSD 开源许可证使其对于那些希望在其 OS 与专有软件组合成产品的过程中没有任何负担的公司而言,变得很有吸引力。
“因此,我们看到很多 FreeBSD 作为专门用途的安全、网络和工业控制设备的基础;SaaS 解决方案;以及平台,”他说。
Maste 还指出,FreeBSD 支持几个领先的支付处理网络,包括 DeepStack(现为加利福尼亚银行的一部分),Modirum 等。企业级存储是 FreeBSD 受欢迎的另一个市场,有助于支持 Avere Systems(现为 Microsoft 的一部分),EMC Isilon 和 NetApp 的解决方案。
展望未来,Maste 表示,FreeBSD 核心团队正在开始规划过程,以确定社区的发展重点。FreeBSD 基金会是一个独立的实体,但这些重点将有助于指导基金会的软件开发工作。
“基金会未来一两年的一个重点是改善 FreeBSD 的终端用户开箱即用的体验,”Maste 说。 “如果你是一个想要了解或探索系统编程的人,我们希望 FreeBSD 能够(为你)提供一个出色的起点。”
原地址:
译者:ykla & ChatGPT
在学术界,FreeBSD 拥有丰富的历史。它源自于加州大学伯克利分校(University of California at Berkeley)计算机系统研究小组在 20 世纪 70 年代中期至 1990 年代期间开发的 4.4-Lite 版本的伯克利软件发行版(Berkeley Software Distribution)。在过去的 30 年里,FreeBSD 操作系统持续为学术界提供稳定的基石,供他们进行研究,并为工业界的采用铺平了道路,这是通过广泛使用的基于或整合了 FreeBSD 的产品而实现的。
FreeBSD 项目强调使用优秀的工具,如对 DTrace 的支持和现代编译器,例如将 LLVM 作为整个操作系统和内核的默认编译器,以及 LLDB 调试器。
通过遵循一致的开发和发布流程,研究人员可以确保在小版本发布之间可以依赖其系统按预期工作,减少在更新实验时的变量数量。
BSD 许可证的结构允许研究人员将操作系统的部分内容整合到他们自己的工作中,然后将该工作集成到持续的研究中,或者直接整合到工业产品中,而无需担心被迫开源自己的工作。
FreeBSD 项目对测量的强调始于最初的 CSRG(计算机系统研究组)团队,并延续到系统的最新版本。
FreeBSD 支持以下内容:
ARM、x86、MIPS 和 PowerPC 的 32 位和 64 位变体
64 位的 RISC-V 和 Sparc64
云平台,如 EC2 和 Azure
虚拟机镜像
社区: 友好且专业,拥有许多活跃的贡献者和用户,其中有些人已参与 10+ 或 20+ 年
指导: 已融入项目的文化和流程
文档: FreeBSD 手册、FAQ、开发者手册、Port 开发者手册、文档项目入门指南、man 手册
支持: 相关非营利性的 FreeBSD 基金会为项目及其贡献者提供了法律和经济支持
FreeBSD 已广泛应用于商业产品中,通过上游合并提供明确的技术过渡路径。产品如 Apple iOS、Sony Playstation3、Netapp OnTap 和 EMC Isilon 也利用了 FreeBSD 卓越的技术平台,从而使研究人员能够直接影响已存在的产品。
目前在 FreeBSD 上的努力覆盖了文件系统、网络和安全等多个领域,包括以下内容:
DIFFUSE——Lawrence Stewart、Grenville Armitage、斯威本理工大学(Swinburne University of Technology)CAIA 开发了一些利用机器学习(ML)技术基于流统计对网络流量进行分类的系统。
Nigel Williams、Grenville Armitage、斯威本理工大学(Swinburne University of Technology)适用于 FreeBSD 的多路径 TCP
Maffione, V., Rizzo, L., Lettieri, G.一个 “使用 Netmap Passthrough 实现灵活的虚拟网络。” IEEE Lanman 2016。
Honda, M., Huici, F., Lettieri, G., 和 Rizzo, L. “mSwitch: 一个高度可扩展的模块化软件交换机”; SOSR 15, ACM Press (2015)
Spinellis, D., Louridas, P., Kechagia, M. “C 编程实践的演变:Unix 操作系统 1973–2015 的研究”; 2016 IEEE/ACM 38th IEEE 国际软件工程研讨会。
Watson, Robert N. M.; Anderson, Jonathan; Laurie, Ben; 和 Kennaway, Kris. “Capsicum: 实用的 UNIX 能力”; USENIX Security ’10: 第 19 届 USENIX 安全会议。USENIX 协会。 (2010 年 8 月)
Criswell, John; Dautenhahn, Nathan; 和 Adve, Vikram. “虚拟 Ghost”; ASPLOS 2014. ACM Press。 (2014 年)
Rizzo, Luigi. “Netmap: 一个快速数据包 IO 的新颖框架”; 2012 USENIX 年度技术会议。USENIX 协会。 (2012 年)
McKusick, M. K.; Joy, W. N.; 和 Leffler, S. J. “用于 UNIX 的快速文件系统”; 美国计算机学会计算机系统汇刊. (1984 年)
一个急切适应、采纳和帮助推广研究方法和技术的开源社区,同时提供与其他分享技术兴趣的人建立联系、获得现实世界经验的机会。
尽管平台主要关注技术,但潜在的文化是关于社区的。
卓越的技术平台与广泛的商业使用以及友好的社区相结合,使 FreeBSD 成为你研究项目的绝佳选择。加入我们吧!
原地址:
译者:ykla & ChatGPT
最后发布日期:2020-02-07
我经常遇到的一个问题是如何在 OpenBSD 和 FreeBSD 之间做出选择。在这篇简短的文章中,我将尝试回答这个问题。
这两个伟大系统之间的选择问题既涉及到系统功能,也涉及一些个人偏好。
与任何工具一样,你需要先回答的第一个问题是你要解决的问题类型。这比个人偏好更重要,因为 OpenBSD 和 FreeBSD 并不完全适用于解决每个问题。
例如,如果你正在构建一个存储服务器,并且需要一个非常强大的文件系统,侧重于,那么 FreeBSD 是唯一的选择,因为 ZFS 尚未移植到 OpenBSD,而且很可能永远不会被移植,而 FFS 不像 ZFS 那样提供完整性功能。
如果你需要一个非常高性能的文件系统,那么无论你选择使用 UFS 还是 ZFS,FreeBSD 也是正确的选择,因为 OpenBSD 的 FFS 不像 FreeBSD 提供的文件系统那样快。
如果你正在构建一个安全性非常重要的机器,那么 OpenBSD 是更好的选择,因为它在操作系统中内置了大量的。不仅如此,代码始终经过非常严格的安全审计,基本系统包括大量经过相同审计的应用程序。同样,在第三方软件组件(从 X.Org 服务器往下)中,一些软件带有 OpenBSD 特定的补丁,以增加安全性。
这并不意味着 FreeBSD 不能用作防火墙或安全服务器,但 FreeBSD 没有像 OpenBSD 那样多的保护措施。然而,这也意味着 OpenBSD 在受到这些保护技术影响的问题上通常比 FreeBSD 少。
如果你需要访问大量的第三方应用程序,那么 FreeBSD 的 ports 和 packages 系统中的应用程序数量比 OpenBSD 多四倍以上。
如果你需要一个日常浏览互联网、阅读电子邮件、偶尔观看 YouTube 视频的桌面系统,那么两个系统都有很多窗口管理器和桌面系统,两者都能很好地满足你的需求。在这种情况下,更多地是关于你的硬件是否得到很好的支持,比如你的 GPU、WIFI(如果使用)等,以及对软件包管理和安全更新的个人偏好。
最好的做法是尝试确定你的日常需求,然后测试这两个系统,看哪个最好地满足你的需求。如果两者看起来都同样满足你的需求,那么可以考虑次要问题并进行比较。例如,如果你的主要需求是一个桌面系统,并且这两个系统都能很好地满足你的需求,那么你可以考虑一下这些安全保护措施在桌面系统上的作用,或者如果你经常读写大文件到磁盘,那么你可以考虑性能。也许你需要的一些第三方应用程序只有一个系统有,或者只有 FreeBSD 提供了该第三方应用程序的最新版本,而除非你想使用当前版本的 OpenBSD,否则只有 FreeBSD 提供该应用程序的最新软件包。
尽管 OpenBSD 和 FreeBSD 有共同的起源,并且两个系统都非常出色,但它们在配置操作系统和第三方软件包方面的管理方式也有很大的差异。FreeBSD 还为内核、文件系统和网络提供了许多可调整的参数,而这些选项在 OpenBSD 中并不存在。
最后,这两个系统都可以解决许多相同的问题,但它们解决问题的方式不同,最好的方法是在相同的环境中尝试一下它们两个,以确定哪个更适合你的需求和个人偏好。
在我之前的文章中,我分享了一些我认为这两个操作系统都很棒的原因。,而 。
原地址:
译者:ykla & ChatGPT
最后发布日期:2022-07-20
在我之前的文章《为什么你应该将所有东西从 Linux 迁移到 BSD》中,我在部分简要提及了 GPL 许可证的一个问题。之后我收到了一些电子邮件,要求我对这个问题进行更详细的阐述,所以我将在这篇文章中试着解释一下这个问题。
的创建目的是成为标准专有许可协议的“对立面”。任何对 GPL 许可的软件所做的修改都要被回馈给 GPL 社区,并且任何使用或链接到 GPL 源代码的应用程序都必须在 GPL 下发布。
GPL 的主要目的是禁止将 GPL 许可的软件纳入专有软件中。
GPL 相当地复杂:
你不能出售 GPL 许可的软件,但你可以对分发、支持或文档软件收取任意费用。
如果一个程序编译需要 GPL 许可的源代码,那么该程序也必须在 GPL 下发布。静态链接到 GPL 库需要该程序也要遵循 GPL 许可。
因为 Linux 内核是在 GPL 下许可的,任何与 Linux 内核静态链接的代码本身也必须是 GPL 许可的。通过动态链接可加载内核模块,可以避免这个要求。这允许公司分发二进制驱动程序,但缺点是它们只能用于特定版本的 Linux 内核。
由于 GPL 的复杂性,大部分地区对于 Linux 及相关软件的合法性被忽略了。
GPL 及其模仿者施加了一个限制:所有与 GNU 版权代码有关的衍生作品必须分发或公开源代码。
虽然这看起来是一种高尚的策略,但对于商业软件的商业使用来说,这通常是不可接受的条件。在实践中,这通常会阻碍自由共享和代码重用,而非促进。
其中一个问题是,当一家公司无法完全控制如何共享其代码时,它们要么不使用该软件,要么试图通过政治操纵“劫持”该项目,就像我们之前在 Red Hat 的情况中所见。
这种限制有时会让一家公司陷入困境。他们试图通过雇佣一个或多个开发人员来影响上游项目,然后试图影响该项目以实现符合公司需求的更改。一旦这种政治操纵开始,它通常就会对自由软件社区产生非常有害的影响,因为它并不会止步于此。
Red Hat 试图摆脱 Linux 上的 /etc
配置目录就是一个明显的例子。
Red Hat 之所以希望进行这种更改,是因为在他们专门为嵌入式市场提供的特定商业产品中,/etc
目录会带来麻烦。让 Linux 作为操作系统不依赖于 /etc
对于 Red Hat 非常重要,这也是为什么他们在 systemd-resolved 网络应用中硬编码了来自 Google、Cloudflare 和 Quad9 的 DNS 服务器,以便它可以在不需要在 /etc
中进行任何设置的情况下运行。这也是为什么他们试图改变用户主目录的工作方式,而 systemd-homed 是朝着这个方向迈出的第一步。摆脱 /etc/passwd
和相关文件目前是 Red Hat 的重点项目之一,因为这将更容易地实现摆脱其他 /etc
内容。
事实上,Red Hat 的公司利益正是 systemd 存在的最初原因。这也是为什么 systemd 不仅仅是一个 init 系统,而是成为一堆相互依赖的构建模块,以构建更符合他们嵌入式市场和其他市场份额利益的“操作系统”。
Red Hat 需要这些重大改变成为主要 Linux 发行版的一部分,以便所有第三方软件都能在这个设置上运行,而不是在当前的设置上,Red Hat 必须解决许多问题,这既耗时又困难。
另一个例子是 Red Hat 购买了 Cygnus,这是一家接管了 FSF 编译器工具开发的工程公司。 Cygnus 采用了一种销售 GNU 软件支持的商业模式。这使得他们能够雇佣约 50 名工程师,并通过提供大量修改来推动程序的发展方向。
虽然 Linux 内核和 Linux 发行版过去主要是由社区驱动的项目,但一些大型公司的公司利益已经改变了这一点。有些贡献对社区有益,但许多操作可能不会,目前 Linux 作为一个操作系统(而不仅仅是内核)正在经历重大变化,这些变化远远超出了内核和 GNU 工具的范围。
这种“劫持”和政治操控在像 BSD 或 MIT 这样的宽松许可证下从不会发生。
在宽松许可证下,公司可以做任何他们想做的事情。这种情况永远不会发生,即公司开始“劫持”上游项目或直接影响它们的方向。
相反,从宽松许可证中受益的公司通常会向项目贡献代码,因为这符合他们的利益,让他们的贡献在源代码中可用,同时他们保留“特定公司相关”的私有更改。
正因为如此,Apple 选择从头开始开发一个新的编译器前端,支持 C、Objective-C 和 C ++。然后,clang 项目在 2007 年开源,现在对 LLVM 和 clang 进行改进和更改的贡献者包括多个自由软件项目,如所有的 BSD 项目,还有包括 Microsoft、Google、ARM、Sony、Intel 和 AMD 在内的主要公司。
由于 GCC 源代码对于开发人员来说是一个庞大且复杂的系统,并且因为公司经常开发特定的扩展,他们不希望分享,因此 GCC 现在正在慢慢被抛弃,没有受益于任何重大改进,而是一个真正的自由替代品正在慢慢代替它。
一些公司在使用宽松许可证构建软件时可能会进行改进,但却从未分享这些改进,甚至可能会因此赚取数十亿美元。但实际上,这对自由软件的损害微乎其微。
受损的是整个社会,比如 Microsoft、Apple 和 Google 通过其专有间谍操作系统、版权许可和恶意软件所造成的损害。
但这种损害与自由软件毫无关系。这种损害是资本主义政治体制的结果,只要政治体制偏向利润而不是人民,这种损害将永远存在。
当然,资本主义政治体制造成的损害不仅限于软件或自由,它的贪婪触角延伸到生活的各个角落,造成毁灭性后果。只需看看当前全球的环境危机!或者全球极端贫困的崛起!或者对动物的可怕虐待!一切都是以追求利润为名!
无论 GPL 还是更自由的软件许可证是否存在,这种贪婪和由此造成的损害将永远存在。关键在于,GPL 并没有起到任何帮助作用。无论使用什么软件许可证,损害都会发生,这是一个需要在政治舞台上解决的问题,而不是在软件开发领域。
真正自由许可证的“灵魂”是鼓励合作,帮助人们,从而也帮助公司(因为公司由一群人共同合作构成),让他们认识到贪婪没有任何好处,与其让个别人口袋变得越来越鼓,不如分享和互相帮助。
当然,邪恶的个体将永远存在,有些人永远不会改进,但事实是我们无法通过使用 GPL 来防止任何损害,我们需要做的是教育人们,让他们做出更好的选择。政治家们也需要醒悟过来,他们的贪婪和腐败正在损害他们自己、家人和子孙的未来--甚至腐败的政治家自己也不例外会受到企业利益的剥削。
最终,世界各国政府将不得不因涉及的风险而被迫采用和实施真正自由的软件。没有任何一个国家可以相信其他国家开发的软件,除非源代码完全开放和真正自由,即使是来自盟国的软件!间谍和破坏基础设施的风险太大了!顺便说一下,对于封闭硬件也是如此!
世界上邪恶的根本原因是贫困。人们需要分享和互助,因为这不仅会消除或限制贫困,而且还会在社会中树立一个贪婪会变得非常糟糕的先例。
有些人认为他们拥有的财富是他们应得的。他们不想分享,因为为什么他们要分享?他们已经努力工作来获得他们的财富,其他人也可以做同样的事情。但这是错误的。
无论你相信巧合、运气还是上帝,事实是你的辛勤工作或聪明的商业策略并不是你财富的原因。而是远远超出你控制范围的情况。你成长的地方,成长的方式,你的父母是谁,你认识的人,这些不同情况下出现的机会实际上都是你成功或失败的主要因素。而这些事情都与你的个人行为无关。这些事情都远远超出了你的控制范围。事实上,你的辛勤工作几乎毫无作用。你可以更加努力地工作,更加聪明地经营,但是仅仅把你移动几英寸,结果就完全不同了,在一个地方取得的巨大成功在另一个地方可能会彻底失败。
而这些事情正是你需要分享的原因,无论是软件还是财富。因为这些情况与你无关,你的财富不是你的天才所积累的,绝不是,不帮助他人,把财富留在自己手中,你为他人树立了一个非常糟糕的榜样,这是所有这一切中最具破坏性的部分。通过不去分享,你向年轻人和其他人展示了为了变得富有,他们需要像你一样! 这导致更少的人分享,更少的人互相帮助,对我们整个人类来说,没有什么比贪婪更具破坏性了。
通过分享和互助,我们鼓励良好行为和良好关系,只要我们大多数人继续这样做,“作恶”最终不仅没有好处,而且对最终结果造成的损害是如此巨大,以至于你必须克制自己。
我们无法通过使用 GPL 来阻止软件世界或世界上的邪恶。像 Microsoft 这样的公司无论如何都会做恶。他们将开发自己的软件无论如何。阻止他们使用你特定的软件并不会改变任何事情,实际上往往做的更多的是伤害而不是帮助。但是通过大规模地做好事并教育人们,最终的结果将是没有人会从邪恶的公司购买任何东西。
目前只有少数人理解这一点,也只有少数项目以这种方式运作,这就是为什么这是一个如此缓慢的过程。但是 GPL 压根没有起到任何帮助,当贪婪的公司“劫持”项目时,它只会让事情变得更糟。只需看看企业对 systemd 的兴趣对像 Debian 项目这样的项目造成的损害,仅仅作为一个例子。
“自由软件”意味着尊重用户的自由和社区。粗略地说,这意味着用户有权运行、复制、分发、研究、改变和改进软件。因此,“自由软件”是关于自由而不是价格的问题。要理解这个概念,你应该将“自由”理解为“言论自由”,而不是“免费的啤酒”。我们有时将其称为“libre 软件”——借用法语或西班牙语中表示“自由”的单词,以表明我们的意思并非软件是免费的。
我们为这些自由而奔波,因为每个人都应该拥有它们。有了这些自由,用户(无论是个人还是集体)都可以控制程序及其对他们的作用。当用户无法控制程序时,我们称其为“非自由”或“专有”程序。
GPL 所设立的限制本质上是非自由的,并且这不是从哲学的角度而是从真正的实施角度来看的。GPL 是导致许多采用宽松许可证发布的开源项目无法集成到 Linux 的根本原因。
我们希望提供源代码,任何人都可以出于任何目的使用,没有限制。我们努力使我们的软件强大和安全,并鼓励公司使用他们想要的任何部分。
当人们使用 GPL 时,他们主要是试图阻止某些公司将他们的软件带走,对其进行改进或更改,然后将该软件作为专有产品出售。
但我们试图实现什么?是通过专有软件的竞争吗?是阻止人们通过开发软件来谋生、维持生计吗?
让我们引用理查德·斯托曼(Richard Stallman)的话:
“使用自由软件意味着做出一种政治和道德选择,主张学习的权利,并与他人分享我们所学到的知识。自由软件已成为一个学习社会的基础,在这个社会中,我们以一种他人可以建立和享受的方式分享我们的知识。”
目前,许多人使用剥夺用户这些自由和好处的专有软件。如果我们复制并将其给朋友,如果我们试图弄清楚程序的工作原理,如果我们在自己的家中的多台计算机上放置副本,我们可能会被抓住并罚款或入狱。这是你在使用专有软件时接受的许可协议的细则中所写的。
这是一个高度混乱的解释,其中存在几个矛盾之处。
我认为:不要使用阻止你将副本分享给朋友的专有软件。不要使用会监视你或限制你对硬件使用的专有软件。教育大众使用真正自由的软件,但不要做伪善,反对限制自由的许可证,同时限制真正的软件自由。
我想我们都可以认同,人们通过构建软件来谋生并为家人解决温饱没有任何问题。我们不喜欢的是当人们,以及相应的公司,变得过于贪婪。
在 1969 年(我称之为腐败的)美国司法部指控 IBM 通过将免费软件与 IBM 硬件捆绑在一起来破坏其他企业。其结果是 IBM 解除了硬件和软件的捆绑,软件从硬件中独立出来成为独立于硬件的产品。在 1968 年,一家名为 Informatics 的公司推出了第一个商业软件应用,并设法确立了“软件产品”的概念和非常高的回报率。Informatics 开发了永久许可证,现在已成为计算机行业的标准,其中所有权永远不会转移给客户。
这就是问题的本质——贪婪!
认为当你购买某物时,它仍然不属于你,这与理性的基础相矛盾。这种自相矛盾的想法无论如何都不会被正常人接受,真的需要最高层次的腐败来接受这种胡说八道并通过法律来强制执行!这也是所谓的软件盗版永远不会停止的原因。分享和帮助同胞是人性的本质!只有最贪婪和腐败的人才会反对这一点。
这就是资本主义的核心问题,它完全是由金融利益驱动的!
尽管我们可以说 GPL 是基于人们普遍自私和邪恶的前提而创建的,他们永远不会出于原则和善意而回馈,但它并未解决问题,也无助于解决问题。我们需要的是一种许可证,基于人们通常是善良的,并且许多人会出于原则和善意而回馈。然后我们需要教育和树立良好的榜样,避免和回避贪婪,我坚信通过使用比 GPL 更宽松的许可证,我们将获得最佳结果。
作为最后一点评论。我理解 GPL 的历史背景,我真诚而深刻地尊重 GPL 背后的原因。并不是我认为 GPL 是邪恶的,只是我认为它在当今的软件世界中造成的伤害比好处多。我还相信通过强制非自由的方式来鼓励自由和共享是行不通的,不论从哪个角度看,这都是一个双重标准。
我们还必须记住并关注这样一个事实,即公司由人组成,主要是人们在努力谋生。我们只真正与人打交道,而不是软件。
我还相信,理查德·斯托曼和极端的反公司组织的一些观点是极端和误导的,通过宣扬双重标准是永远无法影响到人们的。
我认为,我们可以将贪婪和极端公司放在一边,将理查德·斯托曼和极端反公司的组织放在另一边。这两个极端都不会对我们产生任何好处。
原地址:
译者:ykla & ChatGPT
最后发布日期:2022-04-08
和 FreeBSD 一起工作是非常特别的。这是因为它的设计方式,不同组件的组合方式,以及如何处理配置和调优,以及所有这些都是如此完美地整合在一起。
在我自 1998 年以来使用的大多数 GNU/Linux 发行版中,一直到今天,都会有一种“不匹配”的感觉。
举个例子,Debian GNU/Linux 有自己的做事方式,它是特定于该发行版的。通过使用一套特定的配置管理工具和补丁来使第三方软件符合“Debian 方式”的设置。虽然从某种意义上说,这可以统一 Debian 发行版的做事方式,但这却与上游配置不一致,这使得处理起来非常烦人。特别是当某些事情运行不正常时,或者上游文档中诉说的方式与 Debian 上的设置不符时,这就成了一个问题。这种方法的另一个问题是,一些第三方软件,甚至是发行版的核心元素(比如 systemd),无法被强制塑造成“Debian 方式”。结果就是系统中的一些部分按照“Debian 方式”运行,而其他部分则不是。Debian GNU/Linux 已经采用了 systemd,但与此同时,默认的网络部分是 Debian 特有的。有时,你必须禁用和删除 Debian 特定的东西才能让 systemd 特定的东西工作。所有这些都是由于该系统是由许多不匹配的组件组合而成造成的。
在这方面,Arch Linux 与 Debian 相反,因为 Arch Linux 发行版希望第三方软件保持与上游一致,因此除非绝对必要,否则不会做任何更改。这很棒,因为这意味着上游文档与软件是匹配的。然而,虽然这有助于改善系统的整体管理,但事实仍然是,Linux 内核、用户空间工具以及其他所有内容都是由不同的实体开发的。在 FreeBSD 上,许多用户空间工具具有与内核和系统的其他部分紧密集成的运行时选项。例如,top 命令可以显示与管理 ZFS 文件系统相关的信息。在 GNU/Linux 上没有类似的功能。
Ubuntu 则更糟糕。因为它是基于 Debian 的,它在很多方面都使用了 Debian 的工具和设置,但与此同时,还有“Ubuntu 方式”,其中对 Debian 进行了一些改动,然后还添加了一层所谓的用户改进工具层,这有时会导致 Ubuntu 出现不可理解的故障。
在 FreeBSD 上,你会立即注意到你正在处理一个“完整的操作系统”,一个非常完美地组合在一起的系统。内核和基本系统完全与第三方应用程序分开。基本系统配置存放在 /etc
目录下,而所有第三方配置都存放在 /usr/local/etc
目录下。你可以在 man 页中找到关于配置、调优或设置的所有信息。
你有 rc 实用程序,这是在 调用它后控制自动引导过程的命令脚本,还有、内核管理工具以及所有其他不同的,所有这些都非常完美地组合在一起并有很好的文档支持。
由于 FreeBSD 是按照一种完整的操作系统和项目的方式进行管理的,而不是像一堆不同的项目被粘在一起形成的一个发行版,所以这一切都经过深思熟虑,基于多年的经验,并且当事情发生改变时,改变是为了整个社区的利益,而且是根据真实使用案例和行业中出现的问题得到反馈的。
真正理解 FreeBSD 的最好方法之一就是阅读 Michael W. Lucas 的书。他在书中不仅很好地解释和描述了所有的技术问题,还涵盖了重要的历史背景,解释了为什么事物会是现在这个样子。即使你只是对 FreeBSD 感兴趣,我也强烈推荐这本书。
有些人认为文档不是使用某个技术的技术原因,但文档是描述技术的一个重要组成部分。糟糕的文档、过时的文档和缺失的文档应该被视为一个缺陷。
FreeBSD 的文档随系统一起提供,所以你不必在网络上搜索。基本系统的 man 页面质量很高,专门为 FreeBSD 编写。你需要的大部分信息都可以在系统的 man 页面中找到。
(安全性)通常不会破坏操作系统本身,而是破坏在操作系统上运行的程序。在某些情况下,被破坏的程序可能会与操作系统进行交互,从而也破坏了操作系统。保护操作系统意味着你努力确保你计算机的资源只被授权的人用于授权的目的。
FreeBSD 默认配置为性能优越,不像 OpenBSD 那样默认设置为安全(优先)。然而,FreeBSD 提供了许多工具和选项,帮助你保护系统免受攻击。
在安装 FreeBSD 时,安装程序提供一组可以启用或禁用的选项:
隐藏其他用户 ID 的进程
隐藏其他组 ID 的进程
隐藏被监禁的进程
隐藏消息缓冲区
禁用进程调试
随机化进程 ID
禁用 syslogd 网络功能
禁用 Sendmail
安全控制台
非可执行栈和栈保护
大多数 FreeBSD 的其他内核级安全设置都可以在 sysctl security.bsd
中找到,而且每隔几个月都会增加更多的选项。你可以运行命令 sysctl -d security.bsd
来显示你的 FreeBSD 安装中可用的选项。
以下是 FreeBSD 和 Linux 的漏洞统计列表。FreeBSD 通常较低的安全问题数量并不一定意味着它比 Linux 更安全,尽管我确实认为它是如此,但这也可能是因为 Linux 受到了更多地关注。然而,大多数 Linux 发行版的攻击面比 FreeBSD 要大得多。
FreeBSD 拥有出色的工程和发布管理实践。FreeBSD 从想法的构思到公开发布经历了多个步骤。
当有人有一个新的想法并开发出新的东西时,首先会进行同行技术审查。然后它进入“current”分支进行集成测试,根据复杂性或潜在影响,进入稳定分支的迁移窗口会进行调整。然后它进入“stable”分支进行更广泛的用户测试。通常,这也是所有 beta 测试发生的地方,并与更广泛的社区进行合作。然后它进入发布候选测试,通常会持续进行 3 轮测试,然后变为正式发布。这意味着,只要你了解发布和升级说明,你可以相当有信心它会继续正常运行。
针对软件的补丁会发布来修复任何漏洞和错误。
这通常使得 FreeBSD 成为一个非常稳定的操作系统。
FreeBSD Ports 使用 Makefile 自动化编译、安装和卸载软件的过程,通过 make
命令。组成 Port 的文件包含所有必要的信息,可自动下载、提取、打补丁、配置、编译和安装应用程序,并且在在期望的应用程序 Port 目录中执行 make install
或 make install clean
等开始命令后,几乎不需要任何(如果有的话)用户干预。如果该 Port 对其他应用程序或库有依赖关系,则会自动预先安装这些依赖关系。
大多数 Port 都配置有一组默认选项,这些选项被认为对大多数用户来说是适合的。然而,这是关于 Ports 系统的一大优点,这些配置选项可以在安装前使用 make config
命令进行更改。该命令会打开一个基于文本的界面,让用户去选择所需的选项。
在撰写本文时,Ports 中有 30,000 多个 Port 可用。
对于二进制包,你可以选择两个不同的分支:一个被称为“quarterly”,另一个被称为“latest”。
“quarterly”是指从每年 1 月、4 月、7 月和 10 月开始,从 HEAD 分支中切出的 Ports 分支,并且是从这些分支产生的二进制包。
“quarterly”分支为用户提供了更可预测和稳定的 Port 和包的安装和升级体验。这主要通过仅允许来自上游的非功能更新来实现。“quarterly”分支旨在接收安全修复,但也可能会有版本更新、提交的回退、错误修复和 Port 的兼容性或框架更改,这取决于上游的情况。
然而,如果你选择“latest”分支,FreeBSD 将成为滚动发布的操作系统,就像 Arch Linux 一样,它将得到最新的第三方软件。
通过 Poudriere,你可以轻松构建和设置自己的二进制软件包存储库,其中软件包完全按照你的规格和需求构建。
Poudriere 可以处理整个 ports 的批量构建,特定子集的 port,或者单个 Port 及其依赖项。它自动构建软件包,生成构建日志文件,提供签名 pkg 存储库,使得在将补丁提交给 FreeBSD Bug 跟踪器之前可以测试 Port 构建,使得可以使用不同选项测试不同的构建。Poudriere 在一个干净的 jail 环境中进行构建,能够使用 zfs 特定功能。这意味着没有污染主机环境,没有残留文件,没有意外删除,没有更改现有配置文件。
Poudriere 的设置和使用非常简单,因为它没有依赖项,并且可以在任何支持的 FreeBSD 版本上运行。
与 Linux 上的情况不同,ZFS 文件系统在 FreeBSD 上是一等公民。这不仅意味着根目录可以使用 zfs,且安装程序原生就支持此功能,而且还意味着许多基本系统工具已经紧密集成和构建以支持 ZFS。在 FreeBSD 上运行 ZFS 与在 Linux 上运行 ZFS 非常不同。在 FreeBSD 上,你可以获得更多用于专门调查 ZFS 性能问题或其他相关问题的工具。
ZFS 的一些主要特点包括:
设计用于长期存储数据,并具有无限可扩展的数据存储大小,可以达到零数据丢失和高可配置性。
对所有数据和元数据进行分层校验,确保整个存储系统在使用时可以进行验证,并确认正确存储,或在损坏时进行修复。校验和存储在块的父块中,而不是存储在块本身。这与许多文件系统不同,其中校验和(如果有)存储在数据中,因此如果数据丢失或损坏,校验和也很可能丢失或不正确。
可以存储用户指定数量的数据或元数据副本,或者选择的数据类型,以提高从重要文件和结构的数据损坏中恢复的能力。
在某些情况下,可以自动回滚文件系统和数据的最近更改,以避免错误或不一致性。
自动(通常)无声自愈数据不一致性和写入失败检测,对于所有数据可以重建的错误。数据可以通过以下所有方法进行重建:存储在每个块的父块中的错误检测和纠正校验和;磁盘上保存的数据(包括校验和)的多个副本;写意图在 SLOG(ZIL)上记录的应该发生但未发生的写入(在断电后);来自 RAID/RAIDZ 磁盘和卷的奇偶校验数据;来自镜像磁盘和卷的数据副本。
本地处理标准 RAID 级别和额外的 ZFS RAID 布局(“RAIDZ”)。RAIDZ 级别仅在所需的磁盘上条带化数据,以提高效率(许多 RAID 系统会在所有设备上进行无差别条带化),并且校验和允许将对不一致或损坏数据的重建最小化到具有缺陷的那些块。
本地处理分层存储和缓存设备,通常是一个卷相关的任务。因为 ZFS 还了解文件系统,所以它可以使用与文件相关的知识来通知、整合和优化其分层存储处理,这是单独设备无法做到的。
本地处理快照和备份/复制,可以通过集成卷和文件处理来实现高效。相关工具在低层次上提供,并需要外部脚本和软件来进行利用。
本地数据压缩和重复删除,尽管后者主要在 RAM 中处理,并且需要大量内存。
高效地重建 RAID 数组——RAID 控制器通常必须重建整个磁盘,但 ZFS 可以将磁盘和文件的知识结合起来,将任何重建限制在实际缺失或损坏的数据上,从而大大加快重建速度。
不受影响的 RAID 硬件更改,这影响了许多其他系统。在许多系统上,如果自包含的 RAID 硬件(例如 RAID 卡)失败,或者数据被移动到另一个 RAID 系统,文件系统将缺少原始 RAID 硬件上的信息,这些信息需要用于管理 RAID 数组上的数据。这可能导致数据的完全丢失,除非可以获得和使用与“过渡设备”相同的硬件。由于 ZFS 自己管理 RAID,因此 ZFS 池可以迁移到其他硬件,或者可以重新安装操作系统,RAIDZ 结构和数据将被 ZFS 识别,并立即再次被 ZFS 访问。
能够识别在缓存中本应找到的数据,但最近已被丢弃的数据,这使得 ZFS 可以在后续使用时重新评估其缓存决策,并实现非常高的缓存命中率(ZFS 缓存命中率通常超过 80%)。
可以使用替代缓存策略来处理其他情况下可能导致数据处理延迟的数据。例如,同步写入可能会减慢存储系统的速度,可以通过将其写入快速独立缓存设备(称为 SLOG,有时称为 ZIL – ZFS Intent Log)来转换为异步写入。
可高度调整——可以配置许多内部参数以实现最佳功能。
可用于高可用性集群和计算,尽管不完全为此设计。
当然,当你在 Linux 上运行 ZFS 时,你也可以获得所有这些功能。然而,有一个很大的区别,因为没有一个 Linux 发行版与 FreeBSD 对 ZFS 的集成程度接近。
由于与 ZFS 的紧密集成,FreeBSD 还支持启动环境。使用启动环境,你可以安装多个核心操作系统版本并选择要引导的版本。因此,启动环境是工作系统的可引导克隆或快照。使用启动环境,你可以执行强化的升级或对系统进行更改,你不必担心破坏任何东西,因为你始终可以回滚和丢弃。
这也意味着你可以在新的 ZFS 启动环境内更新 FreeBSD 系统,而无需触及正在运行的系统。你还可以在 FreeBSD Jail 内执行升级并测试结果。甚至可以将 ZFS 启动环境复制或移动到另一台机器上。
FreeBSD 有 bectl 实用程序,可简化管理启动环境。
FreeBSD 使用传统的 BSD 风格 init。在 BSD 风格 init 中,没有运行级别,也没有 /etc/inittab
文件。相反,启动由 rc 脚本控制。
在 /etc/rc.d/
中找到的脚本是属于基本系统的应用程序,如 cron、sshd、syslog 等。在 /usr/local/etc/rc.d/
中的脚本是用户安装的第三方应用程序,如 NGINX 或 Postfix。
如前所述,由于 FreeBSD 是作为完整的操作系统开发的,用户安装的第三方应用程序不是基本系统的一部分。第三方应用程序是使用 Packages 或 Ports 安装的。为了将它们与基本系统分开,用户安装的应用程序被安装在 /usr/local/
下。因此,用户安装的二进制文件位于 /usr/local/bin/
,而配置文件位于 /usr/local/etc/
。
在 BSD init 系统中,通过在 /etc/rc.conf
中添加服务条目来启用服务。默认设置位于 /etc/defaults/rc.conf
中,这些默认设置会被 /etc/rc.conf
中的设置覆盖。
以下在 /etc/rc.conf
中的条目启用 sshd:
你可以手动添加该条目,或者可以运行:
这将自动编辑 /etc/rc.conf
并添加该条目。
你也可以手动启动服务,方法是:
这将自动编辑 /etc/rc.conf
并添加该条目。
你也可以手动启动服务,方法是:
如果某个服务尚未启用,但你仍然希望启动它,可以使用以下命令在命令行中启动:
FreeBSD jail 在 2000 年 3 月 14 日的 FreeBSD 4.0 版本中首次引入。
通过 jail,可以创建各种虚拟机,每个虚拟机都有自己安装的一组实用程序和自己的配置。这使得它成为尝试软件的安全方法。例如,可以在不同的 jail 中运行不同版本或尝试不同配置的 Web 服务器软件包。由于 jail 仅限于狭窄的范围,因此即使由 jail 内的超级用户执行的错误配置或错误也不会危及其余系统的完整性。由于实际上没有在 jail 外部修改任何内容,因此可以通过删除 jail 的目录树副本来丢弃“更改”。
然而,FreeBSD jail 并未实现真正的虚拟化;它不允许虚拟机运行与基本系统不同的内核版本。
由于 FreeBSD jail 在受限环境和系统其他部分(其他 jail 和基本系统)之间实现了隔离,因此 FreeBSD jail 是提高服务器安全性的有效方式。
Bastille 使用 FreeBSD jail 作为容器平台,并添加了模板自动化,用于创建类似 Docker 的容器化软件集合。
模板负责安装、配置、启用和启动软件,提供了构建容器化堆栈的自动化方法。
Capability 权限-具有细粒度权限的精炼文件描述符
Capability 模式-拒绝访问全局命名空间的进程沙箱
进程描述符-以能力为中心的进程 ID 替换
匿名共享内存对象-扩展 POSIX 共享内存 API,支持与文件描述符(Capability)关联的匿名交换对象
rtld-elf-cap-修改的 ELF 运行时链接器,用于构建沙箱应用程序
libcapsicum-用于创建和使用能力和沙箱组件的库
libuserangel-允许沙箱应用程序或组件与用户 angel(如 Power Boxes)交互的库
chromium-capsicum-谷歌的 Chromium Web 浏览器的版本,使用 Capability 模式和 Capability,以提供高风险网页呈现的有效沙箱保护
FreeBSD 对 Capsicum 的实现由 Robert Watson 和 Jonathan Anderson 开发,并自 FreeBSD 10.0-RELEASE 起默认支持。FreeBSD 的 Capsicum 是参考实现,不仅作为 Capsicum API 和语义的参考,还为其他平台(例如,Linux 上的 Capsicum 和 DragonFlyBSD 上的 Capsicum)的 Port 提供了起点源代码。
有关 FreeBSD 上的 Capsicum 的更多信息,请参见:
DTrace 可以提供运行系统的全局概览,例如活动进程使用的内存、CPU 时间、文件系统和网络资源量。DTrace 还可以提供细粒度的信息,例如正在调用特定函数的参数日志,或者访问特定文件的进程列表。
bhyve 支持虚拟化多个客户操作系统,包括 FreeBSD 9+、OpenBSD、NetBSD、Linux、illumos、DragonFly、Windows Vista 及更高版本以及 Windows Server 2008 及更高版本。当前的开发工作旨在扩展对 x86-64 架构的其他操作系统的支持。
bhyve 虚拟化管理程序从 FreeBSD 10.0-RELEASE 起成为基本系统的一部分
FreeBSD 注重选择,因此在基本系统中内置了三种不同的防火墙:PF、IPFW 和 IPFILTER,也称为 IPF。
自 FreeBSD 5.3 版本以来,OpenBSD 的 PF 防火墙的移植版本已作为基本系统的一部分整合进来。PF 是一个完整的、功能丰富的防火墙,可选择支持 ALTQ(交替排队),提供服务质量(QoS)支持。PF 的过滤语法类似于 IPF,但进行了一些修改以使其更加清晰。PF 集成了网络地址转换(NAT)和服务质量(QoS),通过导入 ALTQ 排队软件并将其与 PF 的配置链接来实现。PF 还扩展了一些功能,如 pfsync 和 CARP 用于故障转移和冗余,authpf 用于会话认证,ftp-proxy 用于简化复杂的 FTP 协议的防火墙设置。此外,PF 还支持 SMP(对称多处理)和 STO(有状态跟踪选项)。
PF 的许多创新功能之一是其日志记录。PF 的日志记录可以在 pf.conf 中针对每个规则进行配置,并且通过名为 pflog 的伪网络接口提供 PF 的日志记录,这是从内核级别模式提取数据到用户级程序的唯一方式。可以使用诸如 tcpdump 等标准工具监视日志。
FreeBSD 在/etc/rc.firewall 中提供了一个示例规则集,为常见场景定义了几种防火墙类型,以帮助初学者生成适当的规则集。IPFW 提供了强大的语法,高级用户可以使用它来制定满足特定环境安全需求的自定义规则集。
IPF 是一个跨平台的开源防火墙,已经移植到多个操作系统,包括 FreeBSD、NetBSD、OpenBSD 和 Solaris。IPF 是一个内核级防火墙和 NAT 机制,可以通过用户空间程序进行控制和监视。防火墙规则可以使用 ipf 进行设置或删除,NAT 规则可以使用 ipnat 进行设置或删除,可以使用 ipfstat 打印有关 IPF 内核部分的运行时统计,并可以使用 ipmon 将 IPF 操作记录到系统日志文件。
IPF 最初使用“最后匹配规则获胜”的规则处理逻辑,并且只使用无状态规则。此后,IPF 已被增强以包括快速(quick)和保持状态(keep state)选项。
FreeBSD GEOM 是 FreeBSD 操作系统的主要存储框架。它提供了访问存储层的标准化方式。GEOM 是模块化的,允许 GEOM 模块连接到框架。例如,geom_mirror 模块为系统提供了 RAID1 或镜像功能。已经提供了许多模块,并且新的模块始终由各种 FreeBSD 开发人员进行活跃开发。
由于 GEOM 的模块化设计,可以将模块堆叠在一起形成一系列 GEOM 层。例如,在 geom_mirror 模块之上可以添加一个加密模块,例如 geom_eli,以提供镜像和加密的卷。每个模块都有消费者和提供者。提供者是 GEOM 模块的来源,通常是物理硬盘,但有时也是虚拟化磁盘,例如内存磁盘。反过来,geom 模块提供输出设备。其他 GEOM 模块,称为消费者,可以使用此提供者来创建相互连接的模块链。
FreeBSD 提供了与 Linux 的二进制兼容性。这使得用户可在 FreeBSD 系统上安装和运行许多 Linux 二进制文件,而无需首先去修改二进制文件。在某些特定情况下,Linux 二进制文件甚至可能在 FreeBSD 上比在 Linux 上运行更好。
并非所有特定于 Linux 的操作系统功能都在 FreeBSD 上得到支持。例如,如果 Linux 二进制文件过度使用 i386 特定调用,例如启用虚拟 8086 模式,则它们将无法在 FreeBSD 上工作。
FreeBSD 包含对安全事件审计的支持。事件审计支持可靠、细粒度且可配置的记录各种与安全相关的系统事件,包括登录、配置更改以及文件和网络访问。这些日志记录对于实时系统监视、入侵检测和事后分析非常有价值。FreeBSD 实现了 Sun 发布的基本安全模块(BSM)应用程序编程接口(API)和文件格式,并与 Solaris 和 Mac OS X 的审计实现相互操作。
本文绝不是使用 FreeBSD 而非 GNU/Linux 的技术性原因的详尽列表。还有其他原因我没有涉及。但是,这些只是我个人认为最突出的一些特点。
除非你有非常特定的需要使用 GNU/Linux,例如特定硬件的支持,否则在运行和管理 FreeBSD 时,你通常会体验到更强的概览、控制和和谐感。
可能会在 FreeBSD 上遇到问题的情况是缺乏对硬件的支持,或者特定的第三方应用程序非常针对 Linux。后者主要涉及桌面应用程序,而不是服务器应用程序。例如,Mozilla 开发 Firefox 时主要关注 Linux、OSX 和 Windows。这些被称为 Tier-1 平台。FreeBSD、OpenBSD、NetBSD 和 Solaris 位于支持列表的底部,属于 Tier-3 平台。Mozilla 开发人员并不可靠地使用非 Tier-1 平台或构建环境。在任何给定的时间,从 mozilla-central 构建的非 Tier-1 平台的 Firefox 可能工作不正确或根本无法构建。Tier-3 平台有一个维护者或社区,试图保持平台的正常工作。这些平台不受 Mozilla 的持续集成过程支持,Mozilla 不会定期在这些平台上进行测试。
这意味着在 FreeBSD 上,维护者必须花费额外的时间来确保应用程序(如 Firefox)编译和在 FreeBSD 上工作。而且,通常当出现问题时,Mozilla 开发人员不会像在 Linux、Windows 或 OSX 上出现问题时那样关注这些问题。其他 Linux 中心的第三方应用程序也是如此。
这并不意味着这些应用程序在 FreeBSD 上不工作,只是偶尔你可能会遇到某种问题。
很遗憾 FreeBSD 没有得到与 GNU/Linux 同样多的关注。在许多情况下,尤其是在生产服务器和商业用途中,公司可以通过运行 FreeBSD 而不是 Linux 获得很多好处,而且通常他们之所以运行 Linux,只是因为习惯和对 FreeBSD 的了解不足。
下次你需要部署新系统时,我建议你也研究和测试下 FreeBSD。在通常情况下,他将是值得你为它花费时间的。
原文:
发布日期:2023.9.18
译者:ykla & ChatGPT
会议日期: 2023 年 9 月 4 日当周
会议录像链接:
TL;DR 以下表格总结了优先项目的状态。蓝色行似乎是我们可以立即采取行动的项目:
项目 | 明白下一步怎么做 | 项目负责人 | 用户/测试者 | 开发者 |
---|
鉴于这个工作组在“Zero Trust Builds”和“Ports Automation”项目上可能取得的进展有限,我们建议将它们放到一旁,而不是将更好的证书机构支持纳入范围,因为社区似乎可以采取明确的下一步行动。
我们回顾了功能和基础设施优先级和难度调查的结果,并开始制定下一步计划,以解决最高优先级的问题。
以下是工作组为通用企业调查用例的功能和基础设施需求优先级的排名:
然后,我们逐个讨论了每个类别中的前三个问题以及如何继续。
这被认为是最重要的缺失部分,差距很大。令人高兴的是,已经有正在进行的工作。
以下是我所了解到的现有项目:
我们同意完成一个非常轻量级的 PRD(产品需求文档),以便我们就最终目标达成一致。
需要志愿者。
开发测试和文档协议,并根据 PRD 评估上述列出的方法。
需要 3 名志愿者或更多。
确定哪种方法最适合要求,然后确定如何将其推向生产就绪状态。
需要 2 名志愿者。
我已经创建了一个 Wrike 项目,包括上述三项任务,并将邀请志愿者加入。
正在寻找志愿者协助。下一步是进行电话会议,了解现有状态和所需工作。
这个问题引发了一些很好的讨论。在 FreeBSD 中需要支持这些芯片和驱动程序,以用于高性能计算和人工智能工作负载。这些市场的许多用户喜欢 FreeBSD,因为它具有安全性、稳定性和性能,但需要更多的 NVIDIA 本机支持。讨论的一个使用模型是在私有数据上训练模型,然后在 FreeBSD 上托管,以获得诸如 ZFS、安全性等功能的好处。保护数据模型至关重要,并且在 FreeBSD 上托管是实现这一目标的好方法。
我提供了两个链接,以提供特性请求给 Nvidia:
如果社区可以持续请求对 FreeBSD 的支持,希望能够得到 NVIDIA 的一些帮助。
工作组中的其他两名成员表示愿意提供帮助。感谢他们!
Zoran,来自 Supermicro,可以测试并提供错误以帮助支持驱动程序开发。
Jason 可以在 Azure 上提供帮助。
我将有机会在下周与 NVIDIA 的一些人交谈,并将提出这个讨论并报告回应。
在上周早些时候,我们与一位有着与 Samba 团队合作经验的开发者进行了交谈。他们将通过电子邮件联系 Samba 团队,并提供帮助将补丁(回馈给)上游。
Samba 团队和其他项目要求的一个事项是使用 FreeBSD 进行 GitHub Actions,以帮助自动化工作。FreeBSD 基金会将联系 GitHub 和 Microsoft 的人,尝试将这个功能引入。
我已经创建了一个 Wrike 项目,包括上述三项任务,并将邀请志愿者加入。
现在有 5-6 个 VM 管理器,大部分相同。
工作组似乎同意最好的下一步是组织一个电话会议或某种讨论,与各种工具的维护者讨论是否可以通过整合来提高效率。
通过这个过程,希望有一个默认的配置。
正在寻找志愿者协助。
与 AD/DNS 类似,这里的下一步是进行快速电话会议——查看目前的情况,还需要做什么,需要有人可以提交补丁。
Greg 将采取行动,与 Joe/Ed/其他人一起确定谁是最适合提供帮助的人。
这是第二次企业工作组会议的回顾摘要,详细信息可在会议录像中找到。
在 1990 年初,将专有应用程序放到 Linux 上的压力变得压倒性。这些应用程序通常必须链接到系统库。这种压力产生了一个修改版的 GPL,称为 LGPL(“Library”,现已更名为“Lesser” GPL)。LGPL 允许专有代码链接到 。你无需发布与 LGPL 许可的库动态链接的源代码。另一方面,如果将一个应用程序静态链接到 glibc 中,在嵌入式系统中经常需要这样做,那么你就不能保持该应用程序的专有性,也就是说,源代码必须公开。
正如我在我的文章中已经解释过的那样,Red Hat 联系了几个第三方项目,试图说服它们依赖 systemd,例如 Lennart Poettering 在 上所做的尝试,以及 Red Hat 开发者“keszybz”在 上所做的尝试。尽管这些尝试往往伪装成技术问题,但当你阅读 Gnome 邮件列表和其他地方的长篇电子邮件通信时,真正的意图变得非常明确。
是根据宽松许可证发布的,最初是在 2005 年由 Apple 发起的项目,这是另一个与 GPL 相关的问题的很好例子。GCC 根据 GPL 第 3 版许可,要求分发 GCC 的扩展或修改版本的开发者发布其源代码,而 LLVM 作为 clang 后端则有类 BSD 的许可证,没有这个要求。
值得注意的是,GPL 违规是一个普遍存在的问题。在世界各地,GPL 软件被视为“公有领域”,在许多情况下几乎没有实际影响。这就是为什么成立了 。
众所周知,和自由软件基金会正在大力推广自由软件。在 FSF 的网站上,我们找到了关于“自由软件”的以下定义:
与此同时,GNU 项目和 FSF 背书并大量使用 ,根据上述定义,由于它限制了你对软件的使用,这在本质上是“非自由”的。我不是在谈论关于自由的哲学讨论,或者真正的自由是指能够无限制地行动,这不是这篇文章的重点。这是关于事实,即 GPL 与其创建的目的相矛盾。
这与相悖,在上,它声明:
以下是 项目创始人 在 2007 年 8 月电子邮件,当时一群 Linux 开发人员试图修改双许可的 ath5k 驱动程序的许可证。
FreeBSD 还有 ,涵盖从安装到日常使用 FreeBSD 的所有内容。这本手册也可以在安装过程中本地安装。尽管手册中偶尔会有一些过时的部分,因为这本书是许多人持续合作的结果,但总体上它是更新的,而且写得很好。
在这篇文章中,我无法提供一个详尽的选项和功能列表,因为关于 FreeBSD 的安全性,可以轻松填满一本书。所以,我强烈推荐阅读 Michael W. Lucas 的书,如果你想更深入地研究 FreeBSD 的一些安全功能。
年份 | FreeBSD | Linux |
---|
要了解有关特定漏洞的更多信息,你可以查看 和 的 CVE 详情网站。
FreeBSD 的 是一项令人惊叹的工程壮举。NetBSD 的 和 OpenBSD 的 都起源于 FreeBSD 的 ports 系统。
虽然 FreeBSD 也有像 Debian Linux 或 Arch Linux 一样的二进制包,由 包管理器处理,但 FreeBSD 还可以从源代码编译软件,使用用户特定的编译时间配置。Arch Linux 实际上受到 FreeBSD ports 系统的很大启发。但是,使用 FreeBSD ports 系统,你可以在 make
期间选择最相关的编译时间选项,而在 Arch Linux 上必须手动编辑和更改包维护者的 脚本(基本上,你应该接受默认设置)。
Poudriere 是一个用于创建和测试 FreeBSD 软件包的实用程序。它利用 系统来设置隔离的编译环境。这些 jail 可以用于为任何版本的 FreeBSD 构建二进制包。一旦软件包构建完成,它们的布局与官方镜像完全相同。这些软件包可以被 FreeBSD 的 pkg 二进制软件包管理工具使用。
你可以在上阅读更多关于初始化系统的内容。
FreeBSD 系统是另一个令人惊叹的工程成果。
FreeBSD jail 是一种技术,可使你将基于 FreeBSD 的系统安装到几个独立的小型系统中,称为 jail。在 jail 中运行的系统共享相同的内核和系统资源,因此开销非常小。
对 FreeBSD jail 的需求源自一家小型共享环境托管提供商(R&D Associates, Inc.公司的所有者 Derrick T. Woolworth)希望在他们自己的服务和客户的服务之间建立清晰明确的分隔,主要是出于安全和易于管理的考虑。解决方案(由 开发)不是添加新的细粒度配置选项层,而是将系统分区,包括其文件和资源,以使只有合适的人可以访问正确的区域。
是用于在 FreeBSD 上自动化部署和管理容器化应用程序的开源系统。
Capsicum 是在开发的一个沙箱框架,得到了 Google、FreeBSD 基金会和 DARPA 的资助。Capsicum 扩展了 POSIX API,提供了几个新的操作系统原语,以支持 UNIX 类操作系统上的对象功能安全性:
是从 Solaris 移植的全面动态跟踪框架。DTrace 提供了强大的基础设施,允许管理员、开发人员和服务人员简明地回答有关操作系统和用户程序行为的任意问题。
有关 DTrace 用法的更多信息,请参见 和 。
Hacker News 上也有关于 的讨论,包含许多相关评论。
是一个原生的 FreeBSD 虚拟化管理程序,可以在虚拟机内运行客户操作系统。可以使用命令行参数指定虚拟 CPU 数量、客户内存量和 I/O 连接。
IPFW 是为 FreeBSD 编写的有状态防火墙,支持 IPv4 和 IPv6。它包括几个组件:内核防火墙过滤器规则处理器及其集成的数据包计费设施、日志设施、NAT、 流量整形器、前置设施、桥接设施和 ipstealth 设施。
FreeBSD 具有 500 多个可以使用 工具读取和设置的系统变量。这些系统变量可用于对运行中的 FreeBSD 系统进行更改。这包括许多 TCP/IP 堆栈和虚拟内存系统的高级选项,可显著提高有经验的系统管理员的性能。
我个人在服务器和桌面工作站上都运行 FreeBSD。我的主要工作站使用 FreeBSD 并配备 窗口管理器。我在同一台机器上的另一个硬盘上运行 Arch Linux,因为我偶尔需要 Linux。从纯桌面使用角度来看,你几乎看不到任何区别,无论是性能方面、简单性方面还是其他任何方面。
项目 | 说明 | 链接 |
---|
1999 | 18 | 19 |
2000 | 27 | 5 |
2001 | 36 | 22 |
2002 | 31 | 15 |
2003 | 14 | 19 |
2004 | 15 | 51 |
2005 | 17 | 133 |
2006 | 27 | 90 |
2007 | 9 | 62 |
2008 | 15 | 71 |
2009 | 11 | 102 |
2010 | 8 | 123 |
2011 | 10 | 83 |
2012 | 10 | 115 |
2013 | 13 | 189 |
2014 | 18 | 130 |
2015 | 6 | 86 |
2016 | 6 | 217 |
2017 | 23 | 454 |
2018 | 29 | 177 |
2019 | 18 | 170 |
2020 | 31 | 126 |
2021 | 25 | 158 |
2022 | 1 | 73 |
-------- | -------- | ------- |
总计 | 430 | 2780 |
作者:Greg Wallace
发布日期:2023 年 8 月 14 日
译者:ykla & ChatGPT
剑桥大学计算安全案例研究
在创新性突破尚未进入风险投资提案、甚至你的笔记本电脑、微服务或智能手机之前,它们通常是从大学或工业研究实验室的假想开始的。
以 Docker 为例。这个微服务和敏捷方法学的基石是建立在 FreeBSD 中的虚拟化和系统分区创新——Jail 之上。而你可能已经猜到,Jail 正是从 Robert Watson 和 Poul-Henning Kamp 的研究衍生出来的。
在对 Jail 的研究之后,Watson 教授加入了英国剑桥大学计算机科学系,继续研究和开发改进计算机系统安全的突破性方法。他的工作使他获得了 EuroSys Jochen Liedtke 青年研究员奖,该奖每年授予展示在系统研究中表现出色的欧洲青年研究者(即获得博士学位后不超过 10 年)。
在选择 Watson 教授时,EuroSys 指出了他在系统研究中的悠久贡献历史,包括共同开发 Jail 安全模型,该模型是当代操作系统容器化的知识基础;他领导了开发内核访问控制框架,该框架用于从 macOS 和 Junos 到 FreeBSD 的应用程序沙箱;他开发了 Capsicum 操作系统安全模型,以及最近领导开发 CHERI 计算机架构。CHERI 现在是英国工业战略挑战基金(ISCF)1.87 亿英镑(约 2250 万美元)数字安全设计(DSbD)计划中探索的关键技术。
CHERI(Capability Hardware Enhanced RISC instructions)是一种架构特性,可实现细粒度的 C/C++ 内存安全和可扩展的软件隔离,并于 2010 年由国际斯坦福研究所和剑桥大学开始开发。
为了使 CHERI 能够编写和运行程序,需要一个开发板。这就是 Morello 的用途。Arm 架构的 Morello 是个融合了 CHERI 保护模型支持的处理器设计、单片系统(SoC)和开发板。Morello 开发板、编译器和工具链可使研究人员和工业从业者编写和运行利用 CHERI 的程序。例如,AutoCHERI 正在将 CHERI 和 Morello 作为超安全架构测试用于车辆遥测控制单元。
Watson 教授非常愿意与 FreeBSD 基金会一起讨论他的研究。这次讨论阐明了学术研究的作用,以及实验室突破如何进入我们的数字社会。Watson 教授的工具中的一个关键组成部分是 FreeBSD。与许多其他操作系统一样,它是开源的,因此支持必要的定制。与 Linux 相比,BSD 许可证的宽松性对于支持他的研究所依赖的公私合作伙伴关系至关重要。
要理解为什么在通常情况下开源,特别是 FreeBSD,对于 Watson 教授的工作,以及更广泛的学术计算机系统研究而言,是非常关键的,首先需要了解研究流程。Watson 教授解释道:“在系统研究中,我们建立了关于想法的原型。你从关于系统应该如何工作、不应该工作的纯假想开始,或者可能是你想出来的一些工具的工具,或者是设计的变化将如何工作,这些都是知识贡献。然后,你将其应用于一个制品,比如操作系统或编译器。然后进行评估,然后根据你的假设、不良结果的学习或者存在问题的情况进行迭代,等等。在 EuroSys 奖提到的所有工作中,FreeBSD 都是那个起始制品。”
“你可以自己构建参考基准制品,但你真正想要的是当前最先进的状态,具有大规模使用带来的复杂性等等。FreeBSD 满足了这些标准。”
革命性的学术研究受益于生产系统,可以测试假想并将创新转化为生产系统。Watson 教授解释道:“在软件领域,开源对于这种研究方法至关重要,硬件领域的开源性也越来越重要。你 可以 自己构建参考基准制品,但你真正想要的是当前最先进的状态,具有大规模使用带来的复杂性等等。FreeBSD 满足了这些标准。”
对于熟悉 FreeBSD 历史的人来说,教授们在剑桥大学如此广泛地使用它可能并不奇怪。FreeBSD 在学术界有丰富的历史。它源自加利福尼亚大学伯克利分校计算机系统研究小组在 20 世纪 70 年代中期到 90 年代开发的 4.4-Lite 的伯克利软件发行版。在过去的 30 年中,FreeBSD 操作系统继续为学术界提供稳定的基础,可以进行研究,并通过广泛使用的产品和服务的路径,来进行工业采用,这些产品和服务都在运行、基于或合并了 FreeBSD 1。【注1】
Watson 教授的强制访问控制(MAC)框架研究沿着 Jail 的方向继续,认为操作系统应具有可插拔的组件,以便与许多不同的硬件配合工作,访问控制和安全性也应该是可插拔的。
许多用户在他们的产品中会定制 FreeBSD,添加诸如设备驱动程序和文件系统之类的内容,这通常被称为本地化。Watson 教授的 MAC 研究认为,你可以对操作系统和产品的安全要求进行本地化。这提供了可扩展性,使得构建路由器、手机操作系统或其他使用 FreeBSD 的设备的公司可以根据其所需的环境对操作系统进行调整,不仅包括安全性,还包括硬件、存储和网络调整。
关于这项研究如何过渡到广泛使用,Watson 教授认为这是相当成功的一项研究(我们会称之为保守的说法)。这项研究针对 FreeBSD 被纳入其他系统中,尤其是 iOS。
CHERI,即 Capability Hardware Enhanced RISC Instructions,通过将架构能力与传统处理器指令集架构(ISA)相结合,实现了细粒度内存保护和高度可扩展的软件隔离。Capsicum 的工作借鉴了 20 世纪 70 年代的一些叫做 capability 系统的想法,并认为它们可以通过与 BSD 中的当前软件进行融合来使其变得现代化。CHERI 的工作将这个概念推得更远,并应用于处理器。Watson 教授表示:“通过 CHERI,我们改变了硬件,也改变了软件。而我们选择改变的软件,以展示这些想法并理解它们,就是 FreeBSD。”
CHERI 关注硬件/软件共设计,需要对软件和硬件进行协调性的变更。两者之间的接口是指令集架构(ISA)。新的 ISA 使处理器的进步可以通过软件来表达。因此,硬件/软件共设计需要对硬件和软件【注2】进行变更。
在 BSDCan 2023 中,来自 SRI International 的 Brooks Davis 解释道:“CHERI 减少了 C/C++ 可信计算基础(如虚拟化程序、操作系统、语言运行时、浏览器等)的漏洞...” CHERI 被证明非常有效。Microsoft Security Response Center(MSRC)发现,CHERI 在 C/C++ 语言软件【注3】中减轻了超过三分之二的关键内存安全性漏洞。
FreeBSD 对于这种类型的研究至关重要,部分原因在于 BSD 许可证的宽松性,支持整个硬件/软件堆栈的修改,以及通过 LLVM 的全面集成来构建完整的内核和用户空间。当该项目于 2010 年开始时,FreeBSD 正在积极推进 LLVM 集成,这对于 Linux 来说仍然是一个挑战。同样重要的是,对多种 ABI 的清洁内核支持、Capsicum 安全模型的集成以及对 RISC-V 架构的早期支持。
CHERI 团队在此过程中广泛地为 FreeBSD 做了贡献,改进了 FreeBSD 对 64 位 MIPS 和 Armv8-A 支持,贡献了一个 RISC-V 移植,为更好地支持 Xilinx 和 Intel FPGA 板添加了许多设备驱动程序,以及 Arm IP,并为基本系统和 Ports/软件包开发了 QEMU 用户级和交叉构建支持。
感兴趣的用户可以下载一个叫做 CheriBSD 的完整 FreeBSD 衍生操作系统。CheriBSD 是一个研究性操作系统,广泛使用 CHERI 来提高软件安全性,并展示了对 CHERI 的逐步软件采用路径。它的特点包括内核和用户空间的内存安全性、支持两种软件隔离模型,以及大约一万个内存安全的第三方软件包,包括服务器应用程序,如 nginx、KDE Plasma 桌面环境。今年晚些时候,将会向 CheriBSD 软件包集合中添加一个内存安全的 Chromium 网络浏览器,由 Google 和 InnovateUK 赞助。可以使用可下载的 USB 驱动器映像在 Arm Morello 系统上进行安装。CheriBSD 拥有一个活跃的用户社区,有 70 多家公司和大学参与基于 Morello 的研究项目,几乎所有项目都在运行 CheriBSD,其中最活跃的贡献者是 SRI、剑桥和微软。
“通过 CHERI,我们改变了硬件和软件。而我们选择改变的软件,以展示这些想法和理解它们,就是 FreeBSD。除了允许私营部门合作的宽松许可证外,FreeBSD 全面的内核和用户空间 LLVM 使用、紧密集成的操作系统设计和构建、对多种 ABI 的清洁内核支持、Capsicum 的集成,以及对 RISC-V 架构的早期支持,使 FreeBSD 非常适合我们的需求。”
有一个可以从 Linux、Mac 或 FreeBSD 进行交叉构建的 CheriBSD 构建系统。Watson 教授和其他从事 CHERI 工作的人积极地向 FreeBSD 贡献了 Linux 和 macOS 的交叉构建支持。Watson 教授认为,这是重要的:“因为我们认为要使 FreeBSD 和我们的工作真正易于访问,我们不能告诉你在你的桌面上运行什么。你必须运行你选择的操作系统,而我们将帮助你在任何你想要的设备上运行 FreeBSD,可能是桌面,也可能是嵌入式设备,或者可能是某个服务器,我们不希望任何障碍阻碍这一点。”
如上所述,Morello 处理器设计、单片系统(SoC)和主板集成了对 CHERI 保护模型的支持。Morello 是由 Arm 和英国研究和创新(UKRI)共同资助的研究原型,由 Arm 和剑桥大学合作创建,以评估 CHERI 作为主流采用技术的可能性。自 2022 年中期以来,已经发货了 600 多块开发板,主要提供给大学、政府实验室和工业研究实验室。FreeBSD 基金会将在 2023 年晚些时候收到其第一块 Morello 开发板,使这个开发环境可供全球 FreeBSD 社区使用。
要亲身体验 CHERI,请访问 CHERI 软件分发站点,获取最新版本。Docker 镜像适用于 Linux 和其他操作系统。这些镜像包括可让用户在基于 QEMU 的 CheriBSD VM 上运行,用于 CHERI-RISC-V 或 Arm Morello 架构,并使用包含的 SDK 为其交叉编译软件。对于 Arm Morello,可以使用以下镜像:https://hub.docker.com/r/ctsrd/cheribsd-sdk-qemu-morello-purecap,在 Docker 容器启动后,可以使用命令启动 CheriBSD【注 4】。学术创新如何从实验室过渡到生产研究的过渡可以采用许多形式。在某些情况下,人们和公司使用软件。有时,过渡意味着这些想法影响了其他人的工作,然后最终产生了结果。
“对于像 MAC 框架或 Jail 这样的东西,很容易看出所有的用例,它在各种各样的事物中都有使用。对于像 CHERI 这样的东西,我们还没有到可以真正说出最终过渡将会是什么的地步,但现在有一个大型的过渡项目正在进行。英国政府和各个公司目前正在为一个为期五年的过渡项目花费约 2.5 亿美元,这非常令人兴奋。”
CHERI 的工作经历了许多的演变过程。CHERI 最初是在 2010 年左右针对 MIPS 架构进行的。现在,所有的工作都在 Arm 和 RISC-V 上进行。RISC-V 是一个开源研究平台,Arm 是当前的过渡目标选择,尽管 Watson 教授迅速补充说,他和其他人也乐意过渡到其他硬件。“网络路由器和交换机、防火墙、手机、平板电脑,都是我们的雄心,实际上。我认为可以想象得更远,服务器和台式机也都在范围内,但那是我们在早期演示中做的事情。”
FreeBSD 基金会代表所有受益于他和合作伙伴安全研究的计算机用户向 Watson 教授表示感谢。这些创新支撑了当代社会的数字基础设施的许多方面,作为一个彻底的开源项目,我们希望你考虑参与到 FreeBSD 中,帮助编写计算机的下一个章节。
此页面详细说明了学术界为什么喜欢 FreeBSD:https://freebsdfoundation.org/our-work/research/
对于 Morello,使用:$ /opt/cheri/cheribuild/cheribuild.py run-morello-purecap
。对于 CHERI-RISC-V,前往:https://hub.docker.com/r/ctsrd/cheribsd-sdk-qemu-riscv64-purecap,然后使用命令:$ /opt/cheri/cheribuild/cheribuild.py run-riscv64-purecap
发布日期:2023 年 8 月 24 日
译者:ykla & ChatGPT
自 2005 年谷歌编程夏计划伊始,FreeBSD 项目一直参与其中,对此感到自豪。随着 2023 赛季接近尾声,基金会要求我们的一些谷歌编程之夏学生分享更多关于他们自己以及与该项目合作经验的信息。
问:请向我们简要介绍一下你自己以及你在学业旅程中的阶段?
我叫 Raghav Sharma,是一名来自印度的本科生,正在攻读电子工程的技术学士学位。我目前正处于 B.Tech 【译者注:B.Tech 是技术学士学位的缩写】的最后一年阶段。我对系统编程、内核开发、编译器和后端项目充满兴趣。
问:你之前有参与过谷歌编程夏项目吗?
有的。我在 2022 年参与了谷歌编程夏项目,与 Haiku 组织合作,将 XFS 文件系统驱动移植到了 HaikuOS 项目中。
问:为什么你想要与 FreeBSD 合作?
FreeBSD 项目对我来说是一个更深入探索系统编程和内核开发的绝佳机会。社区正在开展许多令人惊奇的项目,我希望能够探究这些想法。
问:请简要介绍一下你的谷歌编程夏项目是什么?
我的项目目标是将 SquashFS 驱动程序添加到 FreeBSD 内核中。SquashFS 是只读文件系统,可压缩整个文件系统或单个目录,将其写入其他设备/分区或普通文件,然后直接挂载它们。SquashFS 有两个实现,一个是 Linux 内核驱动程序,另一个是 SquashFuse 项目。我使用了这两个实现来将驱动程序移植到我们的 FreeBSD 内核。由于我们几乎即将结束编程之夏项目,我已完成驱动程序的实现。现在我们支持 SquashFS 的 mount(8)、目录、文件和符号链接。
问:迄今为止,你从这次经历中学到了什么?
迄今为止我的学习经验包括:
FreeBSD vfs 层内部,了解内核如何通过良好的 API 管理多个文件系统。大部分时间都花在了探索和理解这些方面上。
软件使用的几种压缩技术,如 zlib、zstd 等,以及为何需要压缩。
更深入的文件系统理论以及我们可以通过哪些技术来减少磁盘寻道并最大化性能等。
了解其他 FreeBSD 内核文件系统的实现细节,如 ext2fs、nullfs、tarfs 等。
问:与 FreeBSD 项目合作的经历如何?
到目前为止,非常棒。感谢导师 Chuck Tuffli 在帮助我入门方面的指导,例如设置开发环境,引导我查阅 SquashFS 实现所需的文档等。
(FreeBSD)社区也非常友好和活跃。
作者:Antranig Vartanian
发布时间:2023 年 8 月 1 日
译者:basebit
两年前,我写了一篇名为 "VoidLinux in FreeBSD Jail; with init" 的博文,在文中我们在一个 FreeBSD Jail 环境里安装并“启动”了 VoidLinux 。我认为现在是时候对那篇博文进行修订了。
这次,我们将使用 Devuan GNU+Linux 以及用 OpenRC 来启动系统,并在 Linux Jail 中放置一些本地的 FreeBSD 二进制程序。
以下是我这次运行的操作系统版本:
为了引导启动 Devuan 系统,我们需要使用一个叫 debootstrap 的软件,确切地说,是 Devuan Chimaera 版本的 debootstrap 工具 。我们可以从 ports/packages 中安装 debootstrap
,然后再进行其余的修改。
现在我们需要获取 Devuan 的 debootstrap
工具,并将其解压缩,将一些文件放入我们的 debootstrap
中,并设置一些符号链接。
现在我们可以引导启动我们的系统了。我将使用 ZFS 文件系统,但这也可以在不使用 ZFS 文件系统的情况下完成。
请记住,我的 Jail 路径将是 /usr/local/jails/devuan0
,请根据需要修改此路径。🙂
现在安装过程应该开始了,但在某个阶段,我们会遇到以下错误:
不要慌张!这没事儿。🙂 我们只需要进入 chroot 环境,手动修复这个问题,并安装 OpenRC 程序。
我们几乎已经准备好了所有东西。我们只需要创建一个 password 数据库文件,供 jail(8) 命令在内部使用。
我们还可以将静态链接的 FreeBSD 二进制程序移入 Linux Jail 中,这样我们在需要时就可以使用它们。
现在我们还需要一个 Jail 配置文件,我们可以将其放在 /etc/jail.conf.d/devuan0.conf
中。(假设你的网络配置类似于“VNET Jail HowTo Part 2: Networking”)
正如你所猜到的,我们还需要一个 fstab 文件,应该放在 /etc/jail.conf.d/devuan0.fstab
中。
最后,我们加载一些内核模块(以防它们尚未加载)。
让我们启动 Jail 吧!
它正在运行吗?
是的,它已经在运行了!
现在我们可以使用 jexec
进入其中并运行一些命令!
进程树看起来也很整洁!
让我们进行一些网络设置吧!设置网络并安装 OpenSSH。(假设你的网络配置类似于“VNET Jail HowTo Part 2: Networking”)
现在你应该能够 ping 通其他主机了。
为了使网络配置持久化,我们可以使用 rc.local
文件,在 OpenRC 启动时该文件会被执行。
你知道这意味着什么吗?这意味着你现在可以在 Linux 上使用正确的 ZFS、DTrace 和 pf 防火墙了。恭喜你,现在你拥有了一片净土。
就是这样了,朋友们……
PS:我想感谢我的导师 norayr ,是他向我展示了如何手动启动/停止 OpenRC,还要感谢 #devuan 社区里那些了不起的人们,感谢他们的帮助。
作者简介:Antranig Vartanian 在 Illuria 安全公司从事工作。涉及 Unix、BSD、信息安全、Elixir/Erlang、DNS、XMPP 领域。通常没有太大问题。
译者:ykla/chatgpt
旧金山 - 2023 年 7 月 12 日
FreeBSD 基金会加入了 OSI 的开放政策联盟
本基金会很高兴地宣布我们参与了开放政策联盟(Open Policy Alliance,简称 OPA),这是开放源代码倡议(Open Source Initiative,简称 OSI)的一个新项目。根据 OSI 的说法,“OPA 是一个旨在建立并支持一个由公益和慈善基金会中代表不足的声音组成的联盟。”
开放源代码倡议(Open Source Initiative,简称 OSI)的公共政策团队已经推出了开放政策联盟(Open Policy Alliance,简称 OPA)计划,旨在建立并支持一个由公益和慈善基金会中代表不足的声音组成的联盟。OPA 是针对开源软件社区以及与之相关的开放内容、研究、人工智能和数据等领域中,对公共对话和利益相关方参与日益增长的需求而创建的。
开源生态系统的资深人士 Deborah Bryant 将领导这个计划,她是 OSI 美国政策总监。Bryant 表示:“尽管开源活动是一项全球性、无国界的活动,但公共政策是在本地制定的。OPA 将专注于在美国进行教育工作,同时与全球志同道合的组织进行交流和信息共享。OPA 旨在赋予这些声音权力,使其能够积极参与教育和影响与开源软件、内容、研究和教育相关的美国公共政策决策。”
由于全球范围内软件行业和相关开放领域的新法规出现,创建这样一个计划的需求如今更加紧迫。网络安全、人工智能的社会影响、数据和隐私是全球立法者关注的重要问题。与此同时,COVID-19 疫情推动了协作开发达到了前所未有的水平,并将开源软件、开放研究、开放内容和数据从边缘带到了主流舞台。在推进这些重要公共政策的同时,又不损害生态系统,需要理解开源生态系统的运作方式。确保那些历史上未被代表的利益相关方参与到这些讨论中变得非常重要。
OPA 将专注于向公共政策制定者进行开源教育,以便在制定和审议新的政策概念时能够获得信息支持。缺乏对开放协作实践方式的了解会导致意想不到的后果。OPA 将解决这个问题,同时还将解决历史上少数群体贡献不足的问题。OPA 社区的兴趣领域将与 Digitable Public Goods Alliance 相互补充,后者是联合国儿童基金会(UNICEF){今年早些时候加入的](https://blog.opensource.org/osi-joins-digital-public-goods-alliance/)一个多利益相关方倡议,旨在加速低收入和中等收入国家实现可持续发展目标。
开放政策联盟创始组织的引述
“开源已经改变了我们构建软件的方式,也改变了世界与技术互动的方式,带来了更好的结果,” Python 软件基金会的执行主任 Deb Nicholson 表示。“现在比以往任何时候都更需要决策者听取社区驱动的开源项目的意见,了解政策变化对开发者、用户和合作未来的影响。我们很高兴看到开放源代码倡议将慈善基金会聚集在一起,帮助提供这方面的专业知识。”
“随着软件领域的监管环境不断演变,开源正面临危险,”开放基础设施基金会的总经理 Thierry Carrez 说道。“有谁比开源倡议更适合汇集和放大社区开源组织的声音,让每个人都能参与其中的讨论呢?作为开放基础设施基金会的附属组织,我们自豪地加入了 OPA,并加强了我们在这个及时倡议中的合作,因为这与我们在欧洲和亚洲的中心正在进行的工作相互补充。”
“Open@RIT 很荣幸被邀请作为创始组织加入 OPA。在过去的 15 年里,我们开始教授学生和教职员工成为自由和开放源代码的贡献者,并将他们的学术和研究成果以开放的方式发布,”主任 Stephen Jacobs 表示。“在此期间,我们的大部分工作都集中在与 UNICEF、纽约州政府以及项目社区(如 P5JS 和 Csound)等组织合作,支持人道主义和公民项目。由于这些类型的社区的实践多样性,很难代表性地表达出它们的共同需求,特别是在基础设施和支持方面,以推动技术的发展并保持其稳定性。OPA 旨在填补这一需求。我们与 Deb Bryant 合作了十多年,很高兴听到她将把她对非营利和营利世界的广泛而深入的开源理解带给该组织。”
“作为数字开放的倡导者,OpenForum Europe 认识到开放政策联盟为数字政策制定提供了更多声音和想法的平台的机会,”执行主任 Astor Nummelin Carlberg 表示。“我们愿意与全球志同道合的组织分享我们的知识并进行合作。这一努力不仅凸显了开源在我们互联的世界中的重要性,而且强调了明智和包容的政策制定的必要性。”
“FreeBSD 基金会很高兴参与 OPA,并感谢 OSI 采取这一举措。开源已经无处不在,一家代码扫描公司发现 96%的代码库都包含开源代码,”执行主任 Deb Goodkin 表示。“这意味着保护和维护开源对于确保我们的数字基础设施的安全性是必要的。然而,开源并不是统一的。很多开源项目是由企业支持的,但也有很多项目,比如 FreeBSD,是由社区驱动的。政策制定者了解这些模型的差异至关重要,以确保政策能够产生期望的结果。”
鼓励对开源软件、内容、研究和教育感兴趣的公益和慈善基金会加入 OPA。通过共同努力,联盟成员将增强其集体影响力,为开源创造一个更具包容性和公平性的未来。开放政策联盟的创始组织包括以下非营利组织:
Apereo Foundation
FreeBSD Foundation
open@RIT
OpenInfra Foundation
Plone Foundation
Python Software Foundation
Associazione LibreItalia
The Document Foundation
Eclipse Foundation
KDE Foundation
OpenForum Europe
Open Source Hong Kong
OpenStreetMap Foundation
OSI 执行主任 Stefano Maffulli 将于 7 月 15 日在俄勒冈州波特兰举办的 FOSSY 2023 会议上讨论全球政策环境以及 OPA 在其中的作用。有关 OPA 的更多信息,请访问其网页。
原文地址:
https://blog.opensource.org/convening-public-benefit-and-charitable-foundations-working-in-open-domains/ https://freebsdfoundation.org/news-and-events/latest-news/freebsd-foundation-joins-osis-open-policy-alliance/
译者:ykla
今天的主题:许可证
在决定新项目要使用什么许可证时,有许多许可证可供选择。今天,我们将专注于 Berkeley (伯克利)软件发行(BSD)许可证的 2 条款变体,也被称为 FreeBSD 许可证。对于许多人来说,商业友好的 FreeBSD 许可证提供了他们所寻求的灵活性。为什么呢?首先让我们看一下许可证本身。
FreeBSD 许可证
参考译文:
换句话说,FreeBSD 许可证不要求派生源代码使用与原始代码相同的许可证条款。这意味着 FreeBSD 可以作为其他项目和专有软件的组件使用,而无需共享派生代码。相比之下,Linux 是根据 GNU 通用公共许可证(GPL)许可的。GPL 也被称为“共享协议”,是相互的,意味着 GPL 项目的派生代码也必须以相同的许可证条款提供。
FreeBSD 及其组件可以用于构建专有软件,没有任何限制。从法律角度来看,这也对开发者具有吸引力。你可以随心所欲地使用(他的)代码。
此外,FreeBSD 许可证已被自由软件基金会验证为与 GPL 兼容,也经过了开放源代码促进会【注1】的审查,被确认为开源许可证。这意味着 FreeBSD 仍然是作为开发产品的参考平台的绝佳选择。FreeBSD 的代码具有最广泛的适用性。你可以从 FreeBSD 入手,然后在任何地方发布。
像 Nextflix 和他们开发的 Open Connect Appliances【Open Connect Appliance 软件内置了一个 FreeBSD 操作系统和 NGINX 服务器,许可证是 BSD】。像这样的公司,最初就是因为宽松的许可证才吸引了 Open Connect 工程师使用 FreeBSD【注2】。
其他公司,例如 Beckhoff 之所以选择 FreeBSD 和宽松的许可证,部分原因是因为 GPL【注3】不能满足要求。
简而言之,BSD 许可证,尤其是 FreeBSD 许可证,在构建产品和服务时提供了灵活性和安心感。
1.-BSD 许可证维基百科页面-https://en.wikipedia.org/wiki/BSD_licenses
2.-FreeBSD 案例研究:Netflix-https://freebsdfoundation.org/blog/freebsd-case-study-netflix/
3.-2020 年 FreeBSD 供应商峰会:Beckhoff-https://youtu.be/8LUdZseNrpE
原文地址:https://freebsdfoundation.org/blog/celebrating-30-years-of-freebsd-licensing/
作者:Anne Dickison
译者:ykla/chagpt
2023 年 5 月的 FreeBSD 开发者峰会和 BSDCan 标志着许多 FreeBSD 社区成员(包括我自己)重返线下活动。能够再次亲眼见到每个人是一次非常美妙的经历。线下活动,特别是像开发者峰会这样的活动,是 FreeBSD 社区不可或缺的一部分。面对面交流,讨论面临的问题,以及新版本的进展,这些都对推动项目的发展至关重要。从宣传的角度来看,这个活动是与使用 FreeBSD 的公司交流的机会,了解他们的使用情况,以及发现其中的问题和不足之处。这是更多了解人们选择 FreeBSD 的原因的机会,也是招募其他人帮助我们传播消息的机会。今年的 5 月份开发者峰会更加令人兴奋,因为我们能够庆祝 FreeBSD 的 30 周年。稍后会详细谈到这个。
作为组织委员会的一员,自 1 月份以来,基金会团队成员一直在开会,为我们两年来的首次线下会议做准备。在整理众多活动筹划细节时,当我抵达会场并看到摆放着 T 恤和 FreeBSD 杂志的盒子时,我感到非常欣慰。如果没有 BSDCan 的 Dan Langille 提供的宝贵帮助,组织委员会就会遗漏一些重要事情。与 BSDCan 共同举办使得开发者峰会的举办变得更加可控。
组织委员会成员和出色的主持人 John Baldwin 首先介绍了当天的日程安排,并向我们的赞助商表示感谢。Tarsnap 以金牌赞助商的身份与 FreeBSD 基金会一起参与,让 Colin Percival 继续设计开发者峰会 T 恤的背面,这是他长期以来的工作。iX Systems TruNas 和 Linux Professional Institute 以铜牌赞助商的身份赞助了峰会。当 FreeBSD 生态系统内的公司能够支持面向开发者的活动时,我们总是非常感激。
活动开始时,FreeBSD 基金会进行了一次更新报告。尽管演讲不是我的强项,但我很高兴能与我的同事们一起分享我们在宣传方面今年到目前为止的工作情况。
接下来的一天包括 FreeBSD 核心团队的更新报告,由 Mark Johnston 主持的代码阅读指导环节(根据参与者之后的讨论来看,非常受欢迎),以及专注于谷歌代码之夏和外部工具链的小组工作会议。
在下一个休息时间,我们庆祝了 FreeBSD 项目的 30 周年,还有一个带有时间线的蛋糕!能够邀请到 FreeBSD 的原创成员 Kirk McKusick 和 Mike Karels 参与我们的庆祝活动是非常棒的。
第一天以继续进行的“FreeBSD by the Fire”系列活动结束。Mike Karels 上台与大家分享了 FreeBSD 早期的故事并回答问题。
接下来,基金会在大学宿舍楼下的“黑客休息室”举办了一个披萨派对。返回线下方式的最大好处之一就是可以与他人并肩坐在一起解决问题和学习新知识。黑客休息室还为基金会团队成员提供了另一个机会,可以与开发人员和企业代表坐下来了解他们的需求,以及我们可能需要填补的空白。
开发者峰会的第二天以基金会向 Colin Percival 颁发奖项开始,以表彰他在组织 13.2 RELEASE 发布方面的努力。在 FreeBSD 发布工程师 Glen Barber 不在时,Colin 挺身而出,成功地保持了项目的进展。他的努力没有被忽视。
随后,John 主持了一场关于 14.0 RELEASE 的总结会议,与大家共同确保新版本在今年秋季如期发布。因为创新从未停止,John 随后又组织了一场关于 15.0 RELEASE 计划的会议。峰会以工作小组会议结束,重点关注基金会的技术路线图、文档和工作流程/ GitHub PR。所有会议的幻灯片可以在 2023 年 5 月 FreeBSD 开发者峰会 WIKI 上找到。感谢 Alan Jude 和 ScaleEngine、Patrick McEvoy 和 Andrew Fengler 的支持,会议还进行了实时直播,视频可以在 FreeBSD Project 的 YouTube 频道上找到。
BSDCan 的开始也意味着基金会的展台开放。我的同事 Drew Gurkowski、Deb Goodkin 和我早早就到了那里进行准备。在 BSDCan 的展台是我最喜欢的地方之一。这使得 Drew 和我有机会与社区交流,了解人们如何使用 FreeBSD,并找到推广项目的其他途径。今年的展台特别令人兴奋,因为我们能够展示新的 30 周年纪念品、时间线海报和特刊的印刷版。
BSDCan 的最后一天,Drew 和我还邀请了一些人进行采访,作为我们庆祝 FreeBSD 日的一部分。Drew 就人们使用 FreeBSD 的原因和方式提出了很好的问题,甚至请教了 Kirk McKusick 关于 30 年后的 FreeBSD 的看法。你也可以在该项目的 YouTube 频道上找到这些采访。
从宣传的角度来看,FreeBSD 开发者峰会和 BSDCan 对基金会的营销工作至关重要。我们有机会向从事这项工作的人们学习。社区的意见帮助我们明确 FreeBSD 使用的好处,并帮助我们制定新的活动策略,评估在整体宣传规划中的工作情况。对于基金会团队来说,这是一个非常繁忙而充实的一周,我们不希望有其他的方式。感谢所有来访展台、参与采访、在峰会上发表演讲的人们,使我们在渥太华度过了一个成功的一周。我期待明年再见。
原文地址:https://freebsdfoundation.org/blog/advocating-at-events-may-2023-freebsd-dev-summit-and-bsdcan/
最后发布于 2023 年 9 月 8 日
译者:ykla & ChatGPT
向学生们介绍 FreeBSD 仍然是 FreeBSD 基金会的重要任务。今年,除了参与谷歌编程之夏和滑铁卢大学合作计划外,基金会还聘请了 Jake Freeland,一位之前的谷歌编程之夏学生,来进行暑期实习。我们坐下来与 Jake 了解了他以及他一直在为支持 FreeBSD 所做的工作。
姓名: Jake Freeland
问:请简要介绍一下你自己以及你的教育经经历。
我自记事起就对计算机硬件感兴趣。这一特点自然而然地将我引向了操作系统,这是最接近硬件的软件。我现在是明尼苏达大学双城分校的学生,计划于 2023 年 12 月取得计算机科学学士学位。
问:你做过多少个实习?
我曾在 2022 年代表谷歌编程之夏计划与 FreeBSD 基金会合作过一次。
问:为什么你想要为 FreeBSD 基金会工作?
当我开始寻找实习机会时,FreeBSD 就立刻出现在我的脑海中。我之前有作为系统管理员的经验,而 FreeBSD 是我最喜欢的操作系统之一。我知道他们的社区非常专业,我认为为该项目做贡献将是迈向内核开发的绝佳途径。
问:你希望从这个实习中学到什么?
我的 FreeBSD 经验教会了我如何处理大型代码库。我对遍历他们的 src 源码感到自如,也习惯将我的代码更改格式化为可审查的提交/补丁。与 Capsicum 安全沙盒一起工作也教会了我以安全为重进行思考。我觉得我已经积累了足够的直觉来检测和审计可能存在重大安全问题的代码。
问:你目前正在做什么?
我开始时的实习任务是扩展 FreeBSD 的 ktrace 工具中的能力违规跟踪功能。通过我的更改,开发人员可以在程序不在能力模式下时跟踪和收集详细的能力违规诊断信息。
接下来,我将 FreeBSD 的系统日志实用程序 syslogd 隔离到了一个 Capsicum 安全沙盒中。syslogd 守护程序以 root 权限运行,因此是安全攻击的高风险目标。将 syslogd 放入沙盒环境中应该可以在出现 syslogd 安全漏洞的情况下防止有害影响。通过这一经验,我创建了一个关于使用 Capsicum 沙盒化程序的操作指南:https://cdaemon.com/posts/capsicum。
问:到目前为止,你在 FreeBSD 的体验如何?
我很享受与 FreeBSD 基金会一起工作(的过程),并计划继续为该项目做出贡献。我很高兴看到基金会认识到她需要更多年轻的开发者;我将与他们合作推出一个新的项目,以向大学生介绍 FreeBSD。
Planternetes | 将 K8s v1.28.0 移植到 illumos,并为 FreeBSD 和 OpenBSD 编译了二进制文件。 |
runj | 一个新的实验性、概念验证的 OCI 兼容运行时,用于 FreeBSD jail。 |
ocijail | 实验性、概念验证的 OCI 兼容运行时,用于 jail。 |
Podman port to FreeBSD | 在 FreeBSD 上使用 Podman 来管理 Pod、容器和容器镜像。 |
FreeBSD containers on macOS | Podman 支持在流行的客户端操作系统(macOS、Windows)上运行 Linux 容器,以便人们可以在这些系统上工作并部署到云中。它通过生成一个 Linux 虚拟机并从外部连接到它来实现这一点。该项目旨在为 FreeBSD 服务器带来与 Linux 服务器用户相同的 podman 桌面/笔记本体验。 |
XC | 用于 FreeBSD 的正在进行中的容器引擎,可运行 Linux 和 FreeBSD 容器。它可以支持 OCI 兼容的镜像注册表,如 DockerHub 或 Azure 容器注册表,用于镜像分发。 |
在 Kubelet 上加入基本的 FreeBSD 支持 | 用于在 FreeBSD 上启动 kubelet 并与 CRI 运行时(在我这里是 containerd+runj)通信以运行(目前是)FreeBSD 容器的第一个基础构件。 |
云原生 / OCI 运行时 | 是 | Greg W | 是 | 是 |
AD / DNS | 是 | Michael O | 是 | 否 |
NVIDIA GPU | 是 | Greg W | 是 | 否 |
Samba | 是 | Greg W | 是 | 是 |
Definitive manager bhyve/VM/Jail | 是 | ? | 是 | 否 |
Zero Trust Build | 是 | FreeBSD 基金会 | 是 | 否 |
Ports Automation | 否 | FreeBSD 基金会 | 是 | 否 |
Enterprise CA | 是 | Greg W | 是 | 是 |
作者:yshdsnd
最后发布日期:2023 年 1 月 27 日
译者:ykla & ChatGPT
我想在 Bhyve 的 Windows 虚拟机中使用主机设备,所以尝试进行了 PCI 直通的设置。作为管理软件,我使用了 vm-bhyve,因此在这个前提下我会提供以下说明。关于 vm-bhyve 的内容在搜索时可以找到相当多的解释,请参考那些资料。
硬件是我去年购买的,与这篇文章中所写的内容相同。https://qiita.com/yshdsnd/items/e8ba8d417851ae56f2fc不过值得注意的是,内存已经增加到了 128GB。我正在的是使用 FreeBSD 13.1-STABLE。
PCI 直通需要使用 VT-d 功能。由于默认情况下通常被禁用,因此请进入 UEFI 菜单并启用 VT-d。
虽然本次不会使用,但我们也一并启用了 SR-IOV。
首先,我们需要查找所需设备的 ID。虽然你可以使用 pciconf
,但是 vm-bhyve 的 vm passthru
命令更加简便。
这里的最后一个 NIC(Killer E3000 2.5GbE 控制器)和 xhci1 设备我想在 Windows 中使用。
然后,在/boot/loader.conf 中,将要预留为直通设备的设备进行记录。
/boot/loader.conf
:
在 pptdevs 中,写入之前使用 vm passthru
显示的 ID。同时,在这里必须明确加载 vmm 模块。这是因为如果不这样做,xhci 驱动程序会首先识别设备,导致无法将其预留为直通设备。如果你只想使用没有 FreeBSD 驱动程序的 Killer E3000 2.5GbE 控制器,则无需显式写入 vmm 模块。它会在启动 bhyve 时自动加载。
编辑 loader.conf
后,重新启动操作系统,然后再次运行 vm passthru
。
指定的设备已被注册为 ppt0、ppt1 等直通设备。
将直通设备注册到 vm-bhyve 的配置文件中。 由于已经创建了名为"windows"的虚拟机,因此可以通过执行vm config windows
来编辑配置文件。
使用passthruX="BUS/SLOT/FUNC"
的格式进行记录。只需将 vm passthru 显示的内容直接复制到这里即可。虽然与 passthru 无关,但是在最近的-STABLE 版本中,添加了通过 VNC 连接时指定键盘映射的选项(-K),这样即使通过日语键盘使用,也不再出现无法正确输入符号的情况。这个选项已经被添加到了bhyve_options
中。
上述步骤完成后,只需启动即可。
确认在 Windows 的设备管理器中是否已添加。如果需要,安装所需的驱动程序。
如果一切顺利,你将看到以下情况:ASMedia USB 3.1 eXtensible Host Controller 是直通的设备,下面的 Intel xhci 控制器是 Bhyve 的虚拟设备。再往下的 Killer E3100G 也是直通的设备。
在 Windows 侧安装驱动程序并重新启动后,bhyve 进程异常终止了。无论尝试多少次都无效。查看日志,显示为 status 4 终止。
日志内容如下:
从配置文件中删除 passthru 后,可以顺利启动。此外,如果重新启动主机后再启动,也可以正常工作。然而,如果重新启动虚拟机,它又无法启动了。
我认为可能是由于需要重新初始化直通设备,但由于某种问题而未能成功。尽管如此,我仍无法找到解决方法。如果有人知道解决方案,我希望能得到指导。每次需要重新启动主机才能重新启动虚拟机,这对虚拟机来说并不是很有意义,让人感到困扰...如果有人知道解决方法,请告诉我。
由于 13-STABLE 的源代码对 bhyve 命令和内核的 vmm 相关部分进行了重大更改,因此我尝试了一下更新到最新的 13-STABLE 版本。令人欣慰的是,现在虚拟机可以正常重新启动了。现在可以放心大胆地使用了。
原文地址:
译者:ykla & ChatGPT
在软件升级方面,世界上看起来有两种类型的人:一类是当新版本发布就立刻升级的人,另一类是一直推迟升级直到绝对必要时才进行的人。说实话,我可能属于后一类,但是对于 FreeBSD 来说,升级到最新版本将为你提供更好的安全性,更多的功能和更加流畅的体验。FreeBSD 13.2 版本于四月份发布,对于那些还没有升级的用户,我们为你列出了十大升级理由。
对数百个 Bug 的修复和改进。
多个第三方软件和驱动程序的版本升级,包括 OpenSSH、libarchive、LLVM 和 Clang 编译器。
针对 Intel 第 12 代和第 13 代混合型 CPU 的缺陷提供了解决方案——该错误可能导致 UFS 和 MSDOSFS 文件系统的损坏,以及可能的其他内存损坏。慢速核心(E-cores)自动使用更慢的页面无效化方法来解决此问题。
在默认情况下启用了 64 位可执行文件的地址空间布局随机化(ASLR),提供了更高的安全性。
WireGuard VPN 驱动程序(wg(4))已重新集成到内核,可提供更快且更安全的 VPN 体验。
内核 TLS(KTLS)已添加对 TLS 1.3 的接收卸载支持。
更新了 Intel WiFi 驱动程序,并添加了 Realtek WiFi 的驱动程序。
现在可以在启用日志软更新的 UFS 文件系统上进行快照,实现后台备份。
FreeBSD 虚拟化管理程序 bhyve 支持更多虚拟 CPU。
为具有大型路由表的系统添加了 DPDK 路由模块。
当然,这只是一个有关十大升级理由的列表。FreeBSD 的美妙之处在于你可以根据自己的需求进行自定义。确保查看完整的,了解还有哪些更新可以让你的生活更加便利。请记住,拖延症“专家”从未让任何人取得进步。立刻到 13.2 版本吧!
原文链接:
作者:Roller Angel
译者:罗胜(superluosheng)
校对整理:ykla 【】部分为 ykla 注解。
【Linode】一个 VPS 提供商
【pfSense】一个基于 FreeBSD 的开源防火墙/路由器
使用 上的旧界面,在你喜欢的数据中心创建你的 Linode 。我不知道如何在新界面上进行操作。为了本教程的目的,我们建议关闭 Lassie,以防止看门狗在没有你的输入的情况下重新启动你的 Linode 。你可以在 Linode 管理器的设置选项卡中关闭看门狗下禁用 Lassie 。
创建两个磁盘镜像;他们应该都是 RAW 格式的。
用以下设置创建两个配置文件(profile)。在每个配置文件中,你将需要禁用文件系统/引导助手下的所有选项。
Installer profile 配置文件:
Boot profile 配置文件:
在安装盘挂载到 /dev/sda
的情况下启动进入救援模式(Rescue Mode),并通过 SSH 从 Linode 管理器的远程访问选项卡中使用 Lish 访问你的Linode。
当命令完成后,重新启动到你的安装程序配置文件 Installer profile。
转到 Linode 管理器中的远程访问标签。使用 Glish 访问你的 Linode,开始安装。注意,必须使用 Glish 来完成 pfSense 的安装。
安装(Install)-- 继续选择 ZFS -- da0 条带(Stripe of da0)--继续进行安装
在最后修改:
增加配置
退出 Glish,返回到 Linode 管理器,重新启动到 pfSense 配置文件。
打开 lish -- 回答 n 到 “VLAN 设置” -- vtnet0 为广域网(WAN)--输入其余部分,直到你看到启动完成。-- 关闭列表 -- 打开 Glish -- 从控制台输入 13 来更新,输入 Y 来更新 --工作正在进行中。
原文链接:
作者:Roller Angel
译者:飞鱼
校对整理:ykla 【】部分为 ykla 注解。
【-H
参数将环境变数中的 HOME(家目录)指定为要变更身份的使用者家目录,在上述中即 /root
。】
(或者任何包名称在此处都可以代替 b2)
pipenv 将为你创建虚拟环境,并可在其中安装软件包。
或者,你可以使用
创建一个虚拟环境并打开其中的 shell ,这样你就可以键入一些正常的内容,如:
这将安装 BackBlaze B2 的 b2 客户端,我用它来做异地备份,但它不会把这些保存到 Pipfile 中,所以我推荐使用 pipenv 安装的方式,以方便使用,而常规的 venv 模块则用于自动化部署的情况。
另外,pipenv 使用 Pipfile 而非 requirements.txt
,所以你可以导入 requirements.txt
文件,例如
日常使用情况是这样的
从包含 Pipfile 的项目目录中运行:
你将看到你的 >>Python,尽情享受吧!
VirtualBox(5+ 是我们使用的版本,但任何版本都应该可以。(在 2020 年使用 6.1 版,仍然可以正常工作)此程序适用于大多数电脑,请确保在你的电脑 BIOS 中启用 VT-x)
有网络接入
首先,我们可以简单地说:
在工作电脑上访问
在小恶魔的 logo 旁边寻找 Download FreeBSD
这个大按钮。
进入下载页面后,点击 Installer 镜像下的 amd64
。
接下来,在列表中点击 FreeBSD-13.1-RELEASE-amd64-disc1.iso
这个镜像文件 。
因为它是最新版的 FreeBSD
我强烈建议你关注 CHECKSUM.SHA512-FreeBSD-13.1-RELEASE-amd64
这个文件,并在你下载完文件后自己进行 SHA512 校验,看它们是否匹配。 只有这样,你才能知道你下载的文件是否能正常工作 . 安装镜像文件下载完成后,就可以用虚拟机来启动了。
在 VirtualBox 中,单击“新建”按钮启动向导,该向导将引导你创建虚拟机。需要注意的重要选项如下:
操作系统类型为 FreeBSD 64 bit
,
以及用于虚拟机的内存大小。使用大于 512MB 的内存,小于这个数值会使 virtualbox 向导“滑块”变红。将你的“滑块”保持在绿色中,你就可以为虚拟机提供足够的内存。
接受其它的默认设置。
向导完成后,即可启动虚拟机。此时将出现另一个向导,要求你将 VirtualBox 指向新虚拟机的安装程序镜像。如果你想避免第二个向导,只需在首次启动前编辑虚拟机设置即可:
点击 存储
链接,
然后点击 空白 Disc
,
然后你就可以挂在这个虚拟镜像了.
在 VirtualBox 中,所有这些步骤都相当于组装硬件和插入安装光盘。在 VirtualBox 中按“开始”键就像按“电源”键启动一台真正的机器。第一次启动安装光盘时, FreeBSD 会显示欢迎你,并询问你是否要开始安装。
按键盘上的“回车”键选择 Install
。此时,你会注意到 VirtualBox 试图解释它正在捕获你的鼠标和键盘以便在虚拟机中使用。请忽略这些信息。要再次在虚拟机外使用鼠标和键盘,你需要按下主机键。VirtualBox 会在窗口右下方显示当前的主机键。该安装显示 "Right Ctrl" ,这意味着你需要先按键盘上的右控制键,以从虚拟机中重新获得对鼠标和键盘的控制。
用户账号
为系统的 root 账户设置密码。当输入 root 密码时没有出现 ****
时不要着急。请放心,你的键盘输入都被记录下来了,只是没有显示在屏幕上而已。
继续执行安装程序,注意以下事项:
在安装过程中,我们将继续使用默认的 US 键盘布局,将计算机命名为 getting-started-with-freebsd
,并在 Distribution Select
屏幕上选择默认设置(如果有的话,这取决于你下载的.iso 版本),只需按下 ok
即可。 在 Network Configuration
部分,我们在虚拟机上使用 em0
接口,因为我们知道 VirtualBox 使用的是 intel 网络驱动程序,它有 em0
的名称。在某些机器上,你会发现 re0
接口是 Realtek 网络驱动程序。
是,配置 IPv4。是,使用 DHCP 。是,使用 IPv6 。是,尝试 SLAAC 。解析器配置中应至少填入一个 DNS 值。使用键盘上的 Tab 键移动到选择 "OK " 继续。对于 "镜像配置",我们使用 "主站点"。接下来,我们需要决定如何对磁盘分区。在 "分区 "屏幕上,有 "自动(ZFS)"和 "自动(UFS)"两个选项。选择自动 (ZFS),选择条纹作为 ZFS 池类型,用空格键选择用于池的磁盘,为池命名,然后继续安装。最后,选择 "Yes " 以同意安装 FreeBSD。
在 "时区 "部分,我们选择了 "美国 - 北部和南部,美利坚合众国"、"山区(大部分地区)"、"时间和日期 "屏幕上的 "跳过"。在 "系统配置 "部分,我们取消选择 "sshd" ,选择 "powerd",然后选择 "OK"。在下一个屏幕中,我们选择了 "9 secure_console",以便在试图进入系统控制台的单用户模式时提示 root 密码。对添加新用户的提示说 "是"。使用全小写的用户名。输入用户的 "全名"。通过回答问题 "登录组是......邀请......进入其他组?[]: ,然后按 Enter 键。wheel "组的用户可以运行 "特权 "命令。操作员 "组允许用户执行关机和重启计算机等操作,而无需调用 wheel 组的特殊权限。将打算使用 FreeBSD 作为桌面的用户加入 video
组是个好主意。我们选择 `` 作为 shell ,其他字段使用默认值,最后提供一个账户密码。如果一切正常,则无需再创建任何用户帐户。
在 "最终配置 "部分,选择 "手册"。我们使用默认的 "en " 并选择 "ok" 。回到配置界面后,选择 "退出 "完成配置,选择 "是 "继续手动配置。我们需要做的唯一手动配置就是关闭机器,以便取出 CD 。在虚拟机上,为了在取出 CD 时不出错,需要关闭电源,因此我们将发出下面的关机命令来关闭计算机。输入 init 0
或 shutdown -p now
关闭计算机。要从 VirtualBox 中的虚拟机中取出 CD ,请单击虚拟机名称,单击 "设置",单击 "存储",然后单击小 CD 图标。注意在 "光驱 "部分旁边还有一个小 CD 图标,下面有一个向下的小箭头。使用第二个 CD 图标 "从虚拟驱动器删除磁盘"。单击 "确定"。
克隆一个 VirtualBox 虚拟机
使用 VirtualBox 中的 "快照 "菜单来 "克隆 "虚拟机。选中 "重新初始化所有网卡的 MAC 地址 "复选框。我们可以选择 "完全克隆 "或 "链接克隆"。我们将使用 "完全克隆 "选项。稍后我们将使用该克隆虚拟机。
启动第一个虚拟机,使用 "Start" (开始)按钮启动机器,并以 root 用户身份登录。
软件包安装/文本配置
在虚拟机上键入以下命令:
如果之前没有安装手册,请用 "y " 回复提示引导 pkg 。我们正在安装 Xfce 。你可以轻松安装 3 种桌面环境,即 lumina、xfce 和 kde。
输入以下内容编辑一行文本,然后退出编辑器:
输入回车键或点击回车键,然后输入
机器重启后,再次登录,这次使用创建的普通用户账户。然后键入以下命令。
这次我们使用 vim 编辑器 VI iMproved,开始键入时需要处于 "插入模式",必须按 i
键才能进入插入模式并开始键入文本。键入以下单行配置:
XFCE 桌面的 .xinitrc 设置
Lumina 桌面的 .xinitrc 设置
KDE Plasma 桌面的 .xinitrc 设置
按键盘上的 "Esc " 键退出 vim,然后键 入ZZ
或 :wq
,接着键入 Enter/Return
。此时,可以使用以下命令启动虚拟机桌面:
已知的问题
在 OSX 上,不要使用绿色按钮来放大窗口,而是从窗口的角落拖动来增大窗口。
如果发现自己的鼠标有点慢,或者发现自己的屏幕很小,无法填满 VirtualBox 窗口,或者 startx 无法正常工作,或者加载了桌面但被冻结,请使用 "Machine" (机器)菜单关闭机器,然后选择 "ACPI Shutdown" ( ACPI 关闭)选项,然后执行以下操作:
打开虚拟机的 "设置"->"显示 "选项卡
确认 VBoxVGA
被选中,忽略无效设置提示,因为我们需要使用该特定显示驱动程序
单击 "确定",重新启动机器。
Lumina 桌面配置
在桌面上单击右键 > 首选项' >
所有桌面设置' 在 "外观 "下单击 "主题",然后从侧边栏中选择 "图标",再选择 "材质设计(浅色)",然后单击 "应用"。关闭 "主题设置 "窗口。
返回 "桌面设置 "窗口并选择 "窗口管理器"。在 "窗口主题 "下拉菜单中,选择 "两次"。单击 "保存"。关闭 "窗口管理器设置 "窗口。返回 "桌面设置 "窗口并选择 "应用程序"。在这里,我们可以设置用于打开特定文件类型的默认应用程序。如果将 "电子邮件客户端 "设置为 Firefox,就可以使用 Firefox 内置的 "mailto " 处理程序,在点击电子邮件地址链接时自动打开基于 Web 的电子邮件客户端,如 Gmail 或 Yahoo Mail 。有关其他支持的网络邮件平台和其他可用配置设置,请参阅 Firefox 文档。在 "虚拟终端 "部分,将默认设置设为 Sakura。关闭所有设置窗口。
右键点击桌面,选择 "首选项",然后选择 "壁纸",点击 "+",选择 "纯色"。我们选择红色。点击 "好",然后点击 "保存"。
FreeBSD 手册
下面介绍如何打开我们在 "最终配置 "中安装的手册的本地副本:
在应用程序菜单中查找 Firefox
在 XFCE 中:
点击 应用程序
> 网络
> Firefox 网络浏览器
在 Lumina 中:
右键点击: 桌面
> 应用程序
> 网络
> Firefox 网络浏览器
打开火狐浏览器并导航至以下 URL: file:///usr/local/share/doc/freebsd/en/books/handbook/book.html
这是 FreeBSD 手册的本地拷贝,由于不需要互联网连接,因此可以随时使用。这就是安装 FreeBSD 的全部过程。下一步建议选择并配置防火墙。如果你购买了《BSD Hacks》一书,你将会对 `` shell 更加熟悉,并掌握一些新的技能。
我们使用 env PAGER=cat 来修改 Freebsd-update shell 脚本使用的 PAGER 变量的值。如果打开 shell 脚本,你会看到 PAGER 的默认值被设置为 less
。输入 which freebsd-update
可以找到 freebsd-update shell 脚本的位置。将 PAGER 的值设置为 cat
后,freebsd-update
就不会停下来显示要更新的文件列表,相反, cat
命令只会显示文件列表,而不会停下来等你读取。如果你只键入 freebsd-update fetch install
,你需要使用下面的命令来通过提示:
向下翻页和 q 应该可以让你通过提示。如果屏幕显示 "END" (结束),请按 q ,然后在其他屏幕上使用 "Page Down" (向下翻页)。也可以在每个屏幕上都使用 q 。
既然 FreeBSD 本身是最新的,我们也应该更新软件包。
IOCAGE
安装 iocage
以下命令假定你的 zpool 名称为 zroot ,必要时可进行调整。输入 zpool status
查看 zpool 的当前名称。
现在我们应该看到 iocage list 输出的是一个空表,下面我们将做一些额外的内务处理,以提高 iocage 的性能。要优化各种应用程序的性能,你可以做很多事情。学习新技巧和窍门的方法之一是阅读 https://MWL.io 上的 FreeBSD Mastery 系列丛书(事实上,下面的性能优化窍门就在 FreeBSD Mastery 一书中): Jails)
在文件中添加以下一行,完成后退出。键入 j
直到文件底部,键入 o
打开新行并开始键入,ESC 然后键入 ZZ
保存并退出文件。在 fstab 文件的每个字段之间按 TAB 键,而不是使用空格来分隔字段。
首先下载 FreeBSD 的发行版分支
我们使用 [Enter] 来获取 iocage 希望提供的默认版本。使用以下命令验证下载
查看帮助文档
任何子命令都可以附加 --help 标记
创建一个基础 jail
列出当前的 jails
启动 jail-one 并跳转到控制台
如果 jail 尚未启动,控制台命令将启动 jail 。要手动启动 jail ,请使用
同样地停止一个有问题的 jail
验证网络是否正常运行
对 pkg bootstrap 提示点 "是"。 使用 ctrl + d
退出 jail 控制台。
删除一个 jail
以下命令可以在我们目前使用的虚拟机上运行,但编译所有软件包需要很长时间。
我们将使用之前创建的克隆虚拟机来探索 Poudriere 。
启动克隆虚拟机。
以 root 用户身份执行的命令:
poudriere.conf
要修改的内容
继续执行:
凑出一个要构建的软件包列表。我在笔记本电脑上运行了 pkg query -e '%a=0' %o
,结果出现了一个很大的列表,而在我的虚拟机上运行的 pkg query 要短得多。要了解有关 pkg query
的更多信息,请执行命令 pkg help query
查看查询子命令的帮助文本。大多数命令都支持某种形式的帮助(-h、--help 或使用 man PROGRAM
阅读手册)。将系统上当前安装的软件包导出到名为 pkglist 的文件的命令是
注意: tee
会将输出写入文件,也会写入 stdout
。另外,以下两点信息对于本教程来说是可选的,目的是向你展示如何定制软件包。
为软件包配置自定义选项有两种方法:手动和使用正常的 make 配置屏幕, 仅供参考:手动操作看起来像这样
要自定义软件包,可以使用正常的软件包配置屏幕,该屏幕将在发出以下命令时显示
在本教程中,我们将使用默认选项实际构建软件包,以便掌握 Poudriere 的使用方法,方法如下
该目录包含与 Poudriere 生成相关的日志。在 /data/logs/bulk/.html/
中甚至还生成了几个不同的网站文件,其中包含有关构建的信息。你可以在火狐浏览器中使用网址file://data/logs/bulk/.html/index.html
打开网站,查看当前 Poudriere 构建的状态。你也可以在命令行中按下 ctrl + t
来向 Poudriere 发送 SIGINFO ,这样 Poudriere 就会在命令处理过程中打印出当前的 Poudriere 编译状态。这个小技巧也适用于许多其他命令,可以向你显示状态。例如,如果你正在使用 scp
下载一个大文件,并想知道下载进行到哪一步了,SIGINFO 就会在命令行上打印出状态信息。另一个例子是,如果你正在解压一个压缩文件,并想知道解压过程的状态。
一旦 Poudriere 完成,所构建的软件包可从以下网址获取
创建一个 pkg 仓库
创建一个文件来覆盖 FreeBSD 软件源文件 /etc/pkg/FreeBSD.conf
中的默认设置,从而禁用主 FreeBSD 软件源。
键入以下配置,并将启用设置为 no
为本地 Poudriere 软件包仓库新建一个配置文件,类似于 FreeBSD.conf 文件,用于保存仓库配置
添加以下配置
使用新的软件源重新安装所有软件包
注意: 一个好的系统管理做法是在配置文件中添加注释,让未来的你知道配置选项的作用,以及为什么要把它们放在那里。这样,当你在一段时间后重新查看配置文件时,就会知道为什么要选择这些选项。
现在你可以安装更新的软件包
Ansible 是一种配置管理系统,允许创建可重复使用的代码结构,在服务器组或单台服务器上执行多种操作。Ansible 将任务组织到 Ansible Playbooks 中,并支持将服务器分成多个称为角色的组。你可以将某些任务分配给各自的角色。Ansible 使用 ssh
从控制机器向 Ansible 主机文件中列出的机器发送命令。控制机器就是需要安装 Ansible 的地方。远程机器只需要安装 ssh
。
我们将使用 Ansible 在远程服务器上安装 Poudriere ,该服务器比我的本地机器强大许多倍,然后构建 pkglist 文件,最后将生成的软件包同步到本地机器上。
安装 Ansible
获取研讨会的 Ansible 操作手册,并提取 Ansible 压缩文件的内容
创建 SSH 密钥对,在出现提示时为密钥添加口令,然后使用 ssh-agent
将新密钥加载到内存中,此时会提示你输入我们刚刚在密钥上设置的口令,以便将其加载到内存中。这样,我们在每个终端会话中只需输入一次 SSH 密钥的口令。
将 ansible.pub 密钥的内容复制到 Vultr 的 SSH 密钥部分
创建另一台机器,选择新的 SSH 密钥,然后复制新机器的 IP 地址
用新机器 IP 更新主机文件
在运行游戏程序之前,请注意以下几点:
ansible/roles/poudriere/tasks/poudriere.yml "中最后一项名为 "下载编译好的软件包 "的任务被设置为下载到"/home/roller/packages",所以你可能需要修改一下。
你需要在本地计算机上安装 rsync,才能使用 syncronize 模块并同步软件包目录
你可以告诉 ansible 从某个特定任务开始。例如,使用 --start-at-task="下载编译好的软件包"
,就会从最后一个任务开始,只使用 rsync 将软件包目录同步到本地机器上
你可以用 --step
命令 ansible 逐步执行每个任务,并询问你想做什么。y
将执行当前任务,n
将跳过该任务,c
将继续执行所有剩余任务
如果使用 Vultr 等软件在远程服务器上创建一个 FreeBSD 实例,只需再执行几个步骤即可访问桌面。以普通用户身份登录控制台,然后执行以下命令。确保你已经如上所述编辑了你的 .xinitrc
,以使 startx
启动你喜欢的桌面。
然后在本地计算机上安装 RealVNC 或其他 VNC 客户端的 VNC Viewer,并使用以下命令创建 ssh 通道。
系统会要求你设置 VNC 密码,然后按 Y 键保存密码文件。现在就可以使用 VNC 客户端进行连接了,只需将其指向 localhost:5900,并使用刚才设置的 VNC 密码进行连接即可。尽情享受吧
——是否对选择下一个项目中使用 OpenBSD 还是 FreeBSD 感到困惑?我们将比较这两种流行的基于 BSD 的操作系统。
原文链接:
作者:
发布时间:2023.9.22
译者:ykla & ChatGPT
主要要点
OpenBSD 和 FreeBSD 在安装过程上有所不同,OpenBSD 假定用户具备更多的计算机经验,(安装)界面较为简约,而 FreeBSD 则具有更为精致的安装程序。
OpenBSD 专注于安全性,并以其对代码正确性的承诺而闻名。另一方面,FreeBSD 被定位为通用系统,有着支持点对点互联网基础设施的历史。
FreeBSD 拥有更好的文档,包括一本写得很好的手册,既可以作为专家的参考,也可以作为初学者的入门指南。而 OpenBSD 的文档更面向专家,并在视觉上根植于上世纪 90 年代。
和 都是原始的服务器专用的伯克利软件发行版(BSD)的后继者,该发行版在 20 世纪 70 年代末至 90 年代由加州大学伯克利分校(UC Berkeley)开发。
作为流行的开源项目,它们有着忠实的用户群,被视为 Linux 的替代选择。它们有哪些不同之处,哪一个可能更适合你呢?
OpenBSD 和 FreeBSD 都有安装程序,可让你在计算机上分区并安装这些系统,安装过程类似于 Linux 发行版。然而,安装这两个操作系统的体验是非常不同的。
当你的计算机启动时,你会看到一个控制台界面。与主要的 Linux 发行版不同,OpenBSD 没有图形化的安装程序和 live CD。你需要从终端运行安装程序,并回答有关键盘类型和区域的问题。
如果你犯了错误,你唯一能做的就是按下 Ctrl + C,然后重新开始。这个安装程序类似于专注于专家用户的发行版——如 Arch 或 Gentoo。
之后,你将选择要包含在系统中的“文件集”。开发人员建议初次使用者使用默认设置。然后,你将配置 root 密码以及其他用户。接下来,关键时刻来临,你将启动新的操作系统。
FreeBSD 的安装程序类似,但(安装)界面更为精致。不过,它仍然是基于文本的。如果你在上世纪 90 年代曾在 MS-DOS 系统上安装过游戏,那么 FreeBSD 的安装程序会让你感到熟悉。
它还会引导你完成 FreeBSD 机器的设置,如格式化分区(FreeBSD 称之为 "slices")、选择软件、设置互联网连接以及设置用户和时区。
尽管它看起来更友好,但 FreeBSD 的安装程序也假定用户熟悉类 Unix 操作系统,就像 OpenBSD 一样。
与 OpenBSD 相比,FreeBSD 在具有更直观的安装程序方面具有优势,如果你以前安装过操作系统,你可以在没有手册的情况下完成安装。
OpenBSD 和 FreeBSD 都源自 386BSD 项目,该项目旨在将 BSD 源代码移植到 Intel 80386 处理器上,但它们面向两个不同的市场。
OpenBSD 由 Theo De Raadt 创建,此前他与其他 NetBSD 开发者发生了多次分歧。NetBSD 本身是 386BSD 的另一个分支。
OpenBSD 以其对安全性的关注而闻名。截至 2023 年 9 月,该项目的官方网站声称在默认安装中已经在很长一段时间内只发现了两个远程漏洞。
在上世纪 90 年代的互联网繁荣时期,OpenBSD 最初因在小型 ISP 中使用二手零件从头开始构建路由器和网关而广受欢迎。随着互联网服务的集中化和专业化,专用硬件变得更加普遍,但 OpenBSD 通过强调代码正确性来保持对安全性的关注。
OpenBSD 对技术质量的承诺很可能是其组件被移植到其他系统(如 OpenSSH 和 tmux)并在 OpenBSD 生态系统之外广泛流行的原因。甚至在 Windows 10 和 11 上,都默认安装了 OpenSSH。
另一方面,尽管开发者侧重于服务器用途,FreeBSD 被定位为通用系统。
与 OpenBSD 一样,在上世纪 90 年代的互联网繁荣时期,FreeBSD 是驱动互联网基础设施的流行操作系统。当时,雅虎以广泛依赖 FreeBSD 而闻名,Netflix 的 Open Connect 内容交付网络处理了许多用户的连续观看会话。
OpenBSD 和 FreeBSD 都维护有关其系统的文档。
OpenBSD 的文档与其余系统一样,简洁而面向专家。从视觉上看,该项目的网站根植于上世纪 90 年代,尽管 OpenBSD 通常会有富有幽默感的发布主题。
在文档质量方面,FreeBSD 胜过 OpenBSD。
OpenBSD 和 FreeBSD 都强调安全性,它们提供了防火墙作为提高安全性的一种方式。
忠实于 OpenBSD 对安全性的强调,该项目开发了自己的防火墙程序,即 Packet Filter(PF)。与其他组件一样,PF 已经广泛移植到其他系统中。PF 是 macOS 的一部分,而 macOS 的一部分又是基于 FreeBSD 的。
与 OpenBSD 一样,FreeBSD 也将 PF 作为主要的防火墙程序之一,但还提供了 IPFW 和 IPFILTER。FreeBSD 手册为 PF 提供了最多的空间,但警告说它们的移植版本与 OpenBSD 的有显著差异。
在两个系统上配置防火墙以使其充当临时路由器需要一些时间和专业知识。对于那些决心构建 DIY 路由器的人来说,OpenBSD 因其对安全性的极端关注而具有优势。
尽管 OpenBSD 和 NetBSD 主要是面向服务器开发的,但也可以将它们用作桌面系统。
OpenBSD 可以安装 X 服务器和基本的 FVWM 窗口管理器环境【译者注:这里表述有点问题,OpenBSD 的文件集是有 X 的,不需要也不能通过包管理器安装】。从视觉上看,与其他内容一样,它也带有上世纪 90 年代的风格。你可以通过软件包管理器安装其他桌面环境。
FreeBSD 提供了许多与 Linux 发行版相同的窗口管理器和桌面环境。
在这两个系统上安装图形用户界面(GUI)需要一些较为复杂的步骤,类似于在 Arch 或 Gentoo 上安装 GUI。在这方面,FreeBSD 可能是赢家,因为你可以安装像 TrueOS【译者注:2020 年该系统就已经停止开发了】或 MidnightBSD 这样的完整桌面系统,它们已经默认包含了桌面环境。
与 Linux 一样,最大的挑战在于显卡和 Wi-Fi。
OpenBSD 支持 AMD 和 Intel 芯片组,但不支持 Radeon,因为该公司未向开发者提供任何技术信息。然而,有许多 Wi-Fi 驱动程序可用。
FreeBSD 支持主要的显卡芯片制造商以及 Wi-Fi。
与许多现代 Linux 发行版一样,X 在这两个系统上运行时需要很少或根本不需要配置。由于它们主要面向服务器,它们默认在控制台模式下运行。连接到 Wi-Fi 也较为复杂,但有线连接通常可以直接使用。
OpenBSD 和 FreeBSD 都提供了软件包管理,以简化软件安装,类似于现代的 Linux 发行版。在这两个系统中,你可以从源代码编译"ports",但也可以选择快速安装二进制软件包。后一种方法在这两个系统中越来越常见。
OpenBSD 使用 pkg_add
和 pkg_info
程序来安装和搜索软件包。
FreeBSD 的软件包命令称为"pkg",并且所有操作都在一个程序中执行。后一种方法似乎更加简单。
OpenBSD 和 FreeBSD 都强调它们对安全性的承诺。FreeBSD 是一个更通用的系统,但显然可以看出,OpenBSD 在编码和系统设计方面非常专注。那些真正关心安全性的人可能会选择后者。
尽管仅仅因为流行度而选择操作系统不应该是唯一的考虑因素,但它将影响到寻找软件和支持的能力。虽然 OpenBSD 在开源社区中以其对安全性的忠诚以及在发布主题方面的俏皮一面而声名远扬,但 FreeBSD 似乎得到了更广泛的支持。
在 OpenBSD 和 FreeBSD 之间做出决策可能令人生畏,但决策很可能取决于你希望系统有多么安全。如果你需要一个安全、坚不可摧的操作系统,最好选择 OpenBSD。如果需要一个更通用的 BSD 系统,可以选择 FreeBSD 或 NetBSD。
OpenBSD 假定用户具备丰富的计算机经验,其(安装)界面相对简约。你需要从其网站下载安装镜像,就像在下载 Linux 时一样,然后将其中,并启动计算机。
除了 man 页之外,OpenBSD 还维护着,实际上也可以作为手册使用。这些内容涵盖了一些细节,如安装和系统安全性。
FreeBSD 的文档方式更加精致。FreeBSD 有写得很好的 man 页,但该系统最出色的特点可能是“”(手册)。它提供了足够详尽的信息,可作为专家用户的参考,同时也解释了足够基本的概念,适合那些对类 Unix 系统经验不太丰富的用户作为入门材料。
如果你觉得在 Linux 上令人沮丧,那么在,你的选择会更有限,因为至少在桌面领域,它们比 Linux 更为小众。
很难准确衡量这两个系统在实际中有多广泛的使用,但截至 2023 年 9 月,根据对其网页的点击量,FreeBSD 在 上的排名高于 OpenBSD。
作者:Roller Angel
译者:飞鱼
校对整理:ykla
在主机上运行:
添加内容:
运行以下命令:
添加内容:
运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
在主机上运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
运行以下命令:
这个 fstab 的东西不起作用......以后会研究的,现在运行 fstab 之后的 mount -t
命令。
添加以下内容:
使用 mount 命令来代替 fstab (这是一个手动命令,不会自动运行)。
运行以下命令:
在 jail 中创建一个 pkg 仓库:
禁止 FreeBSD 中 pkg 包管理器的系统级源
将 enabled
选项改成 no
:
创建一个替换 FreeBSD.conf
的源配置文件:
添加以下配置:
用新的源来重新安装所有的包:
运行以下命令:
在主机上运行以下命令:
从 jail 更新
poudriere options
参数,并在 nextcloud 上启用了 memcached 支持,稍后我将把它添加到 make.conf
文件中。在 jail 中运行以下命令:
将以下设置添加到文件的末尾:
运行以下命令:
: 更新配置:
运行以下命令:
在 IPv4 部分添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
在 jail 中运行以下命令:
输入 server.key
的密码短语:
使用你的最佳判断来填写密码提示后的提示信息。
运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
运行以下命令:
添加以下配置:
再次升级 rc.conf
文件:
更新这些行,使其看起来像:
在 jail 中运行以下命令:
在主机上用火狐浏览器打开网址 https://172.16.28.2
在 jail 上运行以下命令:
将以下配置添加到文件的末尾:
作者:Roller Angel
译者:飞鱼
校对整理:ykla
Ansible Playbook =D
,我也刚刚从 mwl.io 订购了 FreeBSD Mastery Jails 一书,这将是非常有用的。zroot
作为 zpool 的名称。在主机上执行:
添加内容:
执行以下内容:
添加内容:
运行以下内容:
添加以下配置:
运行以下内容:
添加以下 DNS 配置:
执行以下内容:
以下是我敲入的内容:
添加以下配置:
运行以下内容:
奇怪的是......上面的操作在我的 jail 机器里失败了,但当我在真实的硬件设置上设置同样的东西时,它可以正常工作并添加软件包...... jail 得到一个错误,说“Could not update catalogue”(无法更新目录)。
我应该把我的 jail 设置成 Ansible 的 target:
将 ListenAddress 改为 jaill 的 IP 。同时在文件末尾添加一个新行,显示以下配置:
执行以下内容:
authorized_keys
应该包括 cat ansible.pub
的输出(不管你给你的 ssh 密钥对起什么名字)在它自己的一行中。
从这里开始,我就在我的普通 FreeBSD 笔记本上执行命令:
添加以下内容:
不需要一直输入 -i hosts
。
回到 jail 中(我们可能不再需要把 ansible
放在 wheel
组中......这需要考虑。)
添加以下配置:
不需要一直输入 -K
和 sudo 密码,只需使用按键即可。
我在我的主机上添加了一个 [jails]
部分,其中有 jail 的 IP ,像以下这样:
现在我可以成为 sudo ,而不必输入密码了:
译者:ykla & ChatGPT
致力于开源:“FreeBSD 是(规模)最大且历史最悠久以民主方式运作的开源项目之一。”
我们与 FreeBSD 基金会执行董事 Deb Goodkin 进行了交谈,谈论了 FreeBSD 这个自由、开源的类 Unix 操作系统。三十年过去了,FreeBSD 提供了什么,它的成功故事是什么,以及未来的发展方向如何?
devmio: 我们的读者可能对 FreeBSD 不太熟悉,请你简要介绍一下它。
Deb Goodkin: FreeBSD 是(规模)最大且历史最悠久以民主方式运作的开源项目之一。它是一个自由的、类 Unix 的操作系统,经由 Berkeley 软件分发(BSD)——也被称为“伯克利 Unix”,从对 Unix 的研究发展而来。该项目于 30 年前的 1993 年 6 月 19 日被正式命名为 FreeBSD。与其他开源操作系统不同,FreeBSD 基础系统是一个由单一团队开发和发布的集成操作系统分发版本。目前,有 400 多名活跃开发人员和数千名贡献者致力于支持 FreeBSD 项目。FreeBSD 可在 32 位和 64 位 Intel / AMD x86、32 位和 64 位 Arm、RISC-V、PowerPC CPU 以及 Amazon AWS、Microsoft Azure 和 Google 云端平台等云服务提供商上运行。已有数以千万计的机器正在使用 FreeBSD。
FreeBSD 通过奉行“少惊奇原则”而独具特色。遵循“不破坏正常运行的事物”开发路径,该操作系统不会无故更改。因此,用户可以在后续版本中继续应用在早期版本上获得的知识和经验。
许可证也在 FreeBSD 的吸引力中发挥着关键作用。该操作系统采用无版税的 BSD 许可证,相比其他开源替代方案,限制较少。这种许可自由允许包含和分发仅有二进制形式的版本,使 FreeBSD 特别适合于嵌入式平台。
devmio: 随着开源的 FreeBSD 操作系统于在今年夏天迎来 30 岁生日,开发人员可以在未来几年里期待 FreeBSD 为他们带来些什么?
Deb Goodkin: 开发人员和用户将看到桌面和硬件支持的改进,使得使用 FreeBSD 更加容易入门。我们专注于改善新用户体验,包括改进文档和入门指南,并为希望学习 FreeBSD 的人们提供更多的教育和培训机会,包括 FreeBSD 视频和指南。我们还在努力实现更多测试用例的自动化,以便能够快速测试变更,减少引入新错误的风险。
FreeBSD 以“最少惊讶原则”为特点。遵循“不破坏正常运行的事物”的开发路径,该操作系统不会无故更改,除非有充分的理由。
devmio: 你认为 FreeBSD 之所以有如此持久的影响力是因为什么?有哪些技术/开源社区生态系统确保了它的受欢迎程度?
Deb Goodkin: 有多个因素才让这个项目的如此长寿。其中两个最重要的因素是 BSD 许可证和扁平化的开发模型。如前所述,限制性较少的许可证吸引了那些希望基于 FreeBSD 构建产品和服务的人,而无需担心像 GPL 这样的问题。扁平化的开发模型意味着没有中间层的管理者拖慢了将更改纳入代码树的过程。该项目的标准仍然很高,但更容易提交自己的更改。
沿着同样的线路,FreeBSD 是最早建立领导层和组织系统的开源项目之一,这些措施帮助确保了它的持久性。例如,它是第一个使用版本控制和 Bug 报告系统来简化开发过程的先驱者。该项目还是第一个创建选举产生核心领导团队的,而非由一人领导。核心团队处理从设定项目的战略方向到解决冲突等所有事务。
之前提到的“最少惊讶原则”也使得 FreeBSD 对依赖稳定性和易于升级以维护自己的产品和服务的个人和公司具有吸引力,这些产品和服务中包含了 FreeBSD。
最后,FreeBSD 社区友好且乐于助人,有着强大的教育文化。事实上,许多最初的开发人员仍然参与其中,并期待帮助其他人开始使用 FreeBSD 的旅程。
devmio: FreeBSD 技术在实际应用中有哪些最有趣的用例?
Deb Goodkin: 由于其高性能、安全性和先进的网络功能,FreeBSD 无处不在。它被用于互联网服务器、嵌入式设备和防火墙等多个领域。然而,一些值得注意的用例包括:
倍福 倍福使用成熟的基于 PC 的控制技术来实施开放的自动化系统。他们的产品 TwinCat/BSD 被应用在驱动技术、自动化软件、无控制柜自动化和机器视觉硬件等领域。TwinCat/BSD 将倍福的专有 TwinCat 运行时与 FreeBSD 结合使用。由于 Windows CE 即将停止支持,倍福需要一个非 GPL、稳定且安全的操作系统,能够支持全系列硬件,FreeBSD 正好满足这些要求。
CHERI/Morello CHERI 是“Clean Slate Trustworthy Secure Research and Development”(CTSRD - 发音为“custard”)项目的一部分。这是国际斯坦福研究所计算机科学实验室和剑桥大学计算机实验室联合研究项目,得到了 DARPA(DARPA CRASH、MRC 和 SSITH 计划的一部分)、Google 和 Arm 的支持。CHERI 旨在保护系统编程语言(如 C 和 C++)中的内存安全漏洞。通过改变架构接口,CHERI 在硬件层面强制执行内存保护。FreeBSD 是他们原型完整软件栈的一部分。如今,CHERI 通过 Arm 的 Morello 处理器设计有限供应。CHERI 和 Morello 共同构建了一个不断增长的硬件内存安全生态系统,由英国政府的 Digital Security by Design 计划协调。应用包括 CHERI WASM、Cloud Native CHERI 和 AutoCHERI。
Netflix FreeBSD 驱动着 Netflix 全球内容交付网络 Open Connect 的构建模块,向全球会员提供 Netflix 电视节目和电影。通过 FreeBSD 提供动力的 Open Connect 设备,使得 Netflix 能够在单核 x86 服务器上使用内核 TLS 加密实现令人难以置信的性能(单个 OCA 的 400 Gb/s)。
这个社区非常平易近人和友好,拥有强大的指导文化。事实上,许多最初的开发人员仍然参与其中,并期待着帮助其他人开始他们在 FreeBSD 上的探索之旅。
devmio: 你认为在开发者世界中,对于 FreeBSD 是否存在一些误解?
Deb Goodkin: 是的。很多人认为 FreeBSD 只是另一个 Linux 发行版。虽然两者之间有相似之处,但 FreeBSD 是直接起源于 Unix,而 Linux 是作为当时专有的类 Unix 操作系统 Minix 的开源替代品而建立的。
有些人认为 FreeBSD 对于变化不太敏感,不像其他开源操作系统那样(敏感)。然而,随着技术的变化,FreeBSD 将持续发展。无论是转向 Git 还是专注于改进开发者工具,FreeBSD 都在持续观察技术发展,并确定对操作系统和社区目标最有意义的方向。
我们还有许多长期贡献者仍然在继续参与项目,并继续吸引新的开发人员。除了创建培训资料和入门指南外,FreeBSD 基金会在各种活动中进行招募,还提供实习项目,并参与谷歌代码之夏,以确保社区的持续增长。
devmio: 对于想要开始使用 FreeBSD 或参与其发展的开发者,你有什么建议?
Deb Goodkin: 对于想要开始使用 FreeBSD 的人,FreeBSD 基金会网站上有许多资源,包括安装指南、操作指南、一小时的 FreeBSD Fridays 系列介绍性演讲,以及链接到社区创建的内容,比如 RoboNuggie 的 YouTube 频道。如果你希望更深入地参与开发工作,我们最常推荐的方式是从提交一项对文档的更改开始,浏 览PR(问题报告)列表并修复一些 bug,或者帮助维护或添加一个 Port。我们还建议查看项目的新手页面。最后,在 FreeBSD 的邮件列表、IRC 和 Discord 频道中可以找到许多社区互动的机会。
由于其高性能、安全性和先进的网络功能,FreeBSD 无处不在。它被广泛应用于互联网服务器、嵌入式设备和防火墙等众多领域。
devmio: 你认为最近开始的其他开源项目在 30 年后会蓬勃发展吗?
Deb Goodkin: 这是一个非常棘手的问题,考虑到当今技术的快速演进速度。我想到的是 RISC-V 开源指令集架构(ISA)。创建允许任何人将软件移植到任何微处理器并且可以无需支付费用进行硬件开发的开放式 RISC 架构是具有开创性的。FreeBSD 项目是第一个在其官方支持中纳入 RISC-V 架构的操作系统供应商,作为 RISC-V International 的成员,FreeBSD 基金会认可将 FreeBSD 纳入该技术领域的重要性。
非常感谢你回答我们的问题!
Deb Goodkin 是 FreeBSD 基金会的执行董事,这是一个致力于支持 FreeBSD 项目和社区的非营利组织。早些时候,她曾在与存储相关的公司担任工程职务,包括 IBM、Maxtor 和 Connor Peripherals。Deb 自 2005 年以来一直在该基金会工作。她拥有加利福尼亚大学圣地亚哥分校的计算机工程学士学位(BSCE)和圣塔克拉拉大学的电子工程硕士学位(MSEE)。
译者:ykla & ChatGPT
最后发布日期:2022 年 10 月 31 日
在本文中,我们将仔细探讨 systemd 开发背后的真正动机,并探讨 GNU/Linux 作为操作系统的一些未来展望。
Update 2022-10-31:毫不奇怪,情况并没有变得更好。随着微软现在在 systemd 的开发中处于领导地位,以及他们大胆的新的可信启动世界,再加上他们对如此多的开源基础设施的接管,这正慢慢演变成了没有人期望的 Linux 世界中的悄然“革命”!现在是时候回归由社区驱动的开发了。
就个人而言,在 systemd 刚开始时,我对它并没有什么看法,当时它只是一个新的 init 系统。然而,我对今天的 systemd 的看法是,它已经变成了一种特洛伊木马。这是 Red Hat 试图改变 Linux 世界以更好地为他们的公司利益服务的一种尝试。
尽管 Linux 内核、GNU 工具和各种主要独立的 Linux 发行版最初都是由社区驱动的项目,但目前 Linux 世界的大部分发展都是由企业利益驱动的,由处于不同公司的不同关键职位的开发人员推动,例如 Red Hat、Google、Facebook 和其他几家公司。
Red Hat 最初通过将 systemd 称为替代性的 init 系统来伪装他们的计划。然后真相被揭露:systemd 变成了“为 Linux 操作系统提供基本构建模块的软件套件。”然后,Red Hat 发起了一场大规模的运动,试图影响所有其他主要的 Linux 发行版,并迫使它们采用 systemd。他们所做的努力和工作似乎让人感觉到相当地绝望。
systemd 开发者联系了几个第三方项目,并试图说服它们依赖 systemd,例如 Lennart Poettering 在 Gnome 邮件列表上的尝试,以及 Red Hat 开发者“keszybz”对 tmux 项目的尝试。这些尝试大多数都伪装成技术问题,然而当人们阅读了 Gnome 邮件列表和其他地方的长篇邮件往来时,真实的意图就变得十分清晰。
Red Hat 采取的其他战术包括雇佣来自 GNOME 和其他 Linux 发行版(如 Debian)的开发者,然后让这些人推广 systemd。
Lennart Poettering 最新推出的 systemd-homed 被称为处理 home 目录的新方法,但实际上只是为了更接近消除 /etc
目录,而这正是 Red Hat 长期以来的梦想。
观看 FOSSDEM 2020 的视频,Poettering 展示了 systemd-homed,并注意他如何批评从多用户系统角度处理全盘加密的方式,然而同时又拒绝至少五个 systemd-homed 提出的与之相关的挑战,因为,嗯,笔记本电脑实际上只被一个人使用。
事实上,Linux 世界的主要发展,即使在内核方面,也几乎完全被大公司劫持。它的开发不再主要是社区驱动的。对于许多企业来说,Linux 已经成为了巨额利润,他们真切希望尽可能控制发展的方向。
这其中的结果之一是在 Linux 开源社区中引起了巨大的骚动,其中 Debian 开发者 Joey Hess、Debian 技术委员会成员 Russ Allbery 和 Ian Jackson,以及 systemd 软件包维护者 Tollef Fog Heen 辞去了他们的职位。所有这四人都在公开的 Debian 邮件列表和个人博客上用他们在 Debian 和开源社区中持续争论集成 systemd 所受到的非常高的压力来证明他们的决定。
在 2014 年 12 月,一群自称为“资深 Unix 管理员”的人宣布了 Debian 的一个分支,名为 Devuan,旨在提供一个没有 systemd 的 Debian 变体。Devuan 1.0.0 于 2017 年 5 月 26 日发布。
我们认为,这种情况也是一个较长过程的结果,导致 GNOME 项目议程接管 Debian。考虑到今天这种情况的传播程度以及 Debian 作为一个通用操作系统和基本系统在发行版中的重要性,问题是 GNU/Linux 的未来是否会出现完全同质化和封锁的情况。
让我们来看一些不容置疑的事实。
2010 年启动 systemd 项目的 Lennart Poettering 和 Kay Sievers 都是 Red Hat 的员工。最初,systemd 被发布为一个新的 init 系统,但它逐渐发展成为 Poettering 所描述的“为 Linux 操作系统提供基本构建模块的软件套件”。这是有意为之,而非巧合。
官方开发 systemd 的原因被描述为:
他们想要改进表达依赖关系的软件框架,允许在系统启动过程中更多的处理并发或并行进行,并减少 shell 的计算开销。
Red Hat 的主要业务是嵌入式设备,systemd 的主要关注点是嵌入式设备,例如去除 /etc
目录。
在与 Red Hat 首席执行官 Jim Whitehurst 的一次采访中,他说:
我们与世界上最大的嵌入式设备供应商合作,特别是在电信和汽车行业,稳定性和可靠性是他们最关心的问题。他们很容易适应 systemd。
Mentor Automotive 在 2015 年的一个活动上发布了他们的幻灯片,在这些幻灯片中,systemd 为嵌入式汽车市场提供的许多好处得到了很好的解释。他们“很容易适应 systemd”的原因是因为 systemd 是专门为满足他们的需求而设计的。
自 2002 年以来,美国军方一直是 Red Hat 的最大客户,他们一直是 Red Hat 许多决策背后的主要动力。
2012 年,Lennart Poettering 将 systemd 的许可证从 GPL 更改为 LGPL,以更好地适应嵌入式市场。
在他的博客文章《The Biggest Myths》(最大的谣言)中,Lennart Poettering 在 2013 年 1 月反驳称 systemd 是一个“单体”,这是许多人认为的。Lennart 说:
一个涉及 69 个单独二进制文件的软件包很难被称为单体。然而,与之前的解决方案不同的是,我们将更多的组件打包在一个单一的压缩包中,并在一个统一的存储库中维护它们,有一个统一的发布周期。
然而,事实是,许多这些所谓的单独二进制文件的功能在没有其他 systemd 组件的情况下根本无法工作。如果我们查看 systemd-networkd 的 man 页面,它清楚地说明,如果将 UseDNS 选项设置为 true
,则将使用从 DHCP 服务器接收到的 DNS 服务器,并优先于任何静态配置的 DNS 服务器。这对应于 /etc/resolv.conf
中的 nameserver
参数。但是,man 页面忽略了这个设置(以及多个其他设置)在没有 systemd-resolved 的情况下无法正常工作。systemd 的其他组件更紧密地集成在一起。
systemd-resolved 在 Cloudflare、Quad9 和 Google 中硬编码了备用 DNS 服务器。即使你关闭了这些选项,一个 Bug 可能会导致这些备用服务器仍然被使用(实际上这在某个时候发生过)。
这是 Red Hat 的另一个主要动机,这在 Lennart Poetterings 在 FUDCON + GNOME.Asia Beijing 2014 中的幻灯片中有所体现。转到第 15 页,然后缓慢滚动到第 19 页。最终你会看到项目目标:
将 Linux 从一堆代码转变为具有竞争力的通用操作系统。
构建互联网的下一代操作系统。
统一不必要的发行版差异。
将创新带回到核心的操作系统。
结合下一组展示 Red Hat 希望目标市场的幻灯片:
桌面
服务器
容器
嵌入式
移动
云
集群
许多不同 systemd 模块提供的附加功能在服务器行业中没有任何好处。它只是为了让像 GNOME 和 KDE 这样的桌面系统功能类似于 Microsoft Windows。
如果 Red Hat 想在开发“互联网的下一代操作系统”的长期计划中取得成功,他们知道他们需要以某种方式影响其他主要的 Linux 发行版。这是因为如果像 Debian 这样的主要的 Linux 发行版拒绝 systemd,Red Hat 将无法按照他们的计划继续进行,因为太多的第三方项目根本不关心 Red Hat 希望如何工作。这一点非常重要,因为许多开源项目用于开发具有 POSIX 兼容性的软件。因此,他们努力确保他们的项目在多个类 Unix 操作系统上编译和工作。这对 Red Hat 来说并不符合利益。只要你还考虑其他操作系统,如 Solaris、FreeBSD、OpenBSD 等,与 Microsoft Windows 中的功能相比,Linux 就会被“拖后腿”。诸如简单的挂载和卸载、简单的特权升级等功能。
Red Hat 的另一个问题是,如果其他主要 GNU/Linux 发行版拒绝了 systemd,他们将很难将与 systemd 相关的更改和代码推入内核。但当其他主要发行版也采用了 systemd 时,这变得容易得多。
systemd 的主要问题在于其持续的发展是出于一家公司的经济利益,而不是 Linux 开源社区的利益。
从安全的角度来看,也不能信任 Red Hat,如果美国军方或其他某个三字缩写组织希望 Red Hat 在 systemd 中加入后门,那么这可能在很多年内都不会被察觉,就像 Heartbleed Bug 一样。
我们已经看到了几个这类可利用漏洞的例子:
这样的漏洞是故意引入代码以伪装成虚假的错误,还是真正的错误,是不可能说清楚的。但有一点非常清楚,Red Hat 对 Linux 社区的最大利益并不关心,他们只关心自己的经济利益。
另一个主要问题是前面提到的 systemd-resolved 中的硬编码 DNS 服务器。
Lennart Poettering 解释说,硬编码的值应该在配置文件发生灾难性故障且网络上没有 DHCP 时存在(DNS 回退是可以更改的,但需要重新编译)。然而,这是“嵌入式开发人员”在说话。如果在应用程序中发现了使这些 DNS 服务器运行的 Bug,尽管你已经将它们禁用,或者发现了竞争问题的 Bug,你可能面临着严重的隐私问题。此外,将 Cloudflare、Quad9 和 Google DNS 服务器硬编码到 systemd 代码中的问题是非常严重的,因为这些公司不仅因侵犯人们的隐私而闻名,而且 NSA(美国国家安全局)以前曾渗透过 Google 的数据中心,这是 Snowden 文件披露的内容。这样的设置不应该是默认选择,而应该是选择加入,并且绝对不应该是默认配置。
通常处理这些问题的方式,以及 Lennart Poettering 的极度傲慢态度,显示出对用户隐私和开源 Linux 社区利益的完全漠视。
令我惊讶的是,最初在 Debian 邮件列表上的讨论竟然只涉及 SysVinit、Upstart 和 systemd。没有人认真研究 runit 或 s6。不仅这些系统更符合 Unix 哲学,而且它们也更安全和易于理解。
Casper Ti. Vectors 在 Gentoo 论坛上的帖子“s6/s6-rc vs systemd, or why you probably do not need systemd”也显示出 s6 比 systemd 更好,而且在许多方面是更优越的解决方案。
许多人错误地认为每个 systemd 组件都是独立的,但事实并非如此。查看代码和文档,看看这些所谓模块之间的紧密集成。
公司的政治、策略和操纵在社区驱动的开源项目中没有立足之地。虽然公司可以允许使用开源代码、贡献代码,并从这些项目的收入中提供财务支持,但他们绝不能拥有 Red Hat 和其他公司现在拥有的如此大的控制权。
感谢真正独立的社区驱动项目,因为如果没有这些项目,我们只剩下类似于 Microsoft Windows 的垃圾。
译者:ykla & ChatGPT
最后发布日期:2020-11-20
我自 2004 年左右开始专业性的和个人化的使用 OpenBSD,这是一个免费的、多平台的基于 4.4BSD 的类 Unix 操作系统。今天我将分享一些我的经验。
在准备这篇文章时,我意识到很难充分赞扬 OpenBSD 的开发者。这是因为 OpenBSD 非常独特,我认为它相当令人惊叹。它的“辉煌”大部分隐藏在开发者的设计和特定的编码风格中,对于普通用户来说并不可见。你需要理解一些在幕后发生的事情,才能真正的欣赏 OpenBSD!
OpenBSD 安装简单快速,你会惊讶地发现这个系统是多么简单而且设计非常出色。项目从一开始就付出了大量工作,严格遵循了 Unix 哲学。
OpenBSD 在基本系统中附带了许多应用程序,但除了安全功能外,在默认情况下没有启用任何功能,你必须自行启用需要的服务。每个配置文件都遵循相同的语法风格,非常易读,因此非常容易理解和设置。每个参数在手册页中都有很好的文档,并且 OpenBSD 项目认为缺乏文档是“一个 Bug”。这是每个专业程序员都应该采用的做法。
缺乏文档或错误的文档对于具有安全漏洞的运行系统同样危险。原因在于,安全问题有时源于错误的配置。如果你不知道如何设置你的系统,你怎么能确定它是否以容易受到攻击者威胁的方式运行?互联网上的很多垃圾邮件源于配置不当的邮件服务器被攻击者利用而被入侵。
OpenBSD 操作系统内核和基本系统的每一行代码都会由程序员进行安全审计和检查,并且所有代码都遵循一套严格的指导方针和原则,试图消除所有传统的编码错误,因为许多安全漏洞实际上是由程序员的编码错误造成的。
但这还不是全部。让 OpenBSD 变得惊人的另一点是在开发过程中所做的所有安全保护机制,OpenBSD 的开发者在这个领域做了一些非常棒的先进工程!
安全保护机制是一些技术手段,帮助防止攻击者在操作系统上运行恶意代码或利用软件中的安全漏洞或弱点。
如果你正在使用一款软件,比如浏览器,而该浏览器有一个可以被利用的安全漏洞,那么攻击者可能能够访问你的计算机。攻击者在你的计算机上可以造成多大的破坏取决于操作系统的基本安全性。
OpenBSD 在内核和基本系统中内置了许多保护技术,使得攻击者的操作变得非常困难。这意味着攻击者很难通过常规的攻击技术(对于许多其他操作系统如 Microsoft Windows、Linux、Mac OS 等有效的技术)首先获取对你的系统的未经授权访问。这也意味着,即使攻击者尽管这些缓解技术而成功获取对你的系统的访问,他们能够造成的损害也是非常有限的。
这是一些内置在 OpenBSD 操作系统中并默认启用的安全创新功能列表:
在 i386/amd64/sparc64 架构中,内核强制执行 W^X。
自 6.0 版本起,用户空间强制执行 W^X。
默认启用 SROP(sigreturn(2)导向编程)保护措施。
自重定位静态二进制文件的静态 PIE。
堆栈保护器。
大部分基本系统的特权降级和分离是一种政策,没有这些措施,新的功能不会被启用。
仅支持 bcrypt 密码散列,并且根据系统性能自动选择轮次值。
默认在基本系统、软件包和 Ports 上启用 PIE。
在引导时对 C 共享库进行重新排序,即在引导时重新链接 libc.so,使对象随机排序。
系统范围内的沙盒(pledge(2))适用于大部分用户空间,包括 X 服务器的特权部分和大多数面向网络的守护程序。
arc4random(3) 支持 rand(3)、random(3)和 drand48(3),并且有经过审核的基本/Ports。软件必须选择确定性破碎的 POSIX 行为。
这只是 OpenBSD 的一部分创新,更多的创新可以在 OpenBSD 的创新页面中找到。其中一些创新得益于 OpenBSD 开发者的工作,已被其他操作系统采用和实现。
OpenBSD 是一个强大可靠的操作系统,在设置完成后你可以最小干预地运行它。实际上,它是唯一真正让你可以安心睡眠的操作系统,特别是在运行任何系统关键软件时。
OpenBSD 维护了许多基本系统的便携版本,包括:
LibreSSL,一个从 OpenSSL 1.0.1g 分支中复刻出来的免费的 Secure Sockets Layer(SSL)和 Transport Layer Security(TLS)协议的实现。
OpenBGPD,一个免费的 Border Gateway Protocol 4(BGP-4)实现。
OpenOSPFD,一个免费的 Open Shortest Path First(OSPF)路由协议实现。
OpenNTPD,一个简单的替代 ntp.org 的网络时间协议(NTP)守护进程。
OpenSMTPD,一个免费的支持 IPv4/IPv6、PAM、Maildir 和虚拟域的 Simple Mail Transfer Protocol(SMTP)守护进程。
httpd,一个在 5.6 版本中首次包含的 HTTP 服务器。
OpenSSH,一个免费的 Secure Shell(SSH)协议实现。
OpenIKED,一个免费的 Internet Key Exchange(IKEv2)协议实现。
Common Address Redundancy Protocol(CARP),一个免费的替代 Cisco 专利的 HSRP/VRRP 服务器冗余协议。
PF,一个带有 NAT、PAT、QoS 和流量标准化支持的 IPv4/IPv6 有状态防火墙。
Unbound,一个 DNS 验证解析器。
dhcpd,一个动态主机配置协议(DHCP)服务器。
pfsync,一个用于 PF 防火墙的防火墙状态同步协议,使用 CARP 实现高可用性支持。
spamd,一个带有灰名单支持的垃圾邮件过滤器,旨在与 PF 防火墙进行互操作。
sndio,一个紧凑的音频和 MIDI 框架。
Xenocara,一个定制的 X.Org 构建基础设施。
cwm,一个堆叠式窗口管理器。
tmux,一个虚拟控制台复用器。
X.Org 服务器。
Clang 编译器。
GNU 编译器套件。
Perl 编程语言。
NSD DNS 服务器。
Ncurses 终端处理库。
GNU Binutils 工具集。
GNU Debugger 调试器。
Awk 文本处理工具。
所有这些都包含在操作系统的基本系统中,并且是 OpenBSD 标准安装的一部分。所有基本系统的部分都包含了 OpenBSD 特定的补丁、改进和增强措施,以提高安全性。
除了上述功能之外,截至撰写本文时,OpenBSD 还通过 OpenBSD 软件包管理器提供了超过 9700 个可安装的应用程序。然而,需要注意的是,尽管建议使用预编译的软件包而不是手动从 Ports 构建软件,但 OpenBSD 的“release”和“stable”分支的软件包不会得到更新。这意味着软件包的安全更新只能通过 Port 在“stable”分支运行时获得。
当在 Ports 中的应用程序中发现严重的错误或安全漏洞时,它们将在 Port 的“stable”分支中修复。与基本系统相反,“stable” Port 只会为最新发布提供安全后移。这意味着,如果你使用第三方应用程序,你需要检查正确的 Port 分支,并手动构建软件。可以使用 CVS 来保持 Port 的最新状态,并可以订阅 ports-changes 邮件列表以接收与 Port 中应用程序相关的安全公告。
另一个非常有效的解决方案是运行 OpenBSD 的“current”分支。 “current”分支是活跃开发发生的地方,但开发人员非常谨慎,不会引入可能会导致系统出现问题的新功能。 “current”分支有点类似于“滚动发布”模型。
由于 Ports 与第三方供应商提供的软件相关,因此它不会经过与 OpenBSD 基本系统执行的同样全面的安全审计。OpenBSD 项目没有足够的资源来确保与基本系统相同级别的 Port 健壮性和安全性。
欲了解更多信息,请访问 OpenBSD 项目网站。
作者:Jason Kafer
译者:ykla & ChatGPT
有时候,当我告诉其他的技术专家我们建立的成功数字支付公司是运行在 FreeBSD 上时,他们会感到惊讶。
这并不是因为他们没有听说过 FreeBSD——这个开源操作系统今年已经 30 岁了。相反,他们之前可能没有将 FreeBSD 视为一个企业级操作系统。但事实上,这正是它的作用,以及我们如何使用它:FreeBSD 是一个关键的企业级操作系统,在企业环境中与其他操作系统不相上下,甚至在某些方面更胜一筹。
我使用 FreeBSD 已经 16 年了。和许多其他人一样,我最初是出于爱好开始使用它的。之前我在企业环境中使用了各种操作系统,主要是在支付行业,但对一些其他著名的可选项的一些缺点感到不满:随机的错误代码,无尽的支持工单,以及封闭的系统。一位同事向我介绍了 FreeBSD,我立即喜欢上了它的简洁性和功能。我们将那家公司重建在 FreeBSD 堆栈上,项目取得了巨大的成功。
当我们启动我们的数字支付公司时,我们选择了 FreeBSD,并且从未回头;它仍是我们的首选操作系统。我们在两个不同的美国数据中心运行近 60 台服务器。我们采用主动-主动架构,并拥有自己的 IPV4 地址块,通过 Anycast 技术实现了高可用性。我们还使用几个高度分割的 VLAN 用于隔离和安全目的。而且我们所有这些都是通过 FreeBSD 来实现的。
这让一些人感到惊讶的原因之一是,作为一家支付公司,我们处理数百万个信用卡和银行账户号码。简单地说:数据泄露对我们来说将是极其严重的后果。我们进行密集的渗透测试和漏洞扫描,以确保我们尽可能强大。我们定期接受安全和合规性评估,并且成绩优异。
在这个过程中,我花了很多时间与审计员、信息安全专家、首席信息官、CISSP 等行业人员交流,为使用 FreeBSD 提供商业案例,并与他们分享我们亲身体验的教训:FreeBSD 是一个非常强大、可靠的企业级操作系统,能够应对最严格的安全标准和监管审查。
接下来,我将解释为什么 FreeBSD 是我们企业级操作系统的首选,并且这些理由同样可以成为你在自己组织中为 FreeBSD 提供商业案例的五个基本原则。
使用 FreeBSD 作为企业级操作系统:5 个需要知道的事情。
1.安全与稳定性
FreeBSD 及其生态系统中所有产品最优秀的特点之一是,它是一个完全免费且开源的项目。历史上,在企业环境中,开源有时可能受到负面评价,但随着 IT 专业人员认识到,当正确配置和管理时,开源软件的安全性可以与专有代码一样安全,甚至可能更安全。
其中一个关键原因是,开源消除了所有的黑盒。你可以深入了解其中的一切,没有任何神秘的地方。更重要的是,许多人关注着这些代码,这意味着问题往往会被发现并迅速得到解决,特别是当项目有着长期参与的社区(就像 FreeBSD 一样)。
此外,我从未见过其他操作系统在发布和补丁周期之间具有如此一致的行为。使用 FreeBSD,我们从未遇到那些(在其他系统上)常见的情况——即安装更新或新版本后,一些工具突然停止工作,因为底层库已更改。
FreeBSD 的基本安装还运行着一组非常简化的对外服务,这支持了许多强调零信任或最小权限原则的安全框架,只运行实际需要的服务。你可以轻松添加你需要的功能,而无需担心卸载或禁用那些不需要的内容。
同样,一切都非常容易调整和配置,从网络堆栈的运行方式到入侵检测等等。文档非常好,同样没有黑盒或无休止的支持工单。
开源特性还有助于提供优秀的性能,最大限度地减少环境中的调用和其他潜在负担。最后,在安全性和稳定性方面,基本操作系统与安装在其上的其他所有内容是相互隔离的。
2.高可用性
高可用性(HA)是一个热门话题,在许多领域越来越常见的要求。过去,我从未能够在其他操作系统上实现高可用性,而不购买昂贵的防火墙和路由设备。
我们使用基本的 FreeBSD 构建了我们的主动-主动、多主机、Anycast 环境。甚至我们的防火墙也是 FreeBSD。我们唯一需要添加的第三方应用是用于 BGP 路由的 BIRD。
两年来,我们没有任何停机时间。我们对当前配置进行了负载测试,最多有 20,000 个并发的信用卡交易,但这还没有达到平台的极限。而且,我们实际上是使用简单的硬件和基本的 FreeBSD 实现了这一切。
3.补丁更新
这可能是在企业环境中考虑使用 FreeBSD 最具吸引力的原因之一,也是我最喜欢谈论的方面之一。
我经常被问到一个类似的问题:“等等,你使用 FreeBSD 作为防火墙的操作系统?”我的回答总是:“是的,绝对没错。”
事实是,很多审计和评估公司以及 CISSP 都习惯于使用知名的商业操作系统。这本身没有什么问题,但我喜欢分享我的信念,即许多这些平台在内部使用了许多开源软件,例如 FreeBSD 及其 PF 防火墙。当然,他们会在其上封装自己的用户界面和代码,但本质上,我们在自己的系统上做的事情与他们是一样的。
当我们运行类似于 pkg audit nightly
这样的命令来检查我们的系统是否存在 CVE 和其他已知问题时,我们可以比等待商业操作系统供应商提供补丁更快地修补这些漏洞。当一个漏洞被发现时,我们会很快地使用最新的修补程序构建和运行。
4.配置管理
没有人喜欢神秘的复选框用户界面风格的配置管理。它是另一种形式的黑盒,因为你不真正知道后台发生了什么。
因此,我喜欢配置 FreeBSD 的简单性。它全部是平面文件。你不需要登录到用户界面来进行更改。
FreeBSD 基于文件的配置使你拥有了一个简单但强大的变更管理系统,这在安全性和审计方面是很有说服力的。几乎任何安全性和评估框架都需要一些类型的变更管理流程。基于文件的配置使得在配置管理中添加变更管理变得简单,你可以将这些文件配置保存为 GIF 文件,或者在其上使用版本控制,从而在配置管理中固有地增加了变更管理。
如果你想将其提升到更高的水平,我们使用 SaltStack 来实现配置管理的集中自动化和编排。在我们的环境中,没有一台服务器上有手动创建或更新的配置文件;一切都是通过 SaltStack 和 Git 完成的,这使得我们可以轻松跟踪环境中的配置管理和变更管理。这为我们提供了对任何系统上进行的任何变更的集中审计跟踪。
5.合规性管理
作为一家支付公司,符合监管合规性是我们的主要要求,这也是银行和金融服务行业中其他公司(以及大多数行业)的主要要求。
我们经常遵循 PCI DSS 和 NIST 网络安全框架。根据我们的经验,像这些框架这样的规范通常与某个主要商业操作系统高度匹配,因此许多审计员和评估员对该操作系统也更有经验。这在进行 PCI 一级评估或 NIST 审计时会产生学习曲线,因为我们基本上不得不教授审计员如何配置和保护 FreeBSD。(影响是,现在有一些供应商非常了解它的运作方式!)
如果你与一个不了解 FreeBSD 的供应商合作,第一次评估或审计可能比后续的更加痛苦,因为你必须帮助他们应对这个学习曲线。
但是,好消息是:每当我们完成一次与之前不熟悉 FreeBSD 的安全评估员的课程后,到最后,他们总是会被确信 FreeBSD 是从安全性、合规性、补丁更新和配置管理角度来看最好的操作系统。真的。成功地完成这些审计和评估最终使一个操作系统符合“企业就绪”的标准,我可以断言 FreeBSD 超过了这个标准。
这就是为什么我喜欢分享我们的经验和我们所学到的东西,因为这不可避免地可能成为一个催化剂,帮助我们的技术人员和团队从这样一个伟大的开源操作系统中获得好处。
Jason Kafer 是一位经验丰富的技术专家,他专注于高可用性和容错性系统、金融科技领域和数据安全。
译者:ykla & ChatGPT
发布日期:2017-10-15
在这篇文章中,我们将简要讨论关于流行操作系统(如 BSD 和 Linux)之间差异。
如果你对操作系统有所兴趣,很可能会遇到人们询问类似于“我应该使用 FreeBSD 还是 Ubuntu?”或者“我应该使用 Arch Linux 还是 Debian?”这种问题。你可能还见过有人对他人从一个操作系统迁移到另一个操作系统而感到兴奋。
这些问题和行为是没有意义的。让我用一个例子来解释,这样你会立即明白其中的道理。
“我应该用拖拉机还是汽车?”或者“我应该乘火车还是坐飞机?”
每种交通工具都是为了解决特定问题而开发的。操作系统也是如此。
因此,有人会问是否应该使用操作系统 X 而非 Y,是因为这个人还没有理解他的具体需求或所涉及操作系统之间的差异。而且大多数人实际上并不真正与操作系统打交道,而是更多地与软件包管理器或应用程序打交道。
没有人能够告诉你应该使用什么,这完全取决于你自己的具体情况和需求。当你面临一个具体问题时,你需要考虑用哪个系统最适合解决这个问题,并且当你有多个选择时,你可能需要研究每个系统之间的差异。在某些情况下,你在“拖拉机”和“汽车”之间做选择,但在其他情况下,你在考虑“汽车品牌”和“汽车品牌”之间的选择,而你知道某些品牌和型号非常相似。
所有开源操作系统项目都很优秀,它们各自专注于不同的领域。当有人从某个 Linux 发行版迁移到某个 BSD 版本或反之时,感到高兴是没有意义的。而当有人从像 Microsoft Windows 或 Apple 的 OS-X 这样的专有系统迁移时,感到高兴是有意义的,因为这些系统不仅损害了自由,而且还包含一些有问题的内容。
几乎所有不同的开源项目可以相互帮助、友好合作,终端用户应该只从技术角度而不是个人喜好角度讨论这些问题。当然,进行简单的闲聊和分享个人喜好没有问题,但实际情况并非如此。
当有人说:“我们一直在我们的设备上运行 Linux,但它们最终崩溃了。然后我们决定在它们上面安装 FreeBSD,它们的性能提高了一倍,而且依然表现得很好!”这样的陈述对于他们一开始使用的具体操作系统没有提供任何信息。实际上,这表明这些人很可能一开始对自己在做什么一无所知。
当你理解了自己的具体需求时,你就会寻找解决问题的最佳工具,而在某些情况下,这需要测试和试错的方法。
在某些情况下,你面对的是非常普通的问题,比如需要阅读电子邮件、浏览互联网,并且偶尔写一封信。这种情况可以类比为一个非常普通的运输问题,你只需将一个小箱子运输到相对较近的地方。几乎任何一种运输方式都可以解决你的问题,和你使用什么方式几乎没有关系。嗯,几乎没有关系,因为在这种情况下使用大卡车或飞机是没有意义的。就像使用一个没有二进制软件包,而需要从头编译所有东西的通用目的操作系统一样,是没有意义的。而且,也许你真的喜欢因为不需要将不需要的东西编译到你的应用程序中而获得的微小的速度提升?也许你宁愿开保时捷或法拉利而不是步行,即使你只需要走几米就能到达目的地?谁知道呢,对吧?
当你面对大多数通用情况时,主要取决于个人品味和偏好,而不是技术要求。几乎任何操作系统都可以很好地满足你的需求,但也有一些例外情况(主要是硬件相关的限制)。但是,当你需要调整编译时间选项,因为你需要定制解决方案时,你面对的不是通用问题,而是一个非常具体的问题。
你需要问自己一些问题,比如:
你使用了什么硬件?
你需要从内核中得到什么?
你需要哪种类型的驱动程序?
你希望如何安装第三方软件?
你需要能够更改编译时间的选项吗?
你需要多少系统控制权或喜欢拥有多少控制权?
你需要多高的系统安全性?
你更喜欢图形界面应用程序还是命令行界面应用程序?
这是一个用于重要事务的设备,还是一个用于娱乐的设备?
一些操作系统经过精心设计和详细考虑,比如 OpenBSD,而其他系统则几乎是没有计划地“有机地”拼凑在一起,这极大地影响了安全性、性能和控制权。
举个例子,多年来,FreeBSD 在通信行业一直是首选的操作系统,因为它的网络堆栈经过非常谨慎的设计,而 Linux 则因其网络堆栈混乱而受到指责。当然,这影响了所有运行相同内核的 Linux 发行版。情况已经改变,但了解底层代码的设计方式也有助于理解哪个系统最适合满足你的具体需求。
当这些因素都不重要时,你几乎可以自由选择所有东西。
译者:ykla & ChatGPT
最后发布日期:2021-02-10
自从 2010 年 systemd 发布以来,该项目一直在不断地增加新功能和扩展性能。代码行数超过了 130 万行,其中 Lennart Poettering 刚刚将其个人 systemd-homed git 树合并到 systemd 中,添加了另外 2 万行代码,而持续存在的开放问题数约为 1400 个,新问题和漏洞不断涌现。因此,systemd 应被视为实验性的,不适合在任何地方运行。
即使像 OpenBSD 开发者这样细致且注重安全的编码者,代码审查非常严格,错误和安全问题仍然时有发生。
考虑到 systemd 的开发方式,代码甚至没有经过(据我所知)单一的代码审查,而且开发者不断增加新功能而不是专注于解决漏洞、安全和稳定性,这个项目不适合出现在任何 GNU/Linux 发行版中,除非是“测试阶段”。
即使是 Debian GNU/Linux,在其“testing”和“unstable”版本分支中进行了大量的测试,也不适用于生产系统,因为 systemd 仍然有许多可追溯至 2015 年的漏洞。
添加一个与现有代码库非常匹配的简单功能是一回事,但合并具有成千上万行代码的项目则完全不同。这等同于添加了一个全新的应用程序。
在 Lennart Poettering 于 2013 年 1 月的博客文章《The Biggest Myths》(最大的误会)中,他试图反驳将 systemd 称为“单体化”(monolith)的说法,而许多人都认为它就是。Lennart 表示:
一个包含 69 个单独二进制文件的软件包很难称为单体化。然而,与以前的解决方案不同的是,我们将更多组件捆绑在一个单一的压缩包中,并在单个存储库中维护它们,具有统一的发布周期。
然而,问题是,许多这些所谓的单独二进制文件在没有其他 systemd 组件的情况下将无法工作。只需举一个例子,如果查看 systemd-networkd 的 man 页面,明确说明如果将 UseDNS 选项定义为 true
,则将使用从 DHCP 服务器接收到的 DNS 服务器,并优先于任何静态配置的 DNS 服务器。这对应于 resolv.conf
中的 nameserver
选项。 但它忽略了这个设置(和多个其他设置)在没有 systemd-resolved 的情况下是无效的。systemd 的其他组件也同样紧密集成。
某些类型的应用程序非常难以按照 Unix 哲学设计和构建,例如现代网络浏览器、电子游戏等,但 systemd 显然并不属于这类应用程序。它在许多方面违反了 Unix 哲学,以至于很难跟上,这不是因为开发者需要这样做,而是因为他们想这样做,他们根本不在乎。虽然他们可以不在乎,并继续将更多功能添加到 systemd 中,但是现在一些大型 GNU/Linux 发行版是时候开始认真关注了。
我们所熟悉的 GNU/Linux 正慢慢变成一场灾难,一个充满安全问题的操作系统末日,等待爆发。这只是因为每个人都希望有一个新的 init 系统,但最终却得到了除了新内核以外的一切。现在唯一缺少的就是 systemd-linux。
最后更新于 2022-12-08 发布于 2022-12-08
ZFS 文件系统本身包含校验和,读取数据时会始终验证校验和,以确保数据没有损坏。
执行 zpool scrub 命令会读取写入的所有数据块,并验证校验和。如果在 scrub 过程中发现错误,并且在具有冗余的镜像或 RAID-Z 等配置下可以修复,那么错误将自动修复。
这里,我故意在 ZFS 管理之外的地方实验性地写入数据,以产生与检验和不一致后故意引发数据错误。
在这个实验中使用了 FreeBSD,但在类似 Ubuntu 等 Linux 系统上的 ZFS 中,分区创建和磁盘设备名称可能会发生变化,但 ZFS 操作相同命令仍然有效。
首先创建实验用池。在这里,我们将在 USB 磁盘 da1 上进行实验。
准备一个带 GPT 标签的磁盘。
创建一个 4GB 的分区。
检查创建好的分区。
通常情况下,为了节省磁盘空间,创建 ZFS 池时通常要指定压缩功能,但这次不指定,因为将写入零数据。这样做是因为一旦指定了数据压缩功能,写入的数据将不再占用数据大小的空间。
检查已创建的 ZFS 池。
使用 scrub 命令来验证数据的一致性只针对实际写入数据的部分。为了破坏已写入的数据,预先创建内容为 0 的文件。
迁移到准备好的 ZFS 池内的目录。
使用 dd 命令,从 /dev/zero 读取的虚拟数据(即零数据)填充整个池。
这就像是用完整个游泳池一样。在这里,我明确指定了 -b 选项,以便检查块数。
在填满游泳池后,我们将破坏 ZFS 数据完整性,以便引发错误。无法通过 ZFS 进行更改以进行破坏,因此在这里,我们将尝试从 ZFS 外部向磁盘写入垃圾数据。
一旦导出池
在相关分区的适当位置写入 1 块垃圾数据。
导入池,尝试读取之前创建的文件
出现了错误。池的状态如下,乍看之下似乎没有错误。
尝试执行 scrub。
等待 scrub 完成,然后通过 status 进行确认。
通过 CKSUM 可以发现发生了错误。可以使用 -v 选项实际确认已损坏的文件。
再次尝试读取 /ztest/dummy,错误仍然存在。
现在我们尝试将 0 重新写入损坏的部分,以恢复原始数据。
现在应该已经将数据恢复到原始状态,我们再次尝试读取它。
无法读取时,没有错误。虽然 zpool status 显示错误消息,但 CKSUM 错误计数为 0。
再次运行 scrub。
检查池状态。
这样错误就消失了。
译者:ykla & ChatGPT
最后更新时间:2021-02-17
作为一个操作系统,GNU/Linux 由于其项目的碎片化性质、内核中软件的臃肿,但主要是由于企业利益的操控而变得一团糟。有几个技术性原因支持从 GNU/Linux 迁移到 BSD,但本文并不涉及这些,而是对 Linux 领域当前状况的“分析”,更像是一个带有主观观点的愤怒发泄。
在过去,我一直喜欢根据技术优劣来选择操作系统和工具。然而,在如今的世界中,像微软、苹果、谷歌等公司以损害用户隐私和进行有争议的活动而闻名,我认为这是错误的做法。
像微软的 Windows 10、苹果的 MacOS 和谷歌的 Android 等专有操作系统因其行为不端而出名,甚至连联想这样的公司也在使用 UEFI 引导注入定制的 Windows 组件,以便系统可以向联想回传信息。
长期以来我一直是开源替代品的支持者,比如 GNU/Linux 和 BSD。不仅如此,我还相信在许多技术领域,开源替代品要好得多。
我一直非常反对传统的 BSD 与 Linux 之争,正如我以前在文章中写的那样,我一直认为不同的开源项目可以互相帮助和合作,而终端用户应该从技术角度而不是个人偏好来讨论这些问题。
每当有可能时,我一直建议人们(无论是个人还是企业)将使用的操作系统改为开源替代品,并且当人们对我的宣传持接纳态度时,我会帮助他们从他们的工作站迁移到 BSD 或 Linux。在服务器端同样也是如此。这是真正成功的努力,我诚实地从未遇到过不满意的个人或公司。
然而,随着越来越多的公司希望控制 Linux 作为操作系统的发展方向,GNU/Linux 世界的情况开始发生变化。由于 GNU/Linux 作为操作系统的结构和组织,它不幸受到这些影响,虽然它仍然是开源的,并且仍然远未达到专有替代品所发生的那些糟糕情况,但一些可选择性的功能已慢慢被引入到内核和 systemd 中。
你仍然可以选择退出这些功能并选择其他方式,但作为一个开源爱好者和支持者,以及一个关心隐私的个人,也许更好的方法是将系统迁移到一个你不必担心“骚扰软件”的地方。
作为一个系统管理员,我不想担心下次升级系统时是否会受到意外,我也不想记下一张间谍软件列表,以便我在运行这些系统时记得选择退出。
一些 Linux 发行版已经决定(不仅因为隐私选择性功能问题,还有其他问题)实现其他 init 解决方案,而随着内核开发中的情况以及许多第三方应用对 systemd 的依赖越来越深,问题正在向操作系统的其他部分扩散,我认为这是一场越来越艰难的战斗。
从社区和安全的角度来看,我不认为 GNU/Linux 的未来看起来那么光明,因此作为一个可选的替代方案,我建议在可能的情况下将一切迁移到更加合理的东西,比如——BSD 项目。
在 1983 年,Richard Stallman 在一条 Usenet 消息中宣布了开始编写 GNU 项目的意图。到了 1987 年 6 月,该项目已经积累并开发了自由开源软件,包括汇编器、一个几乎完成的便携式优化 C 编译器(GCC)、编辑器(GNU Emacs)以及各种 Unix 实用工具,如 ls、grep、awk、make 和 ld。
在 1991 年,Linux 内核出现了,由 Linus Torvalds 在 GNU 项目之外开发,到 1992 年 12 月,它以 GNU 通用公共许可证第 2 版的形式发布。结合 GNU 项目已经开发的操作系统实用工具,它成为了 GNU/Linux 操作系统,更为人所知的名字就是“Linux”。
然后出现了 Linux 发行版。不同的项目将 Linux 内核、GNU 工具和库、额外的第三方软件、文档、X Window 系统、窗口管理器和桌面环境等组件结合到发行版中。不同的发行版关注不同的目标,有些关注桌面,而其他一些则主要关注服务器,还有一些试图提供多用途的操作系统。
在过去,所有这些不同的组件和项目都是由开源爱好者和社区开发的,对编程和开源的热情是推动力。
但现在情况已经不同了!请参阅《systemd 背后的真正动机》(The real motivation behind systemd.)。
Linus Torvalds 多次明确表示,他不关心“Linux 世界”(用户空间)中发生的事情,他只关心内核开发。在 2020 年 1 月 6 日的“Moderated Discussions”论坛上,Linus Torvalds 在回答一个用户关于一年前的内核维护争议对 ZFS on Linux 项目产生了巨大影响的问题时,作出了一个令人震惊的评论。
在回答用户的实际问题后,Torvalds 对 ZFS 文件系统进行了非常错误和有害的指责。Torvalds 说:
它(ZFS 文件系统)一直更像是个噱头而非其他什么东西。
通过这样的声明,Linus Torvalds 将全球最稳健和流行的文件系统之一,经过 15 多年的发展,简单地贬损为一个“噱头”!
ZFS 被誉为“文件系统的终极选择”。它是由 Sun Microsystems 最初设计的一种综合文件系统和逻辑卷管理器。ZFS 是一个稳定、快速、安全和未来可靠的文件系统。它具有可扩展性,并包含对数据损坏的广泛保护,支持高存储容量,最大 16 Exabyte 文件大小,最大 256 Quadrillion Zettabytes 存储空间,文件系统(数据集)或文件数量没有限制,高效的数据压缩,快照和写时复制克隆,连续的完整性检查和自动修复,RAID-Z,本地 NFSv4 ACLs 等,而且可以非常精确地配置。
由 Oracle 和 OpenZFS 项目推出的两种主要实现非常相似,使得 ZFS 在类 Unix 系统中得到广泛应用。
正如维基百科文章所述,OpenZFS 是一个旨在汇集使用 ZFS 文件系统并致力于改进其性能的个人和公司的伞形项目,同时也旨在以开源方式更广泛地使用和开发 ZFS。OpenZFS 汇集了来自 illumos、Linux、FreeBSD 和 macOS 平台的开发人员,以及许多公司。该项目的高级目标包括提高人们对开源 ZFS 实现的质量、实用性和可用性的认识,鼓励就改进开源 ZFS 变体的持续努力进行开放式交流,确保所有 ZFS 发行版的可靠性、功能和性能的一致性。
OpenZFS on Linux 是该项目中针对 Linux 的部分,目前有 345 个活跃贡献者,超过 5,600 次提交,几乎每天都有新的提交!
一些世界上最大的 CDN 和数据存储服务在 FreeBSD 或 Linux 上运行 ZFS!
在另一种情况下,Linus Torvalds 在 TFiR:开源和新兴技术的 YouTube 频道上接受了关于 Linux 桌面的采访,在采访中他做出了另一个惊人的声明,认为 Linux 仍未准备好成为桌面操作系统,也许 Chrome OS 是解决这个问题的方法。
这些以及其他许多 Linus Torvalds 的声明显示 Linux 作为一个操作系统没有真正的方向和清晰的管理,因为内核开发是独立于 Linux 世界的。
Linus Torvalds 通常也非常乐于受到企业利益的迅速影响,他对安全性的观点也令人担忧。
在 2009 年,Linus Torvalds 承认内核开发变得失控。
我们变得庞大和庞大。是的,这是一个问题……呃,我很想说我们有一个计划……我的意思是,有时候有点可悲,我们绝对不是我 15 年前设想的那种精简、小型、超高效的内核内核非常庞大和庞大,我们的指令高速缓存占用了可怕的空间。我是说,这毫无疑问。而且每当我们添加一个新功能,情况只会变得更糟。
在 2014 年的 LinuxCon 上,他表示认为扩展问题变得更好了,因为现代 PC 速度更快了!
在过去的 20 年中,我们一直在扩大内核,但硬件增长更快。
这是一个非常有问题的态度。
当软件变得臃肿时,它不仅变得更不安全、更容易出错,而且变得更慢。认为问题会随着硬件速度变快而消失是一种不成熟的态度。在今天,我们需要优化软件以节省功耗,节约电力并减少污染。
在 2007 年的一次采访《为什么我退出》中,内核开发者 Con Kolivas 表示:
如果有一个与内核开发和 Linux 相关的大问题,那就是开发过程与普通用户完全脱节。你知道,占据 Linux 用户群 99.9% 的人。Linux 内核邮件列表是与内核开发者沟通的途径。委婉地说,Linux 内核邮件列表(lkml)是最可怕的交流论坛之一。大多数人对向该列表发送邮件感到非常害怕,因为他们担心因为经验不足、不恰当的错误报告、愚蠢或其他原因而受到责备……我认为大多数内核开发者并不真正了解用户空间中存在的问题有多大。
除了上述问题之外,事实上,Linux 作为一个操作系统是由不同项目的不同应用程序组合而成的,这些项目彼此之间没有任何关联。如果你对此一无所知,可以看看如何构建 Linux From Scratch。
另一篇可以展示其中一些问题的好文章是《Linux 维护漏洞:ifconfig 在 Linux 上被弃用的真正原因》。
这与 BSD(指 FreeBSD、OpenBSD、NetBSD 和 DragonFly BSD)完全不同,因为每个 BSD 都是独立的项目,将其系统“内部”组合在一起。内核、标准 C 库、用户空间工具等都是操作系统基本系统的一部分,而不是从一堆不同的外部来源组合而成的。
在 2005 年的一次采访中,OpenBSD 的创始人 Theo de Raadt 发表了以下言论:
我相信现在大家都知道 Linux 只是一个内核,而 OpenBSD 是一个完整的 Unix 系统:包括内核、设备驱动程序、库、用户空间、开发环境、文档以及继续开发所需的所有工具。尽管如此,就功能的完整性而言,OpenBSD 并不像一个 Linux 发行版,完全不一样。
当我们发现系统需要进行更改(无论是出于安全性还是其他原因),我们可以通过从用户空间、库直到内核的所有部分进行更改来强制进行这种更改。我们可以随意更改接口。我们可以快速行动。有时候,甚至会对之前的可执行文件进行改变;但如果需要的话,我们可以选择做出这样的决定。
这使我们能够快速前进,拥有极大的灵活性。如果某些东西设计错误,而修复取决于不仅仅内核的更改,我们可以通过改变所有必需的部件的正确位置来解决它。我们不需要在错误的地方进行修改来解决问题。
Linux 发行版是由不同团体编写的工具的集合,往往具有冲突的利益和优先级,因此由于 GNU/Linux 操作系统的碎片化结构,整个项目正在快速失去控制,受到商业利益的驱动。
即使是最好的 GNU/Linux 发行版,如 Debian GNU/Linux 和 Arch Linux,它们仍然主要由开源社区推动,也不免遇到这个问题,因为它们不仅仍然严重依赖于碎片化的工具,而且一些开发人员被一些主要的商业公司雇佣了。
在我的文章《systemd 背后的真正动机》中,我写到了开发 systemd 的主要原因是 Red Hat 在嵌入式设备(主要是美国军方和汽车行业)的财务利益。最初 systemd 是作为一个新的 init 系统发布的,但它已经逐渐发展成为 Poettering 所描述的“为 Linux 操作系统提供基本构建块的一套软件”。
在一次与 Red Hat CEO Jim Whitehurst 的采访中,他说:
我们与世界上最大的嵌入式供应商合作,特别是在电信和汽车行业,稳定性和可靠性是他们最关心的问题。他们很容易适应 systemd。
我并不反对 systemd 的“init”部分,但 systemd 不再只是一个 init 系统,其主要问题在于其持续的发展是受到公司的财务利益而不是开源社区的利益驱动的。因此,我认为将 systemd 引入主要的 Linux 发行版,比如 Debian GNU/Linux 和 Arch Linux,是一个巨大的错误。他们已经严重依赖于 systemd 和 Red Hat。
这只是纯粹的猜测,但我必须承认我怀疑 systemd 是引入 Linux 操作系统安全漏洞的平台。这些漏洞当然看起来像是正常的“程序错误”,然而其中一些漏洞与 OpenSSL Heartbleed 漏洞非常相似。在开源社区中,这是一个众所周知的策略,即利用“程序错误”来创建后门和其他东西。systemd 有一系列长期存在且公开的漏洞(截至撰写本文有 1400 多个未解决的漏洞),自 2015 年以来仍未修复,然而 systemd 开发人员将继续在其中添加越来越多的混乱!
另一个对 Linux 世界产生巨大影响的公司是谷歌。谷歌开发了基于 Linux 内核的 Android 和 Chrome OS 两个操作系统。Chrome OS 是从 Chromium OS 衍生出来的,其主要用户界面是谷歌的 Chrome 网络浏览器。
Chrome OS 被视为微软的竞争对手,既直接竞争微软的 Windows 操作系统,又间接竞争其文字处理和电子表格应用程序,后者通过 Chrome OS 对云计算的依赖来实现。而这就是 Chrome OS 的一个核心问题,它在很大程度上依赖于谷歌的云基础设施。
谷歌已成为最具争议的公司之一。谷歌本质上是一家广告公司,并因其操纵搜索结果和极端的用户跟踪能力而闻名,主要归因于网站开发人员添加 Google Analytics 等工具。
在 Linus Tech Tips 于 2019 年 8 月发布的一段 YouTube 视频中,Linus Sebastian 演示了互联网上的跟踪方式以及它如何影响你搜索产品时得到的价格。请注意: 该视频由 Private Internet Access 赞助,而该公司后来被 Kape Technologies 收购,该公司因通过其软件发送恶意软件而闻名,并在一般情况下很糟糕。请勿使用 Private Internet Access!
Cloudflare 是另一家影响不同领域开发的美国网络基础设施和网站公司。该公司为网站访问者和 Cloudflare 用户的托管提供商之间提供服务,充当网站的反向代理。因此,Cloudflare 已成为互联网上最大的问题之一。
systemd 开发者已将 Cloudflare、Quad9 和 Google 集成到 systemd-resolved 的核心中,现在你必须手动禁用(选择退出)这些功能。
随着 Red Hat(IBM)通过 systemd 的不断影响,他们成功引导了大多数主要 Linux 发行版朝着与许多系统管理员和用户希望看到的方向相违背的方向发展。
与 Linux 发行版相反,伯克利软件分发(BSD)不是一个分裂的项目。BSD 项目维护整个操作系统,而不仅仅是内核。
BSD 是基于 Research Unix 开发和分发的操作系统,由加利福尼亚大学伯克利分校的计算机系统研究组(CSRG)开发。如今,“BSD”指的是其后代,如 FreeBSD、OpenBSD、NetBSD 和 DragonFly BSD。这些项目是真正的操作系统,而不仅仅是内核,它们并非“发行版”。
Linux 发行版,如 Debian GNU/Linux 和 Arch Linux,必须做的工作是将所有所需的软件汇集在一起,以创建一个完整的 Linux 操作系统。它们需要 Linux 内核、GNU 工具和库、init 系统以及一些第三方应用程序,以便得到一个运行的操作系统。
相比之下,BSD 既是一个内核又是一个完整的操作系统。例如,FreeBSD 提供了 FreeBSD 内核和 FreeBSD 操作系统。它作为单一项目进行维护。
没有个人或公司拥有 BSD。它由遍布全球的高度技术和忠诚的贡献者社区共同创建和分发。
公司也使用和为 BSD 做贡献,但与 Linux 不同,公司不能“劫持”BSD。公司可以制作自己的 BSD 版本,例如索尼电脑娱乐公司为 PlayStation 3、PlayStation 4 和 PlayStation Vita 游戏机制作的版本,但由于 BSD 是完整的操作系统,并且每个 BSD 项目都由开源爱好者和社区维
护和开发,而不是像 Red Hat 那样的公司,因此 BSD 项目真正独立。
这种 BSD 的组织方式的结果是,无论你选择哪个 BSD 项目,你在基本安装中都不会发现疯狂的选择退出(opt-out)间谍软件设置,而且你不会发现损害隐私的解决方案集成到操作系统的核心组件中。
相反,由于 BSD 项目由熟练和热情的人员开发和推动,他们非常关心操作系统的设计、安全性和隐私性,你经常会发现即使是通过软件包管理器安装的第三方软件也会被修复,以消除这些问题,例如 OpenBSD 在 Firefox 中禁用 DNS over HTTPS。
所有这些的另一个巨大优势是,围绕 BSD 项目的社区由经验丰富、乐于助人且(大多数时候)友善的人组成。
GPL 许可证对开发者更严格,它是一种伪式开源,因为它强制要求公开所有修改后的源代码,并阻止其他开源项目的集成,例如,GPLv2 阻止了在 Linux 中集成 DTrace 和 ZFS。
另一方面,BSD 开发者没有这样的限制。制造商可以选择将 BSD 作为他们创建新设备时的首选操作系统,而非 Linux。这将使他们可以保留自己的代码修改。而 Linux 的许可证则强制要求将源代码公开。
听起来 GPL 许可证可能更好,因为为什么我们要允许公司简单地“窃取”我们的开源代码,并生产专有产品而不给予任何回报。但事实并非如此简单。通过 GPL 许可证强制公司向公众发布源代码,公司很快变得更具操纵性。
Red Hat 在发布 systemd 时采取的策略是试图让尽可能多的“重要”第三方项目与 systemd 紧密合作,甚至依赖于 systemd。这样,其他 Linux 发行版更容易被说服采用 systemd,因为这些第三方项目的轻松集成。systemd 开发者与几个第三方项目进行了对接,并试图说服他们使其项目依赖于 systemd,例如 Lennart Poettering 在 Gnome 邮件列表上的尝试,以及 Red Hat 开发者“keszybz”在 tmux 项目上的尝试。这些尝试大部分最初都被“伪装”成技术问题,但当你阅读 Gnome 邮件列表和其他地方的长电子邮件往来时,真正的意图变得非常清晰。
这样的操纵在 BSD 中是不需要的。公司可以自由地使用和修改 BSD,因此它们不需要试图影响事物的发展。如果不是这样的情况,我们可能会看到,例如,索尼竭尽全力影响 FreeBSD 的发展,因为他们在 PlayStation 产品中使用该操作系统。
不同的 GNU/Linux 发行版,如 Debian GNU/Linux、Arch Linux,甚至过去的 Red Hat Linux,都是真正伟大的项目。当项目由激情而不是利润驱动时,它们往往会变得更高质量。然而,当项目不再受激情而是受利润驱动时,它们往往会在质量上下降。这是自然而然的,因为利润动机与激情动机非常不同。这是为什么微软 Windows 一直是如此糟糕的操作系统的原因之一。
Microsoft Windows 在桌面上的成功并不是因为人们认为 Windows 是一个优秀的操作系统,没有理智和有经验的系统管理员或 IT 支持者会这样认为,而是因为微软采取了激进的营销策略。
虽然 BSD 项目确实会得到公司的代码和偶尔的财务支持,但它们是出于激情而不是利润驱动。这主要意味着经过深思熟虑的决策。它们不会因利润而对隐私或安全做出妥协,就像我们可能在 Linux 中找到的那样。
请查阅我的文章《GPL 的问题》(The problems with the GPL)以获取更多信息。
早在 1998-2000 年左右,我就开始将家里和公司的每台服务器和桌面操作系统从微软 Windows 迁移到 GNU/Linux,最初是 Red Hat Linux,后来是 Debian GNU/Linux。我这样做是因为我花了大约十年的时间支持 Microsoft Windows,并在这个绝对可怕的操作系统上浪费了太多时间。
当一个好朋友向我推荐 GNU/Linux 时,我对它的表现感到惊讶,开源社区令人惊讶,所有与 Windows 相关的常见问题都消失了。每当我用 Linux 替换了客户、家人或朋友的 Windows 设置时,(需要的)支持时间迅速减少。当然,这意味着较少的客户支持工作,但这非常好,因为现在我们可以将时间集中在更重要的事情上。
稍后我发现了 BSD 世界,并最终开始在服务器和桌面上部署 FreeBSD 和 OpenBSD。
在过去,Linux 通常比 BSD 具有更好的硬件支持,因此我通常更多地使用 Linux 而不是 BSD。硬件很昂贵,而且并不总是可能根据你想在系统上运行的操作系统购买硬件。但现在情况不同了,BSD 通常对现代硬件具有很好的支持。
我仍然喜欢 GNU/Linux,但我不想担心 systemd 中可能存在的可能破坏隐私的垃圾,或者 Lennart Poettering 接下来会想出什么恶心的东西,我也不想担心内核中加入的所有膨胀软件,比如内核强制适应 DRM。我一般不想担心下一个问题是什么。一切都应该是理智的选择和默认决策!不是选择退出(opt-out)!
你可以在我的文章《FreeBSD 是一个了不起的操作系统》https://unixsheikh.com/articles/freebsd-is-an-amazing-operating-system.html中了解有关 FreeBSD 的内容,以及在我的文章《OpenBSD 很棒》https://unixsheikh.com/articles/openbsd-is-fantastic.html中了解有关 OpenBSD 的内容。
harryruhr 在我的文章《为什么你应该将所有东西从 Linux 迁移到 BSD》上发表了一篇回应,题为《你应该从 Linux 迁移到 BSD 吗?这取决于……》。在这个回应中,harryruhr 提出了几个论点,我感觉有必要对其进行回应。
在我提到“Linux 存在分裂”这一观点后,harryruhr 写道:
是的,的确如此。但是现在 BSD 亦如此。单单三个“传统”的 BSD——FreeBSD、NetBSD 和 OpenBSD——在技术和目标上就有很大的差异。然后还有“新”的 BSD 分支,比如 Dragonfly、MidnightBSD、HardenedBSD 等等。在 Distrowatch.com 列出了 18 个不同的 BSD“发行版”。作者如此高度赞扬的 ZFS 文件系统只在 FreeBSD 及其近亲中可用,并且是基于“ZFS on Linux”。它在 NetBSD 和 OpenBSD 上不可用。
这是完全错误的。FreeBSD 是最早将 ZFS 从 Sun Microsystems 移植过来的独立操作系统之一。ZFS on Linux 出现得要晚得多,然后演变成了 OpenZFS,后来成为所有自由和开放源代码社区的 ZFS 贡献者之间的重要合作项目。来自 Linux、FreeBSD、NetBSD、Illumos 等地的开发者现在都在为这个项目做出贡献。
Linux 之所以分裂,是因为内核、GNU 工具、库和所有其他组件都是完全独立的项目。事实上,这些项目互相之间几乎没有任何关联,但同时,你不能没有以某种形式将这些不同的项目组合在一起,这就是不同的 Linux 发行版所做的事情。
GNU 项目甚至自 1990 年以来一直在开发他们自己的内核 GNU Hurd,最初计划作为 Unix 内核的替代品。由于 Hurd 内核尚未完成,Linux 内核只是一个方便的方式来启动工作中的操作系统。
而 BSD 则完全没有分裂,它们都是独立的完整操作系统和独立项目,都有自己的内核、基本工具等等。它们是拥有不同目标的独立项目。它们共享 BSD 内核的家族树,并且偶尔共享代码,但除此之外它们是相互独立的。如果 FreeBSD 或 NetBSD 被取消,OpenBSD 并不会受到很大的影响,反之亦然。
对于 Dragonfly BSD,情况也是一样的。Matthew Dillon 在 1994 年至 2003 年间是 FreeBSD 开发者,在 2003 年,由于他认为 FreeBSD 中采用的线程和对称多处理技术将导致性能不佳和维护问题,他与其他 FreeBSD 开发者意见不一,于是他创建了 DragonflyBSD。但是 DragonflyBSD 现在也是完全独立的操作系统和项目。
所有这些不同的 BSD 项目仍然都是完整且独立的操作系统。它们不是由来自不同项目的独立部分组合而成的。
至于 MidnightBSD、HardenedBSD 和其他类似的项目,它们也与分裂无关。这些项目大多数都是基于 FreeBSD 的,它们采用 FreeBSD 并设置不同的应用程序,或者对内核进行补丁等。它们与分裂毫无关联。
如果 BSD 项目像 GNU/Linux 一样分裂,那么 BSD 内核应该由一个独立的项目开发,基本工具应该由另一个独立的项目开发,直到你将所有这些独立而分裂的部分“粘合在一起”,什么都不会起作用。
这就是 GNU/Linux 操作系统与 BSD 操作系统之间的分裂性质的区别。
关于我的观点“Linux 被劫持”,harryruhr 写道:
作者说大型“有争议”的公司正在影响 Linux 的发展。这可能是真的,但在 FreeBSD 中情况是否真的更好呢?
FreeBSD 社区在每一个可能的机会都自豪地宣称 Netflix 正在使用 FreeBSD 来传送他们的内容。而且 Netflix 是 FreeBSD 内核最大的商业贡献者之一。然而,目前在 FreeBSD 桌面上本地观看 Netflix 内容仍然不可能。如果这一点,以及他们传播 DRM 内容,不能使 Netflix 成为最有争议的公司之一,我不知道什么是“有争议”。此外,当然还有数十个基于 FreeBSD 的商业和专有产品,这些产品否定了用户享受自由软件的好处。
正确的是,Netflix 是 FreeBSD 最大的商业贡献者之一,但这与 Linux 世界中的“劫持”无关。Netflix 将他们在 FreeBSD 上的所有改进都贡献回项目。他们所做的所有性能优化都已贡献给 FreeBSD。这对 FreeBSD 非常有益。
但 Netflix 绝不会试图影响 FreeBSD 项目或者试图“劫持”FreeBSD。他们也没有开始制作新的 init 系统,然后后来揭示这实际上并不是一个 init 系统,而是一个 “永远未完成、永远不完整,但跟踪技术进展” 的东西,不断壮大。
Hacker News 上的一位名为 drewg123 的 Netflix 员工提供了以下相关信息:
在 Netflix,我们的大型工作组中至少有 7 位 FreeBSD 提交者,以及一位核心团队成员(我肯定还忘记了一些人,对此我感到抱歉!)。我们雇用了许多其他的提交者和核心团队成员(根据具体合同)。
与雅虎不同,我们要对 Netflix 的业务目标负责,这些目标包括提高我们的流媒体客户体验质量,同时保持或降低内容传送的成本。经常情况下,这些目标与 FreeBSD 的目标高度契合,我们做出了大量贡献(如异步 sendfile、kTLS、未映射的 mbufs、时代稳定、NUMA 工作、RACK TCP、BBR TCP、TCP pacing 等等,我可能忘记了很多其他的贡献)。
关于 Netflix 提供的服务以及只能在其专有应用程序中播放的所谓 DRM 内容,以及其他基于 FreeBSD 的专有项目,这对 FreeBSD 没有影响,也与“劫持”毫无关系。这些项目都不会影响 FreeBSD。
因此,是的,FreeBSD 的情况要好得多。
对于我提到“BSD 是理智人的所在地”这一观点,harryruhr 写道:
作者说:“BSD 项目维护整个操作系统,不仅仅是内核。”这是正确的,BSD 确实不仅仅是内核,还包括用户空间程序。但是 BSD 操作系统中包含多少“用户空间”完全取决于 BSD 开发者。通常只有一些最基本的工具。其他工具必须通过 Ports 和软件包进行安装,这与在 Linux 发行版中使用软件包没有什么不同。例如,FreeBSD 的基本系统中甚至没有 Xorg,你必须使用“pkg install xorg”从软件包安装它。很少有情况是将集成系统的一部分从基本系统中移除,并转变为软件包。
我觉得这种说法有点误导。
你不能将 FreeBSD 中必须从第三方项目安装 Xorg(因为它不存在于基本系统中)与 GNU/Linux 操作系统的分裂性实际情况进行比较。这两者完全没有关系。
我的文章是关于 GNU/Linux 操作系统与不同 BSD 操作系统之间的分裂性质进行对比,而不是关于基本安装中包含多少第三方应用程序。
接着 harryruhr 说:
最“完整”的系统确实是 OpenBSD,它不仅带有 X(Xenocara),还有自己的 MTA(OpenSMTPd)和 Web 服务器(OpenBSD httpd),这使得 OpenBSD 的基本系统成为基本任务的服务器的良好选择。当然,除了 xterm、xcalc 和 3 个窗口管理器(twm、fvwm 和 cwm)外,几乎没有其他“图形”程序包含在内。如果你想要一个 Web 浏览器或者像样的邮件程序,你必须从软件包安装。
OpenBSD 中的 X、OpenSMTPd、httpd 和其他应用程序与操作系统本身无关。无论你选择将这些应用程序放入基本系统中还是留在外部,都不会影响 OpenBSD 仍然是一个完整的操作系统,即使没有这些部分。
这些部分不会使 OpenBSD 比 FreeBSD 更“多”地成为一个操作系统。这些部分只是使 OpenBSD 的基本安装中包含了更多的应用程序。
OpenBSD 项目决定将更多的应用程序集成到基本系统中,因为 OpenBSD 非常重视安全。开发者希望将这些应用程序与基本系统集成在一起,以控制这些部分的开发和工作方式。因此,这些应用程序已成为 OpenBSD 项目的一个整合部分。
FreeBSD 或 NetBSD 也可以在基本系统中提供大量的应用程序,但对于这些项目来说这样做没有意义。
事实是这些应用程序并不影响操作系统的完整性。另一方面,如果你没有内核,或者你没有“用户空间”工具,你什么都没有。这就是 GNU/Linux 的现实。
最后,我想指出,我提到 GNU/Linux 操作系统的分裂状况,是为了指出这种分裂是我们面临问题的主要原因之一。这些分裂项目经常有冲突的利益,这才是问题的核心,而不是哪个操作系统在基本安装中有最多的工具。
harryruhr 接着写道:
关于“BSD 或 GPL”的讨论就像许可证本身一样古老。对于两者,都有支持和反对的好理由。就个人而言,只要是自由软件,我并不在乎。关于 GPL 导致的软件由利润主导而非同情心的论点并不真的令人信服。
我认为,任何真正关心“自由软件”,即人们可以自由分发和修改的开源软件的人,都应该更深入地考虑这个问题。我们有超过三十年的经验,显示出许多以利润为驱动的公司在依赖一款无法控制的软件时会变得多么具有操纵性。
使用 BSD 许可证,公司无需使用策略或操纵手段来影响应用程序的开发,它可以直接使用该应用程序并随心所欲地操作。
最后,harryruhr 针对选择 BSD 而非 Linux 的原因,写下了以下内容:
但除了使用免费软件的原因外,这些理由应该只是技术上的。那些过时的论点,比如“BSD 是完整的系统,Linux 只是内核”或者“Linux 是被利润驱动,BSD 是被同情心驱动”,并不真的适用(再也不适用)。
通常情况下,我完全同意唯一选择特定操作系统的理由应该是技术上的原因。然而,这种情况不再适用,而我提出的论点也不是过时的,相反地是事实。
对于特定应用程序或硬件,Microsoft Windows 10 可能是唯一可用的操作系统,但这并不意味着你应该因为技术原因而妥协,忽视这个可怕的操作系统带来的重大隐私问题。事情总是有“过多的垃圾”。
由于最近 Linux 内核强制采用数字版权管理(DRM),以及 Linus Torvalds 对现实的几次脱节的表态,以及他对 Linux 世界中许多重要问题的完全漠视,显然他并不关心公司如何影响开发,Linux 内核的未来在隐私和安全方面并不看好。
除非你想在每次发布新的 Linux 内核时都需要自行修补问题,否则你需要一个可行的替代方案。这个替代方案应该由开发内核的人明确了解项目的发展路径,这个路径不应该影响隐私、安全或其他任何重要问题。
当然,任何项目中总会有分歧,但 FreeBSD 开发者之间的分歧与以利润为驱动的公司试图在各种程度上被“劫持”GNU/Linux 是不同的。
原文链接:
作者:Bojan Novković
译者:Canvis-Me & ChatGPT
2023 年 10 月 20 日
今年,我有幸获得了 FreeBSD 基金会的差旅津贴,参加了在葡萄牙科英布拉举行的 EuroBSDcon。
我于 9 月 13 日抵达科英布拉,并在第二天参加了 FreeBSD 开发者峰会。峰会的第一天日程安排得很紧凑。在参加开幕会议并了解 FreeBSD 基金会团队的最新消息后,我与 Mark Johnston 会面,审查并提交了今年谷歌编程之夏项目中剩下的一些补丁。在附近的学生餐厅短暂用过午餐后,我参加了 Sergio 关于新的 FreeBSD.org 网站设计的演讲。
随后,Greg Wallace 介绍了 SWOT 分析的概念,并组织了一个互动环节。我们分成小组,集思广益,讨论了项目的优势、劣势等方面。这一天的最后一个环节是 Jordan Hubbard 关于 FreeBSD 项目早期历史的演讲,其中融入了他与该项目的个人历史。不幸的是,我的演讲被推迟到了第二天,因此在最后一场演讲后,我与 Li-Wen Hsu 讨论了我打算在 FreeBSD 的 CI 循环中用于性能回归测试的工作。
开发者峰会的第二天以一场关于我正在进行的旨在测试内核补丁的性能基准框架的演讲开始。这个想法得到了很好的响应,与其他开发人员的讨论也很有见地。之后,我参加了 Ruslan 关于 hwt 的演讲,这是一个用于 FreeBSD 的硬件性能跟踪框架。演讲后,我与 Ruslan 碰面,讨论了向 hwt 添加 Intel 性能跟踪支持的步骤。这标志着闪电演讲的结束,午餐休息后,我与 Christos Margiolis 结对进行了一个一直持续到下午的黑客会话。
接下来的一天以 Paula Alexandra Silva 的主题演讲开始。在主题演讲后,我参加了 Walter Belgers 的演讲,听取了关于 BSD 早期历史的各种故事和轶事。接下来是 Otto Moerbeek 关于 OpenBSD 的 malloc 的演讲。能够参加由安全堆内存分配器的先驱提供的讲座是一种荣幸,演讲充满了关于堆分配器在运行时防止对普通 C 内存管理错误的恶意滥用的机制的细节和见解。在会场外拍摄了全家福照片并短暂休息用午餐后,我参加了 Hiroki Sato 关于 USB 调试能力的演讲。演讲很棒,我对有一种新的调试实时机器的方式感到兴奋,因为在现代硬件上使用串口已经不再可能。演讲后,我与 Christos 进行了短暂的黑客会话。然后,我参加了 Toshaan 关于在 POWER 架构上运行 FreeBSD 的演讲。这一天在附近的场地结束了一场很棒的社交活动。
第二天以 Phillip Bueller 关于 EuroBSDcon 历史的精彩演讲开始。之后,我参加了 Eirik Øverby 的演讲,了解了 Modirum 的最新探索。接下来是 Christos 关于 kinst 的演讲,这是一个允许跟踪任意指令的新 DTrace provider 程序。他说了他的方法的一般架构和一些常见用例,并在与观众进行有趣而深入的技术讨论时引发了兴趣。在此之后,我参加了 Kirk 关于 gunion 的演讲。演讲非常有趣,它提供了对 GEOM 的良好概述以及 gunion 的几个有用的应用程序。我参加的下一个环节是 Yan Ka Chiu 关于他正在进行的 OCI 兼容 FreeBSD 容器运行时的演讲。演讲中充满了展示该运行时功能的出色短片。
我非常感谢 FreeBSD 基金会让我能够参加这次会议。这是一次极好的经历,让我能够与 FreeBSD 社区的其他成员建立联系,并讨论未来的工作。
原地址
作者:Jenny List
译者:ykla & ChatGPT
安装 FreeBSD 就像从 U 盘引导并运行安装脚本一样简单。基于文本的界面,使用起来感觉非常古老,但整个过程还是相当顺利的。有个选项可以用来自动对磁盘进行分区,然后选择一些基本服务进行安装(如果需要),然后它会进行安装过程。最后,你就拥有了一个正常运行的 FreeBSD 操作系统。
一个原始的 X 窗口桌面
我已经很久没有看到原始的 X 窗口了。典型的流行的 Linux 发行版安装过程将尝试配置你的系统并安装所需的软件。因此,在设置过程中,你将创建用户,从庞大的软件库中进行选择,或者让它安装许多软件,其中将包括你所需的程序。很可能它还会配置自身以引导到图形桌面,在安装完成后,你只需继续使用它作为桌面机器。
如果你对操作系统的期望就是这样的话,可以说 FreeBSD 并不适合你,因为它的方法是为你提供一个空白的画布,你可以在上面绘就自己的故事。你会得到 FreeBSD, 即一个命令提示符,你可以以 root 身份登录,仅此而已。
确保你的硬件足够新(但不要太新)一张 Nvidia GeForce GT520 显卡,它是不再受支持的古老显卡。
因此,尽管需要对 UNIX 或类似 UNIX 的操作系统有一点了解才能开始,但在 FreeBSD 上获得用于日常使用的桌面计算机还是相当简单的。这意味着我已经准备好写这篇文章了,只有一个例外。我的显卡是 Nvidia GT520,一款相当古老的显卡,曾被放入我的测试计算机中,来替换掉一个已经过时的新显卡。
因此,我除了以一个非常复古的 1024 x 768 的 VESA 分辨率来编写这篇文章以外,我对 FreeBSD 的印象还是相当喜欢的。我喜欢它精简的安装,与典型的 Linux 发行版相比,你只需安装所有你需要的东西。我喜欢它的安装过程,这对于像我这样中等水平的 Linux 用户来说相对轻松。我喜欢它的速度,我发现它是一个非常可接受的日常选择。当然,还有一些 Linux 发行版的安装要困难得多。
我相信如果我有一块新一点的受支持的显卡,就能获得完整的分辨率,我甚至可能在另一台配置更好的计算机上安装这个操作系统,继续进行实验。然而,如果我对 FreeBSD 有什么不满,那就是针对新手的文档。我拥有多年的 Linux 使用经验,帮助我找到我需要的东西,但尽管安装过程相对轻松,我发现对我来说可能很难找到少数问题的答案。这绝对是个值得一试的操作系统,但如果你不是 UNIX 专家,你可能需要使用 Google-fu【译者注:指在 Google 上运用高超的搜索技巧来解决问题的能力】 来获取帮助。去吧,试一试吧!
译者注:实际上 freebsd 是支持 GT520 这块显卡的,你只需要
pkg install nvidia-driver-390
,然后再执行sysrc kld_list+="nvidia-modeset"
即可。
原文链接:
译者:ykla & ChatGPT
请留意这个日期!2023 年 11 月的 FreeBSD 供应商峰会将于 2023 年 11 月 2 日至 3 日在加利福尼亚州圣何塞的 NetApp Campus【译者注:即 NetApp 公司的总部所在地】 举行。供应商峰会将在两天内举办单一主题的演讲。
关于日程安排和旅行信息的更多细节将会很快被披露出来。与此同时,我们现在正在征集您的演讲提案。演讲应具有技术性质,时长应为 30-35 分钟,其中包括了 10-15 分钟的提问环节,并将以面对面的方式进行。演讲提案应包括有关主题的简要摘要,以及演讲者的个人简介。如果您需要更多或更少的时间,请在提案中说明。请在 2023 年 9 月 26 日之前将演讲提案提交至 devsummit@FreeBSD.org。
如果您有任何问题,请随时通过上述电子邮件联系组织者。感谢 主办此次峰会。
原地址:
译者:ykla & ChatGPT
最后发布日期:2020-01-21
这是一篇关于我在FreeBSD上的一些冒险经历以及为什么我认为它是一个令人惊叹的操作系统的小文章。
更新于 2020 年 1 月 21 日: 自从我写了这篇文章后,它在 、 和 上发布过,也有几个人通过电子邮件给我发来了评论。我已根据评论更新了文章。顺便提一下,我不是 FreeBSD 的开发者,FreeBSD 世界中可能有我完全不了解的事情。我也没有关注过 FreeBSD 的开发者邮件列表。我不是 FreeBSD 的“粉丝”。在过去的二十年里,我在使用 GNU/Linux 方面比 FreeBSD 多得多,主要是由于硬件不兼容(缺乏或有问题的驱动程序)。我同样喜欢 Debian GNU/Linux 和 Arch Linux。然而,我对 GNU/Linux 近来的发展感到担忧。此外,这篇文章并不是让任何人从其他系统转换到 FreeBSD,它只是说明我为什么喜欢 FreeBSD,并推荐对操作系统进行调试的人尝试一下。
我想,那应该是 1999 年末或 2000 年中,有一天我在我最喜欢的书店浏览计算机书籍,发现了 Greg Lehey 于 1999 年写的。随书附带了 4 张带有 FreeBSD 3.3 的 CD 光盘。
在 1998 年,我已经熟悉了 GNU/Linux,并且正在逐步将家里和公司的所有服务器和桌面操作系统从 Microsoft Windows 迁移到 GNU/Linux,起初是 Red Hat Linux,后来是 Debian GNU/Linux,后者最终成为我多年来最喜欢的 GNU/Linux 发行版。
当我第一次看到 Greg Lehey 的《The Complete FreeBSD》时,我记得注意到封面上的文字,上面写着“伯克利 Unix 的免费版本”和“非常稳定”,我立刻被吸引住了!这是怎么回事?一个免费的 Unix 操作系统!而且非常稳定?听起来太棒了。
我立刻买下了这本书,这本书成了我长时间以来最喜欢的阅读材料(即使我当时没有从事任何 Unix 相关的工作)。
我很惊讶自己从来没有听说过 FreeBSD,因为它从 1993 年就存在了,但至少由于我使用 GNU/Linux 的经验,我对另一个“类 Unix”的操作系统不会完全陌生,而且事实确实如此。
我在不同的硬件上进行了一些测试安装,我立刻喜欢上了 FreeBSD。FreeBSD 成为我在家中运行的第一个 FTP 服务器。
后来,到了 2000 年,我被我所在国家最大的互联网服务提供商之一雇佣,惊讶地发现整个服务器和网络结构都是在 FreeBSD 上运行的。唯一不运行 FreeBSD 的计算机是办公室里的销售人员和秘书工作的计算机,它们运行 Microsoft Windows。当我询问他们选择操作系统的原因时,系统管理员说了一些类似这样的话:
知道自己在做什么的人才用 FreeBSD!通信行业的每个人都在用 FreeBSD!
我最终亲身体验了 Greg Lehey 书中提到的 FreeBSD 的“非常稳定”的特性。FreeBSD 真是令人惊叹。它非常高效且极其稳定。在 ISP 托管的每个客户,而且客户有很多,都是由 FreeBSD 提供服务的,它在从旧的 386 PC 到最新的 Pentium 4 机器上运行。FreeBSD 唯一需要重启的情况是在基本系统升级后。在我在那里的时间里,我从未在 FreeBSD 运行的任何地方遇到过问题。
相比之下,GNU/Linux 被视为一个“玩具”系统。它只被一些支持人员用于他们的私人设置。
那时我没有意识到的是,FreeBSD(至今仍然如此)被设计为一个完整的多用途操作系统,可以根据特定的用途进行设置和调整。当我偶尔安装 FreeBSD 时,它并不总是像默认的 Debian GNU/Linux 安装一样表现得那么好。即使是在我家的 FTP 服务器上,FreeBSD 最终被 Debian GNU/Linux 取代,因为 FreeBSD 每隔三天左右就需要重新启动,否则性能会大大降低。另一方面,Debian 运行得非常稳定。
更新于 2020 年 1 月 21 日: 有人问 FreeBSD 的具体问题是什么,但我记不清楚细节了。我想那可能是因为 FreeBSD 服务器耗尽了内存,但我不能确定。而且我也没有尝试解决这个问题,因为我太忙了,直接用 Debian 代替了 FreeBSD。而且这都是很久之前的事情了。当然,这是某种错误,我很怀疑问题出在我运行的 FTP 服务器软件上,而且根本与 FreeBSD 无关。
更新于 2020 年 1 月 21 日: Hacker News 上的某个评论说:“在我看来,如果需要手动调整,那就是一个错误,而不是一个特性。(我是作为一个 FreeBSD 开发者而这么说的。)” 对于这一点,我完全反对。有许多选项是你无法简单地自动调整的,因为用例是如此不同,你需要能够手动设置你需要的特定选项。在运行一个类似 NGINX 的繁忙静态文件服务器上,与在 FreeBSD 上运行一个繁忙的数据库服务器相比,每个设置可能需要根据你的用例进行特定的调整,无论是在文件系统还是内核或其他方面。
我依然非常喜欢 FreeBSD,并且最终把它作为我主要的桌面计算机使用了很长一段时间(同时在其他计算机上仍运行着几个 GNU/Linux 发行版)。
我喜欢 FreeBSD 的一些东西包括:
FreeBSD 是一个完整的操作系统。
FreeBSD 非常深思熟虑且设计良好。一旦你理解了 FreeBSD 的设置和工作原理,你会惊讶于开发人员已经考虑到了多少细节。
所有第三方应用程序都安装在 /usr/local/
目录下,所有第三方应用程序的配置也都安装在 /usr/local/etc/
目录下。加上基本系统和第三方应用程序之间的分隔,这使得管理第三方应用程序非常简单,如果你需要更改你的设置,你可以简单地使用 pkg delete -a
删除所有已安装的软件包,然后开始安装你需要的软件包。
FreeBSD 的安装只包括你启用的功能(在安装过程中或手动启用),没有运行你不知道的东西。FreeBSD 也是选择性的,这意味着你必须启用某些东西才能运行和使用它。更新于 2020 年 1 月 21 日: 当然,一些非常基本的服务默认会运行,比如 cron,因为这些是基本操作系统维护工具的一部分。cron 会在需要时进行一些基本的日志轮转。
FreeBSD 的代码被细致地维护,并且有很好的文档。更新于 2020 年 1 月 21 日: 有人对此表示异议。也许这需要进一步调查,但我一般是将它与 GNU/Linux 进行比较的。
FreeBSD 提供丰富的存储系统 GEOM,允许你使用两台网络机器实现高可用性存储,使用你选择的 RAID 级别,或添加诸如压缩或加密等功能。
FreeBSD 拥有了令人惊叹的 Jail 系统,使你在一个无法访问系统其余部分的沙盒中运行应用程序或整个系统。在 Docker 甚至还没有被想到的时候,FreeBSD 就已经有了 Jail。更新于 2020 年 1 月 21 日: FreeBSD 还有 Bastille 容器管理框架,可以从 ports 和 packages 系统安装。
FreeBSD 有 Mandatory Access Control(强制访问控制),来自 TrustedBSD 项目,它允许你为所有操作系统资源配置访问控制策略。
FreeBSD 有 Capsicum,允许开发者实现特权分离,减少受损代码的影响。
FreeBSD 还有 VuXML 系统,用于发布 Ports 软件中的漏洞,它与 pkg 等工具集成在一起,因此你的每日安全电子邮件将告诉你有关已知的 Ports 软件中的任何漏洞。
FreeBSD 具有安全事件审计,使用 BSM 标准。
如前所述,FreeBSD 是一个真正多用途的操作系统,具有许多不同的用途,因此它非常灵活和可调整。无论是在台式电脑还是服务器上运行 FreeBSD,它都提供许多可调整选项,使你能够使其性能非常高效。系统默认设置可能不完全符合你的需求,但 FreeBSD 提供了大量文档,指导你如何按照你的需求进行设置,并且有一个非常乐于助人的社区,其中有许多有经验的人处理过许多不同的情况和问题。
我认为了解 FreeBSD 与 GNU/Linux 发行版的区别很重要。FreeBSD 是由既是开发者又是系统管理员的人员制作的操作系统。(更新于:2020-01-21: 至少过去是这样,也许现在程度较小)。这意味着 FreeBSD 应该由了解系统工作原理的系统管理员来运行。你不能简单地从类似 Ubuntu、Fedora 或 OpenSUSE 这样的系统跳到 FreeBSD,然后期望得到相同的体验(如果真是这样,我和许多其他人将非常伤心)。
Linux 发行版是由不同的人组织编写的一组工具,往往存在利益和优先级上的冲突。
Linux 发行版需要 Linux 内核、GNU 工具和库,可能还需要额外的第三方软件、文档、X 窗口系统、窗口管理器和桌面环境,然后需要将这些不同的组件组合成最终的发行版。不同的发行版专注于不同的目标,有些侧重于桌面,而其他一些侧重于服务器,还有一些试图提供类似 Ubuntu 的多用途操作系统。
但 FreeBSD 不是这样的。FreeBSD 是一个完整的操作系统,由一组热衷于他们所做工作的人员制作,项目内没有利益冲突。维护内核的人也是维护 C 库、ls、stat 和其他命令以及不同工具的人。FreeBSD 还为与操作系统相关的所有内容提供全面的文档。
更新日期:2020-01-21: 如果将 FreeBSD 用作桌面操作系统,它也需要第三方软件、X 窗口系统、窗口管理器和桌面环境。我的观点是 FreeBSD 不是一组由不同人组织编写的工具,其利益和优先级常常存在冲突,就像 Linux 内核、GNU C 库等。
FreeBSD 是一个令人惊叹的操作系统!
上个月我开始了一个新系列,尝试使用不同的操作系统来进行日常的工作,,这是我在 1990 年代中期时尝试的第一个 Linux 发行版的最新版本。我会在适当的时候返回来介绍更多基于 Linux 的操作系统,但这个系列的整个目的是尽可能地广泛涉猎,尝试每个合理的操作系统。因此,今天我将迈出清晰的第一步,尝试一个基于 BSD 的操作系统。对我来说,这是未知的领域,关于选择哪一个存在着相当大的分歧。因此,在阅读了相关资料后,我选择了 FreeBSD,因为它似乎是最易于使用的选择。
一台带有 FreeBSD 引导界面的计算机成功!这是我第一次看到运行中的 FreeBSD 安装界面。大多数读者都知道,,而 GNU/Linux 则是一个相当好的 UNIX 复制品,起源于 1990 年代初的 Linus Torvalds,以及 1980 年代开始的 Richard Stallman 的 GNU 项目。这意味着对于 Linux 用户来说,需要适应于不同的术语。
Linux 是一个围绕其内核构建的操作系统,具有不同实现的用户空间组件,而各种 BSD 操作系统则是独立的操作系统。因此,我们谈论 Slackware 和 Debian 等不同的 Linux 发行版,但相比之下, 和 FreeBSD 即使有共同的历史,也是不同的操作系统。虽然有一些如 这样以 FreeBSD 为核心的 BSD 发行版,但在这个上下文中这样的情况较少见。所以,我用种子下载了 FreeBSD 13.2 的 USB 镜像文件,并将其写入了 U 盘。我拿出了 Hackaday 的测试计算机,开始进行试验。
你的第一个任务是使用 adduser
添加一个日常用户,然后在为自己授予 sudo 特权之前,你必须安装 sudo
。这将是你第一次使用 pkg
软件包管理器,作为长期使用类似 Linux 发行版软件包管理器的用户,我发现(FreeBSD)使用起来相当容易。我想要一个桌面环境,所以我再次使用了 pkg 安装 X,然后是(我选择了 ,但有很多其他选择),以及诸如 Firefox、GIMP、OpenSCAD 和 KiCAD 等有用的软件。所有这些都不是很困难的,尽管我确实不得不搜索一些在线指南来配置桌面环境。
FreeBSD 并不像一个功能完整的 Linux 发行版那样,从一开始就自带驱动程序,因此如果你有某些不常见的硬件,你需要自己找到并安装驱动程序。因此,在我能安装驱动程序之前,我被困在 VESA 分辨率中。这里我遇到了一个问题。,但是像这样古老的显卡早就不再得到他们的支持。我找到的最后一个支持它的驱动程序不能正常运行,因此我从未能够发挥出显卡的潜力。这并不是在批评 FreeBSD,而是我的显卡太古老了。
在接下来的几年里,GNU/Linux 的硬件支持也变得越来越好,我经常遇到一些愚蠢的硬件在 FreeBSD 上无法工作。当时硬件非常昂贵,而且我没有购买能够在 FreeBSD 上正常工作的硬件的选择。所有这些问题最终使我比以前更多地使用 GNU/Linux。如今,这不再是一个大问题,因为 FreeBSD 对大多数现代硬件都有很好的支持,但与 Linux 相比,GPU 的支持还不够好。FreeBSD 的提供了一些相关信息。
FreeBSD 将内核和基本系统与第三方软件包分开。 这是 FreeBSD 独有的,其他 BSD 都没有这样做。 (更新于 2020 年 1 月 21 日: 我在写这段时犯了一个错误。其他 BSD 也是如此。我想表达的是这是 BSD 独有的,而不是 GNU/Linux 发行版的特点。)我一直很喜欢 FreeBSD 这一点,但不幸的是(依我个人的意见),。,但它正在慢慢改变。我个人希望这不必改变。
FreeBSD 的基本安装中同时包含 和 文件系统。
FreeBSD 还有 ,它是一个基于块设备的磁盘加密系统,使用 磁盘框架。
FreeBSD 的服务处理非常简单。每个服务,无论是基本系统的一部分还是从 Ports 安装的,都带有一个脚本,负责启动和停止它(通常还包括一些其他选项)。默认脚本位于默认目录中,具有默认设置,比如 /etc/default/rc.conf
,但所有设置都可以通过使用 /etc/rc.conf
进行覆盖。如果你想启用 SSHd,只需将 sshd_enable="YES"
添加到 /etc/rc.conf
,SSHd 将在启动时启用,或者你可以使用命令 service sshd enable
,这更加简单,效果相同。读取配置文件的 FreeBSD rc 系统理解服务之间的依赖关系,并且可以自动并行启动它们,或者在一个完成后等待启动它所需要的其他事物。你将获得现代配置系统的所有优势,没有复杂的界面。更新于 2020 年 1 月 21 日: 有人说“并行性部分是错误的”。我从未使用过这个选项,但在 中是这样描述的,文字上说:“读取此文件的 rc 系统理解服务之间的依赖关系,因此可以自动并行启动它们……” 如果这是错误的,该网站需要一份错误报告。
FreeBSD 同时具有 和
更新日期:2020-01-21: 有人指出 FreeBSD 项目中也存在利益冲突,我脑海中浮现的一个例子是 Matthew Dillon 因与其他 FreeBSD 开发人员在性能问题上意见不合,最终将 FreeBSD 复刻为 DragonflyBSD。但我的原始表述可能被误解了。我认为类似 BSD 中的问题与 Linux 内核和 GNU C 库等完全不同的项目之间的冲突不同。在 Linux 领域,严重的冲突可能导致操作系统无法正常工作,而在 BSD 项目中,由核心团队和来解决争议,OpenBSD 的项目领导者 Theo de Raadt 有最后决定权。如果有人持不同意见,他可以最终接受最终决定,或者他有自由将项目复刻,就像 Matthew 最终做的那样,Theo de Raadt 在 NetBSD 上也是如此。这与 GNU/Linux 的情况非常不同,这就是我的意思。
无论你是 GNU/Linux 用户,已经在不同的发行版之间反复横跳,还是已经找到了自己喜爱的 GNU/Linux 发行版,又或者你是 Microsoft Windows 用户或 MacOS 用户,我都强烈建议你尝试一下 FreeBSD。但在这之前,请花些真正的时间学习 FreeBSD 文档,如果你了解它的工作原理,你将能最大限度地发挥其功能。你可以在 、或 上与人交流,那里有很多乐于助人的人。
我还强烈推荐 Michael W. Lucas 的书,他是一位在 FreeBSD 上工作多年的网络/安全工程师,拥有丰富的高可用系统经验。这本书详细介绍了 FreeBSD 操作系统的许多细节,写得很好,包含许多相关内容。
Michael W. Lucas 与 还合著了和这两本关于在 FreeBSD 上运行 ZFS 文件系统的书籍。第二本是第一本的续集,介绍了更高级的用例。这两本书都非常宝贵。
发布日期:2023 年 8 月 16 日
译者:ykla & ChatGPT
衡量进展的方式有很多种,比如提交的速度、开发者的数量、FreeBSD Port 的数量等等。根据基金会资助的承包商数量这一衡量标准,我们正处于一个繁荣时期。截至撰写本文时,FreeBSD 基金会已经为 12 个不同的项目开展了合同。其中一些项目我们在过去的文章中有过介绍,另一些则是最近才开始的。接下来是这些承包工作的摘要,以及基金会员工的一些值得注意的进展。
承包的工作
从 7 月开始,Yan-Hao Wang 开始在基金会进行夏季实习,从事各种任务。首先,Yan-Hoa 将专注于改进我们的文档工具。其中一个可交付成果是构建了一个在线编辑器,让创建和编辑 man 页面变得尽可能简单。第二个是开发一个针对 FreeBSD man 页面和其他文档的“专家系统”。这个最佳努力和概念验证的交付成果将涉及将 FreeBSD 文档(如 man 页面和手册)导入向量数据库,以便诸如 ChatGPT 之类的大型语言模型在查询 FreeBSD 问题时可以“阅读”它们,从而提供更好的答案。改进我们的测试框架是夏季工作的第二个总体目标。例如,Yan-Hoa 将为 /bin
、/sbin
、/usr/bin
和 /usr/sbin
以及 libxo 下的许多用户空间工具添加缺失的测试用例。最后,一些杂项的可交付成果包括更新 FreeBSD Jeknins tinderbox,并为树莓派 4 支持制定开发路线图。
发布 FreeBSD 14.0 的一个主要障碍,也是原定发布计划的延迟原因,是基本系统中的 OpenSSL 版本问题。由于计划于 2023 年 9 月终止对 OpenSSL 1.1.1 的支持,有必要在发布之前升级到 OpenSSL 3。基金会团队成员 Pierre Pronchery 与 FreeBSD 开发社区的其他成员基本上完成了更新,然而基本系统和 Ports 中依赖于 OpenSSL 的许多代码需要进行修复,以使其适用于这个新的主要版本。在更新基本系统中的 OpenSSL 的同时,LLVM 也被更新到了版本 16,这也引入了一些破坏性的变化,特别是在 Ports 中。大部分与 OpenSSL 3 和 LLVM 15 相关的关键问题已经得到解决,但是在 LLVM 16 中,大约有 800 个额外的 Port 无法构建,导致额外的 2800 个依赖的 Port 在完整的 Ports 构建中被跳过。Muhammad Moinur(Moin)Rahman 将完成这一耗时且繁琐的工作,修复与更新 OpenSSL 3 和 LLVM 16 相关的所有 Port 问题。
现代计算机架构提供了 SIMD(单指令多数据)指令集扩展,可以同时处理多个数据。诸如 SSE、AVX 和 NEON 等 SIMD 指令集扩展在现代计算机上无处不在,并且为许多应用程序提供了性能优势。该项目的目标是为常见的 libc 函数提供 SIMD 增强版本,主要是那些在 string(3) 中描述的函数,以加速大多数 C 程序的执行。
SIMD 技术通常用于数值应用,如视频编解码器、图形渲染和科学计算,同时在基本数据处理任务中也有助于 libc 函数实现的任务。虽然其他 libc 实现已经为标准 libc 函数提供了 SIMD 增强版本,但 FreeBSD libc 在很大程度上没有提供。Robert Clausecker 的这个项目的目标是提供这些相关 libc 库函数的 SIMD 增强版本,从而提高与之链接的软件性能。由于这些 libc 函数被大多数适用于 FreeBSD 的软件使用,这些增强预计将广泛受益于各种程序。该项目的主要重点是 amd64 架构,旨在根据 x86_64 psABI 定义的体系结构级别生成 SIMD 优化的实现。
针对每个被优化的函数,将提供多达四个实现:
针对 amd64 进行优化的标量实现,但不使用任何 SIMD。
基准实现,使用 SSE 和 SSE2,或者使用 x86-64-v2 实现,使用 SSE 扩展,包括 SSE4.2。
使用 AVX 和 AVX2 的 x86-64-v3 实现。
使用 AVX-512F/BW/CD/DQ 的 x86-64-v4 实现。
用户可以通过设置环境变量 AMD64_ARCHLEVEL
来选择要使用的 SIMD 增强级别。虽然当前项目仅涉及 amd64 架构,但未来可能会扩展到其他架构,如 arm64。
Naman Sood 是 FreeBSD 基金会的暑期实习生,他一直在从事与网络相关的任务,如:
完成 Luiz Amaral 开始的工作,允许 pfsync 流量通过 IPv6 传输。
更新工作,以实现 pf full cone NAT 的 RFC 4787 要求 1 和 3。
Naman 还修复了 pw(8) 和 du(1) 中的错误,并已开始探索由 Klaus P. Ohrhallinger 开始的 tcp 检查点和故障转移工作的完成。
从 6 月开始,Jake Freeland 开始在基金会实习,从事与 Capsicum 相关的项目。Capsicum 是用于限制应用程序和库所赋予的功能的工具。其核心思想很直观;进入能力模式后,资源获取和外部通信将受到限制。围绕这个原则设计程序相对容易,但是当不是设计为沙箱化的应用程序需要在此环境中运行时就会出现问题。很难确定哪些操作会引起 Capsicum 违规,并且无法预先打开尚未被请求或命名的资源。此外,开发人员在实施 Capsicum 功能之前需要对程序有深入了解。由于这些挑战,近年来围绕该框架的进展和开发逐渐减少。
这个实习将涉及一系列项目,总体目标是复兴 Capsicum。主要目标是增强和简化希望将其现有程序转换为 Capsicum 模式的开发人员的体验。Capsicum 的最大敌人是其陡峭的学习曲线。将程序重构为支持能力模式通常要求开发人员知道什么会引起 Capsicum 违规,并知道如何重新组织给定程序以避免违规。有时这个过程很简单,但是更大的程序通常需要按需使用资源,找出如何满足这些需求可能会很困难。为开发人员提供更多便捷的程序 Capsicum 化工具将平缓学习曲线。如果 Capsicum 化变得容易,那么更多的开发人员将采用它。
在进行 Capsicum 化的第一个逻辑步骤是确定您的程序何时引发能力违规。您可以通过查看源代码并删除与 Capsicum 不兼容的代码来解决此问题,但这可能很繁琐,并且需要开发人员熟悉在能力模式中不允许的所有内容。手动查找违规的替代方法是使用 ktrace(1),它可以记录指定进程的内核活动。虽然 ktrace 可以记录并返回有关程序违规的额外信息,但这可能不方便,因为 ktrace 在程序终止之前只报告第一个能力违规。
由 Jake 编写的新 ktrace 扩展可以在程序不处于能力模式时记录违规。这意味着能力违规跟踪可以在未经修改的程序上运行,而且由于不需要在能力模式下运行程序,即使在发生能力违规时,它仍将获取资源并正常执行。
完成 ktrace 扩展后,Jake 将开始对各种实用程序进行 Capsicum 化,包括 syslogd(8)、NFS 守护程序、ggatec(8)/ggated(8)、tftpd(8)、ntpd(8)和 libarchive(8)。
在 2022 年谷歌代码之夏的贡献者 En-Wei Wu,于 2023 年初开始在 FreeBSD 基金会实习,从事 FreeBSD 无线驱动程序和工具方面的工作。这项工作分为三个组成部分。
将通过扩展 wtap,增加对目前仅支持的 802.11b 之外的更多 802.11 物理层的支持。wtap 的其他工作将包括添加 WPA/WPA2/WPA3 支持,以便可以测试 wpa supplicant(8) 和 hostapd(8)。
将在 hostapd(8) 中添加对 WPA2 预身份验证的支持。WPA2 是 IEEE 802.11i 规范的一部分定义的身份验证协议。现在,这个协议常用于对无线站点进行认证以访问接入点。该协议的一部分是能够在一个或多个接入点上对站点进行预认证,以便快速进行漫游。FreeBSD 在用于构建启用 WPA 的接入点的 hostapd 程序中缺乏对该协议的支持。此任务将移植现有的 Linux 代码,以在 hostapd 中支持预身份验证。这主要涉及重写一些用户模式的多播代码并测试结果。对于 FreeBSD 外部托管的第三方源代码的修改应在适用时上游到相应的项目。
将完成对 802.11 驱动程序的工作。通过完成 Adrian Chadd 在驱动程序上开始的工作,将 port ath10k 驱动程序。还将通过协助 Bjoern Zeeb 开发和测试诸如 rtw88 和 rtw89 之类的 Realtek 驱动程序来提供帮助。
FreeBSD 基于 Jenkins 的持续集成基础设施当前在开发人员将提交推送到 FreeBSD 源代码库时启动作业。虽然这对于识别新引入的问题很有价值,但更好的方法是在将其推送到主分支之前轻松地识别这些问题。可以通过在预提交环境中使 CI 测试对开发人员更可用,并且通过拥有私有的 FreeBSD 运行程序,流行的 git 托管服务可以利用这些程序为推送到私有分支的人们创建 CI 基础设施来实现这一目标。为此,Muhammad Moinur Rahman 的目标是采取由 Li-Wen Hsu 编写的 CI 脚本,并将其作为构建系统的一部分提供给开发人员。类似于 make universe 或 make tinderbox 可以构建所有支持的体系结构,make ci 将为所有支持的构建实现类似的功能。另一个目标是使开发人员在调试问题时能够运行单个 CI 作业。希望这种灵活性还将使其他人能够将这些构建/脚本集成到其他 CI 工具中,如从 Github 运行的 Cirrus CI 等。
DTrace 是一个框架,使管理员和内核开发人员能够实时观察内核行为。DTrace 具有称为“provider”的内核模块,它使用“探针”在内核中执行特定的仪器操作。kinst 是由 Christos Margiolis 和 Mark Johnston 于 GSOC 2022 的一部分创建的新 DTrace 提供程序,它允许进行指令级跟踪,即对于给定的内核函数,用户可以跟踪其中的每个指令。该提供程序在 FreeBSD 14.0 中可用。
kinst 探针采用 kinst::<function>:<offset>
的形式,其中 <function>
是要跟踪的内核函数,<offset>
是特定的指令。可以使用 kgdb(1) 从函数的反汇编中获取这些偏移量。例如,以下命令将在每次执行 vm_fault() 时跟踪其第一条指令:[注:原文如此]
这个项目于 7 月下旬完成,实现了内联函数跟踪。为了实现这个功能,使用了 DWARF 调试标准,以便能够检测内联调用并相应地处理它们。利用了 DWARF 和 kinst 的功能,解决了 FBT 的一些缺点,例如尾部调用优化问题(DTrace 手册的第 20.4 章)和内联跟踪能力的缺失。
项目交付成果包括:
添加 kinst 的入口和返回探针,类似于内联跟踪所需的 FBT
扩展 kinst,通过使用 FreeBSD 的 dwarf(3),能够跟踪内联调用
添加一个“locals”结构,用于存储跟踪函数的局部变量。例如,对于 kinst::foo:,我们可以在 D 脚本中使用 print(locals->bar) 来打印局部变量 bar
添加一个新的 dtrace(1) 参数,在 dt_sugar 应用转换后转储 D 程序。这对于调试 dt_sugar 本身非常有用。
将 kinst 移植到 riscv / arm64。
cloud-init 是在云中配置服务器的标准方式。不幸的是,除了 Linux 以外的操作系统对 cloud-init 的支持相当有限,而且缺乏对 FreeBSD 的 cloud-init 支持阻碍了将 FreeBSD 作为一级平台提供的云提供商这一愿望。为了解决这个问题,FreeBSD 基金会与 Mina Galić 签订合同,使 FreeBSD 的 cloud-init 支持与 Linux 支持保持一致。项目交付成果包括完成对特定网络类的提取,实现 ifconfig(8)和 login.conf(5)解析器,实现 IPv6 配置,为 Azure 创建 devd 规则,并编写有关将 FreeBSD 投入生产的手册文档。
在上个季度完成了一些项目里程碑:
临时网络类已被重写并变得与平台无关。
这些类被多个云提供商用于在检索实际配置之前初始化临时网络。
cloud-init 在 Vultr 上成功测试通过。
希望在下一个 cloud-init 发布时,可以说服 Vultr 将其 FreeBSD 镜像切换到 cloud-init。
扩展了 BSD 的 rsyslog 支持。
添加了一个用于 cloud-init 的 ds-identify 的 rc 脚本,这应该使零配置设置的速度提高数个数量级。
ds-identify 首先运行,非常快速地猜测机器正在运行的云提供商。然后,cloud-init 仅使用该猜测,而不是通过完整的可能的云提供商列表进行迭代和失败。构建自定义镜像的人可以轻松地禁用它(通过删除“/usr/local/etc/rc.d/dsidentify”),并自己提供特定的列表,从引导时间中减少几毫秒。
接下来的步骤将是继续进行网络重构任务,并为 FreeBSD 添加 LXD 支持,以便将其包含在 CI 测试中。后者将涉及对 LXD 的工作,以及对 FreeBSD virtio 子系统的工作。
OpenStack 是一个开源的云操作系统,可以用于多种资源,包括虚拟机、容器和裸金属服务器。OpenStack 的控制平面主要针对 Linux,而 FreeBSD 只被非官方地支持作为客户操作系统。用户可以在开放的云平台上创建 FreeBSD 实例,但目前管理员或运营商无法在 FreeBSD 主机上设置运行 OpenStack 部署。鉴于基于云的部署的日益重要性,以及 OpenStack 在各种云提供商中的流行度,FreeBSD 基金会已经与 Chin-Hsin Chang 签订合同,将 OpenStack 组件移植到 FreeBSD 主机上,使整个系统可以在 FreeBSD 主机上运行。
要移植到 FreeBSD/amd64 的基于 Linux 的 OpenStack 组件包括但不限于:
Keystone(身份和服务目录)
Ironic(裸金属供应)
Nova(实例生命周期管理)
Neutron(覆盖网络管理)。
截至 2023 年第二季度,一些重要的成就包括:
解决实例内部的网络连接问题
添加了同时生成多个实例的功能
从 Python 3.8 移植到 3.9
完成了 Keystone 的移植
nova-compute 现在为每个创建的实例(虚拟机)生成不同的控制台
已经开始移植 nova-novncproxy 和 nova-serialproxy,这将增加访问实例控制台的方式。为了降低那些想要测试工作的人的门槛,开发环境也已从物理实例迁移到虚拟实例。有兴趣进行测试的任何人都应该知道,在 Linux KVM 之上运行 bhyve 虚拟机仍然存在问题。有关该问题的详细说明可以在 https://hackmd.io/@starbops/SkdJON2un 找到。未来计划的其他工作包括改进控制台代理服务,使整体工作流更加流畅。构建概念验证站点的逐步文档可以在 https://github.com/openstack-on-freebsd/docs 找到。每个 OpenStack 组件的修补版本位于同一 GitHub 组织下。
UFS/FFS 文件系统具有进行快照的能力。由于快照能力是在写入软更新之后添加的,因此它们已与软更新完全集成。然而,在 2010 年添加了日志软更新之后,它们从未与快照集成。因此,在运行日志软更新的文件系统上无法使用快照。仍然需要 UFS 快照的两个情况是:它们允许对活动文件系统进行可靠的转储,从而避免可能的停机时间;它们允许运行后台 fsck。与 ZFS 中需要进行校验类似,需要定期运行 fsck 以查找未检测到的磁盘故障。快照允许在活动文件系统上运行 fsck,而不需要安排停机时间。这项工作需要对 UFS/FFS 软更新和快照内核代码以及 fsck_ffs 实用程序进行广泛的更改。
该工作分为两个里程碑。里程碑 1 于 2022 年底完成,可以在运行日志软更新的情况下进行快照。这些快照可用于对活动文件系统进行后台转储。里程碑 2 涉及将 fsck_ffs 扩展为能够使用在运行日志软更新的文件系统上的快照进行后台检查。截至 8 月中旬,内核和 fsck_ffs 所需的更改已经完成,并且测试进展顺利。
与此项目相关,Kirk 还解决了一些最近报告的文件系统 Panic 问题以及一些较旧的 UFS 错误。其中包括可能触发 UFS 超级块完整性检查中的虚假损坏警告的错误。所有修复都在 FreeBSD 14 中进行了测试,并与 FreeBSD 13 相关的内容也被合并到主线。
FreeBSD WiFi 栈需要持续维护和开发,以跟上新标准和设备的发展。基金会资助 Bjoern Zeeb 将支持当前一代英特尔 WiFi 设备的功能集成到 Linux 内核的双重许可的上游驱动程序中。在合同下,Bjoern 还将承担相关的无线工作,例如开发 802.11 LinuxKPI 和集成其他无线驱动程序,比如来自 Realtek 的驱动程序。
在最新的季度中,Bjoern 几乎所有的时间都用于为 iwlwifi(4) 更新做准备的 LinuxKPI 更新,以及对其他驱动程序(如 rtw88、rtw89、mt76 和 ath10k)的更新,以及对 ath11k 和 ath12k 的准备。这项工作的大部分已经在代码库中,并将很快与构建连接,供人们测试。
正如我们在 2023 年第二季度状态报告中所报道的,339 个 src,155 个 ports 和 20 个 doc tree 的提交将 FreeBSD 基金会标识为赞助商。其中一部分工作包括:
修复 man:fsck_ffs[8] 的错误
修复 man:killpg[2] 的错误
改进 hwpmc
改进 vmm
更新 libfido2 至 1.9.0 版本
各种 LinuxKPI 802.11 的改进
各种 riscv 的改进
从版本 4.9.3 到版本 4.99.4 的 tcpdump 供应商导入和更新
基金会技术团队的成员在 5 月 17 日至 18 日在加拿大渥太华举行的开发者峰会上发表了演讲。这包括主持谷歌代码之夏、FreeBSD 基金会技术审查和工作流工作组会议。基金会团队成员 Pierre Pronchery 讨论了 BSD 之间的驱动器协调性,而 En-Wei Wu 则讨论了在基金会合同下完成的 wtap 工作。
正如先前提到的,上游对 OpenSSL 1.1 分支的支持即将移除,这是发布 FreeBSD 14.0 的主要障碍。新的基金会团队成员 Pierre Pronchery,以及 Ed Maste 和 FreeBSD 开发社区的其他成员开始更新我们的基本系统中的 OpenSSL 到版本 3。
OpenSSL 是一个用于通用加密和安全通信的库。它提供了 SSL 和 TLS 网络协议的开源实现,这些协议广泛用于应用程序,如电子邮件、即时通讯、Voice over IP(VoIP)或更重要的是全球 Web(即 HTTPS)。假设 Apache 和 nginx Web 服务器使用 OpenSSL,它们的网络流量的合并市场份额超过 50%,这将巩固 OpenSSL 作为互联网基础设施的领导地位和关键重要性。
自 2016 年 8 月首次发布以来,OpenSSL 1.1 分支已被大多数 Linux 和 BSD 系统采用,并通过长期支持政策得到上游维护人员的支持。然而,官方支持计划在今年 9 月中旬结束,因此迫切需要考虑采用其继任者 3.0 分支来进行长期支持。
OpenSSL 在过去的几年中已经发展壮大,现在有超过 50 万行的代码分布在 2000 多个文件中。或许作为其结果,它的构建系统相对复杂,通常需要 Perl,而自从 5.0-RELEASE 以来,Perl 已从 FreeBSD 的基本系统中移除。然而,幸运的是,可以按照 FreeBSD 的方式导入和设置 OpenSSL 的 3.0.9 版本,并且现在已经成为计划中的 FreeBSD 14.0 RELEASE 的一部分。
可以说,OpenSSL 3 是一个新的重大发布。首先,它有问题的许可模型终于得到了解决,完全转向了 Apache License 2.0。然后,OpenSSL 3 引入了提供程序模块的概念。虽然过时的加密算法已被隔离到“legacy”模块中,但也可以将实现限制为 FIPS 标准的部分,其中包括 fips 模块。然后,后者可以从专用的认证流程中获益,并且可以得到官方的验证(例如在撰写这些内容时的 3.0.8 版本)。
此外,更新的库带有版本升级,因为使用 OpenSSL 1.1 的应用程序需要重新编译以使用 3.0。许多 API 函数已被弃用,并用更新、更通用的替代方法取而代之,但仍然可以明确地请求旧的 API,并让 OpenSSL 3 相应地公开它们。FreeBSD 已经利用了这个可能性来帮助过渡,其中一些库和应用程序简单地被配置为请求 OpenSSL 1.1 的 API。这些组件将逐步更新,以便在未来的时间内使用 OpenSSL 3 的本地 API。
虽然与更新相关的一个已知的性能影响是在使用小输入块大小时,但在处理 1KB 及以上大小的块时,其影响较小。另一个挑战在于 FIPS 提供程序模块,目前需要一些手动步骤才能使其正常工作。我们目前正在寻找一种解决方案,以便默认情况下将 FreeBSD 与功能性的 FIPS 提供程序一起交付。
默认的 amd64 和 arm64 FreeBSD 内核配置当前支持最多 256 个 CPU。可以通过设置内核参数 MAXCPU 来构建支持更大核心数量的自定义内核。然而,拥有超过 256 个 CPU 的商品系统正在变得越来越普遍,并且在 FreeBSD 14 的支持生命周期中将越来越常见。我们希望将默认的最大 CPU 数增加到 1024,以便在 FreeBSD 14 上支持这些系统。基金会团队成员 Ed Maste 和其他开发人员已经进行了许多更改,以支持更大的默认 MAXCPU,包括将 cpuset_t 的用户空间最大值修复为 1024。还进行了一些更改,以避免静态的 MAXCPU 大小的数组,将其替换为按需内存分配。还需要额外的工作来继续减少由 MAXCPU 大小的静态分配和解决非常高核心数系统上的可扩展性瓶颈,但目标是在支持大型 CPU 数的情况下发布具有稳定 ABI 和 KBI 的 FreeBSD 14。
2023 年版的谷歌代码之夏的编码刚刚过了中点,七个 FreeBSD 项目的进展情况已在 WIKI 上有所记录。基金会团队成员担任我们的组织管理员,并且有三个项目的导师与基金会有关联。
FreeBSD 支持多种体系结构、文件系统和磁盘分区方案。为此,Sudhanshu Mohan Kashyap smk@FreeBSD.org 正在编写一个 Lua 脚本,以允许对所有这些组合进行引导加载程序的测试,适用于一级和二级架构。如果时间允许,还可以进一步探索将脚本集成到现有的构建基础设施(无论是 Jenkins 还是 Github Actions)中,以生成测试结果的综合摘要。
目前,任何开发人员的更改可能会阻止操作系统在某些特定环境中启动的能力。这些脚本确保更改不会导致经过测试的环境出现退化。这些脚本设计得非常高效,成本远低于当前所需的完整 make universe。这些属性使开发人员可以定期使用脚本,并允许将其集成到 CI 流程中,而不会产生不必要的成本。
大多数现代 CPU 架构通过支持大于标准页面大小的页面来提供性能提升。不幸的是,由于高度的物理内存碎片化,分配此类页面可能会失败。这项工作实现了物理内存压缩,作为主动减少运行中系统中碎片的一种方法。这个谷歌代码之夏的目标是向虚拟内存子系统添加各种物理内存抗碎片措施。
Differential D40575 实现了用于量化物理内存碎片程度的众所周知的度量标准。Differential D40772 实现了物理内存压缩,并添加了一个守护程序,该守护程序监视系统并在需要时执行压缩。
计划未来的工作包括设计适当的基准测试套件,运行测试,并根据评审和测试结果调整代码。这仍然是一个正在进行中的工作,因此任何测试、评审和反馈都将不胜感激。
mfsBSD 是由 Martin Matuška 创建的工具集,用于创建基于 mfsroot 的 FreeBSD 分发的小型但功能齐全的发行版。也就是说,它通过内存文件系统(MFS)从存储设备加载文件并将它们存储在内存中。作为这个项目的一部分,Soobin Rho soobinrho@FreeBSD.org将在 src/release makefile 中为 -current 和 -stable 版本的 mfsBSD 镜像创建为每周快照的附加目标。目前,只能生成 RELEASE 版本的 mfsBSD 镜像,这意味着它们往往会与基础工具不同步。该项目旨在解决这个问题。
FreeBSD Azure Release Engineering 团队的成员 Li-Wen Hsu、Wei Hu whu@FreeBSD.org 以及 Microsoft FreeBSD Integration Services 团队的成员 Souradeep Chakrabarti schakrabarti@microsoft.com 等人一直在努力将 FreeBSD ARM64 架构支持添加到 Azure 平台。这项工作的一部分涉及将镜像发布到 Azure 社区库。在项目的测试公共库中有一些测试镜像,名为 FreeBSDCGTest-d8a43fa5-745a-4910-9f71-0c9da2ac22bf
:
FreeBSD-CURRENT-testing
FreeBSD-CURRENT-gen2-testing
FreeBSD-CURRENT-arm64-testing
要使用这些镜像,在创建虚拟机时:
在 Select an Image 步骤中,在“Other items”中选择“Community Images (PREVIEW)”。
搜索 FreeBSD。
正在进行的工作包括:
自动化镜像构建和发布过程,并合并到 src/release/
。
构建并发布基于 ZFS 的镜像到 Azure Marketplace:
所需的所有代码都已合并到主分支,可以通过指定 VMFS=zfs
来创建基于 ZFS 的镜像。
未来的任务包括改进构建自动化,并与发布工程合作开始生成快照。
构建并发布 Hyper-V gen2 VM 镜像到 Azure Marketplace。
构建并发布快照版本到 Azure 社区库。
以上任务由 FreeBSD 基金会赞助,资源由微软提供。
来自 Wei Hu 和 Souradeep Chakrabarti 的工作涉及多项由微软赞助的任务,包括:
将 Hyper-V 客户端支持移植到 aarch64 架构
待处理任务:
在 Microsoft Learn 上更新与 FreeBSD 相关的文档
在 Azure Pipelines 中支持 FreeBSD
将 Azure 代理 Port 更新到最新版本
提交 Azure 代理的本地修改内容给上游
亲爱的 FreeBSD 社区,
我们正在对发布工程流程进行两项修改:
从 FreeBSD 15.x 开始,FreeBSD STABLE 分支生命周期将从首个 .0 release 发布后的 5 年缩短至 4 年。
将建立一个可预测的发布计划,在大多数情况下,每个季度都会从在生命周期内的 STABLE 分支新发布一个小版本的 release。
背景介绍:
我从 2023 年 11 月担任发布工程主管以来,一直在审查发布流程和时间表。我得出了以下结论:
通过改善发布工程团队与 FreeBSD 开发者之间的沟通,我们可以简化发布流程,通常只需进行 3 个 BETA 版本及 1 个 RC 版本,以前往往需要 3-4 个 BETA 版本及 3-6 个 RC 版本。
更加频繁的 release 将进一步改善发布流程,因为如果距离下一个小版本的 release 还有一年或更长时间,就不会有那么大的压力去增加“最后一个功能”。
虽然我们不能为具体发布时间打包票——因为我们始终会为重大 Bug 暂停发布,但我们可以确定发布周期开始的时间,这足以提供对长期规划有用的预计。
发布工程团队有能力每 3 个月发布一个 release,只有在 .0 release 时才会花费更长时间。
从开发角度上来看,每两年发布一个 .0 release 的确是可行的(如果考虑到像无法合并到主干的新功能等因素),但安全团队和 ports 团队只能同时管理不大于两个的 STABLE 分支;故,4 年的生命期限比 5 年更为可行。
综上,FreeBSD 核心团队已经批准如下:从 FreeBSD 15 开始,将 STABLE 分支的生命周期从 5 年削减至 4 年(每个 .0 release 的生命周期仍为“下个小版本 release 发布日起 + 3 个月”,虽说现在更加可预测了),我已经为即将到来的 release 制定了一个时间表:
release | 发布时间 | EoL |
---|---|---|
*
13.5 的生命周期为自 13.0 发布之日起的 5 年。14.6 的生命周期为自 14.0 发布之日起的 5 年。
我将其称为“季度”计划,因为大多数季度都会发布新的 release,而且对于小版本 release 来说,整个发布流程都在该季度内完成:代码冻结从季度首月中旬开始;在次月初创建 release 分支并进行 BETA 构建;最终在季度末月初完成 release。
因此:
新功能和驱动更新应在一月/四月/七月/十月中旬完成,以便包含于相关 release。
我们需要人员在二月/五月/八月/十一月对 BETA 版本进行测试。
即使时间表略有延误,release 版本也应在三月/六月/九月/十二月底前完成。
我们希望这个更具可预测性的发布时间表能够让 FreeBSD 用户更轻松地规划和管理他们的升级周期,同时平衡 release 版本中新功能的可用性和项目维护支持的众多 release。
此致,
Colin Percival
FreeBSD 发布工程主管 & EC2 平台维护者
Tarsnap 创始人 | www.tarsnap.com | 专为高度安全需求者设计的在线备份服务
13.3
2024 年 3 月
2024 年 12 月
14.1
2024 年 6 月
2025 年 3 月
13.4
2024 年 9 月
2025 年 6 月
14.2
2024 年 12 月
2025 年 9 月
13.5
2025 年 3 月
2026 年 4 月*
14.3
2025 年 6 月
2026 年 6 月
15.0
2025 年 12 月
2026 年 9 月
14.4
2026 年 3 月
2026 年 12 月
15.1
2026 年 6 月
2027 年 3 月
14.5
2026 年 9 月
2027 年 6 月
15.2
2026 年 12 月
2027 年 9 月
14.6
2027 年 3 月
2028 年 11 月*
15.3
2027 年 6 月
2028 年 6 月
16.0
2027 年 12 月
2028 年 9 月
15.4
2028 年 3 月
2028 年 12 月
16.1
2028 年 6 月
2029 年 3 月
15.5
2028 年 9 月
2029 年 6 月
16.2
2028 年 12 月
2029 年 9 月
15.6
2029 年 3 月
2029 年 12 月
16.3
2029 年 6 月
2030 年 6 月
17.0
2029 年 12 月
2030 年 9 月
译者:Canvis-Me & ChatGPT
基金会执行董事 Deb Goodkin 在 What the Dev Podcast 中和《SD Times》的主编 David Rubinstein 一起谈论了 FreeBSD 的 30 周年纪念,以及这些年它是如何成长和变化的。
发布日期:2023.9.7
译者:ykla & ChatGPT
FreeBSD 基金会继续与滑铁卢大学合作项目成功合作。自 2017 年以来,我们已经招募了 15 名实习生,其中一些人已经回来做过多次实习。我们还有两名实习生成为了正式的贡献者,许多人继续为项目做出贡献。今年夏季合作学生生是 Naman Sood,我们坐下来与他聊了聊,了解他以及他选择为 FreeBSD 工作的原因。
姓名: Naman Sood
问:请简要介绍一下自己以及你的教育经历。
我来自印度,2019 年来到加拿大就读滑铁卢大学,主修计算机科学。目前我已经读到了第四年的一半,计划于 2024 年春季毕业。
问:你已经参加了多少次合作实习?
FreeBSD 是我第五次的合作实习。
问:为什么你想要在 FreeBSD 基金会工作?
我一直喜欢编写与计算机硬件的内部机制有关且为其他程序提供良好接口的底层代码。FreeBSD 基金会为我提供了一个特殊的机会,可以实际参与到全世界的人们使用的实际系统的开发中,而这种工作正是我所热衷的。此外,在开源生态系统中工作的经历对我来说是一个难得的学习机会,使我更加自如地为我每天使用的软件做出贡献。
问:你希望从这个实习中学到什么?
我最想从这个实习中获得的经验是在一个真正的、可用于生产的操作系统内核上进行一些“hack”活动的经验。我所在大学的操作系统课程非常出色,但更多地是对整体概念的引导。它没有涉及到我认为使在底层级别工作变得有趣的许多复杂细节,而 FreeBSD 则为我提供了在这种环境下工作的实践和经验。
问:你目前在做什么工作?
我目前正在尝试将 FreeBSD 的 VPS 子系统(http://www.7he.at/freebsd/vps/)从 FreeBSD 10 移植到 14,具体来说,我正在考虑将 TCP 检查点和跨进程故障转移进行移植。例如,如果您有一个多进程的 Web 服务器,其中一个进程崩溃,它可以将其 TCP 连接移交给另一个进程。从客户端的角度来看,即使面对此故障,也可以继续正常运行。
问:到目前为止,你对 FreeBSD 的经验如何?
非常好!在这个大型的、由志愿者推动的开源软件项目中,自然会出现技术和社交方面的挑战。但这些挑战正是我来这里应对的,我在我的工作中得到了非常有益和愉快的经验。