NanoBSD


NanoBSD
又一个来自FreeBSD的项目,它裁减自FreeBSD以放在Compact Flash card或者其他大容量存储器中。它是FreeBSD源代码树的一部分,参见/usr/src/tools/tools/nanobsd




1 NanoBSD 简介

  NanoBSD 是 Poul-Henning Kamp 目前正在开发的一项工具。 它可以用来创建用于嵌入式应用的 FreeBSD 系统映像, 以便配合袖珍闪存 (Compact Flash) 卡 (或其他大容量存储介质) 使用。

   这一工具也可以用来构建定制的安装映像, 以简化通常称为 “计算设备 (computer appliances)” 的系统的安装和维护工作。 计算设备通常在产品中将捆绑硬件和软件, 或者换言之, 所有的应用程序都是预先装好的。 这些设备可以直接插到暨存的网络中, 并 (几乎是) 立即投入使用。

  NanoBSD 提供的功能包括:

可以和 FreeBSD 一样使用 Ports 和预编译包── 所有的应用程序都可以在 NanoBSD 映像中直接使用, 而方式与 FreeBSD 完全一样。

不减少功能 ── 能够使用 FreeBSD 做的任何工作, 都可以在 NanoBSD 中使用, 除非您在创建 NanoBSD 映像时, 明确地删去它们。

所有对象在运行时均是只读的 ── 可以安全地拔掉电源插销。 在系统非正常关闭之后, 无需运行 fsck(8)。

便于联编和定制 ── 只需使用一个 shell 脚本和一个配置文件, 您可以很容易地裁减和定制适于任意需求的映像。


2 如何使用 NanoBSD

2.1 NanoBSD 的设计

  一旦将映像存入介质, 就可以用它来引导 NanoBSD 了。 默认情况下, 大容量存储器会划分为三个区:

两个映像区: code#1 和 code#2。

一个配置文件区, 运行环境中, 可以将其挂接到 /cfg 目录下。

  这些分区默认情况下以只读方式挂接。

  /etc 和 /var 目录均为 md(4) (malloc) 盘。

  配置文件分区保存在 /cfg 目录。 它包含了用于 /etc 目录的文件, 在启动之后暂时以只读方式挂接。 因此, 在需要从 /etc 向 /cfg 目录复制所进行的、 希望在重启时保持不变的配置时, 需要进行一些额外的操作。

例 1. 在 /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 脚本来构建的, 这个脚本可以在 /usr/src/tools/tools/nanobsd 目录中找到。 这个脚本建立的映像文件, 可以用 dd(1) 工具复制到存储介质上。

  构建 NanoBSD 映像所需的命令是:

# cd /usr/src/tools/tools/nanobsd
# sh nanobsd.sh
# cd /usr/obj/nanobsd.full
# dd if=_.disk.full of=/dev/da0 bs=64k

进入 NanoBSD 构建脚本的主目录。

开始构建过程。

进入构建好的映像文件所在的目录。

在存储介质上安装 NanoBSD。


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。 下面的例子展示了定制函数的基本模式:
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 设备上禁止 getty(8) (/dev/ttyv* 设备节点) 并启用串口 COM1 作为系统控制台。

cust_allow_ssh_root ── 允许 root 通过 sshd(8) 登录。

cust_install_files ── 从 nanobsd/Files 目录中安装文件, 这包含一些实用的系统管理脚本。
2.3.3 配置文件举例

  下面是一个用于构建定制的 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
2.4 更新 NanoBSD

  更新 NanoBSD 相对而言较为简单:

和之前一样构建新的 NanoBSD 映像文件。

将新的映像放入正运行的 NanoBSD 设备中的一个未用的分区。

与之前最初安装 NanoBSD 的步骤相比, 这一步骤最重要的区别在于这次不应使用 _.disk.full 文件 (它包含整个盘的映像), 而应安装 _.disk.image 映像 (这个文件中, 只包含一个系统分区)。

重新启动, 并从新安装的分区中启动系统。

如果一切顺利的话, 升级工作就完成了。

如果发生了任何问题, 则可以从先前的分区启动 (其中包含了旧的、 可用的映像), 来尽可能快地恢复系统功能。 接下来可以修正新联编的版本中存在的问题, 并重复前述步骤。

  要在正在运行的 NanoBSD 系统中安装新的映像, 可以使用位于 /root 目录的 updatep1 或 updatep2 脚本, 具体使用哪一个脚本, 取决于正在运行的系统位于那个分区。

  随时提供新 NanoBSD 映像所提供的服务, 以及采用的传输方法的不同, 您可以参考并使用下列三种方式之一:
2.4.1 使用 ftp(1)

  如果传输速度是第一要务, 采用下面的例子:
# ftp myhost
get _.disk.image "| sh updatep1"
2.4.2 使用 ssh(1)

  如果更倾向于安全传输, 应参考下面的例子:
# ssh myhost cat _.disk.image.gz | zcat | sh updatep1

2.4.3 使用 nc(1)

  如果远程主机既不提供 ftp(1) 服务, 也不提供 sshd(8) 服务:

开始时, 在提供映像的主机上开启 TCP 监听, 并令其将映像文件发给客户机:
myhost# nc -l 2222 < _.disk.image

注意: 请确认您所使用的端口没有通过防火墙阻止来自 NanoBSD 客户机的联接请求。

连接到提供新映像服务的主机, 并执行 updatep1 脚本:
# nc myhost 2222 | sh updatep1

标题基于SpringBoot+Vue的社区便民服务平台研究AI更换标题第1章引言介绍社区便民服务平台的研究背景、意义,以及基于SpringBoot+Vue技术的研究现状和创新点。1.1研究背景与意义分析社区便民服务的重要性,以及SpringBoot+Vue技术在平台建设中的优势。1.2国内外研究现状概述国内外在社区便民服务平台方面的发展现状。1.3研究方法与创新点阐述本文采用的研究方法和在SpringBoot+Vue技术应用上的创新之处。第2章相关理论介绍SpringBoot和Vue的相关理论基础,以及它们在社区便民服务平台中的应用。2.1SpringBoot技术概述解释SpringBoot的基本概念、特点及其在便民服务平台中的应用价值。2.2Vue技术概述阐述Vue的核心思想、技术特性及其在前端界面开发中的优势。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue如何有效整合,以提升社区便民服务平台的性能。第3章平台需求分析与设计分析社区便民服务平台的需求,并基于SpringBoot+Vue技术进行平台设计。3.1需求分析明确平台需满足的功能需求和性能需求。3.2架构设计设计平台的整体架构,包括前后端分离、模块化设计等思想。3.3数据库设计根据平台需求设计合理的数据库结构,包括数据表、字段等。第4章平台实现与关键技术详细阐述基于SpringBoot+Vue的社区便民服务平台的实现过程及关键技术。4.1后端服务实现使用SpringBoot实现后端服务,包括用户管理、服务管理等核心功能。4.2前端界面实现采用Vue技术实现前端界面,提供友好的用户交互体验。4.3前后端交互技术探讨前后端数据交互的方式,如RESTful API、WebSocket等。第5章平台测试与优化对实现的社区便民服务平台进行全面测试,并针对问题进行优化。5.1测试环境与工具介绍测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值