使用mkosi构建RHEL和RHEL UBI镜像(3)
使用mkosi构建RHEL和RHEL
好的,我们现在有一个镜像,镜像中包含了一些来自 RHEL UBI 软件包的内容。我们如何在其上加点我们自己的东西呢?
使用自己的文件扩展镜像
有几种方法可以扩展镜像,包括从头开始编译某些东西。但在那之前,让我们做一些更简单的事情,将一个现成的文件系统注入到镜像中:
$ mkdir -p mkosi.extra/srv/www/content
$ cat >mkosi.extra/srv/www/content/index.html <<'EOF'
<h1>Hello, World!</h1>
EOF
现在,该镜像将包含/srv/www/content/index.html。
这种方法用于注入额外的配置或简单的程序。
从源代码构建
现在让我们过一遍完整流程,从源代码构建一些东西。例如,一个简单的 Meson 项目,有一个单独的 C 文件:
$ cat >hello.c <<'EOF'
#include <stdio.h>
int main(int argc, char **argv) {
char buf[1024];
FILE *f = fopen("/srv/www/content/index.html", "re");
size_t n = fread(buf, 1, sizeof buf, f);
fwrite(buf, 1, n, stdout);
fclose(f);
return 0;
}
EOF
$ cat >meson.build <<'EOF'
project('hello', 'c')
executable('hello', 'hello.c',
install: true)
EOF
$ cat >mkosi.build <<'EOF'
set -ex
mkosi-as-caller rm -rf "$BUILDDIR/build"
mkosi-as-caller meson setup "$BUILDDIR/build" "$SRCDIR"
mkosi-as-caller meson compile -C "$BUILDDIR/build"
meson install -C "$BUILDDIR/build" --no-rebuild
EOF
$ chmod +x mkosi.build
总结一下:我们有一些源代码(hello.c),一个构建系统配置文件(meson.build),以及一个由 mkosi 调用的胶水脚本(mkosi.build)。对于实际的项目,也会有相同的元素,只是更加复杂。
这个脚本需要一些解释。mkosi 在创建镜像时使用用户命名空间。这允许包管理器(例如dnf)安装由不同用户拥有的文件,即使它是由一个普通非特权用户调用的。我们使用mkosi-as-caller切换回调用者以进行编译。这样,在$BUILDDIR下编译期间创建的文件将由调用者拥有。
现在让我们使用我们的程序构建镜像。与之前的调用相比,我们需要额外的软件包:meson、gcc。由于我们现在有了构建脚本,mkosi 将执行两个构建阶段:首先创建一个构建镜像,并在其中调用构建脚本,将安装产物存储在一个临时目录中,然后构建最终镜像,并将安装产物注入其中。(mkosi 设置$DESTDIR,meson install自动使用$DESTDIR,因此并不需要我们明确指定。)
$ mkosi \
-d rhel-ubi \
-t disk \
-p bash,coreutils,util-linux,systemd,rpm \
--autologin \
--build-package=meson,gcc \
--build-dir=mkosi.builddir \
--build-script=mkosi.build \
-f
此时,我们有了带有自定义载荷的镜像
相关阅读
-
蓝屏代码0x00000e4 蓝屏代码0x00000f4解决教程
为网友们解答蓝屏代码0x00000f4解决教程的相关知识,关于蓝屏代码0x00000e4 蓝屏代码0x00000f4解决教程,接下来一起来看看吧。 有的win10系统用户在开机的过程中出现蓝屏代码0x00000f4的问题,这可
-
win10提示框关闭方法 windows10如何关闭提示
小编为网友们解答win10提示框关闭方法的方法内容,关于win10提示框关闭方法 windows10如何关闭提示,具体内容如下: win10在打开一些软件时经常会弹出提示框,非常烦人。我们可以在控制面板的
-
共享文件怎么设置不能修改 win7更改了共享设置不能保存解决教程
今天小编介绍win7更改了共享设置不能保存解决教程的相关话题,关于共享文件怎么设置不能修改 win7更改了共享设置不能保存解决教程,接下来小编为网友介绍。 这两天有小伙伴在使用win7的文
-
win8无线网络不见了怎么办 关于win8设置无线网络的方法
小编为大家讲一讲win8无线网络不见了怎么办和关于win8设置无线网络的方法的IT知识,接下来IT袋带大家一起了解。 不能搜索到无线信号或找不到无线网络 主机在需要使用无线网络时,发现搜索


