千家信息网

配置overlay(overlayfs)根目录挂载构建deb

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,据wikipedia描述overlayfs在2014年融入linux内核,其轻量和易用特性已在openwrt中应用,但在debian发行版本中还没有直接使用overlayfs挂载根目录的启动选项。增加
千家信息网最后更新 2025年02月02日配置overlay(overlayfs)根目录挂载构建deb


据wikipedia描述overlayfs在2014年融入linux内核,其轻量和易用特性已在openwrt中应用,但在debian发行版本中还没有直接使用overlayfs挂载根目录的启动选项。增加启动选项需对启动initrd进行相应改造,debian的initrt脚本已经预留了应用接口,使得应用overlayfs和无盘(或简盘)工作变得相对简单。


构建无盘工作站使用

TFTP+PXE启动服务器 <=== QEMU客户端

进行改造和测试


因需要在已安装系统中改造initrd,首先分析mkinitramfs脚本,可以得到启动脚本模板init使用的是/usr/share/initramfs-tools/init,进而分析该init脚本。

init脚本中挂载根目录片段

:
:
log_begin_msg "Mounting root file system"
# Always load local and nfs (since these might be needed for /etc or
# /usr, irrespective of the boot script used to mount the rootfs).
. /scripts/local
. /scripts/nfs
. /scripts/${BOOT}
parse_numeric ${ROOT}
maybe_break mountroot
mount_top
mount_premount
mountroot
log_end_msg
:
:

由此,在启动服务器上构建TFTP和PXE启动环境,配置PXE脚本启动部分可以使用BOOT参数传递应用overlay

在scripts子目录下需要增加overlay脚本文件,其中定义mountroot函数。

无盘工作使用tmpfs内存文件作为根目录。

:
:

#Use general mapping functions
. /scripts/functions

#Load related kernel modules
modprobe overlay
modprobe squashfs
modprobe tmpfs

#Setup overlay base directory
mkdir -p /overlay
mount -t tmpfs tmpfs /overlay -o size=4G
:
:

overlay需要底层根目录作为只读的基础结构,在openwrt中使用flash区块,而在无盘环境内可以考虑多种选择,直接使用initrt的根目录,nfs挂载,本地squash镜像,远程squash镜像。

为保证无盘环境,而因initrd镜像的系统功能是不完整的,因debian的initrt环境下已有tftp客户端,在这里使用远程squash镜像方式。

(在单网卡环境下,nfs根挂载和overlayfs存在耦合性问题,并造成操作系统网络连接和应用系统存在配置干扰,造成系统网络不完整或不稳定,如需nfs根挂载,需使用至少双网卡方式,减少基础系统连接和应用网络的依赖和影响。因此种方式增加配置复杂程度且与overlay主题无关,不选择使用)

可以将squash镜像放置在pxe的tftp服务器上,debian(stretch)的最简安装系统后大约使用1.5G硬盘,squash镜像可以压缩到200M,在100M网络环境下传输30s左右。

补充后续脚本

:
:

#Setup overlay mapping directories
mkdir -p /overlay/lower
mkdir -p /overlay/upper
mkdir -p /overlay/work
:
:
#Recieve squash image and mount
tftp -g -l /overlay/$SQUASHIMAGE -r $REMOTESQUASHIMAGE $PXEHOST
mount -t squashfs /overlay/$SQUASHIMAGE /overlay/lower
:
:

debian的initrd环境中使用/root作为根挂载的准备目录,后续/dev,/proc,/sys等系统配置已有相应脚本,所以仅在overlay脚本中映射挂载/root即可

:
:
mount -t overlay overlay /root -o lowerdir=/overlay/lower,upperdir=/overlay/upper,workdir=/overlay/work
:
:


问题记录:

- 制作squash镜像的时候需要将原来系统的/etc/fstab的根目录和swap条目删除,stretch版本系统使用systemd,虽不影响使用,缺失映射盘会有很长超时等待

- 制作initrd镜像时,如需对镜像内容确认,可以恢复至本地文件夹,但最近版initrd使用了合成模式(不太明白原因),导致如果单纯做cpio的输出仅包含kernel/x86/microcode下面的内容,使用合成命令(cpio -id ; zcat | cpio -id) < ../$OUTFILE可以解析所有内容

系统 脚本 镜像 环境 根目录 应用 无盘 配置 网络 内容 文件 方式 服务器 工作 改造 服务 基础 客户 客户端 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库大作业的详细过程 1000米国标标准数据库 计算机网络技术天津现代 网络安全就是黑客吗吗 我的世界大更新服务器会重置吗 保护网络安全的主要手段有哪些 cod战区哪个服务器匹配快 炉石传说服务器炸了2022 网络安全领导小组会议记录 软件开发教学平台教学视频 对网络安全的感悟 贵州分布式服务器虚拟主机 网络安全就业策划书800字 数据库基础与应用形考四 网络安全法推动 黄浦区市场软件开发定制要求 软件开发技术服务价格标准 深圳快一步软件开发有限公司 hi3516a 软件开发 网络安全防护设备 万能网络安全钥匙下载 山东万创网络技术有限公司 软件开发女生适合学那个 杭州市的软件开发公司 北京趣通网络技术有限公司 为什么酷酷跑连接服务器失败 安徽外贸行业进口软件代理服务器 宁波煜庭互联网科技信息 网络安全与信息化课程教材 邮储总行软件开发中心
0