FreeBSD way to explore https:https://cdn.v2ex.com/navatar/b5b4/1fac/502_normal.png?m=1337655638 https:https://cdn.v2ex.com/navatar/b5b4/1fac/502_large.png?m=1337655638 2024-07-02T11:38:21Z Copyright © 2010-2018, V2EX FreeBSD 怎么升级 OpenSSH 修复今天的漏洞?线上有台 FreeBSD 14.0 生产服务器,上面跑了实名认证之类非关键服务,负责的员工离职半年多,公司没人熟悉这个系统,我弄了一晚上还是没成功升级 OpenSSH tag:www.v2ex.com,2024-07-01:/t/1054102 2024-07-01T20:19:34Z 2024-07-02T11:38:21Z drymonfidelia member/drymonfidelia 虽然不是主要的服务器,但我不敢重启它,怕重启了我都不知道服务怎么开起来,systemctl 之类的命令全都没有,配置也都不在我认为该在的地方,最后只找到了 freebsd-update fetchfreebsd-update install 两条命令,执行完了 OpenSSH 还是去年的版本

]]>
萌新请教,如何在 Manjaro 上面编译 FreeBSD 呢 tag:www.v2ex.com,2023-03-19:/t/925305 2023-03-19T08:28:12Z 2023-03-19T09:28:12Z youngYoo member/youngYoo TrueNAS Core(FreeBSD) 中的 Jails 是否能实现类似 Docker 中 --network host 的效果? tag:www.v2ex.com,2022-10-23:/t/889178 2022-10-23T12:42:59Z 2022-10-23T13:42:59Z hronro member/hronro 我最近组了个 NAS ,装的 OS 是 TrueNAS Core 。我想在上面装个 tailscale 实现在外面也能访问 NAS 。我研究了下,貌似比较推荐的做法是在 Jails 里面去装。就是不知道 Jails 里面有没有类似 Docker 的 --network host 的选项,可以直接让 Jails 用宿主机的网络配置。

]]>
Digital Ocean: Phasing out creation of FreeBSD Droplets tag:www.v2ex.com,2022-05-05:/t/851033 2022-05-05T12:39:35Z 2022-05-05T12:36:35Z nebkad member/nebkad At DigitalOcean, our mission is to empower our customers by providing them with simple, reliable cloud infrastructure and we couldn’t be prouder to support customers and businesses like you developing world-class applications. We’re reaching out to let you know that we are phasing out our FreeBSD Droplet.

Starting July 1, 2022, FreeBSD Droplets will no longer be available. In order to simplify our cloud offerings and refocus our efforts on developing and maintaining distributions that our customers use most, we’re ending support for new FreeBSD Droplets.

Beginning June 1, 2022, you will no longer be able to create FreeBSD-based Droplets through the cloud control panel. You will still be able to create FreeBSD-based Droplets through the API until July 1, 2022, but after July 1, 2022, only legacy FreeBSD Droplets will remain on the platform.

Rest assured: Existing FreeBSD Droplets and FreeBSD Droplets created from May 1, 2022–July 1, 2022 will continue to work as usual despite these changes to our offerings.

You’ll also still be able to create Droplets using FreeBSD after July 1 by using DigitalOcean’s custom images feature to import a virtual disk image of FreeBSD OS. Custom images are free to upload and charged at $0.05 per GB per month to store.

]]>
2022 年 FreeBSD 手册中文翻译项目 tag:www.v2ex.com,2022-02-12:/t/833411 2022-02-12T07:59:02Z 2022-10-13T04:13:13Z yklaxds member/yklaxds 2022 年 FreeBSD 手册中文翻译项目

项目地址: https://github.com/FreeBSD-Ask/Handbook

预览地址: https://handbook.freebsdcn.org/

翻译须知: https://docs.qq.com/doc/DSUtxYmVwU29EdGVn

欢迎参与!

]]> 做了一个微信公众号 FreeBSD 中文 tag:www.v2ex.com,2022-01-17:/t/828797 2022-01-17T08:23:08Z 2022-01-17T08:23:08Z yklaxds member/yklaxds 名称 FreeBSD 中文

微信公众号,欢迎关注! ]]>
在线教程: FreeBSD 从入门到跑路 tag:www.v2ex.com,2021-11-23:/t/817425 2021-11-23T07:53:42Z 2021-11-27T08:40:14Z yklaxds member/yklaxds https://book.freebsdcn.org
有能力者倘若可以贡献一二就更好了。
托管 github 地址
https://github.com/FreeBSD-Ask/FreeBSD-Ask ]]>
Nginx 在 FreeBSD 下不支持 reuseport 这个特性的 bug 修了没 ? 求解,我不知道去哪找。 tag:www.v2ex.com,2021-08-06:/t/794084 2021-08-06T06:29:38Z 2021-08-06T06:27:38Z gridsah member/gridsah 记得 16 年好像看到说 nginx 开发时候曲解了 freebsd 的内核参数导致新特性不能用?

现在这个 bug 修了没?我 google 了一圈没有结果....

]]>
FreeBSD 多硬盘 EFI 引导统一 tag:www.v2ex.com,2021-05-09:/t/775843 2021-05-09T11:08:39Z 2021-05-09T11:07:39Z yklaxds member/yklaxds 何谓多硬盘 EFI 统一?就是说有两块硬盘,两块硬盘上分别都有 EFI 分区,一个分区里是 FreeBSD,另一个是 Windows 。现在只想保留一个分区,即想把 EFI 配置文件放到一块硬盘的 EFI 分区里统一管理。

设装有 Windows 的硬盘为 ada0,FreeBSD 的硬盘为 nvd0.首先关闭 Windows 的快速启动启动:命令为 powercfg /h off,然后关机重启进入 FreeBSD,创建挂载点 mkdir /mnt/efi 。检测 ada0p1 (硬盘的第一个分区)是不是我们要挂载的 EFI 分区,输入命令 fstyp /dev/ada0p1,我的输出是 NTFS,可见不是我们想要的 EFI 分区; fstyp /dev/ada0p2,输出 msdosfs,是我们的 Windows 磁盘上的 EFI 分区。

接下来挂载 ada0 磁盘上的 EFI 分区到 FreeBSD 的 /mnt/efi: mount -t msdosfs /dev/ada0p2 /mnt/efi

为 FreeBSD 引导性创建 EFI 路径下的目录: mkdir /mnt/efi/EFI/freebsd

然后复制启动文件到该路径 cp /boot/boot1.efi /mnt/efi/EFI/freebsd/bootx64.efi

最后生成启动项:efibootmgr -c -l /mnt/efi/EFI/freebsd/bootx64.efi -L "FreeBSD niu pi"

重启进入 Windows,使用 easyuefi 激活 FreeBSD niu pi 这个启动项即可。如没有问题,可使用 DiskGenius 删除 nvd0 磁盘的 EFI 分区文件。

]]>
FreeBSD 13 正式版发布了 tag:www.v2ex.com,2021-04-14:/t/770550 2021-04-14T04:01:06Z 2021-04-16T08:06:59Z slack member/slack
Some of the highlights:

The clang, lld, and lldb utilities and compiler-rt, llvm, libunwind, and libc++ libraries have been updated to version 11.0.1.

Removed the obsolete version of the GNU debugger that was installed to /usr/libexec for use by crashinfo(8). Detailed kernel crash information can be obtained by installing modern GDB from ports or packages.

Removed the obsolete binutils 2.17 and gcc(1) 4.2.1 from the tree. All supported architectures now use the LLVM/clang toolchain.

The BSD version of grep(1) is now installed by default. The obsolete GNU version that was the previous default has been removed.

Removed CU-SeeMe support from libalias(3).

The qat(4) driver has been added, supporting some of the cryptographic acceleration functions of the Intel QuickAssist (QAT) device. The qat(4) driver supports the QAT devices integrated with Atom C2000 and C3000 and Xeon C620 and D-1500 platforms, and the Intel QAT Adapter 8950.

Several deprecated drivers have been removed.

Several drivers have been ported to the PowerPC64 architecture.

The kernel now supports in-kernel framing and encryption of Transport Layer Security (TLS) data on TCP sockets for TLS versions 1.0 through 1.3. Transmit offload via in-kernel crypto drivers is supported for MtE cipher suites using AES-CBC as well as AEAD cipher suites using AES-GCM. Receive offload via in-kernel crypto drivers is supported for AES-GCM cipher suites for TLS 1.2. Using KTLS requires the use of a KTLS-aware userland SSL library. The OpenSSL library included in the base system does not enable KTLS support by default, but support can be enabled by building with the WITH_OPENSSL_KTLS option

The 64-bit ARM architecture known as arm64 or AArch64 is promoted to Tier-1 status for FreeBSD 13. ]]>
arm64 成为 FreeBSD 的一级支持架构 tag:www.v2ex.com,2021-04-10:/t/769703 2021-04-10T06:43:18Z 2021-04-10T11:42:02Z yklaxds member/yklaxds FreeBSD 现在通常在什么场景下使用? tag:www.v2ex.com,2021-04-05:/t/768092 2021-04-05T05:43:49Z 2021-04-05T18:53:28Z zhoudaiyu member/zhoudaiyu 作为日常折腾 /开发 Python 等是不是不如常规的 Linux 系统?

]]>
FreeBSD 与猫 ——选择 1%的生活 tag:www.v2ex.com,2021-03-15:/t/761930 2021-03-15T23:22:47Z 2021-03-16T00:39:50Z yklaxds member/yklaxds
说实话按照我的审美这个简直丑到一定境界。所以我们的宣传图标都不使用这个,而用更加美观的替代图。

昨天有人问我公众号有什么用,能赚到钱吗,既然不能广泛推广,又赚不到钱,那有什么用?这其实是每个人的需求层次不同所造成的价值观上的差异。我们不必理会。以前的文章段落《务实与务虚》中我已经说的非常明白了,不再赘述。真是让人头痛。那古老的话语,志不同不相为友,道不同不相为谋,一遍遍的催人深省。

FreeBSD 是什么东西?我们都知道 apple x 用的系统是 IOS,MacBook Pro 用的是 mac OS,我们一般的手机是 Android,电脑是 Windows xp/7/8/8.1/10 。可能计算机专业的学生还接触过 Linux 。FreeBSD 是和他们同级别的一个操作系统。这样解释可能才会有更多人知道 FreeBSD 是什么吧。但是 FreeBSD 很少直接安装在我们的手机上,更多地是嵌入式设备,类似路由器,或者服务器上。

而我们知道硬件需要工作就必须有驱动的支持,驱动是链接软件和硬件的桥梁。比方说玩游戏就必须根据显卡装驱动,更新驱动。而由于版权和厂商支持问题,FreeBSD 只支持很少的硬件设备,或者说支持的性能非常差劲。

这是一个死循环,和母目前所谓的国产操作系统差不多,缺乏生态环境:

用户不用——>没必要开发——>没有支持,用户怎么用?——>用别的去——>用户不用

其实这里就能看出一个企业的企业道德和商业方面的预见性,国内企业大多眼界狭隘,缺乏道德,令人痛心。某企鹅曾经支持过几个月的 Linux,后来就人去楼空,空留一个 beta 版本。某婊不说自己更新进度,反而说是用户自己为什么选择了 1%的生活?而反观国外企业的软件大多全平台支持,也不存在系统歧视问题。

选择是自由的,无可指摘。回过头来很多人疑问了,为什么要用 FreeBSD ?老生常谈,爱用不用。

那么和猫有什么关系?

不知道是谁家的猫,不过看上去没有人喂养它。就随便给了点馒头。之后怕它跑了,放在笼子里养。不过吃饱了它也从没有有过要溜出来的想法。

放出来的时候它已经从黑猫变成了花猫,大部分是黄白相间,额头一部分是黑色的。我们从来不给动物起什么名字,因为我们都不是很懂,这有什么意义。

这猫大概是我见过最好的一只猫了,因为我现在只记得它,连着狗和兔子什么的我也记不清了。只记得一天半夜醒来出去看到有个刺猬,就直接拿了个塑料桶扣在了土地上,想着第二天再说。第二天想起来,应该往桶上放几块红砖的。自此就想着,为什么没放块砖压着呢?天遂人愿,又一只刺猬企图穿越过道,我抓起团成团的刺猬,放到了钢板上,又扣了桶,加了三两块砖。这回终究它没有跑,刺猬的鼻子是最可爱的了。然而这个物种似乎不喜欢寄养,就放了它。

猫都是喜欢睡觉的,它睡得很长。有时候还是一只猫好。

它大概已经有好几岁了。它与狗唯一的不同就是它能够逃离院子对它的束缚。它坐在煤火炉子上,毛差点被点着;它趴在电暖器前,胡子都焦了。大概它的鼻子不是被我捏的变了色。

猫一般不咬人,它只用爪子挠人。半驯化的动物大抵如此吧。它很少喵喵的叫,也经常把死老鼠放在床底下。我才知道,这只猫是吃老鼠的。我一直想把猫养的胖一点,抱着好一些,最起码要和兔子一样,无奈它爱晒太阳,又爱飞檐走壁。

它看到我不是和狗一样要舔我,只是睁开眼睛,然后闭上眼睛继续安眠。

这条街道都拆迁的差不多了,留下了一半废墟和一半卖小吃的摊点。也要拆到这里了。这是租的房子,我只记得要把它关在屋内。白天却找不到它了。自此以后再也没见到过这只猫,也不曾养过猫了。 ]]>
FreeBSD 将降低对 i386 架构的支持力度 tag:www.v2ex.com,2021-02-01:/t/750310 2021-02-01T07:11:36Z 2021-03-04T13:00:22Z yklaxds member/yklaxds
FreeBSD 会继续为 13.x 分支提供面向 i386 架构的 release 镜像、二进制更新和预构建软件包。不过在 13.x 中出现关于 i386 架构的特定问题(包括 SA )可能不会修复。

https://lists.freebsd.org/pipermail/freebsd-announce/2021-January/002006.html ]]>
FreeBSD 12.2 阿里云镜像使用说明 tag:www.v2ex.com,2021-02-01:/t/750235 2021-02-01T04:12:44Z 2021-02-01T04:11:44Z yklaxds member/yklaxds 镜像非本人制作。

FreeBSD 12.2 阿里云镜像使用说明
镜像下载地址: https://cloud.189.cn/t/uaeu6nZre6Zf

修改内容:
对 /usr/src 的 virtio 驱动添加 D26915,D26933,D27262 支持以让阿里云正确启动磁盘( thx: khng300)
编译内核到 /boot/aliyun
修改 /boot/loader.conf 设置默认为阿里云内核启动(防止更新后系统挂了)
修改 /etc/rc.conf 中的 ifconfig_em0 到 ifconfig_vtnet0 让阿里云自动识别 ip
修改 pkg,ports,portsnap,update 到 freebsd.cn

注意事项:

由于使用了自定义内核,安全更新后需要从 /usr/src 重新编译内核以安装安全更新

由于 Linux 的 UFS 驱动有问题,镜像不能使用 UFS 文件系统,会出现文件系统损坏,只能用 ZFS,数据盘无所谓

如果担心服务器安全问题可以从 /usr/src 编译自己的内核

导入流程:
下载文件后解压
在需要创建服务器的地域创建一个 OSS 并且设置可以公开访问
上传 vhd 文件到 oss 中
进入阿里云的 云服务器 ECS->镜像->导入镜像 需要填写 OSS 的公开访问地址
等待镜像导入完成后创建 ECS 即可使用 ]]>
FreeBSD 宣布 2020 年第 4 季度状态报告 tag:www.v2ex.com,2021-01-20:/t/746588 2021-01-20T02:52:31Z 2021-01-20T02:51:31Z yklaxds member/yklaxds ● 继续努力从 FreeBSD 基本系统中移除 GPL 协议的软件,以实现 FreeBSD 项目基本目标。

● Linux 二进制兼容层的 Linuxulator 除了获得更好的 CLI 应用程序支持外,还在继续努力让更多的 GUI 桌面应用程序发挥作用。

● 默认的编译器工具链更新到 LLVM Clang 11 。

● 努力优化 FreeBSD 对英特尔 WiFi 的支持,支持 AX 210 。

● 继续围绕即将在未来几个月内发布的 FreeBSD 13.0 进行工作,这也是他们从 Subversion 转到 Git 进行开发后的第一个版本。

● FreeBSD 的 USB4 支持工作正在进行中,但还没有完成,无法为用户提供支持。

● 继续改进 ARM / AArch64 对 FreeBSD 的支持,目前仍是二级架构。

●双栈 ping 命令、移除 Python 2.x 、更新 Xfce 桌面。

● FreeBSD 基金会提供了围绕 OpenZFS Zstd 支持、Linux 应用程序二进制兼容性的 Linuxulator 改进、LLDB 目标工作、WiFi 改进等方面的资助。

]]>
FreeBSD——艺术、科学、哲学概论 v3 版本 tag:www.v2ex.com,2020-12-31:/t/740496 2020-12-31T01:39:56Z 2021-01-06T21:58:35Z yklaxds member/yklaxds →→→→→概论:
  信息都有一定的时效性。那么现在是什么时间?现在已经发布了 FreeBSD 12.2,距离下一个版本 13.0 还有约 4 个月。
  『约定』
  使用 Google 来查阅信息。善用搜索引擎。如果无法访问,那么你可能不适合使用 FreeBSD 。(另外我不是谷粉,不作恶是不是真的我也不想讨论。如果不喜欢谷歌,也可以使用 duckduckgo, ask, bing, Wikipedia 等,远离某毒即可)
  学习英语。
  特别的,哪有什么大佬,都是从小白来的。我也知道很多新人充满疑惑,包括我自己也一样。新人可能问的问题比较简单,甚至一搜就有,但我们不能简单的加以嘲讽,谩骂,而应该引导他,伸手党无碍大雅,但是也要说清问题。互帮互助,这不仅是一种分享的精神,也是自由开源软件理念所在。

  『什么是 FreeBSD 』
   FreeBSD 不是 Linux,不是国产操作系统,不兼容 Systemd,不能吃鸡,亦不是 UNIX 。目前在 BSD 系中,FreeBSD 的用户是最多的。一些 Linux 下的软件基本上在 FreeBSD 中都能够被找到,即使找不到的也可以通过 CentOS 兼容层运行,你也可以自己通过 debootstrap 构建一个 debian 或者 ubuntu 的 / 系统。

  『选择 FreeBSD 的一般原因』
  从道家来讲,你爱选不选,太长不看,不用?左转 Linux , Windows 吧,不谢。
  从佛教来说,因为缘分。万物缘起性空,我们有缘相聚,又会者定离。万般诸相皆如此。
  从基督教来讲,这是主的指引。就像出埃及记一样,你看上去是自己的选择,实在上都是主的安排。
  从辩证唯物主义来讲,是因为联系。FreeBSD 是 UNIX 直接后裔,而 Linux 只是仿制品,而很多协议又离不开 UNIX,所以你注定了要来到这里。
  按照我个人观点而言,追求软件的稳定和新,既要有二进制源,又要能编译安装。除了 FreeBSD 之外我找不到 Linux 系统。
   BSD 三则授权协议:并允许自由分发。GPL 与 BSD 协议,究竟何者是真正的自由?
  远离碎片化的 Linux 发行版,使得选择困难症用户免受痛苦。
   BSD 是一个完整的 OS,而不是内核。内核和基本系统作为一个项目来整体维护。
  
