IT袋

当前位置:主页 > 经验教程 > 系统教程 >

使用mkosi构建RHEL和RHEL

使用mkosi构建RHEL和RHEL UBI镜像(4)

时间:2023-12-13 14:03:42 来源:IT袋 作者:马勇
导读:使用mkosi构建RHEL和RHEL,image.raw 。我们可以启动我们新创建的可执行文件作为 shell 命令: $ sudo mkosi -d rhel-ubi -t directory shell helloh1>Hello, World!/h1> 获取 RHEL 的开发者订阅 RHEL UBI 主要

使用mkosi构建RHEL和RHEL

image.raw。我们可以启动我们新创建的可执行文件作为 shell 命令:

$ sudo mkosi -d rhel-ubi -t directory shell hello
<h1>Hello, World!</h1>

获取 RHEL 的开发者订阅

RHEL UBI 主要用作容器构建的基础层。它提供了有限的软件包(约 1500 个)。现在让我们切换到完整的 RHEL 安装。

获取 RHEL 的最简单方法是使用 开发者许可证。它提供了权限注册 16 个运行 RHEL 的物理或虚拟节点,并提供自助式支持。

首先,创建一个账户。然后,转到 管理页面 并确保启用了“用于 Red Hat 订阅管理的简化内容访问”。接下来,创建一个新的激活密钥,选择 “Red Hat 个人开发者订阅”。记下显示的组织 ID。在下面,我们将使用密钥名称和组织 ID 分别表示为 $KEY_NAME 和 $ORGANIZATION_ID

现在,我们准备使用 RHEL 内容:

$ sudo dnf install subscription-manager
$ sudo subscription-manager register \
    --org $ORGANIZATION_ID --activationkey $KEY_NAME

使用 RHEL 构建镜像

在之前的示例中,我们通过参数开关指定了所有配置。这对于快速开发很友好,但可能在情况复杂时变得难以处理。RHEL 是一个严肃的发行版,所以让我们改为使用配置文件:

$ cat >mkosi.conf <<'EOF'
[Output]
Format=directory
Output=rhel-directory
[Distribution]
Distribution=rhel
[Content]
Packages=
bash
coreutils
util-linux
systemd
systemd-boot
systemd-udev
kernel-core
Bootable=yes
Bootloader=uki
Autologin=yes
WithDocs=no
EOF

首先,让我们检查一下一切是否正常:

$ mkosi summary

现在让我们构建镜像(呃,或者说,目录):

$ mkosi build
$ mkosi qemu
Welcome to Red Hat Enterprise Linux 9.2 (Plow)!
[ OK ] Created slice Slice /system/modprobe.
[ OK ] Reached target Initrd Root Device.
[ OK ] Reached target Initrd /usr File System.
[ OK ] Reached target Local Integrity Protected Volumes.
[ OK ] Reached target Local File Systems.
[ OK ] Reached target Path Units.
[ OK ] Reached target Remote Encrypted Volumes.
[ OK ] Reached target Remote Verity Protected Volumes.
[ OK ] Reached target Slice Units.
[ OK ] Reached target Swaps.
...
[ OK ] Listening on Journal Socket.
[ OK ] Listening on udev Control Socket.
[ OK ] Listening on udev Kernel Socket.
...
Red Hat Enterprise Linux 9.2 (Plow)
Kernel 5.14.0-284.30.1.el9_2.x86_64 on an x86_64
localhost login: root (automatic login)
[root@localhost ~]#

很好,我们将“镜像”构建为一个带有文件系统树的目录,并在虚拟机中引导了它。

在引导的虚拟机中,findmnt /显示根文件系统是 virtiofs。这是一个虚拟文件系统,将主机的目录暴露给客户机。我们其实也可以构建一个更传统的镜像,其中包含文件系统和文件内的分区表,但“目录 + virtiofs” 对于开发来说更快且更友好。

相关阅读