使用OSbuild构建镜像思路

先问一下new bing 怎么说

先去官网看一下怎么使用osbuild

1.安装osbuild

按照官方文档说先安装osbuild和其他必要的工件

2.osbuild工作流程

贴一下osbuild的开发者文档地址:Developer guide - Image Builder

3.准备工作

可能有些人还是有点懵不知到该如何构建一个具体的系统镜像所以又问了一下new bing 以下是他给出的代码样例

#!/usr/bin/bash
​
set -euxo pipefail
​
WORKDIR=/tmp/osbuild-demo
IMAGE=${WORKDIR}/image.raw
REPO=${WORKDIR}/repo
TREE=${WORKDIR}/tree
​
rm -rf ${WORKDIR}
mkdir -p ${REPO} ${TREE}
​
# 创建一个简单的 dnf 仓库
dnf \
    --installroot=${TREE} \
    --releasever=34 \
    --setopt=cachedir=${REPO} \
    --repo=fedora \
    --repo=updates \
    download \
    bash coreutils
​
createrepo_c ${TREE}
​
# 构建 Fedora 镜像
cat >${WORKDIR}/manifest.json <<EOF
{
  "version": "2",
  "sources": {
    "org.osbuild.dnf": {
      "items": {
        "fedora": {
          "baseurl": "file://${TREE}",
          "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHx9Z7p4j4zOJn8N5umy2N85\nKbBQzZS6hXjMm9eLlHKHt3ix5Qy/eONYi5daPej0yLIXX8w2OY4d8QojS+YRlIcB\nxsm7axNzp0vA+MsRcQTdAwZrR+0yWm5OslW9wG96Ca/U6FSuK8nkcRKKKmleQj2B\nTzUcakyU3EFkXsZnJwTIBx4KdshzauYzUBQ7M00YkzTEbN0buAnqGZKjPfuyUWjm\nUzMSTgqJbbZqLWxmi4rTmJ5+DwayH52zLvUvM9aFCsGcyS9IcL/1qDhEzwXPEbfe\n3OwYm2rJ1bGoVd9uZ3SZcMFP5CvBhtwXoFZPoCg5FIEB51CRG3tavJot7W5aJ3pk\ni6Ba09nehacLxVz+PZtF/mhfwDzh1y1ijhCYPQ2xv6rxD+gJ/wFRD7dAsb2ow7EI\nI8o3LqfEvR/DpkSY8ZLMGNlIycxyNdbO84xxA/rvxmN6zfTsn/CgfLwhvXXkVKV7\nnUVhaMXTAa6Lghggv8QTkcW0vkQEsdIBhvaVkfVlCeiMN+l6DdQEdRdKhIQBhTfU\n6gRg0x8TqcWtNJcF7Nt16OJXj+ldCd80epTxBu0AC6rmtOyCNzcrpANhiQARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/9kriL43vd3+0DNMeA82n2v9mSR2PQqKny39xNpMlDx3sez\nD8yzTDe0fpMWCiybc5RikJu4Pw8uuLnuxYQiUwsS65FosbHbscAesiGJR39eCOKa\n3iWnmlRktnarNrGCttmNMRmrKms1uUfrGNPYedTJ9+ZyTf2zHl2Wb0cSkG7XCZxk\nkqJNcLkzyH2ms36aJLiwC20oh5yHD6PV5bWc2M+ETBjUjLfU0dcz/rMfNUIDHvBo\nm8rBmKq0UzNazanGzqZ1OL7QB6kWDbdQZidzdHgZdquDZNoEVA1eZsufY3LWicvC\n+gQNPqcG/+j0PInun67UIVv3lL+7R1ncrgPJB5UBbf+Q4nI6bk7mTrMv100lTH8u\nnY4zpeuMvNBNhEiEvdJUCa92uUSCN2bydJo0yGd/T5OsZA5n8xqzQOeFJ7pT59b6\nYKZO7YNjjbuJT8Lx/VFEi8iqafPa58XQwIaKjqZoGi868kGko1e3bjtXqNckRZcA\nJr1IOBYvVlQoA3XlM0JoRyEzpIE9hAMuMTVljwMljaoNwKmBV12dE4Zwij9opjDX\nxR6VfC5dw9S++yJSq4ASt9UKV7fEmWsXCbJXRR5jYhVtuGTM8LYeyZ0Qb0wBnCi6\nzpoF7btmkskdoUTBkwTjtLPylaBKWzhHISYwscdwsaDwigSMTkrNRALeiUJl+e5J\niNBeZQQ/xbATbA7myXDhByHAMkhOljKHjWbHRxf84GIohVMRJSVALN3n6lXFllpC\n=U+gB\n-----END PGP PUBLIC KEY BLOCK-----\n"
        }
      }
    }
  },
  "pipelines": [
    {
      "name": "build",
      "stages": [
        {
          "type": "org.osbuild.dnf",
          "inputs": {
            "packages": {
              "type": "org.osbuild.source",
              "origin": "org.osbuild.source",
              "references": {
                "fedora": [
                  {
                    "checksum": "sha256:5e6f1f4ad31efffdb6bd71222a8b3ad5f60eacaf579ce35474a11d4a418cbe05",
                    "path": "/var/cache/osbuild-composer/rpmmd/packages/bash-5.1.8-2.fc34.x86_64.rpm"
                  },
                  {
                    "checksum": "sha256:260dffcbea58331e3a52793e9cfe81faef38d8f509aa6db172f330fe66aabf00",
                    "path": "/var/cache/osbuild-composer/rpmmd/packages/coreutils-8.32-26.fc34.x86_64.rpm"
                  },
                  {
                    "checksum": "sha256:81a87a44cfee0cba49ff2faaeef63fdd9b03d9ab0c967be742fae389c404adfe",
                    "path": "/var/cache/osbuild-composer/rpmmd/packages/coreutils-common-8.32-26.fc34.x86_64.rpm"
                  },
                  {
                    "checksum": "sha256:3bbdddf08521366f074cae7f812cba632dc530cc6ec32389c18718ddaa90bce4",
                    "path": "/var/cache/osbuild-composer/rpmmd/packages/glibc-2.33-20.fc34.x86_64.rpm"
                  },
                  {
                    "checksum": "sha256:ea9cbaadc4d52f97cfdb6663f67fb40df235ea68e776ee444bf439e01ba462bd",
                    "path": "/var/cache/osbuild-composer/rpmmd/packages/glibc-common-2.33-20.fc34.x86_64.rpm"
                  },
                  {
                    "checksum": "sha256:ce98cf89a674112bb41ef31bb09598215804a21b83fcad53a04804dedef0eb71",
                    "path": "/var/cache/osbuild-composer/rpmmd/packages/glibc-minimal

从不完整的代码中我们可以看到构建步骤可分为三步:1.创建一个dnf仓库(创建一个简单的 dnf 仓库是为了让 osbuild 能够从本地仓库中获取软件包,而不是从远程仓库中获取。这样可以加快构建速度,并且可以在没有互联网连接的情况下进行构建。当然也不用创建)2.创建一个manifest的json格式的文件这个格式从官方文档也可以看到Osbuild Manifest.5

4.正式构建一个系统镜像

在创建了 manifest 文件之后,可以使用 osbuild 命令来启动构建过程。如果 manifest 文件名为 manifest.json,并且希望将生成的镜像保存到 image.raw 文件中,那么使用以下命令来启动构建过程:

sudo osbuild --output-directory=. --libdir=/usr/lib/osbuild/ manifest.json

这将启动 osbuild,并使用 manifest.json 中定义的管道来构建镜像。构建完成后,生成的镜像将保存到 image.raw 文件中。

请注意,您需要使用 sudo 来运行 osbuild 命令,因为 osbuild 需要特殊权限来执行某些操作。

可以看到osbuild是在构建时候基本上不用去管的只有一些需要用到维护或者自定义的操作的时候才要修改,这边附上官方提供的osbuild 手册页 Osbuild.1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值