『选择 FreeBSD 的技术性原因』
  系统配置文件与第三方软件配置文件分离。/etc 与 /usr/local/etc 等
  文档齐全,所有涉及一般性的问题 Handbook 手册都有记述。
  安全漏洞相比于 linux 较少。
  接近三年的权利发布周期,赋予了 FreeBSD 稳定性。
   Ports 可以编译安装软件,进行自由配置。
   ZFS 文件系统可以被配置为 root 分区。ZFS 被誉为最强大的文件系统。
   Jail 与 byhve 虚拟化,不必配置底层虚拟化,节约系统资源。
  传统的 BSD INIT 引导,使你免受 systemd 迫害。
   DTrace 框架与 GEOM 存储框架。
   Linux CentOS 二进制兼容层,可运行 Linux 软件,只要其支持 CentOS 。
  安全事件审计。

  『如何获取下载 FreeBSD 』
   FreeBSD 是免费获取的。
   [下载地址] https://www.freebsd.org/zh_CN/where.html
  版本选择,尽量选择较新版本,桌面用户可选择 current 版本。stable 和 current 都是开发版本,rc 和 beta 是预览版,release 是常规版本。不可以通过 freebsd-update 命令将 current 或 stable 直接切换到 release,反之亦不被允许。current stable 也不能通过 freebsd-update 直接更新。都需要重新下载源代码进行编译整个系统及内核来切换版本或更新系统。
  在此刻,一般我们选择 amd64 架构。
  其中,说明一下:
  以 img 结尾的适用于刻录 U 盘,如 FreeBSD-12.1-RELEASE-amd64-memstick.img 。img.xz 是压缩包,解压后方能刻录。支持 UEFI 启动。
  至于以 iso 结尾的,选择带有 DVD1 字样的。iso.xz 也需要解压。刻录光盘或加载至虚拟机使用。

  『 FreeBSD or Others 』
  ①Linux
  首先大概许多人是从 Linux 跑过来的,这样说我也没什么统计依据,不过姑且这样说罢。如果你发现在哪本书是举例提到 FreeBSD 是一种 Linux 发行版,那么我个人是不建议你继续看下去的,这属于误人子弟,我也曾在某些慕课网站上看到过类似行为。
  严格来说 Linux 是指 Linux kernel,只是个内核而非操作系统。而 FreeBSD 是个操作系统。FreeBSD 采用 BSD 授权许可(见 https://www.freebsd.org/zh_CN/copyright/freebsd-license.html )。FreeBSD 驱动方面一直是个大 Bug,不如 Linux 。
  ②Mac OS & iOS
   Mac OS & iOS 在一定程度上来说,都基于 FreeBSD 。可见 FreeBSD 的 GUI 并不是搞不好,只是 xorg 和开发方向有问题。
  首先 mac os 和 iOS 某种程度上都基于 FreeBSD 。但是这时候就要说易用性了。FreeBSD 和 Linux 还都是那套 Xorg 。很明显不行,但是本着你行你上的观点我也上不去。。。图形界面才是第一 x3 。
  到底是苹果成就了 mac os iOS 还是反过来 二者成就了苹果呢?举例来说,买 Mbp 装 Windows 。当然这是个人喜好,没有任何值得批评的地方。假设 iOS 预装 Android 。这么举例可能不恰当。但是相当一部分纯果粉应该是接受不了的。
  生态环境。这个见 Windows Phone 。那么为什么选择 Apple 就不是 1% 的生活了?成功的商业化运作起着很大的用处。就像在这个贴吧里总有人看我不爽但又骂不过我一样,逞得口舌之利都不如我。FreeBSD 在大陆镜像站都没有,甚至因为 free 这个英文单词连官网都被电信屏蔽过。这个生态环境相比可知了。而且现在 UNIX 认证很宽容,所谓什么血统那是扯淡。好不好用自己心里没数吗?资本家之所以是资本家就在于产出再投入。对于这里而言,苹果的软件多就是因为用的人多。这个初期是怎么积累的? FreeBSD 一场官司,初期就没有得到很好的发展,不然就没有 Linux 了,这话是 linus 说的。
  国民素质有待提高。这个不是看不起嘲讽。这是客观事实。很多大学生甚至不知道什么是 Android,还有人说万物基于 MIUI 。这和术业有专攻这句话已经完全无关了。当然不是说用水果就是素质低,这么理解的人语文有毛病。
  水果摆脱了开源界所谓的苦难哲学。
  ③ Microsoft Windows
  微软非常重视用户体验,而一些社区可能完全忽视了这一点。直接的结果就是需要自己动手解决的地方略多。有人认为 Windows 简单因为都是图形化界面。事实上这是一种非常错误的说法,Windows 非常复杂。举例来说,你精通注册表否?知道每个选项什么意思吗?
  至于安全性,很多人认为 UNIX-like 不需要杀毒软件,但是事实上这种观点是不正确的,当你发现自己中毒的时候,已经成为了病毒的培养基。但是目前来说,FreeBSD 远比 Windows 安全。
  至于游戏什么的,已知 steam 运行。运行 Minecraft 这种 java 软件也没毛病。

  『参与社区工作』
  请加 telegram 群组:freebsdba 、freebsd_cn 及 freebsd_taiwan_community 了解。
   QQ 群组:731675387 817507910(树莓派嵌入式相关)
  什么是 Handbook ?就是手册。包含基础的问答,使用说明。类似于 WIKI 。

  『哲学与玄学』
   FreeBSD 是一种 UNIX 哲学(如模块化,一切皆文件等,见《 UNIX 编程艺术》❩的发展,也是学院派的代表作品。她是一套工具集,她存在目的是为了让人们更好的生活。

  『硬件支持』
  截至 2020 年 12 月 22 日,FreeBSD 已经支持 intel 十代处理器显卡( FreeBSD 12.2-STABLE / FreeBSD 13-CURRENT ),NVME PCI-E 硬盘,UEFI + GPT,Root 分区使用 ZFS 文件系统,部分树莓派等嵌入式设备,5G wifi,KDE Plasma 5,Clang + llvm 。
  但是囿于硬件繁多,具体的设备支持还请看 https://www.freebsd.org/where.html 的 [ Hardware Compatibility List ] 部分。
  有些网卡不支持可以购买 USB 网卡:推荐 COMFAST CF-WU810N 网卡。
  显卡支持还请查看,总的来说对英特尔显卡支持比较好!
   https://wiki.freebsd.org/Graphics

  『软件安装』
  包管理器。用过 Gentoo 的人可能对 FreeBSD 的 Ports 并不陌生, 因为 portage 正是脱胎于其中,见 [ https://wiki.gentoo.org/wiki/Project:Portage#About_Portage ”Portage is a GPLv2 package management system based on ports collections.”] 。
  没有用过也不要紧,重新来过更具有挑战性。
   FreeBSD 软件源共有四个,目前中国大陆境内尚无官方镜像站。(发邮件询问过但是并无详细的解释)
  目前有多个非官方源可以正常使用:
  网易 163 镜像站 [PKG+Ports]
   freebsd#cn (替换#为.) [ports pkg update portsnap 都有]
  北京交通大学开源镜像站[理论上四类源都有,但 ports update 测试不可用,telegram 联系群组:bjtumirror]
   USTC 开源镜像站[pkg+update]
  要想成为一级官方镜像站,需要子域名 cn.freebsd.org ,但是境内 org 不能备案,也就不能开放 web 端口。这目前似乎是个无解的问题?
  

  『学习资源』
  相关书籍:《 Absolute FreeBSD 3rd 》。旧的变化也不是很大。不像 linux 有这么多入门书籍,什么 XX 秒精通 Linux,Linux XX 学,*linux* 。当然上边这些书,学 Linux 的也尽量别看,质量太差。但是由于历史上的原因,看 UNIX 相关书籍即可。
  『捐赠事宜』
   FreeBSD 官方基金会 https://www.freebsdfoundation.org/
  最低限度 $10,支持 VISA 信用卡。有力者可捐赠一二。

→→→→→导言:
导言,这一部分通常也被称作“前言”、“导论”、“概论”、“楔子”、“写在前面”、“小记”或“想说的话”。当然叫什么不是重点,重要的是它们均位于这个位置。本书前言可能是在所有书中最长的前言。
  我想说的,正如庄子在《南华经》中所言;“吾生也有涯,而知也无涯。以有涯随无涯,殆已!”所以我不强调所谓的终身学习观念。人能弘道,非道弘人。知识都是自己学的,即使可以像恐怖如斯的渡劫强者向他人醍醐灌顶传输功法,所受之人亦不能穷尽所有道法。人的生命短暂,整个人类的生命对于宇宙来说又何其短暂!不明白这个道理,永远只能被剥削。
  如果困难是财富,那么在 FreeBSD 就是这样一个充满财富的合集。如果苦难是一种哲学,那么这种哲学的别名叫做 FreeBSD 哲学。
  提到开源二字,首先人们会想到 GNU 计划,其次比如 FreeBSD 此类计划。
  有很多人讽刺 Microsoft,说 Microsoft Windows 上运行的 IDE 垃圾,隐藏了引擎盖下的细节,一按下去“预处理,编译,汇编,链接”四步就都完成了。此时便会有人出来,说我们用 Linux 吧,再安个 GCC,用 VIM 写代码,用 GDB 调试。用 Windows 多垃圾啊,你入 Linux 啊!
  从此,误入尘网中,一去三十年。从 Ubuntu 到 Gentoo,发行版换了几百个,却没有达成初心。
  我们都知道,先有键盘,后有鼠标,现在,你省下了买鼠标的钱。把 Xorg 删掉,你说桌面占用内存;把 Windows 删掉,你说节约硬盘空间。记住了 VIM 几千个指令,你发现,还是记事本好用。
  苦难由此而生。
  我不觉得在 TTY 下加载出 Bilibili 的 HTML 播放器有任何值得称赞的原因。也看不到使用 xfce 桌面系统,它哪里优越于 MAC OS 或者 Windows 的图形界面。但是一些人仍然一如既往的展现出自己无处不在的优越性。
  开源不是乌托邦,意味着 Free 。这意味着免除一切责任。只能依靠自已。
  我想不出来,为什么我们走进了青铜时代,又要回归石器时代。你说为了开发效率,为了节约硬件成本,为了节约正版软件费用。我说,现在的设备,即使是嵌入式也不再用汇编进行开发,而使用 C 语言;现在的笔记本,内存标配提升到了 8G ;而正版与否,大家心里都清楚,对于开源,也不是随意商用。
  自由,轻量化,安全与稳定性似乎是开源的代名词。其实不然,自由并不是给你代码让你自己修改并编译,花上几个小时。你说自己编译的软件运行效率高,却拿不出任何论文作为证据。
  开源哲学,号称互帮互助。著名 IRC 频道中,我很遗憾,没有看到这一点。对于国内论坛,社区,各种乱七八糟的 log 贴上去,你只能得到嘲讽,就像是多年的丑媳熬成了恶婆婆“什么 https,你懂 openssh 吗?你知道证书是什么东西吗?不知道你问个…”以此循环往复,我更是不必多说,还有某协会在为自己的前会长打广告。说到底,需要的不是知识,都是钱和肆意嘲讽他人的资本。
  即使是对于服务器,大部分人使用 CentOS,我看不出它哪里比 Scientific Linux 好。性质都是一样的。只有真正明白的人才会知道,盲目的从众,缺乏理性认识就深入一个东西,是多么的无知。
  在图形界面盛行的今天,我们不应该开历史的倒车。也不能让 OSS only for server 。说 FreeBSD 不行的,可能没用过 iOS; 说 Linux 垃圾的,可能没用过 Android 。
  带着苦难哲学的人,犹如套在袋子里的人。
  在有人把 FreeBSD 当作 Linux 的今天,本书的目的在于弘道。很多人抱怨,我们的传统文化在钢筋水泥中逐渐死亡。这当中有很多传统技艺功法失传是由于一些所谓封建的观点而造成的,比如传男不传女,教会徒弟饿死师父,概不外传等等。认为应该公开真本领,真本事,真技法。
  真本领、真本事、真技法这三真,我叫他道法。无论是否简单,都是道法,1+1=2 也是道法,如何证明 1+1=2 也是道法。从这个方面来看,我们一切所知皆为道法。但是为何冠名以道,下章再议。
  我认为道法不能轻传。
  轻传并非指完全不传,而是指在条件的情况下完整的传承下去。一言以蔽之,在客观上免费获取知识的地方都是骗人的地方。在这里,比尔盖茨一定十分赞同这个观点。
  举众所周知的例子来说,西游记中唐僧师徒五人前往西天取经。彼时东方无经文吗?还真没有。历经故意设置的九九劫数不只是他们的宿命,更因为道法不能轻传,一本经文通晓,已是难得的高僧,更妄论十本,百本。
  在道教而言,不是所有人都能念经文的,因为没有道法,普通人不知道应该避讳哪些字,哪些是道士能念的,哪些居士不能念的,念时往何方向,掐何种手印,从哪到哪,该念几遍,何日禁忌。而这些只有师父会告诉你,别人不会告诉你。
  可以见得,佛道两家,都清醒的并做到了这一点:不轻传道法。并非单纯倡导宗教上的不轻传道法,而是说这两家的认识比较深刻,而且实行的较为正确。很多玄幻小说作家也认识到了不轻传道法这种观点。前辈将各种典藏都收于大山,留待有缘之人。原因有二,险地少人,非真有缘者不可来;取物磨难,非易得之物。北方有句谚语“听人劝,吃饱饭”,经验丰富的家里的老人会告诉你很多事情,不一定对,也不一定错,但一定的是能吃饱,不能吃好。诗人说路多歧路,歧路亡羊,不必告诉青年朋友们此路不通,尽可让他们头破血流,这才是青春,即使因此失去了生命。缘由就是你说了也没有人会去听,你说的的的确确是道法,也传了出去,但是产生什么效用了没有?并没有。唠唠叨叨是可以停止了,没有任何作用。
  现代社会倡导知识分享,但是我可以看到核心期刊,专业学术论文没有人分享的。那么分享的究竟是什么东西?是华盛顿砍树这种假故事还是方便面是垃圾食品这种谣言?我所看到的慕课不过是把书上的内容念了一遍而已,书的质量差,这种慕课更差。这不是在于人才,国外一些大学的慕课水平如何?不错。为何?因为那根本不是慕课,就是将课堂录制了下来,仅此而已。人们看到免费的总要去占便宜,不知道被消费的是自己还有额外的机会成本即时间。因此我断言,免费的慕课是做不好的。即使课好,也不可能有多大的影响力。正如上文所言,你把道法传出去了,你就不管接收者,也管不着接收者了。这就是轻传道法的弊端所在,浪费你我时间金钱和感情。
  如《理想国 》一书所述,道法必有一种途径进行传承。如果传承不再,那也是必然规律,不可强求。即使费力的保留了下来,也定要当历史的吊车尾。
  人人可为师,非人人可得道。一件事情是收费的,用金钱衡量了价值。对于普通人,恐怕没有人说 Linux 比 Windows 好用。这里的普通人也包括没有接触过计算机教育的人。所以没人向一般用户群体推荐使用 Linux,除非他别有用心。商人可能市侩,但是也是为了道法的传承。如果物品免费,就不会再有人去做。由此也是版权专利的由来。使人失去了欲望是一件可怕的事情。现在的社区正面临这种困境。
  很多专业书籍为了牟利不择手段,什么多少天精通 C++, 一把年纪出书误人子弟。不是为了传道,而是为了牟利或自私的普及知识。这种书只能打击学习者的积极性。说是看来能够短时间普及文化,但是在长期看来营造了一个错误的环境和知识氛围,造成与他人更大的差距。
  传道没有这么轻松,人人可以传道,但是传的道不一定是自己自以为可以传的道。
  活在梦里,醒来却发现仍不知道什么是疼。未来的结局早已经注定,可仍要懦弱的挣扎偷生。
  就像在物理机中运行的虚拟机中运行的虚拟机一样,总以为自己是真的。可悲的一生被设计好了,无论是国家机器把我们设置成热爱祖国热爱人民的学生,还是我们自己不愿意做圆上的一个切点。古今皆有之,把大器晚成作为自己一事无成的理由,来宽慰自己,勉励自己,并相信自己可以有所作为,经天纬地。仿佛很多人看破了,看透了,活的敞亮了,无拘无束了。向天一笑,“看的清澈又有何用,终归是自己为难自己。”可叹浮云长涨长消,潮水潮起潮落;可悲雾霾时有时无,而无路可走。
  年轻的时候像茶水溢出了杯具,悲剧一事无成;时间长了终归不如洒掉全部。
  不是他物磨平了我们的棱角,正是自己磨平了自己。物遇不平则鸣,君子不器,不愿意成为他人利用的对象,可是这种种却都是赤裸裸的血腥贪婪暴力,都改变了这些。天下大事绝非偶然,与其沆瀣一气不如寄情山水。
  大器不成,天意难违。按照唯物辩证法的观点是不正确的。但是我却以为他是正确的,我并不会为某个主义牺牲自己,万一他是错的呢?我没有机会去验证,而那些验证的人得到的也只是个未知数,充满了不可知性。从上述观点看来,大器虽晚成,经天亦纬地。 ]]>
Fcitx5 上线 FreeBSD tag:www.v2ex.com,2020-12-29:/t/740176 2020-12-29T23:02:33Z 2020-12-30T05:38:32Z yklaxds member/yklaxds textproc/fcitx5-qt
textproc/fcitx5-gtk
textproc/fcitx5-configtool
chinese/fcitx5-rime


可通过 ports 安装。环境变量取决于你的窗口管理器和桌面以及 shell 。经测试不支持 slim,可能是配置问题。SDDM 可用。

自动启动:
cp /usr/local/share/applications/fcitx.desktop ~/.config/autostart/

在.cshrc 和 /etc/csh.cshrc 中进行如下配置,此配置可以解决部分窗口 fcitx 无效以及无法输入显示中文的问题。
setenv QT4_IM_MODULE fcitx
setenv GTK_IM_MODULE fcitx
setenv QT_IM_MODULE fcitx
setenv GTK2_IM_MODULE fcitx
setenv GTK3_IM_MODULE fcitx
setenv XMODIFIERS @im=fcitx
setenv LANG zh_CN.UTF-8
setenv MM_CHARSET zh_CN.UTF-8

在 root 用户下 rime 不会自动被添加到输入法,需要手动添加完成初始化! ]]>
FreeBSD 速度不达标 tag:www.v2ex.com,2020-12-24:/t/738491 2020-12-24T02:38:13Z 2020-12-24T06:38:13Z MeteorCat member/MeteorCat 最近从 CentOS8 切换到 FreeBSD12 发现速度很不满意,这里说下主要应用场景:

