From e2073d784e7921b0eb1bb4292b44d49aa37197bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=9A=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D1=80=D0=B5=D0=B2?= Date: Mon, 18 Nov 2024 09:08:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20extentions/README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extentions/README.md | 121 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/extentions/README.md b/extentions/README.md index 7a46ced..133db9f 100644 --- a/extentions/README.md +++ b/extentions/README.md @@ -333,6 +333,127 @@ ghcr.io/siderolabs/nonfree-kmod-nvidia-production:550.90.07-v1.8.2@sha256:86abd0 * util-linux(util-linux-tools) - копирование tar-файла исходного кода с www.kernel.org с компиляций кода (configure, make) +## Предложения по разворачиванию расширений (extentions) в ALTLinux + +В ALTlinux предлагается разворачивать ВСЕ расшипения из RPM-пакетов путем установки их в базовый образ `registry.altlinux.org/base/base` с последующим копированием бинарных файлов и файлов конфигурации в соответствующий каталог `/rootfs/` (эту часть можно извлечь из стандартного пакета `pkg.yaml`). +В этом случае корректируется только часть `steps.install` файл `pkg.yaml` talos-"пакета" (с возможным удалением предыдущих шагов). +Все отсальные файлы описания talos-пакета остаются неизменными. + +Пример развлоачивания пакета `crun`. + +- описание стандартного разворачивания +``` +name: crun +variant: scratch +shell: /toolchain/bin/bash +dependencies: + - stage: base +steps: + - sources: + # {{ if eq .ARCH "aarch64" }} This in fact is YAML comment, but Go templating instruction is evaluated by bldr + - url: https://github.com/containers/crun/releases/download/{{ .CRUN_VERSION }}/crun-{{ .CRUN_VERSION }}-linux-arm64-disable-systemd + destination: crun + sha256: 44b06c0ab2cc79e4bc1274e5f51cb3dbdf450c4317795f37e8a0c48a3f1924c0 + sha512: 7a4fb10c7576fd1d4fae11331554d2d79e0d72be7a4466ef89046cc4eb364af44158fbae87287a12b4e675e11f708a5dd4eca46d3bf32b4d4dcaf8227f1cc962 + # {{ else }} This in fact is YAML comment, but Go templating instruction is evaluated by bldr + - url: https://github.com/containers/crun/releases/download/{{ .CRUN_VERSION }}/crun-{{ .CRUN_VERSION }}-linux-amd64-disable-systemd + destination: crun + sha256: 549e0b55ac278cb4d50bfc03c75da8d7f05f6232a35b15a488e8b4bef7ba6e38 + sha512: fa0538c1acd2a1297f170db752fe7872480bd89fdd1a0c20f7ba9b389fc2f639836f71fb14de0d718e9a2651fbf7f3f0c6764b95956765e057ca69609c217848 + # {{ end }} This in fact is YAML comment, but Go templating instruction is evaluated by bldr + prepare: + - | + sed -i 's#$VERSION#{{ .VERSION }}#' /pkg/manifest.yaml + install: + - | + mkdir -p /rootfs/usr/local/bin + cp -av crun /rootfs/usr/local/bin/crun + chmod +x /rootfs/usr/local/bin/crun + + - | + mkdir -p /rootfs/etc/cri/conf.d + cp /pkg/crun.part /rootfs/etc/cri/conf.d/crun.part + test: + - | + mkdir -p /extensions-validator-rootfs + cp -r /rootfs/ /extensions-validator-rootfs/rootfs + cp /pkg/manifest.yaml /extensions-validator-rootfs/manifest.yaml + /extensions-validator validate --rootfs=/extensions-validator-rootfs --pkg-name="${PKG_NAME}" + +finalize: + - from: /rootfs + to: /rootfs + - from: /pkg/manifest.yaml + to: / +``` + +- описание разворачивания в `ALTLinux`: +``` +name: crun +variant: scratch +shell: /toolchain/bin/bash +dependencies: + - stage: base + - image: "registry.altlinux.org/alt/alt" +steps: + - prepare: + - | + sed -i 's#$VERSION#{{ .VERSION }}#' /pkg/manifest.yaml + install: + - | + apt-get update + apt-get install -y crun + + - | + mkdir -p /rootfs/usr/local/bin + cp -av /usr/bin/crun /rootfs/usr/local/bin/crun + chmod +x /rootfs/usr/local/bin/crun + + - | + mkdir -p /rootfs/etc/cri/conf.d + cp /pkg/crun.part /rootfs/etc/cri/conf.d/crun.part + +finalize: + - from: /rootfs + to: /rootfs + - from: /pkg/manifest.yaml + to: / +``` + +В данном случае из стандартного описания +- удаляется шаг `steps.sources`; +- в шаг `install` добавляется обновление репозитория и установка пакета `crun`; +- во шаге копирования бинарного кода меняется тропа исходного бинарного файла. + +В итоге оба вариант сборки цели `local-crun` получают аналогичные деревья файловой системы: +``` +_out/ +└── build + ├── linux_amd64 + │   ├── manifest.yaml + │   └── rootfs + │   ├── etc + │   │   └── cri + │   │   └── conf.d + │   │   └── crun.part + │   └── usr + │   └── local + │   └── bin + │   └── crun + └── linux_arm64 + ├── manifest.yaml + └── rootfs + ├── etc + │   └── cri + │   └── conf.d + │   └── crun.part + └── usr + └── local + └── bin + └── crun +``` + + ## Ссылки - [Talos Linux System Extensions](https://github.com/siderolabs/extensions#installing-extensions)