先问一下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