MidnightBSD
2013-07-24 13:06:50 阿炯

MidnightBSD是从FreeBSD派生出的操作系统,该项目的一个关键性目标是创建一份易于使用的桌面环境,并使用图形化的ports管理,以及采用GNUstep的系统配置。该操作系统的主体将沿用BSD许可证,MidnightBSD是FreeBSD 6.1 beta的分支。


MidnightBSD is a new BSD-derived operating system developed with desktop users in mind. It includes all the software you'd expect for your daily tasks — email, web browsing, web hosting, word processing, gaming, and much more.

With a small community of dedicated developers, MidnightBSD strives to create an easy-to-use operating system everyone can use, freely. Available for x86, AMD64, SPARC64, and as Virtual Machines.

Feature
 A new window and login manager. [Replaced by Etoile]
 Centralized system preferences while maintaining the BSD style on the command line.
 A graphical ports and package management system. Currently we use a derivative of FreeBSD ports. [Now we have mports]
 Work on various portions of the kernel including syscons, process and disk scheduling, imports of FreeBSD and OpenBSD drivers, etc.
 Importing useful features from DragonFly, OpenBSD and NetBSD.
 Improving security with little distraction to the end user. [ipfw is enabled in 0.2+, sudo added, many other changes are coming]


最新版本:0.7
此版本主要是稳定性,ZFS 和导入包工具改进。从 0.6 版本升级需要在构建之前安装 src/kerberos5/lib/libroken。

最新版本:1.0
MidnightBSD 1.0 发布了,MidnightBSD 是从 FreeBSD 派生出的操作系统。该项目的一个关键性目标是创建一份易于使用的桌面环境,并使用图形化的 ports 管理,以及采用 GNUstep 的系统配置。此次更新支持 amd64 和 i386 平台,此版本的亮点是现在可以启动 ZFS 并使用 NVME SSD 和一些 AMD Radeon 显卡支持加速。AMD Ryzen 支持在此版本中有了很大改进,此外还添加了 FreeBSD 的 bhyve。

具体更新包括:

功能删除

变化最大的功能删除是传感器框架,因为发现其中有一些问题无法轻易解决,需要进行大整改才可以。但它可能在未来以新的形式重新出现。同时,该框架提供的许多功能仍然可用。另外,Sudo 从系统中删除了,并用 OpenBSD 中的 doas(1)替换。用户仍然可以从 mports 安装 sudo。Lindev 设备也被删除,因为 /dev/full 已经取代了它。许多第三方软件包更新了,还新增了一些应用:
Unbound
Ldns
Microsoft hyper-v support
mandoc 1.14.3

mports 更新
Mport 现在支持使用一个命令安装多个包。Mport 现在跟踪已弃用和已过期的包,并提前发出警告。此版本引入了新的包格式,并且较旧的包可能无法正确安装。同时,正在为 amd64 和 i386 构建新的软件包。

FreeBSD 功能集成
此次更新集成了 FreeBSD 的 Bhyve、grub,此外从 FreeBSD 10 stable(rev 334154)引入 boot 装载程序和 ZFS 引导功能。对于 GPT 分区,fsck_ffs 可以使用备用超级块。aesni(4)不再为多个线程中的多个会话共享单个 FPU 上下文。修复了 ipsec(4)的问题。Userland coredump 现在可以触发事件,例如通过 devd(8)生成可读的崩溃报告。

此外还有硬件与常见问题等的说明,详情见发行公告

最新版本:2.2
适用于 amd64 和 i386 的 MidnightBSD 2.2 已经于2022年6月中旬发布,此版本的重点是更新基础系统中的第三方软件,和一些较小的增强功能。包括错误修复和新功能:
为 lzma 使用 md 库 sha256 实现
/bin/sh 基于 freebsd 12-stable 源更新
root shell 从 csh 更改为 tcsh。
从 pfsense 向 dummynet 引入补丁,将最大值增加到 4Gb/s 。
mport 2.2.0 移除了对 libdispatch /gcd 依赖项的使用,因此可以支持静态构建的 mport。
将 desktop-file-utils 命令添加到 plist。
将 @KLD 添加到 plist 处理程序(允许包定义内核模块)
在 ucl pkg 消息上引入类型(允许针对特定事件的包消息)
在存根分离上添加空检查(防止卸载包时崩溃)
将 chroot 路径添加到 libexec 命令和 mport .list
修复了桌面启动问题,并为 GUI 安装创建了初始 .xinitrc 文件。
Netcat:从 FreeBSD 添加 sctp 支持
将 ptsname_r 添加到 libc。
来自 FreeBSD 的 Ipfilter 错误修复。
在首次启动脚本期间启用 dbus 和 hald
更多内容可查看更新公告