老家买了浪潮机架老服务器(忘了啥型号)和戴尔 730xd 机架服务器(最近更新),专门接了公网宽带来做私有云服务器,通过外网买的服务器把端口转发会国内老家这台服务器来运行的. 以前跑 CentOS 的时候转发效率和速度都跑满的, 自从切换 FreeBSD 发现转发速度和效率不尽如人意, 想问下是配置有问题吗?如果有更好的优化配置和方法提供那更加感谢! 
]]>
选择 FreeBSD 而不是 Linux 的技术性原因 tag:www.v2ex.com,2020-12-23:/t/738369 2020-12-23T11:21:09Z 2021-01-02T17:21:59Z yklaxds member/yklaxds
干净的分离
在 FreeBSD 的设计方式下,不同的组件组合在一起的,处理配置和调优,以及多年来开发和改进的所有工具,使得使用 FreeBSD 是一件很特别的事情。
从 1998 年开始,我所使用的大多数 GNU/Linux 发行版,你都会有一种 "不匹配 "的感觉。
举个例子,Debian GNU/Linux 有 Debian 的做事方式。Debian 的方式是通过使用一套特定的配置管理工具和补丁来使第三方软件符合 "Debian 方式 "的设置。虽然这在某种意义上可以统一你在 Debian 发行版上的做事方式,但它却打破了上游的配置,这让人非常烦恼。特别是当某些东西不正常,或者上游文档中描述的方式与 Debian 上的设置不一致时,这个问题就更严重了。这种方法的另一个问题是,一些第三方软件,甚至是发行版的核心元素,比如 systemd,都不能强行按照 "Debian 的方式 "去做。其结果是,系统的某些部分以 "Debian 方式 "运行,而其他部分则不是。Debian GNU/Linux 采用了 systemd,但同时默认的网络部分是 Debian 特有的。有时你必须禁用或移除 Debian 特定的东西才能让 systemd 特定的东西工作。
在像 Arch Linux 这样的发行版上,这个问题是不存在的,因为不存在 "Arch 方式 "这样的东西。Arch Linux 发行版希望第三方软件能够像上游一样,所以除非绝对必要,否则他们不会改变任何东西。这很好,因为这意味着上游文档与软件相匹配。然而,这种方法的一个问题是,由于第三方软件确实以不同的方式处理事情,你可能最终会得到一个软件运行不统一的系统。然而,在系统管理方面,我个人还是更喜欢 Arch Linux,而不是 Debian,因为 Debian 有时几乎会修改全部的第三方软件。
Ubuntu 就更糟糕了。因为它是基于 Debian 的,所以运行时使用了很多 Debian 的工具和设置,但同时也有 "Ubuntu 方式",即在 Debian 的基础上改变了一些东西,然后在这些基础上又增加了一层,即所谓的用户改进工具层,这有时会使 Ubuntu 出现难以理解的故障——即内部错误。
在 FreeBSD 上,你会马上发现,你所面对的是一个非常完善的系统。
内核和基本系统与第三方应用程序是完全分离的,基本系统的配置进入 /etc,而所有第三方的配置进入 /usr/local/etc 。所有你可以配置的东西,所有你可以调整或设置的东西都在 man 手册中有很好的记录。
你所有的东西,从 rc 实用程序(也就是被 init 调用后控制自动启动过程的命令脚本)到命令脚本,再到 sysctl 内核管理工具,所有不同的系统配置,以及其他所有的东西都放在一起,而且存储的很好。
我不知道该如何准确地表达这一点,但因为 FreeBSD 的管理方式,是作为一个完整的操作系统和项目来管理的,而不是作为一堆不同的项目被粘合在一个发行版中,所以一切都考虑得非常周全。它是基于多年经验上的,当事情发生变化时,它们会为了整个社区的利益而变化,并且有很多来自真实使用案例和行业问题的反馈。
要真正理解这一点,最好的方法之一是阅读 Michael W. Lucas 的《 Absolute FreeBSD 》一书。他不仅解释和描述了书中涉及的所有技术问题,而且还抓住了重要的历史背景来解释为什么事情会是这样的。

文档
有些人不认为文档是采用某项技术 /工具原因的一部分,但文档属于它所描述的技术的集成部分。糟糕的、过时的和缺失的文档应该被认为是一个 Bug 。
FreeBSD 的文档是随系统附带的,所以你不必在网上搜索。基本系统的 handbook 手册质量很好,而且是专门为 FreeBSD 编写的。您所需要的大部分内容都在系统中。
FreeBSD 也有 FreeBSD 手册,它涵盖了 FreeBSD 的安装和日常使用所需。FreeBSD 手册可以在安装过程中本地安装。这本手册偶尔会有一些过时的部分,因为这本书是许多人持续工作的结果,但它一般都会更新,而且写得很好。

安全
通常情况下,被入侵的不是操作系统,而是运行在操作系统上的程序。在某些情况下,被入侵的程序可以与操作系统进行交互,从而也会影响到操作系统。保护操作系统的安全意味着您要确保计算机的资源只被授权的人用于授权的目的。
FreeBSD 经过了彻底的审计,以消除缓冲区溢出和其他无数的安全问题,此外,FreeBSD 还提供了许多工具和选项来帮助您保护系统免受攻击。
我不可能在这篇文章中提供一份详尽的选项和可用功能的清单,因为 FreeBSD 的安全主题可以轻松地写满一本书。如果您想更深入地了解 FreeBSD 的一些安全特性,我强烈推荐 Michael W. Lucas 的《 Absolute FreeBSD 》一书。
不过,我还是要提几件事情。

在安装 FreeBSD 的过程中,安装程序提供了一系列可以启用或禁用的选项。

隐藏其他 UID 进程
隐藏其他 GID 进程
隐匿已被囚禁的进程
隐藏信息缓冲区
禁用进程调试
随机化进程 ID
禁用 syslogd 网络
禁用 Sendmail
安全控制台
非可执行堆栈和堆栈保护
大多数 FreeBSD 的内核级安全设置都可以在 security.bsd sysctl 树中找到,而且每隔几个月就会有更多的设置被添加进来。您可以运行 sysctl -d security.bsd 来显示您的 FreeBSD 安装中的可用选项。
# sysctl -d security.bsd
security.bsd: BSD security policy
security.bsd.stack_guard_page: Specifies the number of guard pages for a stack that grows
security.bsd.unprivileged_get_quota: Unprivileged processes may retrieve quotas for other uids and gids
security.bsd.hardlink_check_gid: Unprivileged processes cannot create hard links to files owned by other groups
security.bsd.hardlink_check_uid: Unprivileged processes cannot create hard links to files owned by other users
security.bsd.unprivileged_idprio: Allow non-root users to set an idle priority
security.bsd.unprivileged_proc_debug: Unprivileged processes may use process debugging facilities
security.bsd.conservative_signals: Unprivileged processes prevented from sending certain signals to processes whose credentials have changed
security.bsd.see_jail_proc: Unprivileged processes may see subjects/objects with different jail ids
security.bsd.see_other_gids: Unprivileged processes may see subjects/objects with different real gid
security.bsd.see_other_uids: Unprivileged processes may see subjects/objects with different real uid
security.bsd.unprivileged_read_msgbuf: Unprivileged processes may read the kernel message buffer
security.bsd.unprivileged_mlock: Allow non-root users to call mlock(2)
security.bsd.suser_enabled: processes with uid 0 have privilege
security.bsd.map_at_zero: Permit processes to map an object at virtual address 0.

漏洞统计
这是一个 FreeBSD 和 Linux 的漏洞统计列表。FreeBSD 上的安全问题数量普遍较少,这并不一定意味着 FreeBSD 比 Linux 更安全,尽管我相信是这样,但也可能是因为 Linux 上有更多的用户。
+---------+---------+-------+
| Year | FreeBSD | 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 |
|---------|---------|-------|
| Total | 361 | 2333 |
+---------+---------+-------+
有关特定漏洞的进一步信息,您可以查看 FreeBSD 和 Linux 的 CVE 详情网站。

稳定性
FreeBSD 有很好的工程和发布管理经验。FreeBSD 从构思到公开发布要经过多个步骤。
当有人有了一个想法,并开发了一些新的东西,它首先会得到同行审查。然后它进入 "CURRENT"分支进行综合测试,并根据复杂程度或潜在影响,调整进入稳定版的迁移窗口。然后它进入 "STABLE"分支进行更广泛的用户群测试。这通常是所有测试版测试发生的地方,也有更广泛的社区参与。然后,它进入发布候选版本测试,通常持续 3 轮,然后成为一个正常的版本。
这意味着只要你了解发布和升级的注意事项,你就可以很有信心相信系统正常运行。
软件的补丁发布是为了修复任何漏洞和错误。
这通常使 FreeBSD 成为一个非常可靠的操作系统。

Ports
FreeBSD Ports 是一个惊人的工程壮举。NetBSD 的 pkgsrc (package source) 和 OpenBSD 的 ports collection 都源于 FreeBSD ports 系统。
通常当您在 Unix 操作系统上安装软件时,您需要找到并下载软件。然后解压软件,通常是压缩的 tar 包。然后在 INSTALL 、README 等其他文本文档中找到文档, 并阅读关于如何安装软件的说明。如果软件是以源码格式发布的,你需要编译它,这通常涉及到编辑一个 Makefile 或运行一个 configure 脚本。如果编译成功,你就需要测试和安装软件。如果软件有依赖性, 则需要先下载并安装这些依赖性。
FreeBSD ports Collection 使用 Makefile 来自动完成编译、 安装和卸载软件的过程, 并使用 make 命令。组成 port 的文件包含了所有必要的信息, 以便自动下载、 解压缩、 打补丁、 编译和安装应用程序, 而在 ports 目录下发出诸如 make install 或 make install clean 这样的开始命令之后, 用户只需要很少的干预 (如果有的话)。如果 port 需要依赖其它应用程序或库, 则会事先自动安装。
大多数 port 都配置了一组默认的选项, 这些选项被认为是适合大多数用户的。然而, 这也是 ports 系统的一大优点, 这些配置选项可以在安装前使用 make config 命令进行修改。该命令会弹出一个基于文本的界面, 允许用户选择所需的选项。
在写这篇文章的时候,集合中有超过 38487 个端口可用
在大多数情况下,ports 应用程序都是以预编译包的形式提供下载的, 并设置了默认的选项。这些软件包可以通过 FreeBSD pkg - Binary Package Management 应用程序来安装。预先编译的 port 被称为 "package"。
FreeBSD 项目有一个软件包联编场, 其中联编了所有支持的架构和主要版本的软件包。数据库中提供了所有软件包的联编日志和已知错误, 而每周的联编日志也可以通过邮件列表存档获得。

滚动发行软件包
在软件包方面,您有两个不同的分支可以选择。一个叫 "quarterly",另一个叫 "latest"。
Quarterly 是在每年 1 月、4 月、7 月和 10 月的季度开始时, 从修订系统中的 HEAD 分支中切割出来的 Ports 分支的名称, 也是由这些分支产生的二进制软件包集的名称。
Quarterly 分支为用户提供了更加可预测和稳定的 ports 和包的安装和升级体验。这基本上是通过只允许非功能更新来实现的。季度分支的目标是接收安全修复, 但也可能有版本更新, 或提交的回溯, 错误修复和 ports 合规性或框架变化。
如果您选择了 "latest"的分支,FreeBSD 就会成为第三方软件包的滚动发行版, 而且和 Arch Linux 很像, 它也会得到最新的软件。

Poudriere
Poudriere 是一个用于创建和测试 FreeBSD 软件包的工具。它利用 FreeBSD jail 系统来建立独立的编译环境。这些 jail 可以用来为不同版本的 FreeBSD 编译软件包。一旦这些软件包被编译完成,它们的布局就会与官方镜像相同。这些软件包可以被 FreeBSD pkg 二进制软件包管理工具所使用。
Poudriere 是一个用于测试和构建软件包的神奇工具,通过 Poudriere,您可以轻松地构建和设置自己的二进制软件包库,其中的软件包将完全按照您的规格和需求构建。
Poudriere 可以处理整个 ports 树的批量联编,ports 树的特定子集, 或包括其依赖关系在内的单个 port 。它能够自动地联编软件包, 生成联编日志文件, 提供一个经过签名的 pkg 仓库, 使得它能够在提交一个补丁到 FreeBSD bug 跟踪器之前测试 port 联编过程, 使得它能够使用不同的选项来测试不同的联编过程。Poudriere 在一个干净的 Jail 环境中进行联编, 在这个环境中, 它能够使用 zfs 的特定功能。这意味着没有对主机环境的污染,没有剩余的文件,没有意外的删除,没有对现有配置文件的修改。
Poudriere 的设置和使用非常简单,因为它没有任何依赖,并且可以在任何支持的 FreeBSD 版本上运行。

ZFS
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 缓存命中率通常超过 80%)。
对于那些原本会造成数据处理延迟的数据,可以使用替代的缓存策略。例如,能够减慢存储系统速度的同步写入可以通过写入一个快速的独立缓存设备,即 SLOG (有时称为 ZIL--ZFS 意图日志)来转换为异步写入。
高度可调性--许多内部参数可以被配置为最佳功能。
可以用于高可用性集群和计算,尽管不是完全为这个用途设计的。
当然,当你在 Linux 上使用 ZFS 运行时,你也能获得所有这些功能。然而,这其中有一个很大的区别,因为没有任何一个 Linux 发行版甚至接近 FreeBSD 与 ZFS 的集成程度。

启动环境
由于与 ZFS 的紧密集成,FreeBSD 也支持引导环境。通过启动环境,您可以安装多个版本的核心操作系统,并选择其中的一个来启动。因此,启动环境是一个可启动的系统的克隆或快照。有了启动环境,你可以对系统进行防弹升级或更改,你不必担心破坏任何东西,因为你总是可以回滚。
这也意味着您可以在新的 ZFS 引导环境中更新 FreeBSD 系统,而无需接触正在运行的系统。您也可以在 FreeBSD Jail 中进行升级和测试结果。您甚至可以将 ZFS 引导环境复制或移动到另一台机器上。
FreeBSD 的 bectl 工具可以让您轻松管理启动环境。

BSD 启动
FreeBSD 使用传统的 BSD 风格的 init 。
在 BSD 风格的 init 中,没有运行级别,也不存在 /etc/inittab 。取而代之的是,启动是由 rc 脚本来控制的。
在 /etc/rc.d/中找到的脚本是为基本系统的应用程序服务的,比如 cron 、sshd 、syslog 等。而 /usr/local/etc/rc.d/中的脚本则是用户安装的第三方应用程序, 例如 NGINX 或 Postfix 。
如前所述, 由于 FreeBSD 是作为一个完整的操作系统而开发的, 用户安装的第三方应用程序并不是基本系统的一部分。第三方应用程序是通过包或端口来安装的。为了保持它们与基本系统的分离, 用户安装的应用程序被安装在 /usr/local/ 下。因此,用户安装的二进制文件位于 /usr/local/bin/,而配置文件则位于 /usr/local/etc/。
在 BSD 初始化系统中,通过在 /etc/rc.conf 中添加服务条目来启用服务。默认设置位于 /etc/defaults/rc.conf 中,这些默认设置会被 /etc/rc.conf 中的设置所覆盖。
下面的 /etc/rc.conf 中的条目可以启用 sshd 。

sshd_enable="YES"
你可以手动添加条目,也可以运行。

# service sshd enable
这将自动编辑 /etc/rc.conf 并添加条目。

你可以用以下方法手动启动一个服务: # service sshd start

# service sshd start
如果一个服务没有被启用,但你仍然想启动它,可以使用命令行启动它。

# service sshd onestart
你可以在维基百科上阅读更多关于 init 系统的内容。

jail
FreeBSD Jails 系统是另一个惊人的工程壮举。
在 2000 年 3 月 14 日的 4.0 版本中,FreeBSD 引入了 jails 系统。
FreeBSD jail 是一种操作系统级的虚拟化,它允许您将一个 FreeBSD 衍生的系统安装到多个独立的迷你系统中,称为 jails 。运行在 jail 中的系统共享相同的内核和系统资源,因此开销非常小。
对 FreeBSD jails 的需求来自于一个小型共享环境主机提供商 (R&D Associates, Inc.的所有者,Derrick T. Woolworth)的愿望,即在他们自己的服务和客户的服务之间建立一个干净、清晰的分离,主要是为了安全和便于管理。解决方案(由 Poul-Henning Kamp 开发)不是增加一层新的细粒度配置选项,而是对系统进行分门别类,包括其文件和资源,只有合适的人才能访问合适的分门别类。
通过 jail,可以创建各种虚拟机,每个虚拟机都有自己的一套实用程序和自己的配置。这使得它成为一种安全的试用软件的方式。例如,可以在不同的 jail 中运行不同版本或尝试不同配置的 web 服务器包。而且由于 jail 限定在一个狭小的范围内,所以一个错误的配置或错误的影响(即使是 jail 内的超级用户所做的)也不会危害到系统其他部分的完整性。由于在 jail 外实际上没有任何东西被修改,"变化 "可以通过删除 jail 的目录树副本而被丢弃。
然而 FreeBSD jail 并没有实现真正的虚拟化; 它不允许虚拟机运行不同于基本系统的内核版本。
FreeBSD jail 是提高服务器安全性的有效方法,因为 jail 环境与系统的其他部分(其他 jail 和基本系统)是分离的。
如果您想更好地了解 FreeBSD jail 和 Linux 容器之间的区别,请阅读博客文章 Setting the Record Straight: containers vs. Zones vs. Jails vs. VMs 。
FreeBSD 有 iocage 工具,它被设计用来简化 jail 管理任务。它将运行 VNET 或共享 IP 网络的 ZFS 支持的 jail 的管理抽象化。

