diff --git a/zh_CN.GB2312/articles/Makefile b/zh_CN.GB2312/articles/Makefile index 4b6bf64938..e2c259ce23 100644 --- a/zh_CN.GB2312/articles/Makefile +++ b/zh_CN.GB2312/articles/Makefile @@ -1,10 +1,12 @@ +# # The FreeBSD Simplified Chinese Project -# Original Revision: 1.49 +# Original Revision: 1.52 # # $FreeBSD$ SUBDIR = SUBDIR+= contributing +SUBDIR+= nanobsd DOC_PREFIX?= ${.CURDIR}/../.. .include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/zh_CN.GB2312/articles/nanobsd/Makefile b/zh_CN.GB2312/articles/nanobsd/Makefile new file mode 100644 index 0000000000..e77c786c63 --- /dev/null +++ b/zh_CN.GB2312/articles/nanobsd/Makefile @@ -0,0 +1,28 @@ +# +# The FreeBSD Simplified Chinese Project +# +# Original Revision: 1.2 +# $FreeBSD$ +# +# Article: Introduction to NanoBSD + +DOC?= article + +FORMATS?= html +WITH_ARTICLE_TOC?= YES + +INSTALL_COMPRESSED?= gz +INSTALL_ONLY_COMPRESSED?= + +# Images from the cross-document image library +IMAGES_LIB= callouts/1.png +IMAGES_LIB+= callouts/2.png +IMAGES_LIB+= callouts/3.png +IMAGES_LIB+= callouts/4.png + +SRCS= article.sgml + +URL_RELPREFIX?= ../../../.. +DOC_PREFIX?= ${.CURDIR}/../../.. + +.include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/zh_CN.GB2312/articles/nanobsd/article.sgml b/zh_CN.GB2312/articles/nanobsd/article.sgml new file mode 100644 index 0000000000..04d6b02d18 --- /dev/null +++ b/zh_CN.GB2312/articles/nanobsd/article.sgml @@ -0,0 +1,452 @@ + + +%articles.ent; +]> + +
+ + NanoBSD 简介 + + + + Daniel + Gerzo + + + + + $FreeBSD$ + + + 2006 + The FreeBSD Documentation Project + + + + &tm-attrib.freebsd; + &tm-attrib.general; + + + + 这篇文档提供了关于 NanoBSD 工具的介绍信息, + 这一工具可以用来创建用于嵌入式应用的 &os; 系统映像, + 以适应存放到袖珍闪存 (Compact Flash) 卡 (或其它大容量存储介质) 上的需要。 + + + + + NanoBSD 简介 + + NanoBSD + + NanoBSD 是 &a.phk; 目前正在开发的一项工具。 + 它可以用来创建用于嵌入式应用的 &os; 系统映像, + 以便配合袖珍闪存 (Compact Flash) 卡 (或其他大容量存储介质) 使用。 + + 这一工具也可以用来构建定制的安装映像, + 以简化通常称为 计算设备 (computer appliances) + 的系统的安装和维护工作。 计算设备通常在产品中将捆绑硬件和软件, + 或者换言之, 所有的应用程序都是预先装好的。 + 这些设备可以直接插到暨存的网络中, + 并 (几乎是) 立即投入使用。 + + NanoBSD 提供的功能包括: + + + + 可以和 &os; 一样使用 Ports 和预编译包— + 所有的应用程序都可以在 NanoBSD 映像中直接使用, + 而方式与 &os; 完全一样。 + + + + 不减少功能 — 能够使用 &os; 做的任何工作, 都可以在 + NanoBSD 中使用, + 除非您在创建 NanoBSD 映像时, + 明确地删去它们。 + + + + 所有对象在运行时均是只读的 — 可以安全地拔掉电源插销。 + 在系统非正常关闭之后, 无需运行 + &man.fsck.8;。 + + + + 便于联编和定制 — 只需使用一个 shell 脚本和一个配置文件, + 您可以很容易地裁减和定制适于任意需求的映像。 + + + + + + 如何使用 NanoBSD + + + NanoBSD 的设计 + + 一旦将映像存入介质, 就可以用它来引导 NanoBSD + 了。 默认情况下, 大容量存储器会划分为三个区: + + + + 两个映像区: code#1 + 和 code#2 + + + + 一个配置文件区, 运行环境中, + 可以将其挂接到 /cfg 目录下。 + + + + 这些分区默认情况下以只读方式挂接。 + + /etc 和 + /var 目录均为 + &man.md.4; (malloc) 盘。 + + 配置文件分区保存在 + /cfg 目录。 + 它包含了用于 /etc + 目录的文件, 在启动之后暂时以只读方式挂接。 因此, + 在需要从 /etc 向 + /cfg 目录复制所进行的、 + 希望在重启时保持不变的配置时, 需要进行一些额外的操作。 + + + 在 <filename>/etc/resolv.conf</filename> 中进行需要保持的修改 + + &prompt.root; vi /etc/resolv.conf +[...] +&prompt.root; mount /cfg +&prompt.root; cp /etc/resolv.conf /cfg +&prompt.root; umount /cfg + + + + 只有在系统启动过程中, 以及需要修改配置文件的场合, 才需要挂接包含 + /cfg 的那个分区。 + + 在任何时候都保持挂接 /cfg + 不是一个好主意, 特别是当您把 NanoBSD + 放在不适合进行大量写操作的分区时 + (由于文件系统的同步进程会定期向系统盘写一些数据)。 + + + + + 构建 NanoBSD 映像 + + NanoBSD 映像是通过使用非常简单的 + nanobsd.sh shell 脚本来构建的, 这个脚本可以在 + /usr/src/tools/tools/nanobsd + 目录中找到。 这个脚本建立的映像文件, 可以用 &man.dd.1; 工具复制到存储介质上。 + + 构建 + NanoBSD 映像所需的命令是: + + &prompt.root; cd /usr/src/tools/tools/nanobsd +&prompt.root; sh nanobsd.sh +&prompt.root; cd /usr/obj/nanobsd.full +&prompt.root; dd if=_.disk.full of=/dev/da0 bs=64k + + + + 进入 NanoBSD 构建脚本的主目录。 + + + + 开始构建过程。 + + + + 进入构建好的映像文件所在的目录。 + + + + 在存储介质上安装 NanoBSD + + + + + + 定制 NanoBSD 映像 + + 这可能是 NanoBSD 最为重要, + 同时也是您最感兴趣的功能。 同时, 您在开发 + NanoBSD 应用时, + 这也是相当耗时的过程。 + + 执行下面的命令将使 + nanobsd.sh 从当前目录中的 + myconf.nano 文件读取配置: + + &prompt.root; sh nanobsd.sh -c myconf.nano + + 定制过程包含两步: + + + + 配置选项 + + + + 定制函数 + + + + + 配置选项 + + 通过对配置进行设置, 可以配置用以传递给 + NanoBSD 构建过程中 buildworld + 和 installworld 阶段的联编和安装选项, 以及 + NanoBSD 的主构建过程中的选项。 + 通过使用这些选项可以削减系统的尺寸, 使之能够放入 + 64MB 的存储。 您还可以进一步通过这些选项来削减 &os;, + 直到它只包含内核以及两三个用户环境文件为止。 + + 配置文件中包含用以代替默认值的配置选项。 + 最重要的语句包括: + + + + NANO_NAME — 本次构建的名称 + (用于创建工作目录的名字)。 + + + + NANO_SRC — 用以联编和构建映像的源码树的位置。 + + + + NANO_KERNEL — 用以联编内核的配置文件的名字。 + + + + CONF_BUILD — 用于传递给 + buildworld 构建阶段的选项。 + + + + CONF_INSTALL — 用于传递给 + installworld 构建阶段的选项。 + + + + CONF_WORLD — 用以传递给 + buildworld 和 + installworld 这两个构建阶段的选项。 + + + + FlashDevice — 定义所用的介质类型。 + 要了解进一步的细节, 请参考 FlashDevice.sub + 文件。 + + + + + + 定制函数 + + 通过在配置文件中使用 shell 函数可以进一步微调 + NanoBSD。 下面的例子展示了定制函数的基本模式: + + cust_foo () ( + echo "bar=topless" > \ + ${NANO_WORLDDIR}/etc/foo +) +customize_cmd cust_foo + + 下面是一个更贴近实际的例子, 它将默认的 + /etc 目录尺寸, + 从 5MB 调整为 30MB: + + cust_etc_size () ( + cd ${NANO_WORLDDIR}/conf + echo 30000 > default/etc/md_size +) +customize_cmd cust_etc_size + + 除此之外, 还有几个默认的预定义定制函数: + + + + cust_comconsole — 在 VGA 设备上禁止 + &man.getty.8; + (/dev/ttyv* 设备节点) 并启用串口 COM1 + 作为系统控制台。 + + + + cust_allow_ssh_root — 允许 + root 通过 &man.sshd.8; 登录。 + + + + cust_install_files — + 从 nanobsd/Files + 目录中安装文件, 这包含一些实用的系统管理脚本。 + + + + + + 配置文件举例 + + 下面是一个用于构建定制的 NanoBSD 映像的完整例子: + + NANO_NAME=custom +NANO_SRC=/usr/src +NANO_KERNEL=MYKERNEL +NANO_IMAGES=2 + +CONF_BUILD=' +NO_KLDLOAD=YES +NO_NETGRAPH=YES +NO_PAM=YES +' + +CONF_INSTALL=' +NO_ACPI=YES +NO_BLUETOOTH=YES +NO_CVS=YES +NO_FORTRAN=YES +NO_HTML=YES +NO_LPR=YES +NO_MAN=YES +NO_SENDMAIL=YES +NO_SHAREDOCS=YES +NO_EXAMPLES=YES +NO_INSTALLLIB=YES +NO_CALENDAR=YES +NO_MISC=YES +NO_SHARE=YES +' + +CONF_WORLD=' +NO_BIND=YES +NO_MODULES=YES +NO_KERBEROS=YES +NO_GAMES=YES +NO_RESCUE=YES +NO_LOCALES=YES +NO_SYSCONS=YES +NO_INFO=YES +' + +FlashDevice SanDisk 1G + +cust_nobeastie() ( + touch ${NANO_WORLDDIR}/boot/loader.conf + echo "beastie_disable=\"YES\"" >> ${NANO_WORLDDIR}/boot/loader.conf +) + +customize_cmd cust_comconsole +customize_cmd cust_install_files +customize_cmd cust_allow_ssh_root +customize_cmd cust_nobeastie + + + + + 更新 NanoBSD + + 更新 NanoBSD 相对而言较为简单: + + + + 和之前一样构建新的 NanoBSD 映像文件。 + + + + 将新的映像放入正运行的 + NanoBSD 设备中的一个未用的分区。 + + 与之前最初安装 NanoBSD 的步骤相比, + 这一步骤最重要的区别在于这次不应使用 _.disk.full 文件 + (它包含整个盘的映像), + 而应安装 _.disk.image 映像 (这个文件中, + 只包含一个系统分区)。 + + + + 重新启动, 并从新安装的分区中启动系统。 + + + + 如果一切顺利的话, 升级工作就完成了。 + + + + 如果发生了任何问题, 则可以从先前的分区启动 + (其中包含了旧的、 可用的映像), 来尽可能快地恢复系统功能。 + 接下来可以修正新联编的版本中存在的问题, 并重复前述步骤。 + + + + 要在正在运行的 + NanoBSD 系统中安装新的映像, 可以使用位于 + /root 目录的 + updatep1 或 + updatep2 脚本, + 具体使用哪一个脚本, 取决于正在运行的系统位于那个分区。 + + 随时提供新 NanoBSD 映像所提供的服务, + 以及采用的传输方法的不同, 您可以参考并使用下列三种方式之一: + + + 使用 &man.ftp.1; + + 如果传输速度是第一要务, + 采用下面的例子: + + &prompt.root; ftp myhost +get _.disk.image "| sh updatep1" + + + + 使用 &man.ssh.1; + + 如果更倾向于安全传输, 应参考下面的例子: + + &prompt.root; ssh myhost cat _.disk.image.gz | zcat | sh updatep1 + + + + 使用 &man.nc.1; + + 如果远程主机既不提供 + &man.ftp.1; 服务, 也不提供 &man.sshd.8; 服务: + + + + 开始时, 在提供映像的主机上开启 TCP 监听, + 并令其将映像文件发给客户机: + + myhost&prompt.root; nc -l 2222 < _.disk.image + + + 请确认您所使用的端口没有通过防火墙阻止来自 + NanoBSD 客户机的联接请求。 + + + + 连接到提供新映像服务的主机, 并执行 + updatep1 脚本: + + &prompt.root; nc myhost 2222 | sh updatep1 + + + + + +