2.1. NanoBSD 的设计
一旦将映像存入介质, 就可以用它来引导 NanoBSD了。 默认情况下, 大容量存储器会划分为三个区:
-
两个映像区:
code#1
和code#2
。 -
一个配置文件区, 运行环境中, 可以将其挂接到
/cfg
目录下。
这些分区默认情况下以只读方式挂接。
/etc
和/var
目录均为md(4) (malloc) 盘。
配置文件分区保存在/cfg
目录。它包含了用于 /etc
目录的文件, 在启动之后暂时以只读方式挂接。 因此,在需要从 /etc
向/cfg
目录复制所进行的、希望在重启时保持不变的配置时, 需要进行一些额外的操作。
/etc/resolv.conf
中进行需要保持的修改
#
vi /etc/resolv.conf
[...]
#
mount /cfg
#
cp /etc/resolv.conf /cfg
#
umount /cfg
注意:
只有在系统启动过程中, 以及需要修改配置文件的场合, 才需要挂接包含 /cfg
的那个分区。
在任何时候都保持挂接 /cfg
不是一个好主意, 特别是当您把 NanoBSD 放在不适合进行大量写操作的分区时 (由于文件系统的同步进程会定期向系统盘写一些数据)。
2.2. 构建 NanoBSD 映像
NanoBSD 映像是通过使用非常简单的nanobsd.sh
shell 脚本来构建的, 这个脚本可以在
目录中找到。 这个脚本建立的映像文件, 可以用 dd(1) 工具复制到存储介质上。/usr
/src/tools/tools/nanobsd
构建NanoBSD 映像所需的命令是:
#
cd /usr/src/tools/tools/nanobsd
#
sh nanobsd.sh
#
cd /usr/obj/nanobsd.full
#
dd if=_.disk.full of=/dev/da0 bs=64k
2.3. 定制 NanoBSD 映像
这可能是 NanoBSD 最为重要,同时也是您最感兴趣的功能。 同时, 您在开发NanoBSD 应用时,这也是相当耗时的过程。
执行下面的命令将使nanobsd.sh
从当前目录中的myconf.nano
文件读取配置:
#
sh nanobsd.sh -c myconf.nano
定制过程包含两步:
-
配置选项
-
定制函数
2.3.1. 配置选项
通过对配置进行设置, 可以配置用以传递给 NanoBSD 构建过程中 buildworld
和 installworld
阶段的联编和安装选项, 以及 NanoBSD 的主构建过程中的选项。 通过使用这些选项可以削减系统的尺寸, 使之能够放入 64MB 的存储。 您还可以进一步通过这些选项来削减 FreeBSD, 直到它只包含内核以及两三个用户环境文件为止。
配置文件中包含用以代替默认值的配置选项。 最重要的语句包括:
-
NANO_NAME
— 本次构建的名称 (用于创建工作目录的名字)。 -
NANO_SRC
— 用以联编和构建映像的源码树的位置。 -
NANO_KERNEL
— 用以联编内核的配置文件的名字。 -
CONF_BUILD
— 用于传递给buildworld
构建阶段的选项。 -
CONF_INSTALL
— 用于传递给installworld
构建阶段的选项。 -
CONF_WORLD
— 用以传递给buildworld
和installworld
这两个构建阶段的选项。 -
FlashDevice
— 定义所用的介质类型。 要了解进一步的细节, 请参考FlashDevice.sub
文件。
2.3.2. 定制函数
通过在配置文件中使用 shell 函数可以进一步微调 NanoBSD。 下面的例子展示了定制函数的基本模式:
下面是一个更贴近实际的例子, 它将默认的 /etc
目录尺寸, 从 5MB 调整为 30MB:
除此之外, 还有几个默认的预定义定制函数:
2.3.3. 安装预编译软件包
通过增加自定义的函数, 可以在 NanoBSD 增加预编译的软件包。 下面的函数会添加位于 /usr/src/tools/tools/nanobsd/packages
的全部预编译软件包:
2.3.4. 配置文件举例
下面是一个用于构建定制的 NanoBSD 映像的完整例子:
2.4. 更新 NanoBSD
更新 NanoBSD 相对而言较为简单:
-
和之前一样构建新的 NanoBSD 映像文件。
-
将新的映像放入正运行的 NanoBSD 设备中的一个未用的分区。
与之前最初安装 NanoBSD 的步骤相比, 这一步骤最重要的区别在于这次不应使用
_.disk.full
文件 (它包含整个盘的映像), 而应安装_.disk.image
映像 (这个文件中, 只包含一个系统分区)。 -
重新启动, 并从新安装的分区中启动系统。
-
如果一切顺利的话, 升级工作就完成了。
-
如果发生了任何问题, 则可以从先前的分区启动 (其中包含了旧的、 可用的映像), 来尽可能快地恢复系统功能。 接下来可以修正新联编的版本中存在的问题, 并重复前述步骤。
要在正在运行的NanoBSD 系统中安装新的映像, 可以使用位于/root
目录的updatep1
或updatep2
脚本,具体使用哪一个脚本, 取决于正在运行的系统位于那个分区。
随时提供新 NanoBSD 映像所提供的服务,以及采用的传输方法的不同, 您可以参考并使用下列三种方式之一: