3个版本

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

#1028 in 过程宏


3 个库中使用 (通过 goldboot)

AGPL-3.0-only

3KB

License build Discord GitHub repo size Stars


人们通常不会经常从零开始重新安装操作系统。当他们这样做的时候,当他们达到那个原始的桌面或终端时,就会陷入混乱。设置会改变,应用程序会被安装,冗余软件会被移除,文件会被下载到各个地方。系统通常是通过一系列手动鼠标点击和按键操作,从原始状态变为新的“定制”状态。

这种标准方法就像 可变基础设施,意味着你反复更改系统的状态,直到它最终满足你的需求。当出现问题的时候,你必须进行必要的更改才能使其恢复正常。

对于大多数人来说,可变基础设施工作得很好,直到发生重大故障或他们必须完全迁移到新计算机。在这些情况下,他们可能不得不从头开始,并再次应用他们的更改(这次可能略有不同)。

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

goldboot 是一个工具,用于为实际硬件构建机器镜像,可以帮助你实现几乎不可变基础设施,而不会给自己带来太多额外的工作。

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

警告:这个工具完全不完整,仅应用于测试!自行承担风险!


goldboot 大约相当于将 dockerpacker 混合在一起的结果。不同于构建容器或虚拟机,goldboot 构建的是用于真实硬件的镜像。

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

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

安装

Docker

Docker Pulls Docker Image Size Docker Stars

从Docker Hub安装

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构建金镜像是一种常见做法,因此还有一个 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驱动器并重新启动机器。

依赖

~260–700KB
~17K SLoC