最新版本:3.0
适用于 amd64 和 i386 的 MidnightBSD 3.0 已于2023年4月上旬发布,这是一个大型版本,包含了诸多的变更:

错误修复和新功能
如果从 stdin 读取,GELI 的修复会默认忽略密钥文件。
mport 2.2.7 + 的错误修复
对 caroot CA 捆绑处理器的更新,支持标有 DISTRUST_AFTER 条目的证书。
/etc/rc.final rc (8) 脚本将在所有用户进程终止后运行。
automount (8) 现在将在执行自动挂载之前明确地将根路径设置为 /。
bectl (8) 实用程序现在会抛出错误,以防止创建带空格的引导环境。
bhyve (8) 实用程序支持在 nvme (4) 仿真中修复的大型 IO。
cmp (1) 实用程序收到 -b, --print-bytes 标志,以与 GNU cmp (1) 兼容。
cmp (1) 实用程序收到 -i, --ignore-initial 标志,作为 skip1/skip2 的替代。
cmp (1) 实用程序现在接受 skip1/skip2 的 SI 后缀。
cmp (1) 实用程序收到 -n, --bytes 标志,以限制要比较的字节数。
daemon (8) 实用程序现在有一个 -H 标志,允许它捕获 SIGHUP 并重新打开输出文件。
fstyp (8) 实用程序现在将检测并显示带有 -l 标志的 exFAT 文件系统。
geli (8) 实用程序在执行调整大小到相同大小时将不再报告错误。
如果还指定了 -x,grep (1) 实用程序现在将禁用 -w。
growfs (8) 实用程序现在可以在 RW 挂载的文件系统上运行。
如果用 -d 标志指定的目录实际上不是目录,则 kldxref (8) 实用程序将不再出错。
mergemaster (8) 实用程序现在将在更新过程中处理符号链接。
mksnap_ffs (8) 实用程序收到了一个修复程序,用于触发恐慌的崩溃:snapacct_ufs2:坏块恐慌。
启用配额后,mount (8) 实用程序现在可以正确显示配额。
当 /etc/exports 中缺少 V4: 行时,mountd (8) 实用程序现在将生成一条 syslog (3) 消息。
newsyslog (8) 实用程序收到一个新的 E 标志,以防止空日志文件轮转。
rc.d/jail rc (8) 脚本更改了关键字以在 jails 支持中修复 jails。
rtsold (8) 守护进程现在可以在 if_vlan(参见:vlan (4))接口上工作。
service (8) 实用程序现在将在调用之前设置守护程序类的环境。
wpl_cli (8) 实用程序现在有一个操作文件事件,其中可以将事件传递到文件。
krpc 和 nfsd 模块之间的内部 KAPI 已更新
ipfw (8) 防火墙提供了一个 dnctl (8) 来管理 dummynet (4) 配置。
添加了一个 opencrypto kern.crypto sysctl (8) 节点。
添加了一个新的 sysctl (8),debug.uma_reclaim。
kern.timecounter.hardware OID 被转换成可调的。
msdosfs (5) 文件系统驱动程序收到了 msdosfs 挂起的修复程序。
ng_bridge (4) netgraph 节点支持 SMP。
ng_nat (4) netgraph 节点获得了对 RFC 6598/Carrier Grade NAT 支持的支持。
ng_source (4) netgraph 节点现在可以注入任何 netgraph 网络。
vlan (4) 接口现在可以支持 ALTQ。
pf (4) 防火墙收到了一些错误修正和更新。
合并了处理 UFS/FFS 中嵌入式符号链接的修复程序。
合并了 NFSv4.1 Linux 客户端挂载卡在 CLOSE_WAIT 状态的修复程序。
合并了从过期租约恢复 NFSv4.1/4.2 安装的修复程序。
合并了 NFSv4 的几个修复程序。
wpa EAP/PEAP MSCHAPv2 身份验证期间的分段错误已修复。
fetch (3) 库现在支持通过 HTTPS 代理 FTP。
添加了一个新的 rc.conf (5) 变量 linux_mounts_enable,如果 linux_enable 设置为 YES,它控制是否将 Linux® 特定的文件系统挂载到 /compat/linux 中。
devd (8) 实用程序已更新,将默认的 syslogd (8) 恢复通知从 kern 更改为 kernel。
cron (8) 实用程序已更新以支持 crontab (5) 中的两个新标志 -n 和 -q,它们分别在成功运行时抑制邮件和抑制命令执行的日志记录。
ifconfig 库已更新为报告 bridge (4) 接口的状态,类似于 lagg (4)。
read (2) 系统调用已更改为默认禁用对目录的 read () 调用。添加了一个新的 sysctl (8),security.bsd.allow_read_dir,当设置为 1 时将恢复以前的行为。
machdep.kdb_on_nmi sysctl (8) 已被删除。machdep.panic_on_nmi sysctl (8) 可调参数已更改为直接进入调试器。
添加了对 APEI(ACPI 平台错误接口)的支持。
已添加对 NAT64 CLAT 的支持,如 RFC6877 中所定义。
添加了 getrandom (2) 系统调用和 getentropy (3) 库,与 Linux 和 OpenBSD 实现兼容。
添加了 get_s (3)。
pthread (3) 库已更新以纳入 POSIX/SUSv4-2018 合规性改进。
arc4random (3) 库已更新,删除了 arc4random_stir () 和 arc4random_addrandom ()。
引导加载程序现在将支持从内存磁盘引导操作系统。
引导加载程序现在将支持没有功能的池。
引导加载程序现在将接受 zfs 功能 com.delphix:bookmark_written 和 com.datto:bookmark_v2。
一个新的 OID,hint.dev.X.disabled 已添加到 lua 加载程序中,以防止在引导期间连接设备。
arc4random (3) 库已更新以匹配 OpenBSD 1.35 版

