Compare commits

..

3 commits

13 changed files with 254 additions and 91 deletions

View file

@ -6,6 +6,15 @@ Kiwi descriptions for Rocky Linux 9.
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
@ -30,11 +39,54 @@ 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`.
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.
@ -93,46 +145,6 @@ mock environment.
```
% bash live-build.sh --live-image XFCE --output-dir /builddir/xfce
```
#### SBC Images
Profiles choices include "GenericArm-GPT", "GenericArm-MBR", "RaspberryPi"
#### 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
```

View file

@ -6,7 +6,7 @@
<user name="rocky" groups="rocky,wheel" password="thereisnopassword" home="/home/rocky" pwdformat="encrypted" />
</users> -->
<!-- Only for SBC -->
<users profiles="Core-Pi">
<users profiles="Core-Pi,CoreSBC">
<user password="$6$ggstAnji$tPNhSHa/OG4UrJ0P77ZHlCunu.pueMXtXgAER51mTJ7bpXl/onDplJXd0usMSlFP4gOn/A7BM7cGoVw/WcCKS." home="/home/rocky" name="rocky" groups="rocky,wheel"/>
</users>
</image>

View file

@ -1 +1 @@
configs/rocky.xml
configs/rocky-sbc-genericarm-gpt.xml

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<image schemaversion="7.4" name="Rocky">
<image schemaversion="7.5" name="Rocky-generic-gpt">
<description type="system">
<author>Release Engineering (SIG/Core)</author>
<contact>releng@rockylinux.org</contact>
@ -19,7 +19,7 @@
<include from="this://./repositories/gnulab-tmp.xml"/>
<include from="this://./components/boot.xml"/>
<include from="this://./components/users.xml"/>
<include from="this://./sbc/pi.xml"/>
<include from="this://./sbc/sbc-gpt.xml"/>
<packages type="bootstrap">
<package name="basesystem"/>
<package name="filesystem"/>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<image schemaversion="7.4" name="Rocky-generic-mbr">
<description type="system">
<author>Release Engineering (SIG/Core)</author>
<contact>releng@rockylinux.org</contact>
<specification>Rocky Linux</specification>
</description>
<preferences>
<version>9</version>
<packagemanager>dnf</packagemanager>
<locale>en_US</locale>
<keytable>us</keytable>
<timezone>UTC</timezone>
<release-version>9</release-version>
</preferences>
<include from="this://./repositories/core.xml"/>
<include from="this://./repositories/altarch-common.xml"/>
<include from="this://./repositories/gnulab-tmp.xml"/>
<include from="this://./components/boot.xml"/>
<include from="this://./components/users.xml"/>
<include from="this://./sbc/sbc-mbr.xml"/>
<packages type="bootstrap">
<package name="basesystem"/>
<package name="filesystem"/>
</packages>
</image>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<image schemaversion="7.4" name="Rocky">
<image schemaversion="7.4" name="Rocky-rpi">
<description type="system">
<author>Release Engineering (SIG/Core)</author>
<contact>releng@rockylinux.org</contact>

View file

@ -6,4 +6,7 @@
<repository type="rpm-md" alias="gnulab_tmp_2" priority="1">
<source path="https://rockyrepos.gnulab.org/rpir$releasever/"/>
</repository>
<repository type="rpm-md" alias="codedude" priority="1">
<source path="https://sbccrazy.codedude.us/aarch64_el9/kernel-mainline-sbc/"/>
</repository>
</image>

29
rootfs-expand Normal file
View file

