•  untoreh-light

高山

Pine,基于 OSTree 的 Alpine linux

选择什么 操作系统 在您的服务器上运行是一个方便和熟悉的问题。方便意味着你想要一些给你带来尽可能少麻烦的东西,熟悉意味着你更喜欢 不是 如果您不需要,可以学习其他东西。

我的服务器是 宠物 所以我可以每隔一段时间手动发出一些命令,不需要完全自动化。

试用后 核心操作系统 一年我改用我自己的简化版 发行版 基于高山和 奥斯特里.

目标

这个版本的 alpine 借鉴了 平车 项目原子 并且应该作为只读根文件系统安装,更新以原子方式发生,也就是说,要么成功,要么系统交换回以前的状态。为此,系统必须始终至少具有 两张快照 已发布的文件系统版本,可用于存储。

目标

系统将在什么环境下运行?我有针对性 OVZ 和 [KVM],但总的来说你可以说 集装箱 虚拟机 主要区别在于容器不运行自己的内核,特别是它们没有启动过程,它们直接调用 在里面 系统(例如在Dockerfile 它将由CMD 或者ENTRYPOINT 语句),它负责管理保持容器运行的进程树(就像普通会话一样,如果 init 进程终止,则容器终止)。容器也不能配置系统旋钮,并且可以对功能有额外的限制。

将构建过程一分为二

图像是如何构建的?

依赖关系

prepare.sh 脚本处理依赖项,其中大部分是提供常用 cli 工具的包,如coreutils, util-linux, binutils ,与块设备一起操作的实用程序,例如blkid, sfdisk, multipath-tools 和文件系统xfsprogse2fsprogs .这squashfs-tools 最后使用 package 来压缩构建的根文件系统。一种glib 兼容包也是默认安装的,因为alpine是基于musl ,兼容性包通过提供一些针对 .

那个树

虚拟机和容器的文件树分别使用make.shmake_ovz.sh .这是步骤的简化说明

对于容器,顺序是相同的,但配置会发生变化,因为系统不是从 引导程序 ostree 在验证环境时遇到麻烦,我们必须应用一些 变通方法 并设置一些通常由 initramfs 步。这是如何 OVZ 或者 LXC 模板已配置。

包装

一旦我们有了 ostree 提交的文件树build.sh 或者build-update.sh 负责生产将要分发的工件。脚本之间的区别在于更新版本从以前的 ostree 存储库开始,并且 生成一个增量工件,运行系统可以将其应用于其 ostree 实例以执行升级。这是构建步骤的简化描述

分区配置通过 fdisk 应用layout.cfg 定义分区大小的文件,我们有一个用于 rootfs 的分区(~430M ), 启动分区 (~40M ) 和一个交换分区 (~40M )。对于容器,只需跳过将先前构建安装到循环设备上,然后将新的 ostree 提交拉到旧的(提取的)ostree 存储库上。

定制

我在此映像中捆绑了什么(除了已安装的软件包)?

过去是什么,现在不再是什么

安装

要安装映像,您可以将其上传到托管服务提供商并从 VNC 安装,以防万一是虚拟机,但我通常会劫持现有安装,因为这总是可能的,只要我已经针对版本测试了安装脚本linux 发行版,通常我使用 debian-8 或 ubuntu-14,尚未测试其他发行版,因为我一直发现这些可用。设置步骤如下

结论

我做了 松树 5 years from time of writing and I am still using it, and I see no reasons to switch to anything else. Alpine as a linux distro is great, simple, and I have never experienced breakage. I can easily deploy on NATed 往往提供超低资源的服务器,实际上我有一个运行的盒子64M 内存,并且仍然拥有我需要的所有功能。

[1]根文件系统

帖子标签: