OpenBSD系统管理员手册——release

OpenBSD FAQ中文版、PF指南中文版、OpenBSD用户手册...
回复
头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

OpenBSD系统管理员手册——release

帖子 leo » 2011-04-01 14:49

原文链接: http://www.openbsd.org/cgi-bin/man.cgi? ... ormat=html

RELEASE(8) OpenBSD 系统管理员手册 RELEASE(8)

名称
[INDENT]release - 构建一份OpenBSD发行版
[/INDENT]描述
[INDENT]有几个构建系统发行版所需的步骤。它们是:
[INDENT]1. 更新源代码。
2. 构建和安装新内核。
3. 构建一个新系统。
4. 制作和验证系统发行版。
5. 构建并安装xenocara。
6. 制作和验证xenocara发行版。
7. 制作第三方packages。
[/INDENT]下面这些小节描述了每个步骤的细节。

以一个对源代码和ports树(分别为 /usr/src 和 /usr/ports )有写权限的用户身份运行的命令前面有一个美元符号 (`$')。必须以superuser身份运行的命令以一个哈希符号开头(`#').

1. 更新源代码
一个发行版肯定源于一套已知的的有条理的代码。在OpenBSD发布下一个发行版以前保持源代码的完整性和条理性的最好方法是用cvs命令从CVS仓库提取源代码。 这里用到两个tag, 一个标识为发行版,就和CD-ROM上的版本一样,另一个标识为稳定分支。OpenBSD的稳定分支起始于OpenBSD 2.7, 包含了勘误上描述的补丁。tag的形式如下:

OPENBSD_x_y_BASE
[INDENT]这个tag表示和CD-ROM上的发行版一致的源代码,这里的X是指主要的发行版编号,y表示次要的发行版编号,例如OpenBSD 4.8的4就是主要的发行版号,而8就是次要发行版号。
[/INDENT]OPENBSD_x_y
[INDENT]这是一个动靶。它表示属于稳定分支的源代码,这个分支进包含了勘误,没有新特性。
[/INDENT]要将你的源代码更新为上述两个tag表示的版本分支使用这样的命令:

代码: 全选

$ cd /usr/src && cvs up -r TAG -Pd
$ cd XSRCDIR && cvs up -r TAG -Pd
$ cd PORTSPATH && cvs up -r TAG -Pd


请用自己的X Window System的源代码目录替换这里的 XSRCDIR ,从自己的port树目录替换这里的 PORTSPATH , 一般是 /usr/ports。
上述命令假设你的系统上已经有了源代码树。

如果你还未提取过源代码,请参阅OpenBSD FAQ中文版 以获取更详细的信息。
警告: CVS的tag具有 `粘性'。请参阅 cvs(1) 以便详解详情。

2. 构建和安装新一个内核
为了安全起见, 你应该永远先构建和安装一个新内核而不是先构建需要使用这个新内核的程序。这可以确保在需要时所有新的系统调用均可用。构建一个新内核的步骤是:

改变当前的工作目录。 ${ARCH} 是指计算机的平台构架, 例如i386。

代码: 全选

$ cd /sys/arch/${ARCH}/conf

编辑内核配置文件。这里的 ${NAME} 是指你的内核配置文件名。你不应该编辑GENERIC; 如果你必须修改内核配置文件请先创建一份GENERIC的拷贝。如果你想使用标准的内核配置文件 GENERIC 就无需上面的拷贝步骤了。你可以用 vi(1), mg(1), 或任何你喜欢的编辑器。

代码: 全选

$ vi ${NAME}


建立内核汇编目录并编译内核:

代码: 全选

$ config ${NAME}
$ cd ../compile/${NAME}
$ make clean && make depend && make

(这里的make clean很重要。)

用新内核替换掉老的然后重新启动系统。当前的内核会被拷贝为 /obsd,而新内核会被拷贝为
/bsd。

代码: 全选

$ su
# make install
# shutdown -r now


一旦新内核无法启动系统,你可以用旧内核 /obsd 来启动。

3. 构建一个新系统
现在你正在运行新内核,所以你可以构建一个新系统了。
有一个安全(不过速度慢一些)的方法可以删除 object 目录并在构建前重新创建它们。具体的步骤是:

将原有的 object 文件移走,然后在后台删除它们:

代码: 全选

$ cd /usr/obj && mkdir -p .old && sudo mv * .old && \
sudo rm -rf .old &

重建 obj 目录:

代码: 全选

$ cd /usr/src && make obj

创建那些可能遗失的目录:

代码: 全选

$ cd /usr/src/etc && env DESTDIR=/ sudo make distrib-dirs


开始构建过程:

代码: 全选

$ cd /usr/src && make SUDO=sudo build

用手动或使用sysmerge(8)的方式来更新 /etc, /var, 以及 /dev/MAKEDEV。

此时你的系统已经是最新的了,接下来运行命令创建一个发行版。

4. 制作和验证系统发行版
系统发行版至少包含一个标准内核, 一些安装媒体文件, 发行版的 `tarballs', 安装指南, 以及checksum文件。

构建发行版的过程需要两个工作区域:

DESTDIR
[INDENT]这是用于全套OpenBSD安装的根目录, 因此它必须是一个可以储存整个操作系统(不包含X window系统和所有第三方的'packages')的足够大的磁盘分区。一旦生产出发行版,这个目录就可以删除了。在任何情况下发行步骤确保此目录在开始前是空的。
[/INDENT]RELEASEDIR
[INDENT]这是输出发行版文件的目录。如果需要,下面的步骤将创建这个目录。
[/INDENT]警告: DESTDIR 和 RELEASEDIR 不能设置在 /mnt 下, 因为在构建发行版过程中要使用 /mnt 目录。此外第一个 svnd(4) 设备device, svnd0, 也会被用于构建发行版,请勿配置。

制作发行版的release过程是:

确保 ${DESTDIR} 是一个存在的空目录以及 ${RELEASEDIR} 存在。
${RELEASEDIR} 无须是空的。你必须以root身份来创建一个发行版:

代码: 全选

$ su
# export DESTDIR=your-destdir; export RELEASEDIR=your-releasedir
# test -d ${DESTDIR} && mv ${DESTDIR} ${DESTDIR}- && \
rm -rf ${DESTDIR}- &
# mkdir -p ${DESTDIR} ${RELEASEDIR}

制作发行版并确认 ${DESTDIR} 目录的内容与`tarballs'的内容完全匹配:

代码: 全选

# cd /usr/src/etc && make release
# cd /usr/src/distrib/sets && sh checkflist
# unset RELEASEDIR DESTDIR

到这里你生成了大部分的OpenBSD发行版。现在只差 X Window 系统了 (下面会说的)。

5. 构建和安装xenocara
Xenocara是基于 X.Org 构建的系统。 Xenocara 源代码是在 XSRCDIR 目录内,默认情况下是 /usr/xenocara。如果不想使用默认值,可以在 mk.conf(5) 里定义这个变量。
在构建 xenocara时,也会需要 /usr/src 树。下列步骤将会在首次操作时构建和安装所有的项目时。

代码: 全选

$ su
# cd XSRCDIR
# make bootstrap
# make obj
# make build


X Window系统被创建和安装在 /usr/X11R6.

6. 制作和验证 xenocara 发行版
如上所述,xenocara使用 DESTDIR 和 RELEASEDIR。尽管他们可以被设置为变量而用于剩下的构建过程, 不过要注意的是现有的 DESTDIR 目录里的内容将被删除,这是xenocara构建过程一部分 (这对生成 checklist 是很有必要的)。

构建发行版的步骤是 (这里假设你还是root, 而且在 XSRCDIR 目录下):

代码: 全选

# export DESTDIR=your-destdir; export RELEASEDIR=your-releasedir
# test -d ${DESTDIR} && mv ${DESTDIR} ${DESTDIR}- && \
rm -rf ${DESTDIR}- &
# mkdir -p ${DESTDIR} ${RELEASEDIR}
# make release
# unset RELEASEDIR DESTDIR


现在在你的发行版目录里已经有了OpenBSD系统和 X Window系统两者的`tarballs'。

7. 制作第三方packages
有关`ports' 子系统应用程序的描述在ports(7)。为了便于安装,可以将port预编译为`packages' 的形式,packages可在多台机器上安装。packages是通过构建(编译)一个选择的应用程序产生的 (我们这里假设在 CATEGORY/PORT 目录下) 而且以root身份运行下面命令:

代码: 全选

$ cd /usr/ports/CATEGORY/PORT
$ su
# make package


整个过程就完成了。
[/INDENT]也请参阅
[INDENT]cvs(1), pkg_add(1), ports(7), sudo(8), sysmerge(8)
[/INDENT]历史
[INDENT]This document first appeared in OpenBSD 2.8.
OpenBSD 4.9 January 4, 2011 OpenBSD 4.9
[/INDENT]==================================================
原文链接: http://www.openbsd.org/cgi-bin/man.cgi? ... ormat=html
中文翻译 leo@JR

回复

在线用户

正浏览此版面之用户: 没有注册用户 和 0 访客