4个版本

0.0.4 2024年6月2日
0.0.3 2024年6月2日
0.0.2 2024年5月12日
0.0.1 2024年3月17日

#551 in 密码学


3 个crate中使用

AGPL-3.0-only

115KB
922

License build Discord GitHub repo size Stars


人们通常不会经常从头开始重新安装操作系统。当他们这样做时,一旦到达那片纯净的桌面或终端,混乱就随之而来。设置被更改,应用程序被安装,冗余软件被删除,文件被下载到各个地方。系统通常通过一系列手动点击和按键操作从原始状态改变为新的“自定义”状态。

这种标准方法类似于可变基础设施,意味着你反复修改系统的状态,直到它最终满足你的需求。当事情出错时,你必须进行必要的更改以使其恢复正常。

对于大多数人来说,可变基础设施在出现重大故障或他们不得不迁移到新计算机的情况下才会出现问题。在这些情况下,他们可能不得不从头开始,并重新应用他们的更改(这次可能略有不同)。

高级计算机精英可能会实践不可变基础设施。这意味着每次他们启动系统时,其状态几乎与上一次启动时相同。在运行时所做的任何更改在重启时都会消失。这种方法有一些真正的优势,但需要用户付出相当多的努力。

goldboot 是一个构建真实硬件机器镜像的工具,可以帮助你实现接近不可变基础设施,而不需要为你自己创造太多额外的工作。

goldboot 方法中,你为要部署的每台机器创建一个声明性配置文件。使用此配置,goldboot 在你的本地机器或像 Github Actions 这样的CI平台上构建镜像。生成的镜像可以通过USB驱动器或通过PXE启动部署到真实硬件。

警告:此工具完全未完成,仅应用于测试!自行承担风险!


goldboot 大约是你将得到的结果,如果将 dockerpacker 混合在一起。

这些机器镜像(也称为黄金镜像)包含你的操作系统、应用程序、软件补丁和配置,全部打包成一个易于部署的包。

与Docker镜像类似,您的goldboot镜像可以存储在注册表中,并拉取到真实硬件上。

安装

Docker

Docker Pulls Docker Image Size Docker Stars

从DockerHub安装

alias goldboot="docker run --rm -v .:/root fossable/goldboot"
Crates.io

Crates.io Total Downloads

从crates.io安装

cargo install goldboot
Arch Linux

AUR Votes AUR Version AUR Last Modified

从AUR安装

  cd /tmp
  curl https://aur.archlinux.org/cgit/aur.git/snapshot/goldboot.tar.gz | tar xf -
  makepkg -si
Github Releases

GitHub Downloads

从Github releases手动安装

curl -o /usr/bin/goldboot https://github.com/fossable/goldboot/releases/download/goldboot-v0.0.7/goldboot_<platform>
chmod +x /usr/bin/goldboot
依赖
apt-get install -y libudev1 libgtk-4-1 libglib2.0-0
Github Actions

在Github actions上运行

使用CI构建Golden镜像是一种常见的做法,因此还有一个Github action使其变得简单

steps:
  - name: Checkout
    uses: actions/checkout@v4

  - name: Build goldboot image
    uses: fossable/goldboot-action@main
    with:
      config-path: goldboot.json
      output-path: image.gb

  - name: Save image artifact
    uses: actions/upload-artifact@v3
    with:
      name: my_image.gb
      path: image.gb

示例

goldboot-examples仓库包含所有支持的操作系统类型和系统架构的示例配置。它们是在每周的安排下基于最新版本的goldboot构建的。

Linux Windows macos
Alpine x86_64 Windows 10 x86_64 macOS x86_64
Arch Linux x86_64
Debian x86_64
Pop!_OS x86_64
Steam Deck x86_64
Steam OS x86_64

示例教程

让我们构建一个基本的Arch Linux ArchLinux 镜像来证明我们是真正的Linux用户。

首先,创建一个目录来保存我们的配置(这可以在以后进行版本控制)

mkdir Test && cd Test

初始化目录,并选择以ArchLinux开始

goldboot init \
  --name Test \
  --os ArchLinux \
  --size 10G \
  --format json

这将创建goldboot.json,其中包含可以调整以满足您需求的配置选项。例如

{
  "alloy": [
    {
      "os": {
        "ArchLinux": {
          "hostname": "YeahIUseArch",
          "root_password": {
            "plaintext": "123456"
          }
        }
      },
      "source": {
        "Iso": {
          "url": "https://mirrors.edge.kernel.org/archlinux/iso/2024.01.01/archlinux-2024.01.01-x86_64.iso",
          "checksum": "sha256:12addd7d4154df1caf5f258b80ad72e7a724d33e75e6c2e6adc1475298d47155"
        }
      }
    }
  ],
  "arch": "Amd64",
  "name": "Test",
  "size": "10G"
}

有许多自定义镜像的方法,但在此阶段只需构建它

goldboot cast .

一旦构建成功,镜像将被保存到系统的库目录中。要将它部署到物理磁盘,您可以将镜像包含在新的可启动USB驱动器上

# THIS WILL OVERWRITE /dev/sdX!
goldboot liveusb --output /dev/sdX --include Test

一旦创建了USB,您可以使用它来启动goldboot live环境,并选择一个要部署的镜像

一旦镜像被部署,请移除可启动的USB驱动器并重新启动机器。

依赖

~9.5MB
~173K SLoC