【问题标题】:How to create and deploy a customized embedded linux image如何创建和部署定制的嵌入式 Linux 映像
【发布时间】:2016-10-12 07:36:56
【问题描述】:

我有一个定制的 Linux 文件系统,在根文件系统中有一些二进制文件和新文件夹。此 Linux 文件系统是为小型板机创建的。

目前,我将自定义文件系统的根文件夹压缩为 tar.gz 文件。有了这个 tar.gz 文件,我可以将它分享给我的朋友。然后这个文件必须被提取到他们的 SD 卡。使用这种方法,他们还可以更新库或二进制文件以进行测试。 但是,这种机制(创建和部署)需要很长时间。

我的问题是: 1. 如何改进创建和部署定制的 linux 镜像? 2. 如果我看到 linux 发行版,它们使用 .iso 或 .img 格式。使用 .iso 或 .img 而不是 tar.gz 或 zip 文件的原因是什么?

谢谢。

【问题讨论】:

    标签: linux image filesystems embedded


    【解决方案1】:

    您有两个步骤可以加快速度:

    1. 创建可与您的朋友分享的图像
    2. 在板上部署映像以对其进行测试

    1。步骤

    • 尽可能实现自动化。你甚至可以设置一个Jenkins server,它应该能够自动化任何看起来像重复性工作的事情。 (编译、压缩、上传或发送图片给朋友)

    • 使用所有内核压缩图像。 AFAIK gzip 只使用一个核心。 pigz 应该更快地压缩/解压缩

    2。步骤:从 NFS 运行您的 rootfs。

    这是实时节省,因为您不再需要将 rootfs 复制到 sdcard:

    如果您的引导加载程序支持它,请使用 nfs/tftp 引导。然后,您的主板直接从网络安装而不是 sdcard 启动。我不知道你使用的是哪个引导加载程序,但 u-boot 支持它,其他人可能也支持。

    【讨论】:

    • 感谢@Fl0v0 的建议! pigz 的第一步有帮助。我以前不知道。但是对于第 2 步,板机需要 sdcard 才能启动(如 Raspberry-Pi)。
    • @why2 从 nfs 引导应该是可能的。例如,请参阅raspberrypi.stackexchange.com 上的这个问题。这也可能适用于您的董事会。我使用 jenkins 进行了设置,它编译了整个 rootfs 并一键将其放在 nfs 共享上。我所要做的就是重置主板以从新系统启动。
    【解决方案2】:

    这取决于确切需要更新的内容。如果这是整个文件系统总是在变化 - 那么只需分发压缩的 img (例如通过 xz )。如果这是系统的一小部分 - 只需使用包管理器,即将此部分提取到包中,然后使用标准发行版工具创建这个新包并仅分发它。

    因此,如果您的 SD 卡映像具有固定大小 - 您可以使用 rsync/xdelta 仅分发更改,但它们的效率取决于确切的更改百分比。

    【讨论】:

    • 通常情况下,我希望将整个文件系统作为映像交付和分发。你的意思是只使用tar xz?您指的是哪种标准发行版工具?图像大小可能因库和新文件而异。
    • 标准发行版工具通常是 dpkg 或 rpm。最好的方法是使用基于 debian 的镜像(它可以小到 128M)和/或自己的存储库。因此用户可以通过网络进行更新,发布类似 'apt update; apt升级”。
    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 2015-10-15
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多