Bastille
Bastille 是一个开源系统,用于在 FreeBSD 上自动部署和管理容器化应用程序。
Bastille 使用 FreeBSD jails 作为容器平台,并加入了模板自动化,以创建一个类似于 Docker 的容器化软件集合。
模板负责安装、配置、启用和启动软件,为构建容器化堆栈提供了一种自动化的方式。

Capsicum
Capsicum 是剑桥大学计算机实验室开发的一个沙盒框架,得到了 Google 、FreeBSD 基金会和 DARPA 的支持。Capsicum 扩展了 POSIX API,提供了一些新的操作系统基元,以支持类似 UNIX 操作系统上的对象能力安全。
Capabilities - 具有细粒度权限的精炼文件描述符
能力模式--拒绝访问全局命名空间的进程沙盒。
流程描述符--以能力为中心的流程 ID 替换
匿名共享内存对象--POSIX 共享内存 API 的扩展,支持与文件描述符相关的匿名交换对象(能力)。
rtld-elf-cap - 修改 ELF 运行时链接器,以构建沙盒应用。
libcapsicum - 用于创建和使用功能和沙盒组件的库。
libuserangel - 允许沙盒应用程序或组件与用户天使(如 Power Boxes )交互的库。
chromium-capsicum - Google 的 Chromium 网页浏览器的一个版本,它使用能力模式和能力来为高风险的网页渲染提供有效的沙盒。
Capsicum 的 FreeBSD 实现,由 Robert Watson 和 Jonathan Anderson 开发,在 FreeBSD 10.0 中开箱即用。Capsicum for FreeBSD 是一个参考实现,它不仅可以作为 Capsicum API 和语义的参考,而且还为移植到其他平台提供了起点源代码 (例如,Capsicum for Linux 和 Capsicum for DragonFlyBSD)。

DTrace
DTrace 是一个从 Solaris 移植过来的综合性动态跟踪框架。DTrace 提供了一个强大的基础架构,允许管理员、开发人员和服务人员简明扼要地回答有关操作系统和用户程序行为的任意问题。
DTrace 可以提供正在运行的系统的全局概览,例如活动进程所使用的内存量、CPU 时间、文件系统和网络资源。DTrace 还可以提供细粒度的信息,如调用特定函数的参数日志,或访问特定文件的进程列表。
有关 DTrace 使用的更多信息,请参阅 DTrace 单行本教程和 DTrace 示例。
在 Hacker News 上也有一个有趣的讨论,其中有许多关于 DTrace for Linux 的相关评论。

bhyve
bhyve 是一个原生的 FreeBSD 虚拟机管理程序,它可以在虚拟机中运行客体操作系统。可以通过命令行参数来指定虚拟 CPU 的数量、客体内存的数量和 I/O 连接等参数。
bhyve 支持多种客体操作系统的虚拟化,包括 FreeBSD 9+、OpenBSD 、NetBSD 、Linux 、illumos 、DragonFly 、Windows Vista 及更高版本和 Windows Server 2008 及更高版本。目前的开发工作旨在扩大对 x86-64 架构的其他操作系统的支持。
bhyve 管理程序在 FreeBSD 10.0-RELEASE 中成为基础系统的一部分。
bhyve 要求处理器支持 Intel Extended Page Tables (EPT) 或 AMD Rapid Virtualization Indexing (RVI) 或 Nested Page Tables (NPT)。使用多于一个 vCPU 的 Linux 客座或 FreeBSD 客座,需要 VMX 无限制模式支持( UG )。较新的处理器,特别是英特尔酷睿 i3/i5/i7 和英特尔至强 E3/E5/E7,支持这些功能。UG 支持是随着英特尔的 Westmere 微架构引入的。

防火墙
FreeBSD 的基本系统中内置了三种不同的防火墙。PF, IPFW, 和 IPFILTER, 也就是 IPF.
从 FreeBSD 5.3 开始,OpenBSD 的 PF 防火墙被移植到了基本系统中。PF 是一个完整的、全功能的防火墙,它可以选择支持 ALTQ (Alternate Queuing),提供服务质量 (QoS)。PF 的过滤语法与 IPF 类似,但做了一些修改,使其更加清晰。网络地址转换( NAT )和服务质量( QoS )已经集成到 PF 中,QoS 通过导入 ALTQ 排队软件,并与 PF 的配置联系起来。此外,还扩展了 PF 的功能,如用于故障转移和冗余的 pfsync 和 CARP,用于会话认证的 authpf,以及用于缓解防火墙困难的 FTP 协议的 ftp-proxy 等。同时,PF 还支持 SMP (对称多处理)&STO (状态跟踪选项)。
PF 的日志记录是众多创新功能之一。PF 的日志记录是可以在 pf.conf 中按规则配置的,日志由 PF 通过一个名为 pflog 的伪网络接口提供,这是用户级程序从内核级模式中提取数据的唯一方式。日志可以使用标准的实用程序(如 tcpdump )来监控。
IPFW 是为 FreeBSD 编写的状态防火墙,它同时支持 IPv4 和 IPv6 。它由以下几个组件组成: 内核防火墙过滤规则处理器及其集成的数据包统计工具、日志记录工具、NAT 、dummynet 流量转换工具、转发工具、桥接工具和 ipstealth 工具。
FreeBSD 在 /etc/rc.firewall 中提供了一个示例规则集,它定义了几种常见场景下的防火墙类型,以帮助新手用户生成合适的规则集。IPFW 提供了强大的语法,高级用户可以使用它来制作满足特定环境安全要求的自定义规则集。
IPF 是一个跨平台的开源防火墙,已经被移植到多个操作系统上,包括 FreeBSD 、NetBSD 、OpenBSD 和 Solaris 。IPF 是一个内核侧的防火墙和 NAT 机制,可以被用户国程序控制和监控。防火墙规则可以用 ipf 设置或删除,NAT 规则可以用 ipnat 设置或删除,IPF 内核部分的运行时统计可以用 ipfstat 打印,ipmon 可以用来将 IPF 的操作记录到系统日志文件中。
IPF 最初是采用 "最后匹配的规则获胜 "的规则处理逻辑编写的,只使用无状态规则。此后,IPF 得到了增强,加入了快速和保持状态选项。

调整
FreeBSD 有超过五百个系统变量可以通过 sysctl 工具来读取和设置。这些系统变量可以用来对运行中的 FreeBSD 系统进行修改,其中包括 TCP/IP 协议栈和虚拟内存系统的许多高级选项。这其中包括许多 TCP/IP 协议栈和虚拟内存系统的高级选项,对于有经验的系统管理员来说,这些选项可以显著地提高系统的性能。

GEOM
FreeBSD GEOM 是 FreeBSD 操作系统的主要存储框架。它提供了一种标准化的方式来访问存储层。GEOM 是模块化的,允许 GEOM 模块连接到框架中。例如,geom_mirror 模块为系统提供了 RAID1 或镜像功能。目前已经有很多模块可以使用,而且 FreeBSD 的各个开发者也一直在积极开发新的模块。
由于 GEOM 的模块化设计,模块可以堆叠在一起,形成一个 GEOM 层链。例如,在 geom_mirror 模块的基础上,可以添加一个加密模块,如 geom_eli 来提供一个镜像和加密的卷。每个模块都有消费者和提供者。提供者是 geom 模块的源头,通常是一个物理硬盘,但有时也是一个虚拟化的磁盘,如内存盘。geom 模块又提供一个输出设备。其他 GEOM 模块,也就是所谓的消费者,可以使用这个提供者来创建一个相互连接的模块链。

Linux 二进制兼容性
FreeBSD 提供了与 Linux 的二进制兼容。这使得用户可以在 FreeBSD 系统上安装和运行许多 Linux 二进制文件, 而无需首先修改二进制文件。在某些特定情况下,Linux 二进制文件在 FreeBSD 上的表现甚至比在 Linux 上的表现更好。
并非所有 Linux 特定的操作系统功能都能在 FreeBSD 上得到支持。例如,如果 Linux 二进制文件过度使用 i386 的特定调用,例如启用虚拟 8086 模式,那么它们将无法在 FreeBSD 上运行。

安全事件审计
FreeBSD 包含对安全事件审计的支持。事件审计支持对各种与安全相关的系统事件进行可靠、精细和可配置的记录,包括登录、配置更改、文件和网络访问。这些日志记录对于实时系统监控、入侵检测和事后分析都是非常宝贵的。FreeBSD 实现了 Sun 发布的 Basic Security Module (BSM) 应用编程接口 (API) 和文件格式, 并可与 Solaris 和 MacOS 的审计实现互操作。

最后说明
这篇文章并没有详尽地列出使用 FreeBSD 而不是 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 上运行,只是意味着您偶尔会遇到一些问题。例如,当我写这篇文章的时候,Micro 编辑器出现了一个问题,当你试图用 Alt-g 打开菜单时,它在 FreeBSD 上崩溃了。这个问题在 Linux 上并不存在。
我在服务器和桌面工作站上都使用 FreeBSD,最近我把在 Debian GNU/Linux 和 Arch Linux 上运行 ZFS 的系统迁移到了 FreeBSD 。由于 FreeBSD 为 ZFS 提供了更好的集成,我不仅体验到了性能的提升,也体验到了可靠性的提升。
我的一个主要工作站运行的是使用 i3 作为窗口管理器的 FreeBSD 。我有一个相同的设置,在同一台机器上用不同的硬盘运行 Arch Linux 。从纯粹的桌面使用角度来看,您看不出任何区别,也没有任何理由将 Arch Linux 作为桌面操作系统而不是 FreeBSD,无论是从性能上、从简单性上还是从任何其他原因来看 -- 唯一的例外是,如果您有不支持的硬件。
FreeBSD 没有像 GNU/Linux 那样得到同样的关注,实在是一个遗憾。在很多情况下,尤其是在生产服务器和商业用途上,一个公司运行 FreeBSD 而不是 Linux 可以获得很多好处,而他们运行 Linux 的唯一原因往往是出于习惯和对 FreeBSD 缺乏了解。
下一次当您需要部署一个新的系统时,我建议您也调查和测试一下 FreeBSD 。它是非常值得您花时间的。

原文地址: https://unixsheikh.com/index.html ]]>
为什么要从 Linux 迁移到 BSD tag:www.v2ex.com,2020-12-23:/t/738367 2020-12-23T11:10:07Z 2020-12-23T11:16:02Z yklaxds member/yklaxds
简介
过去,我一直喜欢根据技术优劣来选择操作系统和工具。然而,在微软、苹果、谷歌等众多公司损害用户隐私、进行争议性活动的今天,我认为这不是正确的理由。
像微软 Windows 10 、苹果 MacOS 、谷歌 Android 这样的专有操作系统,已经因其不良行为而闻名,甚至像联想这样的公司,也在利用 UEFI 引导,注入定制的 Windows 组件,让系统可以打电话回家给联想。
由于这一切,我在很长一段时间内都是 GNU/Linux 和 BSD 等开源替代品的支持者。不仅如此,我还认为,开源替代方案在很多技术领域都要好得多。
我也一直非常反对关于 BSD 和 Linux 的典型讨论,正如我当年在文章中写的那样,我一直认为不同的开源项目可以互相帮助,友好合作,终端用户应该只从技术角度而不是个人喜好来辩论这些问题。
只要有可能,我就会建议人们,包括私人和行业内的人,把他们使用的操作系统换成开源的替代品,当人们接受我的主张时,我就会帮助他们把工作站上的微软 Windows 迁移到 Linux Mint 、Xubuntu 或 Debian GNU/Linux 等系统上。而在服务器方面,我同时使用了 BSD 和 GNU/Linux 。这是一个成功的尝试,老实说,我从未遇到过不满意的人。
然而,随着越来越多的公司想要控制项目的方向,GNU/Linux 的世界开始发生变化。由于 GNU/Linux 作为一个操作系统的结构和组织,它很容易受到这些影响,虽然它仍然是开源的,而且还没有达到专有替代品的坏处,但一些选择退出的功能已经慢慢被引入到内核和 systemd 中。
你仍然可以选择退出这些功能,然后继续走你的路,但是作为一个开源爱好者和支持者,作为一个关注隐私的人,也许更好的办法是把系统迁移到一些你不必担心 "爬行软件 "的地方。
作为一个系统管理员,我不想担心下一次升级系统时是否会被吓到,我也不想保留一份清单,每当我运行这些系统时,我都要记得选择退出。
有几个 Linux 发行版已经决定(不仅是因为隐私选择退出问题,还有其他问题)实现 systemd 以外的其他 init 解决方案,但随着内核开发的情况,以及许多第三方应用程序越来越依赖 systemd,问题正在向系统的其他部分蔓延,我相信这正在成为一场艰苦的战斗。
我不相信 GNU/Linux 的未来会像过去那样光明,作为一个可能的替代解决方案,我建议把所有的东西(在可能的情况下)迁移到更合理的地方,比如 BSD 项目。

Linux 是碎片化的
1983 年,Richard Stallman 在一条 Usenet 消息中宣布他打算开始为 GNU 项目编码。到 1987 年 6 月,该项目已经积累并开发了自由和开源软件,包括一个汇编器、一个几乎已经完成的可移植优化 C 编译器( GCC )、一个编辑器( GNU Emacs )和各种 Unix 实用程序,如 ls 、grep 、awk 、make 和 ld 。
1991 年,由 Linus Torvalds 在 GNU 项目之外开发的 Linux 内核出现了,并在 1992 年 12 月以 GNU 通用公共许可证第 2 版的形式发布。结合 GNU 项目已经开发的操作系统实用程序,它成为 GNU/Linux 操作系统,也就是大家熟知的 "Linux"。
接着,Linux 发行版出现了。不同的项目将 Linux 内核、GNU 工具和库、额外的第三方软件、文档、X 窗口系统、窗口管理器和桌面环境,结合到发行版中。不同的发行版有不同的目标,有的侧重于桌面,有的侧重于服务器,还有的试图提供一个多用途的操作系统。
在过去,所有这些不同的组件和项目都是由开源爱好者开发的,对编程和开源的热情是驱动力。
但现在已经不是这样了。
Linus Torvalds 曾多次明确表示,他并不关心 "Linux 世界 "里发生的事情,他关心的只是内核的开发。2020 年 1 月 6 日,在 realworldtech.com 的 "主持讨论 "论坛上,Linus Torvalds 用绝对令人瞠目结舌的评论回答了一个用户的问题,这个问题是关于一年前的内核维护争议,严重影响了 ZFS on Linux 项目。
在回答完用户的实际问题后,Torvalds 又对 ZFS 文件系统提出了非常错误且具有破坏性的说法。Torvalds 说
它(ZFS)一直是一个流行语,而不是其他任何东西。
Linus Torvalds 将 15 年来世界上最强大和最流行的文件系统之一的发展缩减为一个 "流行语"。
ZFS 被描述为 "文件系统的最后一个词"。它是由 Sun Microsystems 公司最初设计的一个结合了文件系统和逻辑卷管理器的系统。ZFS 是一个稳定、快速、安全和面向未来的文件系统。它是可扩展的,包括广泛的保护,防止数据损坏,支持高存储容量,最大 16Exabyte 文件大小,最大 256Quadrillion Zettabytes 存储,对文件系统(数据集)或文件数量没有限制,高效的数据压缩,快照和写后复制克隆,持续的完整性检查和自动修复,RAID-Z,原生 NFSv4 ACL,并可以非常精确地配置。
Oracle 和 OpenZFS 项目的两个主要实现极为相似,使得 ZFS 在类似 Unix 的系统中广泛使用。
正如维基百科文章中提到的,OpenZFS 是一个伞形项目,旨在将使用 ZFS 文件系统的个人和公司聚集在一起,并对其进行改进,目的也是为了让 ZFS 以开源的方式得到更广泛的使用和开发。OpenZFS 汇集了来自 illumos 、Linux 、FreeBSD 和 macOS 平台的开发者,以及众多的公司。该项目的高层次目标包括提高人们对 ZFS 开源实现的质量、实用性和可用性的认识,鼓励就正在进行的 ZFS 开源变体的改进工作进行公开交流,并确保所有 ZFS 发行版的可靠性、功能和性能的一致性。
对于我说的 "Linux 是碎片化的 "harryruhr 写道。
是的,它是。但现在的 BSD 也是如此。3 个 "传统的 "BSD - FreeBSD, NetBSD 和 OpenBSD - 单单在技术和目标上就有很大的不同。还有一些 "新 "的 BSD 分叉,比如 Dragonfly 、MidnightBSD 、HardenedBSD 等等。Distrowatch.com 列出了 18 种不同的 BSD "发行版"。笔者极力称赞的 ZFS 文件系统,只有 FreeBSD 和近亲才有,而且是基于 "ZFS on Linux"。它在 NetBSD 和 OpenBSD 上是不可用的。
Linux 是碎片化的,因为内核、GNU 工具、库以及其他所有部分都是完全独立的项目。这些项目实际上都没有任何关系,但同时,如果不把这些不同的项目以某种形式粘合在一起,你就不可能拥有一个 Linux 操作系统,这就是不同的 Linux 发行版正在做的事情。
GNU 项目甚至从 1990 年开始就一直在开发他们自己的内核--GNU Hurd,它最初的计划是作为 Unix 内核的替代品。由于 Hurd 内核还没有完成,Linux 内核只是一个方便的方式,让一个工作的操作系统启动和运行。
BSD 的根本不是零散的,它们每个都是完整的操作系统和独立的项目,它们都有内核、基础工具和其他所有的东西。它们是独立的项目,有着不同的目标。它们共享 BSD 内核的家族树,偶尔也会共享代码,但除此之外,它们是相互独立的。如果 FreeBSD 或 NetBSD 被取消,OpenBSD 也不会受到任何影响,同样的,反之亦然。
蜻蜓 BSD 也是一样的。Matthew Dillon 是 1994 年到 2003 年之间的 FreeBSD 开发者,他在 2003 年分叉了 FreeBSD,因为他认为 FreeBSD 中采用的线程和对称多处理的技术会导致性能差和维护问题。因此,也因为其他 FreeBSD 开发者不同意他的观点,他创建了 DragonflyBSD 。但 DragonflyBSD 现在也是一个完全独立的操作系统和项目。
所有这些不同的 BSD 项目仍然是完整和独立的操作系统。它们并不是由不同项目的独立部分拼凑起来的。
至于 MidnightBSD,HardenedBSD,以及其他类似的项目,那么这些也与碎片化无关。这些项目大部分都是基于 FreeBSD 的,他们在 FreeBSD 的基础上设置了不同的应用程序,或者他们给内核打了补丁等等。它们与碎片化没有任何关系。
如果 BSD 项目应该像 GNU/Linux 一样被碎片化,那么 BSD 内核应该由一个单独的项目来开发,而基本的实用程序应该由另一个单独的项目来开发。
这就是 GNU/Linux 操作系统和 BSD 操作系统的碎片化性质的区别。
FreeBSD 或 NetBSD 可以在基础安装中提供大量的应用程序,但这些项目这样做没有任何意义。
事实上,这些应用程序并不影响操作系统的完整性。另一方面,如果你没有内核,或者你没有 "用户区 "工具,你就什么都没有了。这就是 GNU/Linux 的现实。
最后,我想指出,我之所以提到 GNU/Linux 操作系统的碎片化状况,是想指出这种碎片化是我们面临的问题的主要原因之一。这些碎片化的项目往往有利益冲突,这是问题的核心,而不是哪个操作系统的基础安装工具最多。

