Coder Social home page Coder Social logo

archlinux / releng Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 5.0 50 KB

Arch Linux release engineering (read-only mirror)

Home Page: https://gitlab.archlinux.org/archlinux/releng

License: GNU General Public License v3.0

Shell 65.39% Makefile 0.91% Jinja 21.37% Python 12.34%

releng's Introduction

releng

This repository is used to create release artifacts for Arch Linux.

Artifacts

Releases of this repository provide artifacts, that are in either of the following two categories: build artifacts and promotion artifacts. For archweb only releases with both artifact types are considered.

Build Artifacts

These artifacts are the output of the build script in this repository (e.g. by running make as root, locally). It gathers artifacts by:

  • running mkarchiso (archiso) using the releng profile in all available build modes (bootstrap, iso, netboot)
  • copying relevant binaries from the ipxe package
  • creating a codesigned iPXE target script (see #9)
  • creating zsync files for large artifacts
  • creating checksums

The artifacts are assembled in a directory structure, that reflects the artifact type (bootstrap, ipxe, iso, netboot) per-release (i.e. <type>/<type>-<version>).

Promotion Artifacts

These artifacts are added to a release by a developer, after it has been created to "promote" the release to become one that is used on the mirrors. Promotion artifacts encompass:

  • detached PGP signatures for the iso and bootstrap build artifacts (see #1)
  • base64-encoded torrent files for the iso and bootstrap build artifacts (which include the detached PGP signatures) (see #5)
  • a JSON file with required metadata for the release (see #3)

Code Signing

mkarchiso (archiso) offers the export of server-side artifacts, that allow for iPXE to use them. The artifacts can optionally be codesigned which can establish a trust path between a client and the server-side files.

How to establish a code signing authority is explained in the iPXE upstream documentation. The server-side artifacts are signed using a codesigning certificate and key pair. The codesigning certificate is then embedded in the iPXE binary and is used during boot to validate the codesigning signature when downloading the file.

Additionally, CA certificates are embedded in the iPXE binary to validate the TLS connection over which the data is transmitted.

        iPXE binary                                   Server
xxxxxxxxxxxxxxxxxxxxxxxxxxx               xxxxxxxxxxxxxxxxxxxxxxxxxxxx
x       CA cert(s)        x    =====>     x Transport Layer Security x
xxxxxxxxxxxxxxxxxxxxxxxxxxx               xxxxxxxxxxxxxxxxxxxxxxxxxxxx
x Codesigning Certificate x    =====>     x   Codesigning Signature  x
xxxxxxxxxxxxxxxxxxxxxxxxxxx               xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Create a new Code Signing Key Pair

  1. Create a new code signing key pair using codesigning/create_codesigning_key_pair.sh.
  2. Embed the codesigning certificate in the binaries generated by the ipxe package and release a new version of the package.
  3. Add the codesigning certificate and key as variables of type File to this repository (SECRET_CODESIGNING_CERT_FILE and SECRET_CODESIGNING_KEY_FILE, respectively), so that they can be accessed during build.
  4. Build a new release with the respective artifacts being signed with the new codesigning key and make sure that the release contains the iPXE binaries from the updated package (embedding the new codesigning certificate)
  5. Once all official releases using the previous codesigning key pair have been removed, the previous codesigning certificate can be removed from the ipxe package.

License

Releng is licensed under the terms of the GPL-3.0-or-later (see LICENSE).

releng's People

Contributors

dvzrv avatar nl6720 avatar sespiros avatar svenstaro avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.