跳至内容

Unix/BSD 指南/简介

来自维基教科书,开放世界中的开放书籍

本页概述了 *BSD 内核和系统的关键特性,尤其是与其他类 Unix 系统的比较。目前,本页涵盖了 *BSD 的免费变体,尤其是 DragonFly BSD、FreeBSD、NetBSD 和 OpenBSD。也存在非免费变体。

维基教科书,操作系统中立视角,在其伯克利软件发行版章节中概述了 BSD。

  • *BSD 系统是 AT&T Unix 的后代(尽管非免费的 Unix 代码已被移除),因此它们比 GNU/Linux 更像 Unix。AT&T 以低廉的价格将代码授权给了大学,包括伯克利,并在那里开发了 TCP/IP 等重大增强功能。伯克利发布的最后一个 BSD 版本移除了非免费代码,以便更多人可以使用它。如今,*BSD 项目保留了它们的血统,在名称末尾加上 BSD。
  • 四大 *BSD 系统是自由软件开源软件。虽然 *BSD 使用了一些受版权保护的 GNU 程序,但大部分 *BSD不使用版权保护,这使每个人都可以自由地创建 *BSD 的非免费版本,并分发不含源代码的二进制文件。然而,*BSD 的某些部分在许可证中包含额外的条款,这些条款让一些人感到困扰,并且在 GNU 许可证中不存在。特别是,对“广告条款”(要求在某些广告上标记)的厌恶程度很高,以至于加州大学理事会将其从他们的许可证中删除;其他一些 *BSD 版权持有者仍然使用该条款。
  • 核心系统,包括内核和用户空间,在一个 CVS 树中维护。这与 OpenSolaris 和 OpenDarwin 类似,但 GNU/Linux 程序和内核位于不同的树中,并且非免费类 Unix 系统的开发树通常不公开。比较
  • *BSD 源代码存储在/usr/src/中,内核存储在/usr/src/sys/中。*BSD 内核和系统程序高度集成,因此必须一起升级。
  • 回想一下,内核是程序和硬件之间的接口。类 Unix 内核提供设备驱动程序和网络支持,并允许多个用户和程序共享系统。
  • *BSD 内核(通常安装在“/bsd/”中)是单片内核,这意味着它是一个程序,位于一个内存寻址空间中。因此,内核避免在自身各个部分之间形成和发送消息。
    • DragonFly BSD 正在改变其中的一些部分。
    • 原始的 AT&T Unix 和 Linux 也是单片内核,而 mkLinux 和 Mac OS X 的内核是模块化的。
  • 内核实际上是原始的 AT&T Unix,其所有文件都被替换。BSD 大学项目添加或替换了如此多的东西(VAX 移植、网络功能、快速文件系统等),以至于 *BSD 项目可以获取免费的部分并生成完全免费的内核,而无需 Unix 许可证。这带来的一个后果是,BSD 内核的结构与也源自 AT&T Unix 的商业 Unix 内核类似。
  • 内核包含一个“安全级别”功能,该功能试图在引导过程中的某个时刻永久限制所有用户(包括 root,超级用户)可以执行的操作。
  • 内核引导消息(在所有 Unix 系统上使用dmesg也可以看到)是组织化的,并显示每个设备在哪里被检测到。
    • 相反,Linux 驱动程序似乎会输出任何它们喜欢的引导消息。在 Linux 上,安装和检查“/proc”和“/sys”,或者使用“lspci”等工具,是一种更好的策略。

用户空间

[编辑 | 编辑源代码]
  • 回想一下,用户空间包含所有位于内核之上的软件。本节描述基本系统中包含的用户空间。
  • 程序在/bin//sbin/是静态链接的。
    • 这是因为/usr/可能没有挂载,因此无法使用共享库/usr/lib/libc.so
    • 静态链接是指每个程序都位于一个文件中,无需其他文件(共享库)包含程序共享的代码。库代码被复制到程序中。
  • 基本系统中的主要文本编辑器是“vi”。这是与 BSD 一起提供的 nvi,最终是原始的 vi,而不是其他 vi 实现,例如 vim。实际上,nvi 是原始 vi 的克隆。克隆是必要的,以移除一些非免费的 Unix 代码。
    • OpenBSD 还包含“mg”,一个类似于 Emacs 17 的编辑器,但没有使用任何免费但受版权保护的 GNU 代码。FreeBSD 包含“ee”,即“easy editor”,与nanopico(两者都在端口树中,尽管 nano 是自由软件,而 pico 不是)有一些相似之处。
  • 存在一个端口树或软件包树,最初来自 FreeBSD。它包含 Makefiles,可以自动执行 *BSD 软件的下载、提取、修补和构建。这是安装不在基本系统中的软件的主要方式。
    • 在 NetBSD 上,它被称为pkgsrc。pkgsrc 树的一个独特功能是它也可以在其他操作系统上运行。DragonFly BSD 也使用 pkgsrc。
    • 因此,安装程序通常只需两个简单的步骤。首先,输入一个“cd”命令,进入包含端口的目录(例如,/usr/ports/games/nethack/)。然后,输入一个“make install”命令,等待一切完成。
    • 构建软件需要很长时间,因此许多人更喜欢使用二进制软件包,而不是“make install”。
  • 系统编译器是 GNU 编译器集合 (GCC),包含 C、C++、Objective C 和 Fortran 77。
    • 默认情况下,gcc 不会在/usr/local/中查找头文件和库;它只会查找基本系统。
    • 基本系统可以使用 gcc 自行重建。
华夏公益教科书