OpenZFS on Linux,是项目的 Linux 部分,目前有 345 个活跃的贡献者,有超过 5600 个提交,而且几乎每天都有提交!一些世界上最大的 CDN 和数据存储服务在 FreeBSD 或 Linux 上运行 ZFS 。
一些世界上最大的 CDN 和数据存储服务都在 FreeBSD 或 Linux 上运行 ZFS 。
在另一种情况下,Linus Torvalds 在 TFiR: Open Source and Emerging Tech YouTube 频道上接受了一次关于桌面上的 Linux 的采访,他在采访中发表了另一个惊人的言论,他说 Linux 仍然没有为桌面做好准备,也许 Chrome OS 是解决这个问题的办法。
Linus Torvalds 的这些言论和其他许多言论表明,Torvalds 应该避免对他不熟悉的项目发表权威性的言论,但更重要的是,这些言论也表明 Linux 作为一个操作系统没有真正的方向,也没有明确的管理,因为内核开发是与 Linux 世界的其他部分隔离进行的。
Linus Torvalds 普遍对企业利益的快速影响非常开放,他对安全的看法也令人担忧。
2009 年,Linus Torvalds 承认,内核开发正在失去控制。
我们正在变得臃肿和庞大。是的,这是个问题......。我很想说,我们有一个计划... ... 我的意思是,有时候我们绝对不是 15 年前我所设想的那个精简、小巧、超高效的内核,这让人有点难过......。内核是巨大而臃肿的,我们的 icache 足迹是可怕的。我的意思是,这是毫无疑问的。而且每当我们添加一个新功能,它只会变得更糟。
在 LinuxCon 2014 上,他说,他认为臃肿的情况比较好,因为现代 PC 的速度快了很多!
在过去的 20 年里,我们一直在膨胀内核,但硬件的发展速度却更快。
这是一种非常有问题的态度。
当软件变得臃肿时,它不仅变得更不安全,更容易出错,而且速度也变得更慢。认为问题会因为硬件变快而消失,这是一种不成熟的态度。在这个时代,我们需要对软件进行优化,从而减少电力需求,我们需要节约电力,限制污染。
在 2007 年的一次采访 "我为什么辞职":内核开发者 Con Kolivas 他表示。
如果说内核开发和 Linux 有什么大问题的话 那就是开发过程与普通用户的完全脱节 你知道,那些构成 Linux 用户群 99.9%的人。Linux 内核邮件列表是与内核开发者沟通的方式。说句不客气的话,Linux 内核邮件列表(lkml)是一个非常可怕的交流论坛。大多数人绝对害怕在邮件列表中发帖,以免他们因为经验不足、错误报告、愚蠢或其他原因而被骂。... 我想广大的内核开发者还不知道用户空间的问题有多大。
除了上面提到的问题之外,事实是 Linux 作为一个操作系统是由许多不同项目的不同应用组合在一起的,而这些应用之间没有任何关系。如果你对此一无所知,你应该看看《如何从零开始构建 Linux 》。
另一篇展示其中一些问题的好读物是 Linux 维护 bug 这篇文章。Linux 上 ifconfig 被废弃的真正原因。
这与 BSD 非常不同,因为各个项目,也就是 FreeBSD 、OpenBSD 、NetBSD 和 DragonFly BSD,都是独立的项目,可以说是 "内部 "组装的系统。内核、标准 C 库、用户地工具等等,都是操作系统基础系统的一部分,而不是由一堆不同的外部资源拼凑起来的东西。

Linux 已被劫持
一个 Linux 发行版是一个由不同群体编写的工具集合,他们的利益和优先级往往是相互冲突的,由于 GNU/Linux 操作系统的这种碎片化结构,整个项目在被商业利益推来推去的过程中迅速失控。
即使是最好的 GNU/Linux 发行版,如 Debian GNU/Linux 和 Arch Linux,仍然是由开源爱好者推动的,也不能幸免于这个问题,因为它们仍然严重依赖于碎片化的工具。
在我的文章《 systemd 背后的真正动机》中,我曾经写过开发 systemd 的主要原因是红帽对嵌入式设备的兴趣。最初 systemd 是作为一个新的 init 系统发布的,但它已经慢慢成长为 Poettering 所描述的 "一套为 Linux 操作系统提供基本构件的软件"。这是设计上的,而不是巧合。
在对 Red Had 首席执行官 Jim Whitehurst 的采访中,他表示。
我们与世界上最大的嵌入式厂商合作,特别是在电信和汽车行业,稳定性和可靠性是首要考虑的问题。他们很容易适应 systemd 。
我并不反对 systemd 作为管理工具,相反,我非常喜欢它,甚至喜欢它附带的几个工具,但 systemd 的主要问题是,它的持续发展是出于公司的经济利益,而不是开源社区的利益。因此,主要的 Linux 发行版,如 Debian GNU/Linux 和 Arch Linux,采用 systemd,在我看来是一个很大的错误。它们使自己严重依赖 systemd 。
另一个对 Linux 世界有重大影响的是 Google 。Google 开发了 Android 和 Chrome OS,都是基于 Linux 内核的操作系统。Chrome OS 源于 Chromium OS,并使用 Google Chrome 网络浏览器作为其主要用户界面。
Chrome OS 被看作是微软的竞争对手,既是微软 Windows 的直接竞争对手,也是该公司文字处理和电子表格应用的间接竞争对手,后者则是通过 Chrome OS 对云计算的依赖。而这也是 Chrome OS 的核心问题之一,它的构建非常依赖 Googles 的云计算基础设施。
谷歌已经成为最具争议的公司之一。谷歌在本质上是一家广告公司,它以操纵搜索结果和极端的用户追踪能力而闻名,这主要得益于网络开发者在网站上添加 Google Analytics 的愚蠢行为。
在 2019 年 8 月的 YouTube 视频中,莱纳斯-塞巴斯蒂安演示了互联网上的跟踪是如何工作的,以及它如何影响你搜索产品时提供的价格。请注意:该视频由 Private Internet Access 赞助,该公司后来被 Kape Technologies 收购,该公司以通过他们的软件发送恶意软件和一般来说真的很卑鄙而闻名。不要使用 Private Internet Access!
Cloudflare 是另一家影响 Linux 发展的美国网络基础设施和网站公司。该公司提供的服务实际上是坐在网站的访问者和 Cloudflare 用户的主机提供商之间,充当网站的反向代理。因此 Cloudflare 已经成为互联网最大的癌症之一。
systemd 和 Mozilla 都成功地将 Cloudflare 整合到了他们的产品核心中,systemd 将 Cloudflare 和 Google 的 DNS 服务器都整合到了 systemd-resolved 中作为 opt-out,Mozilla 则是将他们在 Firefox 中通过 HTTPS 的 DNS 默认为 Cloudflare 。
尽管 Mozilla Firefox 不是 Linux 项目,但它仍然是不同 Linux 发行版上使用最广泛的浏览器之一,当 Mozilla 犯了在 Firefox 中集成 DNS over HTTPS 的大错,更不用说使用 Cloudflare 了,他们开了一个非常不好的先例。DNS over HTTPS 本身就已经够糟糕了,而且有充分的理由受到高度批评,但如果将它与 Cloudflare 这样有争议的公司结合起来,就会使情况变得更加糟糕。OpenBSD 已经在他们构建的 Firefox 中默认禁用了 DNS over HTTPS,原因是使用了 Cloudflare 的服务来实现这一功能。
劫持可能是一个过于强烈的词,但在 Red Hat 通过 systemd 的影响下,他们已经成功地将 GNU/Linux 作为操作系统的方向引导到了一个与许多系统管理员和用户希望看到的方向上。

BSD 是正常人所在的地方
首先我要说的是,我并不是字面上的意思。我这里说的是从系统管理和编码的角度出发的设计和开发决策。
与 Linux 发行版相反,Berkeley 软件发行版( BSD )并不是一个零散的项目。BSD 项目维护的是整个操作系统,而不仅仅是内核。
BSD 是一个基于 Research Unix 的操作系统,由加州大学伯克利分校的计算机系统研究组( CSRG )开发和发行。今天,"BSD "指的是它的后代,如 FreeBSD 、OpenBSD 、NetBSD 和 DragonFly BSD 。这些项目是真正的操作系统,而不仅仅是内核,它们不是 "发行版"。
Linux 发行版,如 Debian GNU/Linux 和 Arch Linux 必须做的工作是将所有创建一个完整的 Linux 操作系统所需的软件整合在一起。它们需要 Linux 内核、GNU 工具和库、一个初始化系统和一些第三方应用程序,以便最终形成一个正常运行的操作系统。
相比之下,如前所述,BSD 既是一个内核,又是一个完整的操作系统。例如,FreeBSD 同时提供 FreeBSD 内核和 FreeBSD 操作系统。它是作为一个单独的项目来维护的。
没有一个人或公司拥有 BSD 。它是由全世界的高技术和坚定的贡献者组成的社区创建和发布的。
公司也可以使用和贡献 BSD,但与 Linux 相反,公司不能 "劫持 "BSD 。公司可以制作自己版本的 BSD,比如索尼电脑娱乐公司为他们的 PlayStation 3 、PlayStation 4 和 PlayStation Vita 游戏机所做的,但由于 BSD 是完整的操作系统,而且每个 BSD 项目都是由开源爱好者维护和开发的,而不是像 Red Hat 这样的公司,所以 BSD 项目是真正的独立的。
由于这种组织结构,无论你选择哪个 BSD 项目,你通常都不会在基本安装中找到疯狂的退出设置,你也不会发现操作系统组件中集成了影响隐私的解决方案。相反,由于这些项目是由技术精湛、热情洋溢的人开发和推动的,他们非常关心操作系统的设计、安全和隐私,你会经常发现,即使是使用包管理器安装的第三方软件也会被打上补丁,使这些问题不存在,比如前面提到的 OpenBSD 禁用 DNS over HTTPS 的问题。
这一切的另一个好处是,围绕着 BSD 项目的社区都是由经验丰富、乐于助人、(大部分)善良的人组成。FreeBSD 社区是特别善良和乐于助人的。

关于 "正常人 "在哪里的问题。
对于我说的 "BSD 是正常人的地方",harryruhr 写道。
作者说:"BSD 项目维护的是整个操作系统,而不仅仅是内核" 的确,BSD 不仅仅是内核,还有用户国程序。但 BSD 操作系统自带多少 "用户国度",绝对是由 BSD 开发者决定的。它往往是最低限度的工具。其余的你必须使用端口和软件包,这和 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)之外,并没有包含太多的 "图形 "程序. 如果你想要一个网页浏览器或像样的邮件程序,你必须从软件包中安装。
OpenBSD 中的 X 、OpenSMTPd 、httpd 等应用程序,与操作系统本身无关。无论你是选择把这些放到基础系统中,还是把这些应用程序留在外面,都不影响 OpenBSD 即使没有这些部分也是一个完整的操作系统。
这些部分并不能使 OpenBSD 比 FreeBSD 更成为一个操作系统。这些部件使 OpenBSD 成为一个在基本安装中包含更多应用程序的操作系统。
OpenBSD 项目决定将更多的应用程序集成到基本安装包中,因为 OpenBSD 的重点是非常注重安全。开发者希望将这些应用程序与基础安装程序集成在一起,以便控制这些部件的开发方式以及这些部件的工作方式。因此,这些应用程序已经成为 OpenBSD 项目的一个集成部分。

许可证问题
Linux GPL 许可证对开发者的要求比较严格,它是一种开源的反模式,因为它强制发布所有修改过的源代码,并且阻止其他开源项目的集成,例如 GPLv2 就阻止了 DDrace 和 ZFS 在 Linux 中的集成。
而 BSD 开发者则没有这样的限制。制造商在创建新设备时可以选择 BSD 作为他们的操作系统,而不是 Linux 。这将允许他们将代码修改保留给自己。在 Linux 下,许可证强制向公众发布源代码。
GPL 许可证听起来可能更好,因为我们为什么要允许公司简单地 "窃取 "我们的开源代码,并在此基础上生产闭源产品而不给予任何回报。但事实并非如此简单。通过强迫公司向公众发布源代码,这样的代码可能会被原始开发者拒绝,这又让公司变得更加具有操纵性。
红帽公司在发布 systemd 时部署的策略是尽量让更多 "重要 "的第三方项目与 systemd 进行非常紧密的合作,甚至依赖 systemd 。这样一来,由于这些第三方项目容易集成,其他 Linux 发行版更容易被说服采用 systemd 。systemd 的开发者向几个第三方项目发出了邀请,试图说服他们让自己的项目要么依赖 systemd,比如 Lennart Poettering 在 Gnome 邮件列表上的尝试,以及 Red Hat 开发者 "keszybz "在 tmux 项目上的尝试。这些尝试大部分原本都被 "伪装 "成了技术问题,然而当你读到 Gnome 邮件列表和其他地方的长长的邮件往来时,真正的意图就会变得非常明显。
在 BSD 中不需要这样的操作。公司可以自由地使用 BSD 做任何他们想做的事情,因此他们不需要试图影响事情的发展。如果不是这样的话,我们就有可能看到,比如说,Sony 就会非常努力地影响 FreeBSD 的发展,因为他们的 PlayStation 产品中使用了 FreeBSD 。
不同的 GNU/Linux 发行版,如 Debian GNU/Linux 、Arch Linux,甚至当年的 Red Hat Linux,都是非常伟大的项目。当项目是由激情而非利润驱动时,它们往往会变得质量更好,这一点在服务器平台上仍然很明显,因为 Linux 和 BSD 总是主导服务器基础架构,因为它们提供的质量。然而,当项目不再由激情驱动,而是由利润驱动时,它们的质量往往会下降。这是很自然的,因为以利润为动力和以激情为动力是截然不同的。这也是为什么微软 Windows 作为服务器和桌面操作系统总是那么烂的原因之一。
微软 Windows 在桌面上取得成功的原因并不是因为人们相信 Windows 是一个伟大的操作系统,没有一个正常的、有经验的系统管理员或 IT 支持者相信这一点,而是因为微软部署的积极的营销策略。
虽然 BSD 项目确实得到了公司的代码和偶尔的资金支持,但它们是由激情而不是利润驱动的。这主要意味着深思熟虑的决策。当然,错误时有发生,但不会像我们现在在 Linux 中发现的那样,为了利益而对隐私和安全做出妥协。
关于 "BSD 还是 GPL "的讨论和许可证一样古老。不管是支持还是反对,都有好的观点。就我个人而言,只要是自由软件,我都不在乎。关于 GPL 导致软件被利益而不是同情心所引导的说法,并没有什么说服力。
我认为,任何真正关心 "自由软件 "的人,如人们可以自由发布和工作的开源软件,也应该更深入地考虑这个问题。我们有超过三十年的经验,显示出许多受利益驱使的公司,当他们依赖一个他们无法控制的软件时,会有多大的操纵性。
有了 BSD 许可证,公司就不必为了影响应用程序的开发而使用策略或操纵,它可以简单地拿着应用程序做它想做的事。

是时候把一切都迁移到 BSD 了
大约在 1998-2000 年,我开始把家里和公司的所有服务器和桌面操作系统从微软的 Windows 迁移到 GNU/Linux,最初是 Red Hat Linux,后来是 Debian GNU/Linux 。我之所以这样做,是因为我花了大约 8 年的时间来做微软 Windows 的支持工作,在这个绝对可怕的操作系统上浪费了太多的时间。
当我的一位好朋友向我推荐 GNU/Linux 时,我对它的性能、开放源码社区的神奇以及所有与 Windows 相关的常见问题都消失了感到惊讶。每当我把客户、家庭成员或朋友的 Windows 设置替换成 Linux 设置时,支持时间就会迅速减少。当然,这意味着客户支持的工作减少了,但这很好,因为现在我们可以把时间集中在更重要的事情上。
稍后,我发现了 BSD 的世界,最终也开始在服务器和台式机上部署 FreeBSD 和 OpenBSD 。
在当时,Linux 的硬件支持通常比 BSD 要好,因此我一般使用 Linux 比 BSD 多。当时的硬件很昂贵,而且并不总是能够根据你想在系统上运行的操作系统来购买硬件。今天的情况不同了,BSD 通常对现代硬件有很大的支持。
我从来没有使用过 NetBSD 或 DragonFly BSD,不是因为这些项目不好,只是因为我更喜欢 FreeBSD 和 OpenBSD 。
我还是很喜欢 Debian GNU/Linux 和 Arch Linux,但我不想担心 systemd 默认安装中可能出现的新的有隐私问题的设置,我不想担心所有进入内核的臃肿软件,比如内核强制适应 DRM,我不想担心下一个有问题的东西是什么。
作为一个操作系统,Linux 正变得越来越混乱,因为项目的分散性和商业利益集团的搅局,比如 Red Hat 的 systemd 。
但是,除了只使用自由软件的理由之外,这些理由应该是技术性的。过时的论点,比如 "BSD 是完整的系统,而 Linux 只是内核",或者 "Linux 是由利益驱动的,而 BSD 是由同情心驱动的",这些都不是真正有效的论点(不再是了)。
通常情况下,我会完全同意这样的观点,即使用特定操作系统的唯一理由应该是技术原因。然而,现在已经不能这样了,我所提出的论点并不是过时的论点,而是相反。
微软 Windows 10 可能是特定应用或硬件唯一可用的操作系统,但这并不意味着你应该对这个可怕的操作系统所造成的重大隐私问题做出那么大的妥协,然后用技术上的决定来开脱。有这样一件事,"废话太多"。
最近强行采用 DRM 进入 Linux 内核,Linus Torvalds 几次脱离现实的发言,以及他对 Linux 世界的许多重要事务完全不闻不问,他显然不关心公司是如何影响发展的,Linux 内核的未来看起来并不光明,从隐私的角度和安全的角度都是如此。
除非你想在每次发布新的 Linux 内核时都打上补丁来解决这些问题,否则你需要一个可行的替代方案。一个替代方案,在这个方案中,开发内核的人对项目的路径有一个清晰的认识,这个路径不会损害隐私、安全或其他重要问题。
当然,在任何项目中都会有分歧,但 FreeBSD 开发者之间的分歧与那些试图--或多或少--"劫持 "GNU/Linux 的利益驱动的公司是不同的。