@ -0,0 +1,29 @@
#!/bin/bash
clear
part=$(mount |grep '^/dev.* / ' |awk '{print $1}')
if [ -z "\$part" ];then
echo "Error detecting rootfs"
exit -1
fi
dev=$(echo $part|sed 's/[0-9]*$//g')
devlen=${#dev}
num=${part:$devlen}
if [[ "$dev" =~ ^/dev/(mmcblk|nvme[0-9]+n)[0-9]*p$ ]];then
dev=${dev:0:-1}
fi
if [ ! -x /usr/bin/growpart ];then
echo "Please install cloud-utils-growpart (sudo yum install cloud-utils-growpart)"
exit -2
fi
if [ ! -x /usr/sbin/resize2fs ];then
echo "Please install e2fsprogs (sudo yum install e2fsprogs)"
exit -3
fi
echo $part $dev $num
echo "Extending partition $num to max size ...."
growpart $dev $num
echo "Resizing ext4 filesystem ..."
resize2fs $part
echo "Done."
df -h |grep $part

View file

@ -80,19 +80,27 @@ function switch_repo_to_peridot() {
}
function main() {
/bin/rm config.xml
if [[ -e config.xml ]]; then
/bin/rm config.xml
fi
if [ ! -f "configs/rocky-sbc-${SBC,,}.xml" ]; then
echo "${LIVE} was not found. Is it supported?"
exit 42
fi
ln -sf "configs/rocky-sbc-${SBC,,}.xml" config.xml
#ln -sf "configs/rocky-sbc-${SBC,,}.xml" config.xml
if [ -n "$PERIDOTID" ]; then
switch_repo_to_peridot "${PERIDOTID}"
fi
if [[ $SBC == "GenericArm-GPT" ]]; then
ln -s configs/rocky-sbc-genericarm-gpt.xml config.xml
elif [[ $SBC == "GenericArm-MBR" ]]; then
ln -s configs/rocky-sbc-genericarm-mbr.xml config.xml
else
ln -s configs/rocky-sbc-raspberrypi.xml config.xml
fi
# shellcheck disable=SC2086
kiwi-ng $DEBUG --type="oem" --profile="SBC-$SBC" --color-output system build --description="$SCRDIR" --target-dir "$OUTPUTDIR"
kiwi-ng $DEBUG --type="oem" --profile="SBC-$SBC" --color-output system build --description="$SCRDIR" --target-dir "$OUTPUTDIR"
}
main

View file

@ -6,9 +6,6 @@
<profile name="SBC-RaspberryPi" description="Raspberry Pi Image">
<requires profile="Core-Pi"/>
</profile>
<profile name="SBC-GenericArm" description="Generic ARM Image">
<requires profile="Core-Pi"/>
</profile>
</profiles>
<!-- RPI -->
<preferences profiles="SBC-RaspberryPi" arch="aarch64">
@ -28,25 +25,6 @@
<bootloader name="grub2" console="serial"/>
</type>
</preferences>
<preferences profiles="SBC-GenericArm" arch="aarch64">
<type image="oem"
filesystem="ext4"
bootpartition="true" bootpartsize="1000" bootfilesystem="ext4" efipartsize="500" firmware="efi"
kernelcmdline="root=LABEL=rootfs rootfstype=ext4 elevator=deadline rootwait console=ttyS0"
devicepersistency="by-label"
editbootinstall="sbc/editbootinstall_genericarm.sh"
rootfs_label="rootfs">
<oemconfig>
<oem-resize>false</oem-resize>
<oem-skip-verify>true</oem-skip-verify>
<oem-swap>true</oem-swap>
<oem-swapsize>500</oem-swapsize>
</oemconfig>
<bootloader name="grub2" console="serial"/>
<size unit="G">3</size>
</type>
</preferences>
<packages type="image" patternType="plusRecommended" profiles="Core-Pi">
<namedCollection name="core"/>
<package name="rocky-release"/>
@ -62,25 +40,8 @@
<package name="NetworkManager-wifi"/>
<package name="rng-tools"/>
<package name="vim"/>
</packages>
<packages type="image" patternType="plusRecommended" profiles="SBC-RaspberryPi">
<package name="rocky-release-rpi"/>
<package name="raspberrypi2-firmware"/>
<package name="raspberrypi2-kernel4"/>
</packages>
<packages type="image" patternType="plusRecommended" profiles="SBC-GenericArm">
<package name="bcm2711-firmware"/>
<package name="bcm2835-firmware"/>
<package name="bcm283x-firmware"/>
<package name="bcm283x-overlays"/>
<package name="dracut-config-generic"/>
<package name="efibootmgr"/>
<package name="kernel"/>
<package name="kernel-core"/>
<package name="systemd-udev"/>
<package name="uboot-images-armv8"/>
<package name="uboot-tools"/>
<ignore name="dracut-config-rescue"/>
<ignore name="java-11-*"/>
</packages>
</image>

55
sbc/sbc-gpt.xml Normal file
View file

@ -0,0 +1,55 @@
<image>
<profiles>
<profile name="CoreSBC" description="SBC Base Packages">
<requires profile="Core-Boot"/>
</profile>
<profile name="SBC-GenericArm-GPT" description="Generic ARM Image GPT">
<requires profile="CoreSBC"/>
</profile>
</profiles>
<preferences profiles="SBC-GenericArm-GPT" arch="aarch64">
<type image="oem"
filesystem="ext4"
bootpartition="true" bootpartsize="1000" bootfilesystem="ext4" efipartsize="500" firmware="efi"
kernelcmdline="root=LABEL=rootfs rootfstype=ext4 elevator=deadline rootwait console=ttyS0"
devicepersistency="by-label"
rootfs_label="rootfs">
<oemconfig>
<oem-resize>false</oem-resize>
<oem-skip-verify>true</oem-skip-verify>
<oem-swap>true</oem-swap>
<oem-swapsize>500</oem-swapsize>
</oemconfig>
<bootloader name="grub2" console="serial"/>
<size unit="G">5</size>
</type>
</preferences>
<packages type="image" patternType="plusRecommended" profiles="CoreSBC">
<namedCollection name="core"/>
<package name="rocky-release"/>
<package name="rocky-release-altarch"/>
<package name="bash-completion"/>
<package name="chrony"/>
<package name="cloud-utils-growpart"/>
<package name="langpacks-en"/>
<package name="glibc-all-langpacks"/>
<package name="net-tools"/>
<package name="nano"/>
<package name="NetworkManager-wifi"/>
<package name="rng-tools"/>
<package name="vim"/>
<package name="bcm2711-firmware"/>
<package name="bcm2835-firmware"/>
<package name="bcm283x-firmware"/>
<package name="bcm283x-overlays"/>
<package name="dracut-config-generic"/>
<package name="efibootmgr"/>
<package name="kernel-mainline-sbc"/>
<package name="systemd-udev"/>
<package name="uboot-images-armv8"/>
<package name="uboot-tools"/>
<ignore name="dracut-config-rescue"/>
<ignore name="java-11-*"/>
<ignore name="kernel-core-6*"/>
</packages>
</image>

56
sbc/sbc-mbr.xml Normal file
View file

@ -0,0 +1,56 @@
<image>
<profiles>
<profile name="CoreSBC" description="SBC Base Packages">
<requires profile="Core-Boot"/>
</profile>
<profile name="SBC-GenericArm-MBR" description="Generic ARM Image MBR">
<requires profile="CoreSBC"/>
</profile>
</profiles>
<preferences profiles="SBC-GenericArm-MBR" arch="aarch64">
<type image="oem"
filesystem="ext4"
bootpartition="true" bootpartsize="1000" bootfilesystem="ext4" efipartsize="500" firmware="efi"
kernelcmdline="root=LABEL=rootfs rootfstype=ext4 elevator=deadline rootwait console=ttyS0"
devicepersistency="by-label"
editbootinstall="sbc/editbootinstall_rpi.sh"
rootfs_label="rootfs">
<oemconfig>
<oem-resize>false</oem-resize>
<oem-skip-verify>true</oem-skip-verify>
<oem-swap>true</oem-swap>
<oem-swapsize>500</oem-swapsize>
</oemconfig>
<bootloader name="grub2" console="serial"/>
<size unit="G">5</size>
</type>
</preferences>
<packages type="image" patternType="plusRecommended" profiles="CoreSBC">
<namedCollection name="core"/>
<package name="rocky-release"/>
<package name="rocky-release-altarch"/>
<package name="bash-completion"/>
<package name="chrony"/>
<package name="cloud-utils-growpart"/>
<package name="langpacks-en"/>
<package name="glibc-all-langpacks"/>
<package name="net-tools"/>
<package name="nano"/>
<package name="NetworkManager-wifi"/>
<package name="rng-tools"/>
<package name="vim"/>
<package name="bcm2711-firmware"/>
<package name="bcm2835-firmware"/>
<package name="bcm283x-firmware"/>
<package name="bcm283x-overlays"/>
<package name="dracut-config-generic"/>
<package name="efibootmgr"/>
<package name="kernel-mainline-sbc"/>
<package name="systemd-udev"/>
<package name="uboot-images-armv8"/>
<package name="uboot-tools"/>
<ignore name="dracut-config-rescue"/>
<ignore name="java-11-*"/>
<ignore name="kernel-core-6*"/>
</packages>
</image>

12
wsl/default.xml Normal file
View file

@ -0,0 +1,12 @@
<image>
<profiles>
<profile name="XFCE-Live" description="Rocky Linux XFCE">
<requires profile="Live-Base"/>
<requires profile="XFCE-Desktop"/>
</profile>
</profiles>
<packages type="bootstrap" patternType="plusRecommended" profiles="XFCE-Live">
<package name="rocky-release"/>
<package name="epel-release"/>
</packages>
</image>