For the complete documentation index, see llms.txt. This page is also available as Markdown.

macOS 用户视角的 OpenBSD

本快速入门面向 macOS 管理员,通过将熟悉的概念映射到 OpenBSD 7.8 工具与惯例来介绍 OpenBSD。文中突出实际差异,并非详尽对比,也不涉及理念讨论。本指南假设 OpenBSD 已安装完毕,且你已有命令行访问权限。

Shell

OpenBSD 上 root 与普通用户的默认 shell 都是 Korn shell ksh(1) 。现代 macOS 系统中,新建用户账号默认使用 zsh。OpenBSD 的 ksh(1) 实现了传统 Bourne shell 语言的一个超集。

其他 shell(如 Bash、Zsh)以软件包形式提供,参见 pkg_add(1)chsh(1)

建议: 不要把 root 的 shell 改成由软件包提供的 shell。非基本系统的 shell 位于 /usr/local/bin,在受限恢复场景下可能不可用。基本系统的 ksh(1) 位于 /bin

# 在普通账号下通过 doas(1) 安装常用替代 shell
$ doas pkg_add bash zsh  # 安装 Bash 与 Zsh
$ chsh -s /usr/local/bin/zsh  # 将登录 shell 改为 Zsh

提权:doas(取代 macOS 的 sudo)

OpenBSD 基本系统自带 doas(1) 用于提权(macOS 自带 sudo)。通过 doas.conf(5) 配置 OpenBSD 的工具。/etc/examples/ 下有已说明的示例。

$ doas cp /etc/examples/doas.conf /etc/doas.conf  # 从示例配置开始

默认情况下,每次调用都会要求输入密码。要像许多 sudo 配置那样缓存认证,加入 persist

permit persist keepenv :wheel

如确有需要,可安装 sudo 软件包,参见 sudo(8)。

软件管理

macOS 上常见的第三方包管理器是 Homebrew 或 MacPorts;OpenBSD 则不同,提供官方且集成的二进制软件包系统。优先使用预编译软件包,参见 packages(7) 。从 ports 构建见 ports(7)

安装与删除软件包

pkg_add(1) 安装预编译软件包:

pkg_delete(1) 删除软件包:

pkg_info(1) 列出已安装软件包:

更新(同一发行版内)

OpenBSD 通过 syspatch(8)基本系统提供二进制补丁。这大致相当于 macOS 针对操作系统(而非第三方软件)的软件更新。

将已安装软件包升级到当前发行版的最新版本:

升级(到新发行版)

sysupgrade(8) 拉取并执行发行版升级。重启后若收到提示,用 sysmerge(8) 完成配置合并,再更新软件包。

网络

macOS 上接口常以 en0en1 等形式出现。OpenBSD 按驱动名命名接口,例如 em0(Intel)、re0(Realtek)、bge0(Broadcom)。详见 ifconfig(8)

用 hostname.if 配置接口

每接口配置存放在 hostname.if(5) 中,if 为接口名(例如 /etc/hostname.em0)。这取代了 macOS 上 networksetupscutil 等命令行工具用于持久化设置。

静态 IPv4:

静态 IPv6:

DHCP:

从文件应用配置时,使用 netstart(8)

临时性的运行时改动可用 ifconfig(8) 完成:

主机名

myname(5)/etc/myname)中设置系统的全限定域名。这取代了 macOS 上的 scutil --set HostName

修改后用 sh /etc/netstart 重新载入网络。

默认网关

mygate(5)/etc/mygate)中设置默认网关。每行一个地址;每个协议族取第一条。

修改后用 sh /etc/netstart 重新载入网络。

DNS 解析器

resolv.conf(5) 中配置解析器,而非使用 scutil --dns 或“系统设置”界面:

修改后用 sh /etc/netstart 重新载入网络。

守护进程与启动

macOS 使用 launchdlaunchctl 管理服务。OpenBSD 采用传统 BSD init 与 rc 系统,参见 init(8)rc(8)rc.conf(8) 。系统默认值在 /etc/rc.conf。不要直接编辑该文件,应在 /etc/rc.conf.local 中覆盖并本地化设置。

rcctl(8) 控制并启用守护进程。例如管理基本系统的 Web 服务器 httpd(8)

常用对照

任务(macOS)
OpenBSD 工具或文件
用途

brew install nginx / port install nginx

pkg_add nginx

从仓库安装软件包

brew upgrade / port upgrade outdated

pkg_add -Uu

在当前发行版内升级全部软件包

softwareupdate -ia

syspatch

应用基本系统安全/缺陷补丁

macOS 大版本升级(安装器 / MDM)

sysupgrade

升级到下一 OpenBSD 发行版

launchctl kickstart gui/UID/label

rcctl start svc

启动服务

launchctl bootout system/label

rcctl stop svc

停止服务

launchctl enable system/label

rcctl enable svc

让服务开机自启

scutil --set HostName host.example.com

/etc/myname

设置系统主机名

networksetup -setdhcp Wi-Fi

/etc/hostname.em0 写入 dhcp

将接口配置为 DHCP

查看 DNS:scutil --dns

/etc/resolv.conf

DNS 解析器配置

更多详情请参阅本站引用的手册页。

最后更新于