原文地址:选择 FreeBSD 而不是 Linux 的技术原因

干净的分离
在 FreeBSD 的设计方式下,不同的组件组合在一起的,处理配置和调优,以及多年来开发和改进的所有工具,使得使用 FreeBSD 是一件很特别的事情。
从 1998 年开始,我所使用的大多数 GNU/Linux 发行版,你都会有一种 "不匹配 "的感觉。
举个例子,Debian GNU/Linux 有 Debian 的做事方式。Debian 的方式是通过使用一套特定的配置管理工具和补丁来使第三方软件符合 "Debian 方式 "的设置。虽然这在某种意义上可以统一你在 Debian 发行版上的做事方式,但它却打破了上游的配置,这让人非常烦恼。特别是当某些东西不正常,或者上游文档中描述的方式与 Debian 上的设置不一致时,这个问题就更严重了。这种方法的另一个问题是,一些第三方软件,甚至是发行版的核心元素,比如 systemd,都不能强行按照 "Debian 的方式 "去做。其结果是,系统的某些部分以 "Debian 方式 "运行,而其他部分则不是。Debian GNU/Linux 采用了 systemd,但同时默认的网络部分是 Debian 特有的。有时你必须禁用或移除 Debian 特定的东西才能让 systemd 特定的东西工作。
在像 Arch Linux 这样的发行版上,这个问题是不存在的,因为不存在 "Arch 方式 "这样的东西。Arch Linux 发行版希望第三方软件能够像上游一样,所以除非绝对必要,否则他们不会改变任何东西。这很好,因为这意味着上游文档与软件相匹配。然而,这种方法的一个问题是,由于第三方软件确实以不同的方式处理事情,你可能最终会得到一个软件运行不统一的系统。然而,在系统管理方面,我个人还是更喜欢 Arch Linux,而不是 Debian,因为 Debian 有时几乎会修改全部的第三方软件。
Ubuntu 就更糟糕了。因为它是基于 Debian 的,所以运行时使用了很多 Debian 的工具和设置,但同时也有 "Ubuntu 方式",即在 Debian 的基础上改变了一些东西,然后在这些基础上又增加了一层,即所谓的用户改进工具层,这有时会使 Ubuntu 出现难以理解的故障——即内部错误。
在 FreeBSD 上,你会马上发现,你所面对的是一个非常完善的系统。
内核和基本系统与第三方应用程序是完全分离的,基本系统的配置进入 /etc,而所有第三方的配置进入 /usr/local/etc 。所有你可以配置的东西,所有你可以调整或设置的东西都在 man 手册中有很好的记录。
你所有的东西,从 rc 实用程序(也就是被 init 调用后控制自动启动过程的命令脚本)到命令脚本,再到 sysctl 内核管理工具,所有不同的系统配置,以及其他所有的东西都放在一起,而且存储的很好。
我不知道该如何准确地表达这一点,但因为 FreeBSD 的管理方式,是作为一个完整的操作系统和项目来管理的,而不是作为一堆不同的项目被粘合在一个发行版中,所以一切都考虑得非常周全。它是基于多年经验上的,当事情发生变化时,它们会为了整个社区的利益而变化,并且有很多来自真实使用案例和行业问题的反馈。
要真正理解这一点,最好的方法之一是阅读 Michael W. Lucas 的《 Absolute FreeBSD 》一书。他不仅解释和描述了书中涉及的所有技术问题,而且还抓住了重要的历史背景来解释为什么事情会是这样的。

文档
有些人不认为文档是采用某项技术 /工具原因的一部分,但文档属于它所描述的技术的集成部分。糟糕的、过时的和缺失的文档应该被认为是一个 Bug 。
FreeBSD 的文档是随系统附带的,所以你不必在网上搜索。基本系统的 handbook 手册质量很好,而且是专门为 FreeBSD 编写的。您所需要的大部分内容都在系统中。
FreeBSD 也有 FreeBSD 手册,它涵盖了 FreeBSD 的安装和日常使用所需。FreeBSD 手册可以在安装过程中本地安装。这本手册偶尔会有一些过时的部分,因为这本书是许多人持续工作的结果,但它一般都会更新,而且写得很好。

安全
通常情况下,被入侵的不是操作系统,而是运行在操作系统上的程序。在某些情况下,被入侵的程序可以与操作系统进行交互,从而也会影响到操作系统。保护操作系统的安全意味着您要确保计算机的资源只被授权的人用于授权的目的。
FreeBSD 经过了彻底的审计,以消除缓冲区溢出和其他无数的安全问题,此外,FreeBSD 还提供了许多工具和选项来帮助您保护系统免受攻击。
我不可能在这篇文章中提供一份详尽的选项和可用功能的清单,因为 FreeBSD 的安全主题可以轻松地写满一本书。如果您想更深入地了解 FreeBSD 的一些安全特性,我强烈推荐 Michael W. Lucas 的《 Absolute FreeBSD 》一书。
不过,我还是要提几件事情。

在安装 FreeBSD 的过程中,安装程序提供了一系列可以启用或禁用的选项。

隐藏其他 UID 进程
隐藏其他 GID 进程
隐匿已被囚禁的进程
隐藏信息缓冲区
禁用进程调试
随机化进程 ID
禁用 syslogd 网络
禁用 Sendmail
安全控制台
非可执行堆栈和堆栈保护
大多数 FreeBSD 的内核级安全设置都可以在 security.bsd sysctl 树中找到,而且每隔几个月就会有更多的设置被添加进来。您可以运行 sysctl -d security.bsd 来显示您的 FreeBSD 安装中的可用选项。
# sysctl -d security.bsd
security.bsd: BSD security policy
security.bsd.stack_guard_page: Specifies the number of guard pages for a stack that grows
security.bsd.unprivileged_get_quota: Unprivileged processes may retrieve quotas for other uids and gids
security.bsd.hardlink_check_gid: Unprivileged processes cannot create hard links to files owned by other groups
security.bsd.hardlink_check_uid: Unprivileged processes cannot create hard links to files owned by other users
security.bsd.unprivileged_idprio: Allow non-root users to set an idle priority
security.bsd.unprivileged_proc_debug: Unprivileged processes may use process debugging facilities
security.bsd.conservative_signals: Unprivileged processes prevented from sending certain signals to processes whose credentials have changed
security.bsd.see_jail_proc: Unprivileged processes may see subjects/objects with different jail ids
security.bsd.see_other_gids: Unprivileged processes may see subjects/objects with different real gid
security.bsd.see_other_uids: Unprivileged processes may see subjects/objects with different real uid
security.bsd.unprivileged_read_msgbuf: Unprivileged processes may read the kernel message buffer
security.bsd.unprivileged_mlock: Allow non-root users to call mlock(2)
security.bsd.suser_enabled: processes with uid 0 have privilege
security.bsd.map_at_zero: Permit processes to map an object at virtual address 0.

漏洞统计
这是一个 FreeBSD 和 Linux 的漏洞统计列表。FreeBSD 上的安全问题数量普遍较少,这并不一定意味着 FreeBSD 比 Linux 更安全,尽管我相信是这样,但也可能是因为 Linux 上有更多的用户。
+---------+---------+-------+
| Year | FreeBSD | 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 |
|---------|---------|-------|
| Total | 361 | 2333 |
+---------+---------+-------+
有关特定漏洞的进一步信息,您可以查看 FreeBSD 和 Linux 的 CVE 详情网站。

稳定性
FreeBSD 有很好的工程和发布管理经验。FreeBSD 从构思到公开发布要经过多个步骤。
当有人有了一个想法,并开发了一些新的东西,它首先会得到同行审查。然后它进入 "CURRENT"分支进行综合测试,并根据复杂程度或潜在影响,调整进入稳定版的迁移窗口。然后它进入 "STABLE"分支进行更广泛的用户群测试。这通常是所有测试版测试发生的地方,也有更广泛的社区参与。然后,它进入发布候选版本测试,通常持续 3 轮,然后成为一个正常的版本。
这意味着只要你了解发布和升级的注意事项,你就可以很有信心相信系统正常运行。
软件的补丁发布是为了修复任何漏洞和错误。
这通常使 FreeBSD 成为一个非常可靠的操作系统。

Ports
FreeBSD Ports 是一个惊人的工程壮举。NetBSD 的 pkgsrc (package source) 和 OpenBSD 的 ports collection 都源于 FreeBSD ports 系统。
通常当您在 Unix 操作系统上安装软件时,您需要找到并下载软件。然后解压软件,通常是压缩的 tar 包。然后在 INSTALL 、README 等其他文本文档中找到文档, 并阅读关于如何安装软件的说明。如果软件是以源码格式发布的,你需要编译它,这通常涉及到编辑一个 Makefile 或运行一个 configure 脚本。如果编译成功,你就需要测试和安装软件。如果软件有依赖性, 则需要先下载并安装这些依赖性。
FreeBSD ports Collection 使用 Makefile 来自动完成编译、 安装和卸载软件的过程, 并使用 make 命令。组成 port 的文件包含了所有必要的信息, 以便自动下载、 解压缩、 打补丁、 编译和安装应用程序, 而在 ports 目录下发出诸如 make install 或 make install clean 这样的开始命令之后, 用户只需要很少的干预 (如果有的话)。如果 port 需要依赖其它应用程序或库, 则会事先自动安装。
大多数 port 都配置了一组默认的选项, 这些选项被认为是适合大多数用户的。然而, 这也是 ports 系统的一大优点, 这些配置选项可以在安装前使用 make config 命令进行修改。该命令会弹出一个基于文本的界面, 允许用户选择所需的选项。
在写这篇文章的时候,集合中有超过 38487 个端口可用
在大多数情况下,ports 应用程序都是以预编译包的形式提供下载的, 并设置了默认的选项。这些软件包可以通过 FreeBSD pkg - Binary Package Management 应用程序来安装。预先编译的 port 被称为 "package"。
FreeBSD 项目有一个软件包联编场, 其中联编了所有支持的架构和主要版本的软件包。数据库中提供了所有软件包的联编日志和已知错误, 而每周的联编日志也可以通过邮件列表存档获得。

滚动发行软件包
在软件包方面,您有两个不同的分支可以选择。一个叫 "quarterly",另一个叫 "latest"。
Quarterly 是在每年 1 月、4 月、7 月和 10 月的季度开始时, 从修订系统中的 HEAD 分支中切割出来的 Ports 分支的名称, 也是由这些分支产生的二进制软件包集的名称。
Quarterly 分支为用户提供了更加可预测和稳定的 ports 和包的安装和升级体验。这基本上是通过只允许非功能更新来实现的。季度分支的目标是接收安全修复, 但也可能有版本更新, 或提交的回溯, 错误修复和 ports 合规性或框架变化。
如果您选择了 "latest"的分支,FreeBSD 就会成为第三方软件包的滚动发行版, 而且和 Arch Linux 很像, 它也会得到最新的软件。

Poudriere
Poudriere 是一个用于创建和测试 FreeBSD 软件包的工具。它利用 FreeBSD jail 系统来建立独立的编译环境。这些 jail 可以用来为不同版本的 FreeBSD 编译软件包。一旦这些软件包被编译完成,它们的布局就会与官方镜像相同。这些软件包可以被 FreeBSD pkg 二进制软件包管理工具所使用。
Poudriere 是一个用于测试和构建软件包的神奇工具,通过 Poudriere,您可以轻松地构建和设置自己的二进制软件包库,其中的软件包将完全按照您的规格和需求构建。
Poudriere 可以处理整个 ports 树的批量联编,ports 树的特定子集, 或包括其依赖关系在内的单个 port 。它能够自动地联编软件包, 生成联编日志文件, 提供一个经过签名的 pkg 仓库, 使得它能够在提交一个补丁到 FreeBSD bug 跟踪器之前测试 port 联编过程, 使得它能够使用不同的选项来测试不同的联编过程。Poudriere 在一个干净的 Jail 环境中进行联编, 在这个环境中, 它能够使用 zfs 的特定功能。这意味着没有对主机环境的污染,没有剩余的文件,没有意外的删除,没有对现有配置文件的修改。
Poudriere 的设置和使用非常简单,因为它没有任何依赖,并且可以在任何支持的 FreeBSD 版本上运行。

ZFS
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 缓存命中率通常超过 80%)。
对于那些原本会造成数据处理延迟的数据,可以使用替代的缓存策略。例如,能够减慢存储系统速度的同步写入可以通过写入一个快速的独立缓存设备,即 SLOG (有时称为 ZIL--ZFS 意图日志)来转换为异步写入。
高度可调性--许多内部参数可以被配置为最佳功能。
可以用于高可用性集群和计算,尽管不是完全为这个用途设计的。
当然,当你在 Linux 上使用 ZFS 运行时,你也能获得所有这些功能。然而,这其中有一个很大的区别,因为没有任何一个 Linux 发行版甚至接近 FreeBSD 与 ZFS 的集成程度。

启动环境
由于与 ZFS 的紧密集成,FreeBSD 也支持引导环境。通过启动环境,您可以安装多个版本的核心操作系统,并选择其中的一个来启动。因此,启动环境是一个可启动的系统的克隆或快照。有了启动环境,你可以对系统进行防弹升级或更改,你不必担心破坏任何东西,因为你总是可以回滚。
这也意味着您可以在新的 ZFS 引导环境中更新 FreeBSD 系统,而无需接触正在运行的系统。您也可以在 FreeBSD Jail 中进行升级和测试结果。您甚至可以将 ZFS 引导环境复制或移动到另一台机器上。
FreeBSD 的 bectl 工具可以让您轻松管理启动环境。

BSD 启动
FreeBSD 使用传统的 BSD 风格的 init 。
在 BSD 风格的 init 中,没有运行级别,也不存在 /etc/inittab 。取而代之的是,启动是由 rc 脚本来控制的。
在 /etc/rc.d/中找到的脚本是为基本系统的应用程序服务的,比如 cron 、sshd 、syslog 等。而 /usr/local/etc/rc.d/中的脚本则是用户安装的第三方应用程序, 例如 NGINX 或 Postfix 。
如前所述, 由于 FreeBSD 是作为一个完整的操作系统而开发的, 用户安装的第三方应用程序并不是基本系统的一部分。第三方应用程序是通过包或端口来安装的。为了保持它们与基本系统的分离, 用户安装的应用程序被安装在 /usr/local/ 下。因此,用户安装的二进制文件位于 /usr/local/bin/,而配置文件则位于 /usr/local/etc/。
在 BSD 初始化系统中,通过在 /etc/rc.conf 中添加服务条目来启用服务。默认设置位于 /etc/defaults/rc.conf 中,这些默认设置会被 /etc/rc.conf 中的设置所覆盖。
下面的 /etc/rc.conf 中的条目可以启用 sshd 。

sshd_enable="YES"
你可以手动添加条目,也可以运行。

# service sshd enable
这将自动编辑 /etc/rc.conf 并添加条目。

你可以用以下方法手动启动一个服务: # service sshd start

# service sshd start
如果一个服务没有被启用,但你仍然想启动它,可以使用命令行启动它。

# service sshd onestart
你可以在维基百科上阅读更多关于 init 系统的内容。

jail
FreeBSD Jails 系统是另一个惊人的工程壮举。
在 2000 年 3 月 14 日的 4.0 版本中,FreeBSD 引入了 jails 系统。
FreeBSD jail 是一种操作系统级的虚拟化,它允许您将一个 FreeBSD 衍生的系统安装到多个独立的迷你系统中,称为 jails 。运行在 jail 中的系统共享相同的内核和系统资源,因此开销非常小。
对 FreeBSD jails 的需求来自于一个小型共享环境主机提供商 (R&D Associates, Inc.的所有者,Derrick T. Woolworth)的愿望,即在他们自己的服务和客户的服务之间建立一个干净、清晰的分离,主要是为了安全和便于管理。解决方案(由 Poul-Henning Kamp 开发)不是增加一层新的细粒度配置选项,而是对系统进行分门别类,包括其文件和资源,只有合适的人才能访问合适的分门别类。
通过 jail,可以创建各种虚拟机,每个虚拟机都有自己的一套实用程序和自己的配置。这使得它成为一种安全的试用软件的方式。例如,可以在不同的 jail 中运行不同版本或尝试不同配置的 web 服务器包。而且由于 jail 限定在一个狭小的范围内,所以一个错误的配置或错误的影响(即使是 jail 内的超级用户所做的)也不会危害到系统其他部分的完整性。由于在 jail 外实际上没有任何东西被修改,"变化 "可以通过删除 jail 的目录树副本而被丢弃。
然而 FreeBSD jail 并没有实现真正的虚拟化; 它不允许虚拟机运行不同于基本系统的内核版本。
FreeBSD jail 是提高服务器安全性的有效方法,因为 jail 环境与系统的其他部分(其他 jail 和基本系统)是分离的。
如果您想更好地了解 FreeBSD jail 和 Linux 容器之间的区别,请阅读博客文章 Setting the Record Straight: containers vs. Zones vs. Jails vs. VMs 。
FreeBSD 有 iocage 工具,它被设计用来简化 jail 管理任务。它将运行 VNET 或共享 IP 网络的 ZFS 支持的 jail 的管理抽象化。

Bastille
Bastille 是一个开源系统,用于在 FreeBSD 上自动部署和管理容器化应用程序。
Bastille 使用 FreeBSD jails 作为容器平台,并加入了模板自动化,以创建一个类似于 Docker 的容器化软件集合。
模板负责安装、配置、启用和启动软件,为构建容器化堆栈提供了一种自动化的方式。