安全修复
OpenSSL 1.1.1s 现在包含在基础中,以前使用的是 1.0.2u + 一些额外的补丁。这是一个姗姗来迟的安全更新。通过一个大的 gzip 标头额外字段,修复在 inflate 中存在基于堆的缓冲区过度读取或缓冲区溢出。

第三方软件
OpenSSL 1.1.1s、sqlite3 3.40.1、subversion 1.14.2、less 551、tzdata 2022g、expat 2.5.0、unbound 1.16.2、imported pci ids list 20220807、libarchive 3.6.0、nvi 2.20、bmake 20200710、wpa 2.10

硬件
修复了错误报告接口错误的 Intel 82599 ixgbe 设备。
alc (4) 设备驱动程序现在支持 Mikrotik® 10/25G 网络设备。
amdtemp (4) 设备驱动程序了解 17h 系列型号:M20h(Dali、Zen1)、M60H(Renoir、Zen2)和 M90H(Van Gogh、Zen2)。
amdtemp (4) 设备驱动程序获得了对 Zen 3 “Vermeer” 和 Ryzen® 4000 APU(Zen 2,“Renoir”)的支持。
amdsmn (4) 设备驱动程序获得了对 Zen 3 “Vermeer” 和 Ryzen® 4000 APU(Zen 2,“Renoir”)的支持。
cam (4) 驱动程序已修复快速拔出和重新插入 SCSI 问题。
bnxt (4) 设备驱动程序现在将报告硬件是否支持 WOL(局域网唤醒)支持,如果在系统初始化时应用过滤器,则显示启用状态。
em (4) 设备驱动程序现在支持无闪存 i211 PBA。
em (4) 设备驱动程序收到了一些共享代码更新。
ena (4) 设备驱动程序更新到 2.4.1。
ice (4) 设备驱动程序已更新至 0.28.1-k,更新后的 ice_ddp 包文件版本为 1.3.19.0。
添加了一个新的驱动程序 igc (4) 以支持 Intel® I225 以太网控制器并支持 2.5G/1G/100MB/10MB。
ixgbe (4) 设备驱动程序收到共享代码更新。
ixgbe (4) 设备驱动程序已修复 x550em 10G NIC 链接状态,其中自动协商功能未正确报告。
ixl (4) 设备驱动程序被赋予了 hw.ix.flow_control 可调参数。
ixl (4) 设备驱动程序在共享代码中进行了更新并修复了 2.5G 和 5G 速度。
iwm (4) 设备驱动程序现在支持 Intel® Killer® Wireless-AC 1550i。
nvdimm (4) ACPI 驱动程序现在将通过 sysctl (8) 导出健康信息。
nvme (4) 设备驱动程序获得了对 MSI 和单一 MSI-X 支持的支持。
nvme (4) 设备驱动程序收到了几个合并的错误修正。
对于支持限制的基于速率的资源,rctl (4) 资源限制驱动程序现在支持将资源使用限制为 0。这些资源将遵守 kern.racct.rctl.throttle_max sysctl (8) 设置的持续时间。
rsu (4) 设备驱动程序现在支持 ASUS® WL-167G V3 设备。
rtwn_usb (4) 设备驱动程序现在支持 Mercusys® MW150US (N150 Nano)、TP-Link® Archer T2U v3 和 D-Link® DWA-121 (N150 Nano) 设备。
run (4) 设备驱动程序现在支持 D-Link® DWA-130 rev F1 无线适配器和 ASUS® USB-N14 无线适配器。
tcp (4) 协议现在可以通过使用 net.inet.tcp.tolerate_missing_ts sysctl (8) 来容忍时间戳丢失 (RFC 1323/RFC 7323)。
uart (4) 设备驱动程序现在支持 Intel® 100 系列 / C230 系列 AMT。
mps (4) 驱动程序已从 32 位 GENERIC 内核配置中删除。
virtio_blk (4) 驱动程序已更新以支持 TRIM。
ichwd (4) 驱动程序已更新,包括对 Lewisburg PCH (C620) 芯片组中的 TCO 看门狗定时器的支持。
更新了 amdsmn (4) 和 amdtemp (4) 驱动程序以支持 Ryzen™ 2 主机桥。
amdtemp (4) 驱动程序已更新以更正 AMD® 2990WX 的温度报告。
为 RTL8188EE 芯片组添加了 rtwn_pci (4) 驱动程序。
添加了 ntb_hw_amd (4) 驱动程序,为 AMD® 非透明桥提供支持。
nvme (4) 驱动程序已更新以支持 PCI 连接的挂起 / 恢复。
添加了 cdceem (4) 驱动程序,支持 iLO 5 提供的虚拟 USB 网卡,可在 HPE® Proliant™ 服务器中找到。
mpr (4) 和 mps (4) 驱动程序已通过稳定性修复进行了更新。
camcontrol (8) 实用程序已更新以添加 ATA 电源模式支持。
cam (4) 子系统已更新,以改进 AHCI 机箱管理和 SES 互操作。
ACPI 子系统已更新,以实现设备对象类型以支持 ACPI 6.0,这是某些 Dell, Inc. Poweredge™ AMD® Epyc™ 系统所必需的。
添加了对 Microchip® LAN78xx™ USB3-GigE 控制器的支持。

已知的问题
firefox、chromium-bin、midori 和 epiphany 网络浏览器包和 mport 存在已知问题,需要更正。
i386 和 amd64 包可用,但 mesa 版本存在问题,它已在 mports 中更新,但尚未构建新包。
从以前的版本升级时,请确保在跳转到 3.0 之前至少使用 MidnightBSD 2.2.5,否则某些系统上的 usr.bin/lex 存在问题。
进行从 2.x 到 3.x 的重大升级时,有时需要在 usr.bin/Makefile 中禁用 perl 构建。如果在 src/rescue/rescue 中使用 buildworld 时出现错误,请尝试暂时从 makefile 中删除 camcontrol 和 df。
在 3.x 上,可以使用 make && make install 重建 src/rescue/rescue 和 src/usr.bin/perl 目录。
在某些 AMD Ryzen 系统上,在高负载或繁重的虚拟化工作负载下存在时间偏差。

更多信息请参考更新公告

官方主页:http://www.midnightbsd.org/
该文章最后由 阿炯 于 2023-04-03 11:20:16 更新,目前是第 2 版。