5 创建只读根文件系统
假设出于安全原因,需要禁用目标设备根文件系统的写权限,即使用只读根文件系统; 或者设备的操作系统本来就运行在只读存储设备上。在这两种情况下,都可以定制 镜像以支持相应行为。
备注
要支持只读根文件系统,系统和应用程序就不能尝试写入根文件系统。 必须配置目标系统的所有部分,使其写入其他位置,或者在尝试写入根文件 系统时妥善处理失败。
5 创建根文件系统
要创建只读根文件系统,只需为镜像添加 "read-only-rootfs" 功能,通常有两种 方式。第一种是在镜像配方文件中,通过 IMAGE_FEATURES 变量添加 "read-only-rootfs" 镜像功能:
IMAGE_FEATURES += "read-only-rootfs"
另一种是在发行版的 configuration file 中,通过对应的 EXTRA_IMAGE_FEATURES 变量添加同一功能,例如:
EXTRA_IMAGE_FEATURES = "read-only-rootfs"
这些变量的用法详见 “通过自定义 IMAGE_FEATURES 和 EXTRA_IMAGE_FEATURES 定制镜像” 一节。变量本身的说明见 IMAGE_FEATURES 和 EXTRA_IMAGE_FEATURES。
5 安装后脚本与只读根文件系统
务必确保镜像中所有软件包的安装后脚本(pkg_postinst )都能在主机系统上
构建并创建根文件系统时运行。这些脚本不能留到目标设备首次启动时执行。
启用 "read-only-rootfs" 功能后,构建系统会确保所有安装后脚本在创建文件
系统时成功完成。如果仍有脚本需要在根文件系统创建之后运行,构建就会立即
失败。这些构建时检查使问题在构建阶段暴露,避免目标设备随后在首次启动时
才发生故障。
Yocto Project 默认构建系统生成的大多数常见安装后脚本,都经过设计,可以 在创建根文件系统时运行,例如建立字体缓存的安装后脚本。不过,如果创建并 添加了自定义脚本,就需要确保它们也能在创建文件系统时运行。
以下是导致安装后脚本无法在创建根文件系统时运行的常见问题:
5 可写区域
启用 "read-only-rootfs" 功能后,目标设备运行时任何写入根文件系统的尝试
都会失败。因此,必须将执行这类写操作的进程和应用程序配置为写入具有写权限
的目录,例如 /tmp 或 /var/run。