Capsicum
Capsicum 是剑桥大学计算机实验室开发的一个沙盒框架,得到了 Google 、FreeBSD 基金会和 DARPA 的支持。Capsicum 扩展了 POSIX API,提供了一些新的操作系统基元,以支持类似 UNIX 操作系统上的对象能力安全。
Capabilities - 具有细粒度权限的精炼文件描述符
能力模式--拒绝访问全局命名空间的进程沙盒。
流程描述符--以能力为中心的流程 ID 替换
匿名共享内存对象--POSIX 共享内存 API 的扩展,支持与文件描述符相关的匿名交换对象(能力)。
rtld-elf-cap - 修改 ELF 运行时链接器,以构建沙盒应用。
libcapsicum - 用于创建和使用功能和沙盒组件的库。
libuserangel - 允许沙盒应用程序或组件与用户天使(如 Power Boxes )交互的库。
chromium-capsicum - Google 的 Chromium 网页浏览器的一个版本,它使用能力模式和能力来为高风险的网页渲染提供有效的沙盒。
Capsicum 的 FreeBSD 实现,由 Robert Watson 和 Jonathan Anderson 开发,在 FreeBSD 10.0 中开箱即用。Capsicum for FreeBSD 是一个参考实现,它不仅可以作为 Capsicum API 和语义的参考,而且还为移植到其他平台提供了起点源代码 (例如,Capsicum for Linux 和 Capsicum for DragonFlyBSD)。

DTrace
DTrace 是一个从 Solaris 移植过来的综合性动态跟踪框架。DTrace 提供了一个强大的基础架构,允许管理员、开发人员和服务人员简明扼要地回答有关操作系统和用户程序行为的任意问题。
DTrace 可以提供正在运行的系统的全局概览,例如活动进程所使用的内存量、CPU 时间、文件系统和网络资源。DTrace 还可以提供细粒度的信息,如调用特定函数的参数日志,或访问特定文件的进程列表。
有关 DTrace 使用的更多信息,请参阅 DTrace 单行本教程和 DTrace 示例。
在 Hacker News 上也有一个有趣的讨论,其中有许多关于 DTrace for Linux 的相关评论。

bhyve
bhyve 是一个原生的 FreeBSD 虚拟机管理程序,它可以在虚拟机中运行客体操作系统。可以通过命令行参数来指定虚拟 CPU 的数量、客体内存的数量和 I/O 连接等参数。
bhyve 支持多种客体操作系统的虚拟化,包括 FreeBSD 9+、OpenBSD 、NetBSD 、Linux 、illumos 、DragonFly 、Windows Vista 及更高版本和 Windows Server 2008 及更高版本。目前的开发工作旨在扩大对 x86-64 架构的其他操作系统的支持。
bhyve 管理程序在 FreeBSD 10.0-RELEASE 中成为基础系统的一部分。
bhyve 要求处理器支持 Intel Extended Page Tables (EPT) 或 AMD Rapid Virtualization Indexing (RVI) 或 Nested Page Tables (NPT)。使用多于一个 vCPU 的 Linux 客座或 FreeBSD 客座,需要 VMX 无限制模式支持( UG )。较新的处理器,特别是英特尔酷睿 i3/i5/i7 和英特尔至强 E3/E5/E7,支持这些功能。UG 支持是随着英特尔的 Westmere 微架构引入的。

防火墙
FreeBSD 的基本系统中内置了三种不同的防火墙。PF, IPFW, 和 IPFILTER, 也就是 IPF.
从 FreeBSD 5.3 开始,OpenBSD 的 PF 防火墙被移植到了基本系统中。PF 是一个完整的、全功能的防火墙,它可以选择支持 ALTQ (Alternate Queuing),提供服务质量 (QoS)。PF 的过滤语法与 IPF 类似,但做了一些修改,使其更加清晰。网络地址转换( NAT )和服务质量( QoS )已经集成到 PF 中,QoS 通过导入 ALTQ 排队软件,并与 PF 的配置联系起来。此外,还扩展了 PF 的功能,如用于故障转移和冗余的 pfsync 和 CARP,用于会话认证的 authpf,以及用于缓解防火墙困难的 FTP 协议的 ftp-proxy 等。同时,PF 还支持 SMP (对称多处理)&STO (状态跟踪选项)。
PF 的日志记录是众多创新功能之一。PF 的日志记录是可以在 pf.conf 中按规则配置的,日志由 PF 通过一个名为 pflog 的伪网络接口提供,这是用户级程序从内核级模式中提取数据的唯一方式。日志可以使用标准的实用程序(如 tcpdump )来监控。
IPFW 是为 FreeBSD 编写的状态防火墙,它同时支持 IPv4 和 IPv6 。它由以下几个组件组成: 内核防火墙过滤规则处理器及其集成的数据包统计工具、日志记录工具、NAT 、dummynet 流量转换工具、转发工具、桥接工具和 ipstealth 工具。
FreeBSD 在 /etc/rc.firewall 中提供了一个示例规则集,它定义了几种常见场景下的防火墙类型,以帮助新手用户生成合适的规则集。IPFW 提供了强大的语法,高级用户可以使用它来制作满足特定环境安全要求的自定义规则集。
IPF 是一个跨平台的开源防火墙,已经被移植到多个操作系统上,包括 FreeBSD 、NetBSD 、OpenBSD 和 Solaris 。IPF 是一个内核侧的防火墙和 NAT 机制,可以被用户国程序控制和监控。防火墙规则可以用 ipf 设置或删除,NAT 规则可以用 ipnat 设置或删除,IPF 内核部分的运行时统计可以用 ipfstat 打印,ipmon 可以用来将 IPF 的操作记录到系统日志文件中。
IPF 最初是采用 "最后匹配的规则获胜 "的规则处理逻辑编写的,只使用无状态规则。此后,IPF 得到了增强,加入了快速和保持状态选项。

调整
FreeBSD 有超过五百个系统变量可以通过 sysctl 工具来读取和设置。这些系统变量可以用来对运行中的 FreeBSD 系统进行修改,其中包括 TCP/IP 协议栈和虚拟内存系统的许多高级选项。这其中包括许多 TCP/IP 协议栈和虚拟内存系统的高级选项,对于有经验的系统管理员来说,这些选项可以显著地提高系统的性能。

GEOM
FreeBSD GEOM 是 FreeBSD 操作系统的主要存储框架。它提供了一种标准化的方式来访问存储层。GEOM 是模块化的,允许 GEOM 模块连接到框架中。例如,geom_mirror 模块为系统提供了 RAID1 或镜像功能。目前已经有很多模块可以使用,而且 FreeBSD 的各个开发者也一直在积极开发新的模块。
由于 GEOM 的模块化设计,模块可以堆叠在一起,形成一个 GEOM 层链。例如,在 geom_mirror 模块的基础上,可以添加一个加密模块,如 geom_eli 来提供一个镜像和加密的卷。每个模块都有消费者和提供者。提供者是 geom 模块的源头,通常是一个物理硬盘,但有时也是一个虚拟化的磁盘,如内存盘。geom 模块又提供一个输出设备。其他 GEOM 模块,也就是所谓的消费者,可以使用这个提供者来创建一个相互连接的模块链。

Linux 二进制兼容性
FreeBSD 提供了与 Linux 的二进制兼容。这使得用户可以在 FreeBSD 系统上安装和运行许多 Linux 二进制文件, 而无需首先修改二进制文件。在某些特定情况下,Linux 二进制文件在 FreeBSD 上的表现甚至比在 Linux 上的表现更好。
并非所有 Linux 特定的操作系统功能都能在 FreeBSD 上得到支持。例如,如果 Linux 二进制文件过度使用 i386 的特定调用,例如启用虚拟 8086 模式,那么它们将无法在 FreeBSD 上运行。

安全事件审计
FreeBSD 包含对安全事件审计的支持。事件审计支持对各种与安全相关的系统事件进行可靠、精细和可配置的记录,包括登录、配置更改、文件和网络访问。这些日志记录对于实时系统监控、入侵检测和事后分析都是非常宝贵的。FreeBSD 实现了 Sun 发布的 Basic Security Module (BSM) 应用编程接口 (API) 和文件格式, 并可与 Solaris 和 MacOS 的审计实现互操作。

最后说明
这篇文章并没有详尽地列出使用 FreeBSD 而不是 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 上运行,只是意味着您偶尔会遇到一些问题。例如,当我写这篇文章的时候,Micro 编辑器出现了一个问题,当你试图用 Alt-g 打开菜单时,它在 FreeBSD 上崩溃了。这个问题在 Linux 上并不存在。
我在服务器和桌面工作站上都使用 FreeBSD,最近我把在 Debian GNU/Linux 和 Arch Linux 上运行 ZFS 的系统迁移到了 FreeBSD 。由于 FreeBSD 为 ZFS 提供了更好的集成,我不仅体验到了性能的提升,也体验到了可靠性的提升。
我的一个主要工作站运行的是使用 i3 作为窗口管理器的 FreeBSD 。我有一个相同的设置,在同一台机器上用不同的硬盘运行 Arch Linux 。从纯粹的桌面使用角度来看,您看不出任何区别,也没有任何理由将 Arch Linux 作为桌面操作系统而不是 FreeBSD,无论是从性能上、从简单性上还是从任何其他原因来看 -- 唯一的例外是,如果您有不支持的硬件。
FreeBSD 没有像 GNU/Linux 那样得到同样的关注,实在是一个遗憾。在很多情况下,尤其是在生产服务器和商业用途上,一个公司运行 FreeBSD 而不是 Linux 可以获得很多好处,而他们运行 Linux 的唯一原因往往是出于习惯和对 FreeBSD 缺乏了解。
下一次当您需要部署一个新的系统时,我建议您也调查和测试一下 FreeBSD 。它是非常值得您花时间的。

原文地址: https://unixsheikh.com/index.html ]]>
FreeBSD 开发已经迁移至 git tag:www.v2ex.com,2020-12-22:/t/737688 2020-12-22T00:12:53Z 2020-12-22T00:11:53Z yklaxds member/yklaxds
https://git.freebsd.org/src.git
或者
https://cgit.freebsd.org ]]>
FreeBSD 12.2 vmware 虚拟机镜像 bt 种子 tag:www.v2ex.com,2020-12-14:/t/735457 2020-12-14T14:11:33Z 2020-12-15T02:31:02Z yklaxds member/yklaxds 并进行了中文设置
替换软件源为国内可用的
正在做种,请尽量使用 qBittorrent 等 P2P 软件下载。

https://github.com/ykla/freebsd-vm-desktop-CN/archive/0.1.zip ]]>
网易开源镜像站新增 pkg 源 tag:www.v2ex.com,2020-11-10:/t/723669 2020-11-10T09:35:32Z 2020-11-24T19:55:25Z yklaxds member/yklaxds http://mirrors.163.com/freebsd-pkg/ ]]> FreeBSD 12.2-RELEASE 现在在 Microsoft Azure 上可用 tag:www.v2ex.com,2020-11-01:/t/720652 2020-11-01T03:17:54Z 2020-11-01T03:48:05Z yklaxds member/yklaxds 树莓派 3B+/4 安装 FreeBSD 13 tag:www.v2ex.com,2020-10-30:/t/720199 2020-10-30T07:19:08Z 2020-10-30T09:18:08Z yklaxds member/yklaxds 春天来了 FreeBSD 的春天在哪里?

  树莓派是什么,相信凡是关注了我们的人都不会不知道,但是介于非专业人员需要在此做简要介绍。我们的安卓手机,大部分的 ARM 芯片的,即使歌曲《华为美》所谓的“中国芯”也是来源于 ARM 的专利授权,没了授权,什么芯也不是。

  而树莓派就是一块使用 ARM 芯片的开发板,就是一块接口丰富( HDMI 、I2C 、USB X 4 、POE 模块等等)的电路板,相当于配置较低的手机,手机能做的事情,树莓派都能做。一般用于嵌入式开发,比如机器人,路由器和监控等等。

   FreeBSD 对架构的支持是按照等级划分的,ARM 属于二级架构,所以软件支持上不如 AMD64,一些软件无法通过 ports 以源码的形式进行编译,比如编译 X11/xorg 就会遇到很多错误(已经报告 bug 列表)。

  树莓派 3B+是目前配置比较高的型号,由于 FreeBSD 的 SDIO 驱动并未完全支持,所以板载的蓝牙和 WIFI 均无法使用(可购买无线网卡,推荐 16 块钱的 COMFAST CF-WU810N )。

  自树莓派 3B+开始,无需任何改动,系统即可从 U 盘启动,我测试了 FreeBSD12/13 都是支持的,但是速度非常慢,一方面树莓派使用 USB2.0 极大的限制的总线速度,另一方面可能是玄学问题。(我人丑?我用的是东芝( TOSHIBA ) 64GB USB3.0 U 盘 U364 高速迷你车载 U 盘).

  因此不建议使用 U 盘启动,慢的我要打年年猫,年年猫是谁?是一只调皮的狸花猫而已。

  我们所有要准备的有树莓派 3B+板子一块,网线一段,存储卡一枚。从华为云镜像站(速度较快)下载适用于树莓派 3B+的镜像,12 和 13 我用起来感觉都一样,不过 13 的 LLVM 版本太新,很多软件编译不过去,所以还是用 12 的吧。

https://mirrors.huaweicloud.com/freebsd/snapshots/ISO-IMAGES/13.0/FreeBSD-13.0-CURRENT-arm64-aarch64-RPI3-20200116-r356767.img.xz  (该链接不是固定的找不到就去 https://mirrors.huaweicloud.com/freebsd/snapshots/ISO-IMAGES/13.0
  下载后解压缩。使用 rufus 刻录。插入网线,将存储卡插入树莓派,通电等待约五分钟,查看路由器后台获取 IP 。

  使用 XShell 即可登录树莓派。用户名密码均为 freebsd 。root 需要登录后输入 su,密码为 root 。可通过更改

/etc/ssh/sshd_config

  文件来开启 root 账户的 ssh 远程登录权限。

  方法:

  编辑 /etc/sh/sshd_config (注意是 sshd 不是 ssh !这是两个文件),修改或者加入

PermitRootLogin yes #允许 root 登录 PasswordAuthentication yes # 设置是否使用口令验证。

  (也可以把对应行前面的注释#去掉,注意 PermitRootLogin 一行默认是 no,去掉后要改成 yes 。即 PermitRootLogin yes )。

  然后重启服务:

server sshd restart

  然后就是时间设置问题,树莓派没有板载的纽扣电池确保 CMOS 时钟准确。所以完全依靠 NTP 服务来校正时间,如果时间不准确,将影响很多服务的运行,比如无法执行 portsnap fetch 命令。

  方法很简单:

  在 /etc/rc.conf 中加入

ntpd_enable="YES" ntpdate_enable="YES" ntpdate_program="ntpdate" ntpdate_flags="0.cn.pool.ntp.org"

  然后开启时间服务器:

service ntpdate start

  输入 date 查看时间,完成校时。我国使用 UTC+8 北京时,虽然不更改不会影响软件使用,但看起来不方便,可通过 bsdconfig 命令将地区调整到亚洲 /中国 /上海。

  树莓派应该会自动接通互联网,所以不必考虑联网问题。

  如果你购买了上述无线网卡,想实现开机自动连接 wifi 的功能,那也非常简单。

  方法:

/boot/loader.conf

  中写入

rtwn_usb_load="YES" legal.realtek.license_ack=1 在 /etc/rc.conf 中写入 wlans_rtwn0="wlan0" ifconfig_wlan0="WPA DHCP"

  注意在 /etc/wpa_supplicant.conf 文件中(没有就自己通 touch 命令新建一个)写入

network={ ssid="wifi 名字,别搞什么中文" psk="密码" }

  保存重启即可。能够实现开机自动连接 wifi 。

  安装 GUI 更简单,pkg install xorg mate 即可。可使用 VNC 或者 XRDP 服务。都很简单不再赘述。

  默认 HDMI 是可以直接输出的无需调整,对于一般 linux 所使用的参数,freebsd 也同样支持,比如超频。文件位置,改动也相同,不再赘述。

  总的来说树莓派 3B+的配置还是太差了,尤其是处理器和 USB2.0 以及内存方面,期待树莓派 4 以及 FreeBSD SDIO 驱动的早日出现。慈悲!

  雁南飞这首歌使我想起了小学的一篇课文《燕子专列》:瑞士有一年由于气温骤降大雁来不及南飞,人们在号召下使用列车将燕子送往温暖故乡的故事。吾乡何处呢?

  我闻到点燃木头的味道总是想起一些事情,究竟是什么我不知道,只是痕迹越来越淡了。

对于树莓派 3b+/4 来说,目前除了没有 WIFI,其余均正常使用。
QQ 交流群 817507910 ]]>
从一个想法看 FreeBSD 是商业化还是学院派 tag:www.v2ex.com,2020-10-30:/t/720165 2020-10-30T06:14:47Z 2020-10-30T09:20:26Z yklaxds member/yklaxds   逆向思维当初开发安卓的时候不可能没有考虑过 FreeBSD,因为无论从代码质量还是 BSD 协议来看,FreeBSD 都优于 Linux,这是一部分人的看法;还有人认为 FreeBSD 做出来最多和安卓一样,首先驱动问题就解决不了;还有人从技术方面入手,称 xorg 阻碍了其发展,造轮子非常困难,安全方面也值得考虑,虽然去掉了虚拟机,性能会有所提高,但会 FreeBSD 的开发者少之又少;更多地人劝其脚踏实地,这个根本赚不到什么钱。

  但是根据我的理解 FreeBSD 主要是因为缺乏大的商业公司对其进行服务支持。因为我们都知道开源产品一般是靠出售服务而不是软件本身来盈利。根据 GPL 协议,有源代码提供,重新编译一下就可以了,就如同 RHEL 与 CentOS,Scientific Linux 的关系。所以久而久之变成了恶性循环。但是 FreeBSD 用户群中存在着相当大的一部分人认为是 BSD 协议阻止了其发展,因为根据二则协议,修改过的产品可以不开源,收费。但是这些想法也是不正确的,具体看苹果与 FreeBSD,以及 handbook 中众多使用 FreeBSD 服务的商业巨头,就知道回溯源代码更加能够节约企业的经济成本,是相互促进的关系。

   FreeBSD 对 ARM 的支持很差劲,现在移动终端不就 arm 指令集吗?难到还能是 MIPS ?说到这里我还是真的很希望 FreeBSD 能够支持龙芯处理器的。因为毕竟 MIPS 目前应用的不如 arm 广泛,机遇更多一些。FreeBSD 的嵌入式开发绝不是阉割内核,加几个打电话,发短信的软件就可以的,难度接近从 0 开始。

  其实不只是 FreeBSD 的嵌入式开发,Linux 的进程也大抵相当,Ubuntu Phone 、FireFox OS 、Windows Phone 无不是想从其 PC 端迁移到嵌入式设备的失败产品。

  其实更多的人们在强调风险,规避风险。有人在我国一所著名大学毕业典礼上发言称,要相信社会上存在公平与正义,存在真正的学术。可能真的有人信了,但给他的终将是多年以后聚在一起碰杯的声音。这片土地真正缺乏是就是她所说的那张种子,从来都没有。同样的,独行而无友,是一种最深层次上的孤独。

  我们真心祝福那些有梦想并愿意去做的人,也同情那些受于现实桎梏无法前行的普通学生,但更祈求你,每个个体,更看重自己的价值,开心就好。

  至于 FreeBSD,我始终是当做工具来看待,工具属性是其基本属性,也许以前是玩具,是别的什么,但是我更加看重人的价值。看到做嵌入式,就在等树莓派 4,仅此而已,博通的处理器和无线设备就非常烦人,根本不开源,还要做这种开源设备,导致驱动问题的发生。 ]]>
