跳转至

OpenBSD FAQ - 安装指南

安装过程总览

OpenBSD 安装程序使用一个特殊的 ramdisk 内核(bsd.rd),生成一个完全在内存中运行的实时环境。它包含了安装脚本和少量执行完整安装所需的工具。这些实用程序也可用于灾难恢复。

可以从许多不同的来源引导 ramdisk 内核:

  • CD/DVD
  • USB 驱动器
  • 一个已经存在的分区
  • 通过网络(PXE 或其他网络启动选项
  • 软盘

并非每个平台都支持所有这些选项。

如果你有一个正在运行的 OpenBSD 系统,bsd.rd 是你重新安装或升级到更新版本所需的全部内容。为此,请下载并验证新的 bsd.rd,将其放置在现有文件系统上,然后从中启动。引导 bsd.rd 的一般方法是通过平台上使用的任何方式将引导内核从 /bsd 更改为 /bsd.rd

在 amd64 系统上从 bsd.rd 引导可以这样完成:

Using drive 0, partition 3.
Loading......
probing: pc0 com0 com1 mem[638K 1918M a20=on]
disk: hd0+ hd1+
>> OpenBSD/amd64 BOOT 3.33
boot> bsd.rd

这将从第一个识别的硬盘的第一个分区引导名为 bsd.rd 的内核。

如果你需要指定不同的驱动器或分区,只需在内核名称前加上其位置即可。以下示例将从第二个硬盘驱动器的第四个分区启动:

Using drive 0, partition 3.
Loading......
probing: pc0 com0 com1 mem[638K 1918M a20=on]
disk: hd0+ hd1+
>> OpenBSD/amd64 BOOT 3.33
boot> boot hd1d:/bsd.rd

OpenBSD 引导加载器(boot loaders)在特定架构的 boot(8) 手册页面中有记录。

安装前检查清单

在开始之前,您应该对自己想要的结果有所了解。一些值得事先考虑的事情:

  • 主机名
  • 已安装并可用的硬件:
  • 验证 OpenBSD 与你的硬件的兼容性。你可能需要查阅特定于平台的安装说明,尤其是当你使用非 x86 CPU 架构时。它们包含详细说明和任何可能的警告:

    [alpha] [amd64] [arm64] [armv7] [hppa] [i386] [landisk] [luna88k] [macppc] [octeon] [powerpc64] [riscv64] [sparc64]

  • 如果无线互联网是你接入网络唯一的选择,你的网卡是否需要额外的固件?如果是这样,你需要手动将其下载到 USB 驱动器或类似设备,然后在安装 OpenBSD 后使用 fw_update(1) 启用它。

  • 要使用的安装方法
  • 所需的磁盘布局:
  • 现有数据是否需要保存至别处?
  • OpenBSD 会在这个系统上与另一个操作系统共存吗?如果是这样,每个系统将如何启动?你需要安装引导管理器吗?
  • 将整个磁盘用于安装 OpenBSD,还是要保留现有分区/操作系统(或未来划分的磁盘空间)?
  • 你希望如何对磁盘的 OpenBSD 部分进行子分区?
  • 你需要磁盘加密吗?
  • 网络设置(如果不使用 DHCP):
  • 域名和 DNS 地址
  • 每个 NIC 的 IP 地址和子网掩码
  • 网关地址

下载 OpenBSD

文件名 下载方式
install70.img 可以写入 USB 闪存驱动器或类似设备的磁盘映像。包括文件集(File Sets)

amd64arm64i386octeonpowerpc64riscv64sparc64
miniroot70.img 同上,但不包括文件集。它们可以从 Internet 或本地磁盘下载。

alphaamd64arm64armv7i386landiskluna88kocteonpowerpc64riscv64sparc64
install70.iso 可用于创建安装 CD/DVD 的 ISO 9660 镜像文件。包括文件集。

alphaamd64hppai386macppcpowerpc64sparc64
cd70.iso 同上,但不包括文件集。

alphaamd64hppai386macppcsparc64
floppy70.img 支持一些缺少其他启动选项的旧机器。

amd64i386sparc64

你也可以从许多备用镜像站点下载镜像文件。

包含校验和的 SHA256 文件可以在与安装文件相同的目录中找到。你可以使用 sha256(1) 命令确认下载的文件在传输过程中都没有被破坏。

$ sha256 -C SHA256 miniroot*.img
(SHA256) miniroot70.img: OK

或者,如果你使用带有 GNU coreutils 的操作系统:

$ sha256sum -c --ignore-missing SHA256
miniroot70.img: OK

但是,这只检查意外损坏。你可以使用 signify(1)SHA256.sig 文件对下载的镜像文件进行加密验证。

$ signify -Cp /etc/signify/openbsd-70-base.pub -x SHA256.sig miniroot*.img
Signature Verified
miniroot70.img: OK

请注意,其他操作系统上的 signify 包可能不包含所需的公钥,或者它可能安装在其他位置。

install70.isoinstall70.img 映像不包含 SHA256.sig 文件,因此安装程序会提示它无法检查包含集的签名:

Directory does not contain SHA256.sig. Continue without verification? [no]

这是因为安装程序验证它们毫无意义。如果有人要制作流氓安装映像,他们当然可以更改安装程序以说明文件是合法的。如果你事先验证了镜像的签名,则在该提示下回答 “Yes” ,表示是安全的。

创建安装介质

闪存驱动器

你可以通过连接目标设备并使用 dd(1) 复制镜像来创建可引导的 USB 闪存驱动器。

假定你使用 OpenBSD ,且设备被识别为 sd6:

# dd if=install*.img of=/dev/rsd6c bs=1m

请注意,使用的是原始 I/O 设备rsd6c 而不是 sd6c

其他平台上的操作细节会有所不同。如 GNU 版本的 dd 将需要 bs=1M(注意大写的 M)。 如果您使用不同的操作系统,请务必选择适当的设备名称:例如,Linux 上的 /dev/sdX 或 macOS 上的 /dev/rdiskX

CD-ROMs

你可以使用 cdio(1) 在 OpenBSD 上创建可引导 CD-ROM。

# cdio tao cd*.iso

执行简单安装

如果你需要有关从你偏好的安装介质启动的说明,请查看你的机器的相关平台页面

安装程序旨在以非常有用的默认配置安装 OpenBSD,并且需要最少的用户干预。事实上,你通常只需按 Enter 键即可获得良好安装的 OpenBSD,仅在输入 root 密码时需将手移到键盘的其余部分即可。

显示 dmesg(8) 后,你将看到第一个安装程序问题:

...
root on rd0a swap on rd0b dump on rd0b
erase ^?, werase ^W, kill ^U, intr ^C, status ^T

Welcome to the OpenBSD/amd64 7.0 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?

选择 (I)nstall 并按照说明进行操作。

文件集

完整的 OpenBSD 安装分为多个文件集(File Sets):

名称 用途
bsd 操作系统内核(必需的)
bsd.mp 多处理器内核(仅在某些平台上)
bsd.rd ramdisk 内核
base70.tgz 基础系统(必需的)
comp70.tgz 编译器集合、头文件和库
man70.tgz 手册页
game70.tgz 文字游戏
xbase70.tgz X11 的基础库和实用程序(需要 xshare70.tgz
xfont70.tgz X11 使用的字体
xserv70.tgz X11 的 X 服务器
xshare70.tgz X11 的手册页、本地化设置和头文件

建议新用户全部安装。

一些来自 xbase70.tgz 的库,如 freetype 或 fontconfig,可以在 X 之外由操作文本或图形的程序使用。此类程序通常需要来自 xfont70.tgz 或字体包的字体。为简单起见,开发人员决定不维护允许大多数非 X 端口运行的最小 xbase70.tgz 集。

安装后添加文件集

如果你选择在安装时跳过某些文件集,你可能稍后会意识到你确实确实需要它们。要安装额外的文件集,只需从你的根文件系统启动 bsd.rd 并选择 (U)pgrade。当你进入文件集列表时,选择你需要的文件集。

磁盘分区

OpenBSD 可以安装在 512MB 的小空间中,但是使用这么小的设备是一个只适合有经验的高级用户的方案。在你有一定经验之前,建议使用 8GB 或更多磁盘空间。

与其他一些操作系统不同,OpenBSD 鼓励用户将他们的磁盘分成多个分区,而不是一两个大的分区。这样做的一些原因是:

  • 安全性:OpenBSD 的一些默认安全功能依赖于文件系统挂载选项,例如 nosuidnodevnoexecwxallowed
  • 稳定性:如果用户或行为不端的程序具有写入权限,则他们可以用垃圾填满文件系统。 你所希望能在不同的文件系统上运行的关键程序不会因此被打断。
  • fsck(8):你可以把从来不需要或很少需要写入的分区挂载为 readonly(只读),这将消除在崩溃或电源中断后进行文件系统检查的需要。

安装程序将根据你的硬盘大小创建分区计划。虽然这不是适合所有人的完美布局,但它为弄清楚你的需求提供了一个很好的起点。在做出关于自定义分区方案的决定之前,请阅读 disklabel 的自动磁盘分配的默认值和 hier(7) 手册页。

  • 由于一些需要从 wxallowed 文件系统启动,建议划分一个单独的 /usr/local 分区。
  • 当你需要升级时,非常小的分区会变得很麻烦。
  • 一个独立 /home 分区是不错的主意。需要新版本的操作系统?保持你的 /home 分区不变,擦除并重新加载其他一切。
  • 你可能还需要创建一个 altroot 分区来备份你的根文件系统。
  • 暴露在互联网上的系统应该有一个单独的 /var 分区,甚至可能需要一个单独的 /var/log 分区。
  • 从源代码编译某些 ports 会在你的 /usr/tmp 分区上占用大量的空间。

在安装后发送你的 dmesg

安装成功后,看看 dmesg(8) 命令的输出,看看是否有任何异常。如果一个设备显示为 not configured(未配置),这意味着它目前不被内核所支持。这可能会在将来通过发送 dmesg 而得到改善。引自

/usr/src/etc/root/root.mail

If you wish to ensure that OpenBSD runs better on your machines, please do us
a favor (after you have your mail system configured!) and type something like:

# (dmesg; sysctl hw.sensors) | \
   mail -s "Sony VAIO 505R laptop, apm works OK" dmesg@openbsd.org

so that we can see what kinds of configurations people are running.  As shown,
including a bit of information about your machine in the subject or the body
can help us even further.  We will use this information to improve device driver
support in future releases.  (Please do this using the supplied GENERIC kernel,
not for a custom compiled kernel, unless you're unable to boot the GENERIC
kernel.  If you have a multi-processor machine, dmesg results of both GENERIC.MP
and GENERIC kernels are appreciated.)  The device driver information we get from
this helps us fix existing drivers. Thank you!

译文:

如果你希望确保 OpenBSD 在您的机器上运行得更好,请帮我们个忙(在你配置好邮件系统之后!)并键入以下内容:

# (dmesg; sysctl hw.sensors) | \
   mail -s "Sony VAIO 505R laptop, apm works OK" dmesg@openbsd.org

这样我们就可以看到人们正在运行什么样的配置。如图所示,在主题或正文中包括一点关于你的机器的信息可以帮助我们更进一步。我们将使用这些信息来改进未来版本中的设备驱动支持。(请使用提供的 GENERIC 内核来做这个,而不是自定义编译的内核,除非你无法启动 GENERIC 内核。如果你有一台多处理器的机器,请提供 GENERIC.MP 和 GENERIC 内核的 dmesg 结果)。我们从中得到的设备驱动信息有助于我们修复现有的驱动。谢谢你!

或者,将你的 dmesg 输出保存到文本文件并将其内容发送给我们:

$ (dmesg; sysctl hw.sensors) > ~/dmesg.txt

请配置你的电子邮件客户端以使用纯文本。特别地,不要使用 HTML 格式或强制换行。 请将 dmesg 放入邮件正文中,而不是作为附件发送。

自定义安装过程

site70.tgz 文件集

OpenBSD 安装和升级脚本允许选择一个用户创建的名为 site70.tgz 的集合。与官方文件集一样,这是一个 tar(1) 存档,以 / 为父目录并使用 -xzphf 选项解压。它是最后安装的文件集,因此可用于补充和修改默认安装中的文件。此外,可以使用名为 site70-$(hostname -s).tgz 的主机名相关集。注意:如果你打算通过 HTTP(s) 提供文件集,请将 site70.tgz 放在你的源目录中并将其包含在你的 index.txt 中。 然后它将是安装时的一个选项。

install.siteupgrade.site 脚本

如果 site70.tgz 文件集包含一个可执行文件 /install.site,安装程序会在新安装的系统根目录下使用 chroot(8) 运行它。同样,升级脚本运行 /upgrade.site。后者可以放在系统的根目录下,然后重新启动进行升级。

用法示例:

  • 设置系统时间。
  • 在将新系统公开给世界其他地方之前,立即对其进行备份/存档。
  • 在第一次启动后运行一组任意命令。如果 install.site 用于将任何此类命令附加到 rc.firsttime(8) 文件(附加到此文件是必要的,因为安装程序本身可能会写入此文件),则会发生这种情况。在启动时,rc.firsttime 被执行一次然后被删除。

多重引导

多重引导是在一台计算机上拥有多个操作系统,并通过某种方式选择要引导的操作系统。 在开始之前,你可能希望熟悉 OpenBSD 引导过程fdisk(8) 的简要介绍在使用 OpenBSD 的 fdisk 部分。

如果你要将 OpenBSD 添加到现有系统,您可能需要在安装 OpenBSD 之前创建一些空闲空间。除了现有系统的本机工具外,gparted 还可用于删除或调整现有分区的大小。最好使用四个主要 MBR 分区之一来引导 OpenBSD。扩展分区可能不起作用。

据报道,rEFInd 通常有效;GRUB 通常会失败。无论哪种情况,你都完全靠自己决定如何操作。

Windows

启动配置数据 (Boot Configuration Data, BCD) 存储允许通过 bcdedit 启动多个版本的 Windows。你可以在这篇文章中找到一个很好的介绍。如果你想要一个 GUI 替代品,你可能想需要 EasyBCD

你将需要一份 OpenBSD 安装的分区引导记录 (PBR) 的副本。你可以使用类似于以下的过程将其复制到文件中:

# dd if=/dev/rsd0a of=openbsd.pbr bs=512 count=1

其中 sd0a 是你的启动设备,你需要将 openbsd.pbr 文件放到你的 Windows 系统分区。

一旦 OpenBSD 的 PBR 被复制到 Windows 系统分区,你需要一个具有管理权限的终端来运行以下命令:

C:\Windows\system32> bcdedit /create /d "OpenBSD/i386" /application bootsector
The entry {0154a872-3d41-11de-bd67-a7060316bbb1} was successfully created.
C:\Windows\system32> bcdedit /set {0154a872-3d41-11de-bd67-a7060316bbb1} device boot
The operation completed successfully.
C:\Windows\system32> bcdedit /set {0154a872-3d41-11de-bd67-a7060316bbb1} path \openbsd.pbr
The operation completed successfully.
C:\Windows\system32> bcdedit /set {0154a872-3d41-11de-bd67-a7060316bbb1} device partition=c:
The operation completed successfully.
C:\Windows\system32> bcdedit /displayorder {0154a872-3d41-11de-bd67-7060316bbb1} /addlast
The operation completed successfully.

请注意,OpenBSD 希望计算机的实时时钟设置为协调世界时 (UTC)。 有关更多信息,请参阅此部分