Go to file
2024-09-30 16:22:43 +01:00
cloud update crashkernel setting in kernelcmdline 2024-08-21 13:24:50 -07:00
components remove rocky user, let cloud-init do it 2024-05-15 10:32:16 -07:00
configs some fixes 2024-05-04 02:15:58 -07:00
container fixup: make 9.4 containers match 2024-05-22 06:39:27 -07:00
live Add KDE and Cinnamon spins 2024-04-01 18:19:03 -07:00
repositories some fixes 2024-05-04 02:15:58 -07:00
root/etc poc: init for r9 2024-03-28 23:19:47 -07:00
sbc adjust priority and scr 2024-05-04 01:46:41 -07:00
vagrant add aarch64 for vagrant 2024-05-08 00:17:59 -04:00
wsl adjust readme 2024-07-15 09:45:20 -07:00
cloud-build.sh add debug fix to scripts 2024-05-01 15:26:37 -07:00
config.sh remove tmp.mount mask 2024-06-24 13:51:34 -07:00
config.xml config adjustments 2024-03-28 23:38:44 -07:00
container-build.sh drop container-build in root 2024-05-01 16:17:43 -07:00
grub.tmpl poc: init for r9 2024-03-28 23:19:47 -07:00
live-build.sh support minor 2024-05-01 16:47:35 -07:00
README.md Remove trailing space 2024-09-30 16:22:43 +01:00
sbc-build.sh sbc: add more pi steps 2024-05-03 12:56:11 -07:00

rocky-kiwi-descriptions

Kiwi descriptions for Rocky Linux 9.

config.xml is a symlink to rocky.xml. this way the symlink can just be changed to deal with live images (as kiwi doesn't seem to support using the --kiwi-file option for iso).

What can I build?

At the time of this writing, you can create cloud images, live images, and containers. You can run any of the scripts to do so:

  • cloud-build.sh
  • container-build.sh
  • live-build.sh

Can't you use the same config.xml? Why are you symlinking?

Yes and the reason why we're symlinking is that "name" and "displayname" are not flexible. They are only set/read at the very top level <image> (at least from testing at the time of this writing). As our images and volume names (at least for live images) have a very specific format, and we want it to be easy to rename them, we did it this way.

Cloud, container, vagrant images can all use the first config, likely just fine. The live images were the problematic ones, thus, symlinks with a default to the rocky.xml config.

I found an issue...

Please fork and make a PR! We're still learning how this tool works ourselves.

How to try it out

You can run this on a running system, in a mock root, or a podman container. In fact, most builds may fail in mock due to loop devices being unusable.

Note: SELinux must be set to permissive.

Note: There may be cases where a build will fail in mock. If this is the case, you may need to use --isolation=simple or forego the use of mock.

Note: If you receive an error about loop devices while running in mock, run this on the host instead.

Live Image Example on Rocky Linux 9 without using mock

# Use SIG/Core
% dnf install rocky-release-core
% dnf install kiwi-cli git \
  dracut-kiwi-live \
  kiwi-systemdeps-{bootloaders,containers,core,disk-images,filesystems,image-validation,iso-media}

% sudo setenforce 0
% git clone https://git.resf.org/sig_core/rocky-kiwi-descriptions -b r9
% cd rocky-kiwi-descriptions
% ln -sf configs/live-xfce.xml config.xml
% kiwi-ng --debug --type="iso" \
  --profile="XFCE-Live" \
  --color-output system \
  build \
  --description="./" \
  --target-dir /builddir/lmc

If you wish to use EPEL instead...

% dnf install epel-release -y
% crb enable
% dnf install kiwi-cli git \
  dracut-kiwi-live \
  kiwi-systemdeps-{bootloaders,containers,core,disk-images,filesystems,image-validation,iso-media} \
  distribution-gpg-keys

% sudo setenforce 0
% git clone https://git.resf.org/sig_core/rocky-kiwi-descriptions -b r9
% cd rocky-kiwi-descriptions
% ln -sf configs/live-xfce.xml config.xml
% kiwi-ng --debug --type="iso" \
  --profile="XFCE-Live" \
  --color-output system \
  build \
  --description="./" \
  --target-dir /builddir/lmc

Live Image Example (EPEL) using mock

The below makes an XFCE live image using SIG/Core packages.

# Use SIG/Core
% git clone https://git.resf.org/sig_core/mock-rocky-configs
% bash deploy.sh
% mock -r rl-9-x86_64-core-infra --init
% mock -r rl-9-x86_64-core-infra --install kiwi-cli git \
  dracut-kiwi-live \
  kiwi-systemdeps-{bootloaders,containers,core,disk-images,filesystems,image-validation,iso-media} \
  epel-release \
  rocky-release-core

% sudo setenforce 0
% mock -r rl-9-x86_64-core-infra --shell --enable-network
% git clone https://git.resf.org/sig_core/rocky-kiwi-descriptions -b r9
% cd rocky-kiwi-descriptions
% ln -sf configs/live-xfce.xml config.xml
% kiwi-ng --debug --type="iso" \
  --profile="XFCE-Live" \
  --color-output system \
  build \
  --description="./" \
  --target-dir /builddir/lmc

The below uses EPEL instead if you do not wish to use SIG/Core.

# Use EPEL
% mock -r rocky+epel-9-x86_64 --init
% mock -r rocky+epel-9-x86_64 --install kiwi-cli git \
  dracut-kiwi-live \
  kiwi-systemdeps-{bootloaders,containers,core,disk-images,filesystems,image-validation,iso-media} \
  distribution-gpg-keys \
  epel-release

% sudo setenforce 0
% mock -r rocky+epel-9-x86_64 --shell --enable-network
% git clone https://git.resf.org/sig_core/rocky-kiwi-descriptions -b r9
% cd rocky-kiwi-descriptions
% ln -sf configs/live-xfce.xml config.xml
% kiwi-ng --debug --type="iso" \
  --profile="XFCE-Live" \
  --color-output system \
  build \
  --description="./" \
  --target-dir /builddir/lmc

On the other hand, you can run the live-build.sh script after setting up your mock environment.

% bash live-build.sh --live-image XFCE --output-dir /builddir/xfce