FreeBSD 发布 2020 年 Q3 季度报告 tag:www.v2ex.com,2020-10-30:/t/720151 2020-10-30T05:51:42Z 2020-10-30T05:50:42Z yklaxds member/yklaxds
列举部分如下:
FreeBSD 基金会目前正在进行对 WiFi 和 Linux KPI 层的改进、提升与 Linuxulator 应用的兼容性、更新 DRM / 显卡驱动、为 OpenZFS 增加 Zstd 压缩、动态 RAID-Z 扩容以及为 LLDB target 进行现代化改进

对构建基础设施的改进,例如支持 ARM64 、将开发树迁移至 Git 、重写 UNIX domain socket 锁定以及对 runtime 动态链接器和内核 ELF 加载器的改进

将代码仓库管理工具从 Subversion 迁移到 Git,计划在 10 月底推出测试版本的仓库

即将发布的 FreeBSD 12.2 将优化 Linux 兼容层

FreeBSD Ports 集合包含超过 40000 个 port 和软件包

改进对 Mesa 和其他图形工具包 /库的支持

从 9 月份开始,支持从 macOS 和 Linux 主机构建正常运行的 buildworld 和 buildkernel 环境。这得益于部分 CI 工具只支持 Linux/macOS,它们希望将其用于构建 FreeBSD 基本系统

FreeBSD 13-CURRENT 的 DRM 驱动程序已被更新以匹配 Linux Kernel 5.4.62

优化 URE 驱动程序,为 USB 3.0 千兆以太网驱动覆盖进行改进。另外对 ath10k, Intel 和 rtw88 的驱动也进行了无线方面的改进

除此之外,还介绍了参与的开源相关活动以及收到的捐款等,上一季度总共筹集了大约 20 万美元

现在的开发树: https://cgit-beta.freebsd.org ]]>
FreeBSD 镜像站问题 @2020 tag:www.v2ex.com,2020-10-30:/t/720064 2020-10-30T02:36:51Z 2020-10-30T04:35:51Z yklaxds member/yklaxds 多次联系均无二次联系,如邮件列表,大概五次,其中三次回应,两次无回应。其主要回复内容为“深表歉意,但台湾地区已有镜像”。并未直接说明如何镜像,此外特别向科大 Linux 协会(其中其他镜像站并未理会,如清华大学 TUNA 协会)申请镜像,对方提到,FreeBSD 也是无人回应。中国大陆目前没有 FreeBSD 官方镜像站。
如有朋友们能够联系 FreeBSD 官方,还望早日开放镜像,lftp 不能解决问题。此外,Kernel 或者 Base system 源码 SVN 速度更加感人,除非安装系统的时候安装源码,否则… 国内网络环境如此,提升速度采取代理方式也是基本功,但是,不能够要求每个人都一样,提供便捷的网络服务,方便更多人的使用,才是发展 FreeBSD 的核心要义。
请朋友们注意这一点,镜像站是基础设施,就像那句话,“要想富,先修路”,如果通往 FreeBSD 的康庄大道不通,那就全是荆棘的小道。
在此号召能够联系到 FreeBSD 官方的朋友们,首先解决这一基本问题。

目前开放的非官方 issue 镜像申请:

USTC: https://github.com/ustclug/mirrorrequest/issues/172

https://github.com/ustclug/mirrorrequest/issues/171
目前已经关闭的非官方 issue 镜像申请:

TUNA: https://github.com/tuna/issues/issues/16
- 现状与问题:

FreeBSD 在中国大陆境内没有非官方镜像站;
FreeBSD 目前在大陆非官方镜像站有 4 个:

USTC https://mirrors.ustc.edu.cn/ 仅 pkg ports

ChinaFreeBSD http://chinafreebsd.cn/article/chinafreebsd-resouce
或者 freebsd.cn

北京交通大学自由与开源镜像站(四类源
mirror.bjtu.edu.cn
联系方式: https://t.me/bjtumirror

网易 163 镜像站(仅 ports 源

FreeBSD 官方联系方式:
freebsd-hubs@freebsd.org ]]>
2020 年安装 FreeBSD 系统的基础视频 tag:www.v2ex.com,2020-10-29:/t/719988 2020-10-29T20:49:17Z 2020-10-30T02:37:39Z yklaxds member/yklaxds 包含了下载,虚拟机安装,配置 SSH 等教程。
https://www.bilibili.com/video/BV14i4y137mh

QQ 交流群 910683942 一般话题
817507910 嵌入式 /树莓派
三群 971363171
四群待定

telegram: https://t.me/freebsdba ]]>
FreeBSD 12.2 发布 tag:www.v2ex.com,2020-10-29:/t/719987 2020-10-29T20:38:34Z 2020-10-30T04:57:20Z yklaxds member/yklaxds
本次更新的一些亮点:
引入了对无线网络堆栈的更新和各种驱动程序,以提供更好的 802.11n 和 802.11ac 支持。
添加 ice(4) 驱动,支持英特尔的 100Gb 以太网卡。
更新 jail(8) 实用程序,允许在隔离的环境运行 Linux 。
OpenSSL 已更新至版本 1.1.1h 。
OpenSSH 已更新至版本 7.9p1 。
Clang,LLVM,LLD,LLDB,compiler-rt 和 libc ++ 已经更新到 10.0.1 。 ]]>
关于磁盘镜像的请教 tag:www.v2ex.com,2020-10-12:/t/714072 2020-10-12T02:31:58Z 2020-10-10T02:31:58Z yuedingwangji member/yuedingwangji https://www.percona.com/blog/2009/02/05/disaster-lvm-performance-in-snapshot-mode/ ,不过感觉 blog 有点老了,都是 2009 的,另外有 2 个文件系统是支持文件系统级别做快照的,分别是 zfs,和 btrfs,看了一些介绍,挺多人说 btrfs 有很多坑,一直说尚未完善,不过都是 2014 年代,看官网,btrfs 2020 都有更新,zfs 的话好像挺多人推荐用的;
说下我们的环境,主要是打算做压测系统的还原的,我目前已经倾向于文件系统级别的,我想测试下使用 brtfs,看能不能满足需求,但又怕后续遇到问题解决不了,有大佬指点下么,谢谢 ]]>
有人会搞套路云的 KVM 架构镜像吗 tag:www.v2ex.com,2020-08-07:/t/696459 2020-08-07T06:20:42Z 2020-08-07T06:19:42Z dzdh member/dzdh vbox 装了个 freebsd12.1 然后把 vhd 上传导入到套路云。

引导成功,开机卡到 mount rootfs 。找不到硬盘。

mountroot> ufs:/dev/vtbd0p2 不好使

跟 MBR/GPT 无关

只有一个 rootfs 分区

有 virtio 驱动

mountroot> ? 没发现任何硬盘

]]>
Bastille (巴士底监狱) 一个新的 FreeBSD Jail 管理工具 tag:www.v2ex.com,2020-05-02:/t/668075 2020-05-02T07:23:28Z 2020-04-26T07:23:49Z noli member/noli https://bastillebsd.org/
https://news.ycombinator.com/item?id=21533880

纯 shell 编写

一个将 jail 打造为 container 的非常有意思的产品 ]]>
[不是很新的新闻] FreeNAS 和 TrueNAS 即将统一为 TrueNAS tag:www.v2ex.com,2020-05-02:/t/668070 2020-05-02T07:01:34Z 2020-04-24T07:01:34Z noli member/noli
https://www.ixsystems.com/blog/freenas-truenas-unification/

大意:

1. FreeNAS 的 12.0 版本(即基于 FreeBSD 12.0 的版本)就是 TrueNAS Core
2. TrueNAS Core 将永远保持开源,永远是自由的(还是免费的?) Always Free ]]>
FreeBSD12.0-RELEASE 发布 tag:www.v2ex.com,2019-08-01:/t/588349 2019-08-01T14:00:53Z 2019-08-06T08:45:41Z xiaomudou member/xiaomudou FreeBSD 12.0-RELEASE 发布了,这是 stable/12 分支的第一个版本。

此版本主要更新亮点包括:

OpenSSL 升级到 1.1.1a (LTS) Unbound 升级到 1.8.1,DANE-TA 默认开启 OpenSSH 升级到 7.8p1 sshd(8) 添加了额外的 capsicum(4) 支持 Clang、LLVM、LLD、LLDB、compiler-rt 和 libc++ 升级到 6.0.1 vt(4) Terminus BSD Console 字体升级到 4.46 bsdinstall(8) 现在支持 UEFI + GELI 作为安装选项 默认情况下启用 VIMAGE 内核配置选项 默认情况下,amd64 GENERIC 和 MINIMAL 内核配置中启用 NUMA 选项 添加了 netdump(4) 驱动程序,通过该工具可以在系统出现紧急情况时将内核崩溃 dump 传输到远程主机 提高 vt(4) 驱动性能,以 2 至 6 倍的速度绘制文本 对当前一代硬件的图形支持的各种改进 默认情况下,armv6 和 armv7 启用对 capsicum(4) 的支持 UFS/FFS 文件系统已更新,增强了 TRIM/BIO_DELETE 命令,由于同时发送的 TRIM 消息较少,因此减少了读 /写请求 更新 NFS 4.1 服务器,带来 pNFS 服务器支持 pf(4) 包过滤器现在可以使用 vnet(9) 在 jail(8) 中使用 升级 bhyve(8),添加了 NVMe 设备模拟 bhyve(8) 现在可以使用 jail(8) 运行 一些 Lua loader(8) 改进 KDE 升级到 5.12.5 

ps:官方发布公告

]]>
FreeBSD 2019 社区调查各位大佬添了没有? tag:www.v2ex.com,2019-04-30:/t/560253 2019-04-30T15:16:54Z 2019-05-04T00:13:51Z tey7i member/tey7i Run BSD tag:www.v2ex.com,2019-01-07:/t/524670 2019-01-07T07:45:45Z 2019-01-21T10:58:43Z Livid member/Livid https://runbsd.info/

BSD 用户分享他们的使用故事。 ]]>
请教有人用 freebsd,openbsd 和 netbsd 做服务器吗? tag:www.v2ex.com,2019-01-02:/t/523310 2019-01-02T18:27:40Z 2019-02-15T04:02:18Z sjmcefc2 member/sjmcefc2 都用来做什么应用呢? 网上到处是 fb 注重性能, openbsd 安全, netbsd 跨平台啥的。 但是实际用了一段,发现 fb 比 ob,nb 大很多。 貌似 fb、nb 的文档也没有 ob 的完整,看起来都是 bsd,貌似实现的功能都不太一样,感觉骨子里面好像不是一样的,可是又说不出来。好像文件系统就差了好多。大神赐教。 bsd 性能上是不是和 linux 比就是渣? 不过确实简洁,装完啥都没有。 大神能深入说说 bsd 之间有啥不同吗?

]]>
1 块 ssd, 4 块 hdd 安装 freebsd11,有什么比较好的建议? tag:www.v2ex.com,2018-08-29:/t/484218 2018-08-29T04:50:28Z 2018-09-02T15:11:37Z sjmcefc2 member/sjmcefc2 用来做数据库,如何分区比较科学呢?怎么让 4 块盘看起来是一块?

]]>
请教 freebsd 做科学计算是个好选择吗? tag:www.v2ex.com,2018-06-09:/t/461801 2018-06-09T12:30:13Z 2018-06-10T09:52:16Z sjmcefc2 member/sjmcefc2 打算用 freebsd 做科学计算的环境( python,r,julia ),freebsd 文档确实清晰,目录结构也简单,就是社区貌似远不如 linux。尝试着配置常用的环境,发现 anaconda 没有提供 freebsd 下安装说明,整个网站搜索不到 freebsd。比较依赖 conda 管理,这确实是个坑,当然 pip 可以替代,进而安装 pip 发现 ports 下 devel 下面 py3-pip 安装的其实是 python2.7 的 pip。不知道有没有大神在 freebsd 下使用 python3.6,有没有发现常用的包没有 bsd 版本,或者说有没有一个 roadmap 可以说道一下有什么坑?

julia 倒是支持。

学院派的 freebsd 居然没被 anaconda 支持有点不可思议。opnsense,pfsense,kerio 等等网络安全应用到是非常多,科学计算的搜索结果特别少。

]]>
freebsd 有这么强悍呢?能做什么呢? tag:www.v2ex.com,2018-06-04:/t/460137 2018-06-04T02:17:31Z 2019-03-02T22:29:01Z sjmcefc2 member/sjmcefc2 https://www.oschina.net/translate/postgresql-comparative-benchmark-between-freebsd-and-linux?p=2#comments

这个帖子貌似说的有点离谱, freebsd 能做什么?

]]>
突然有种中了 freebsd 的毒的感觉... tag:www.v2ex.com,2018-05-28:/t/458385 2018-05-28T07:41:54Z 2018-07-23T07:01:59Z cnbattle member/cnbattle 被网上说的 freebsd 的稳定性所吸引,在虚拟机中装了 freebsd 和 tureOS,在了解其相关包管理的东西,想要把自己的几个 centos 服务器系统换成 freebsd 的

有几个问题:

  1. 如果 freebsd 做服务器的稳定性算 10 分,centos 能打几分?

  2. fressbsd/tureOS 做开发环境如何? 目前楼主的开发语言主要是 php/golang,有点依赖 jetbrains 全家桶,网上搜了并没有相关解决方法,freebsd 下如何运行 jetbrains 全家桶?或者 freebsd 下可以用哪些比较现代化的 IDE ?

  3. 有两年左右的在 linux 环境下的开发经验,转 freebsd 的成本大不大?

]]>
DLNA 客户端无法显示 webm 和 opus tag:www.v2ex.com,2018-05-28:/t/458284 2018-05-28T02:49:48Z 2018-05-27T02:46:48Z Inspiron1111 member/Inspiron1111 Linux 上的 vlc ;安卓(LineageOS)上的 vlc 和 DmsExplorer( https://github.com/ohmae/DmsExplorer)。
vlc 和安卓自带的播放器都可以播放本地的 webm 和 opus。
不知道是不是 minidlna 很久没有新版本的原因?
大家有没有遇到过这种情况? ]]>
需要腾讯云 FreeBSD 镜像的留言了 tag:www.v2ex.com,2018-04-24:/t/449483 2018-04-24T08:48:08Z 2018-09-16T18:33:58Z ucun member/ucun 国内云厂商对 FreeBSD 友好没有

特别是腾讯云,用他们的镜像,版本停在 10。1 不说,而且不作相关配置还不能使用,不像各大 Linux 发行版镜像开箱即用。

作为个人粉丝,只好自己动手。花了两天时间升级到 11.1 然后重新编译内核,去掉不必要的模块。然后编译安装 apache24 mariadb10.2 php7.2.4 并做好了配置。

做完镜像后,想到可能还有其他同好有这个需要,不管是没那个精力还是没有时间。或者只是想尝鲜又怕麻烦。

所以有需要这个镜像可以留言了。

105.PNG

]]>
简单写了个 TCP 代理,可以看看(freebsd 上可用) tag:www.v2ex.com,2017-02-04:/t/338026 2017-02-04T05:54:19Z 2017-02-04T09:51:19Z liamxd member/liamxd 因为前几天公司的登录服务器遭到了 DDOS 攻击。今天抽空写了一个 TCP 代理的功能,计划放到业务服务器前面,分散业务入口。

因为功能简单,而且后期考虑定制一些防护和统计功能,所以没有使用 nginx 的 tcp proxy 。或者其他成熟的代理方法。

https://github.com/miwoow/tcpproxyforbsd

刚完成,只是在本机上使用 nc 测试了一下,基本可用。后期会持续优化。

因为使用了 freebsd 的 kqueue 。所以需要在 freebsd 上运行。

后端服务器得到客户端真实 IP 地址的方法是,代理服务器一旦和后台服务器建立连接,马上发给后台服务器一个 32 位整数。这个 32 位整数就是客户端真实 IP 地址的网络字节序。

所以,后台服务器对于每个连接过来的 tcp 客户端,需要先接收一个 32 位的整数取得客户端真实 IP 地址。

]]>
Freebsd 有支持的加密狗(厂家)吗? tag:www.v2ex.com,2016-12-17:/t/328314 2016-12-17T09:51:10Z 2016-12-17T09:48:10Z linus member/linus Freebsd 怎么安装 sata 扩展卡的驱动 tag:www.v2ex.com,2016-11-23:/t/322798 2016-11-23T15:13:00Z 2016-12-01T03:13:50Z zlhdd108 member/zlhdd108 自己找了个小机箱弄个家用的 NAS ,用的是 nas4free ,也就是基于 Freebsd 的,不过有个问题,小机器的 sata 好少,所以弄了个 PCIE 的 sata 扩展卡,但是插上去后没办法识别上面的硬盘,不知道是不是要安装这个扩展卡的驱动还是怎么的,不知道有没有大神能帮忙科普一下

]]>
nas4free 转发到外网访问跳转 403 tag:www.v2ex.com,2016-11-12:/t/320041 2016-11-12T08:48:47Z 2017-02-14T00:22:35Z zlhdd108 member/zlhdd108 问题现象是这样的,刷好 openwrt 的路由器,已经绑定了花生壳的 ddns ,也可以配置转发端口后,可以通过域名:端口的方式访问到路由的管理页面,也可以访问到路由的 ftp ,这里没有问题;后来自己弄了个 NAS ,问题是按照同样的方法,配置端口转发到这台 NAS ,但是访问的时候直接就提示 403 了,访问这台 NAS 的 ftp 也是提示失败,不知道是 openwrt 的问题,还是 nas 本身的问题, nas 用的是 nas4free

]]>
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86