debian无盘服务器,配置overlay(overlayfs)根目录挂载构建debian无盘工作站(示例代码)...

据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可以解析所有内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值