diff --git a/ci-scripts/template-vars.yaml b/ci-scripts/template-vars.yaml index 36c1ba2..6edcdaf 100644 --- a/ci-scripts/template-vars.yaml +++ b/ci-scripts/template-vars.yaml @@ -176,6 +176,23 @@ multiImages: - src/oracle9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/** - src/oracle9/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/** - src/ubuntu/sysbox/** + - name1: rhel + name2: 9 + base: registry.access.redhat.com/ubi9/ubi + bg: bg_rhel.png + distro: rhel9 + dockerfile: dockerfile-kasm-core-oracle + changeFiles: + - dockerfile-kasm-core-oracle + - src/rhel9/** + - src/rhel9/xfce/** + - src/rhel9/xfce/.config/** + - src/rhel9/xfce/.config/xfce4/** + - src/rhel9/xfce/.config/xfce4/xfconf/** + - src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/** + - src/rhel9/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/** + - src/ubuntu/install/rhel/** + - src/ubuntu/sysbox/** - name1: rockylinux name2: 8 base: rockylinux:8 diff --git a/dockerfile-kasm-core-oracle b/dockerfile-kasm-core-oracle index 42f1a8e..34f5b05 100644 --- a/dockerfile-kasm-core-oracle +++ b/dockerfile-kasm-core-oracle @@ -16,7 +16,7 @@ FROM install_tools AS squid_builder ARG DISTRO=oracle8 -RUN if [ "${DISTRO}" == "oracle8" ] || [ "${DISTRO}" == "oracle9" ] || [ "${DISTRO}" == "rockylinux9" ] || [ "${DISTRO}" == "rockylinux8" ] || [ "${DISTRO}" == "almalinux8" ] || [ "${DISTRO}" == "almalinux9" ]; then \ +RUN if [ "${DISTRO}" == "oracle8" ] || [ "${DISTRO}" == "oracle9" ] || [ "${DISTRO}" == "rockylinux9" ] || [ "${DISTRO}" == "rockylinux8" ] || [ "${DISTRO}" == "almalinux8" ] || [ "${DISTRO}" == "almalinux9" ] || [ "${DISTRO}" == "rhel9" ]; then \ ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g') && \ wget --progress=dot:giga "https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-squid-builder/1149fc830c7edcb383eec390cce2beba16befde5/output/kasm-squid-builder_${ARCH}.tar.gz"; \ else \ @@ -59,7 +59,7 @@ RUN mkdir -p $HOME/Desktop ### (should be nss_wrapper), and yum would just ignore it. Thus, a necessary ### package would be missing. With skip_missing_names_on_install, yum will exit ### with 1 exit code and that will stop image building. -RUN if [ "${DISTRO}" == "oracle8" ] || [ "${DISTRO}" == "oracle9" ] || [ "${DISTRO}" == "rockylinux9" ] || [ "${DISTRO}" == "rockylinux8" ] || [ "${DISTRO}" == "almalinux8" ] || [ "${DISTRO}" == "almalinux9" ]; then \ +RUN if [ "${DISTRO}" == "oracle8" ] || [ "${DISTRO}" == "oracle9" ] || [ "${DISTRO}" == "rockylinux9" ] || [ "${DISTRO}" == "rockylinux8" ] || [ "${DISTRO}" == "almalinux8" ] || [ "${DISTRO}" == "almalinux9" ] || [ "${DISTRO}" == "rhel9" ]; then \ dnf install -y 'dnf-command(config-manager)' && \ dnf config-manager --setopt=skip_missing_names_on_install=False --save && \ dnf clean all; \ @@ -67,6 +67,10 @@ else \ yum-config-manager --setopt=skip_missing_names_on_install=False --save; \ fi +### RHEL Tweaks +COPY ./src/ubuntu/install/rhel $INST_SCRIPTS/rhel/ +RUN bash $INST_SCRIPTS/rhel/install_rhel.sh && rm -rf $INST_SCRIPTS/rhel/ + ### Copy over the maximization script to our startup dir for use by app images. COPY ./src/ubuntu/install/maximize_script $STARTUPDIR/ diff --git a/docs/core-rhel-9/README.md b/docs/core-rhel-9/README.md new file mode 100644 index 0000000..9d27c7b --- /dev/null +++ b/docs/core-rhel-9/README.md @@ -0,0 +1,7 @@ +# About This Image + +This Image contains a browser-accessible Red Hat Linux 9 with XFCE desktop environment. + +![Screenshot][Image_Screenshot] + +[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/image-screenshots/core-rhel-9.png "Image Screenshot" diff --git a/docs/core-rhel-9/demo.txt b/docs/core-rhel-9/demo.txt new file mode 100644 index 0000000..bf7fabc --- /dev/null +++ b/docs/core-rhel-9/demo.txt @@ -0,0 +1,7 @@ +# Live Demo + +**Launch a real-time demo in a new browser window:** Live Demo. + + + +∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-rhel-9/description.txt b/docs/core-rhel-9/description.txt new file mode 100644 index 0000000..423e4fc --- /dev/null +++ b/docs/core-rhel-9/description.txt @@ -0,0 +1 @@ +Red Hat Linux 9 base image for Kasm Workspaces diff --git a/src/common/resources/images/bg_rhel.png b/src/common/resources/images/bg_rhel.png new file mode 100644 index 0000000..bb6b374 Binary files /dev/null and b/src/common/resources/images/bg_rhel.png differ diff --git a/src/rhel9/xfce/.config/.blank b/src/rhel9/xfce/.config/.blank new file mode 100644 index 0000000..e69de29 diff --git a/src/rhel9/xfce/.config/xfce4/fedora-logo-icon.png b/src/rhel9/xfce/.config/xfce4/fedora-logo-icon.png new file mode 100644 index 0000000..ae8fe7b Binary files /dev/null and b/src/rhel9/xfce/.config/xfce4/fedora-logo-icon.png differ diff --git a/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml new file mode 100644 index 0000000..a34dc3c --- /dev/null +++ b/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml new file mode 100644 index 0000000..3638ad1 --- /dev/null +++ b/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml new file mode 100644 index 0000000..ba3c831 --- /dev/null +++ b/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml new file mode 100644 index 0000000..d60e3c4 --- /dev/null +++ b/src/rhel9/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/ubuntu/install/audio/install_audio.sh b/src/ubuntu/install/audio/install_audio.sh index 3cd80fc..a13203e 100644 --- a/src/ubuntu/install/audio/install_audio.sh +++ b/src/ubuntu/install/audio/install_audio.sh @@ -15,8 +15,8 @@ elif [ "${DISTRO}" == "oracle8" ]; then dnf config-manager --set-enabled ol8_codeready_builder dnf localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm dnf install -y ffmpeg pulseaudio-utils -elif [ "${DISTRO}" == "oracle9" ]; then - dnf install -y curl git +elif [[ "${DISTRO}" == @(oracle9|rhel9) ]]; then + dnf install -y --allowerasing curl git dnf config-manager --set-enabled ol9_codeready_builder dnf localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-9.noarch.rpm dnf install -y --allowerasing ffmpeg pulseaudio-utils pulseaudio diff --git a/src/ubuntu/install/cleanup/cleanup.sh b/src/ubuntu/install/cleanup/cleanup.sh index 77aca86..87b84ef 100644 --- a/src/ubuntu/install/cleanup/cleanup.sh +++ b/src/ubuntu/install/cleanup/cleanup.sh @@ -4,7 +4,7 @@ set -ex # Distro package cleanup if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then yum clean all -elif [[ "${DISTRO}" == @(almalinux8|almalinux9|fedora37|fedora38|fedora39|fedora40|oracle8|oracle9|rockylinux8|rockylinux9) ]]; then +elif [[ "${DISTRO}" == @(almalinux8|almalinux9|fedora37|fedora38|fedora39|fedora40|oracle8|oracle9|rhel9|rockylinux8|rockylinux9) ]]; then dnf clean all elif [ "${DISTRO}" == "opensuse" ]; then zypper clean --all diff --git a/src/ubuntu/install/fonts/install_custom_fonts.sh b/src/ubuntu/install/fonts/install_custom_fonts.sh index a3fa448..da8d9d2 100644 --- a/src/ubuntu/install/fonts/install_custom_fonts.sh +++ b/src/ubuntu/install/fonts/install_custom_fonts.sh @@ -31,7 +31,7 @@ elif [[ "${DISTRO}" == @(fedora37|fedora38|fedora39|fedora40) ]]; then echo "Generating Locale for ${LOCALE}" localedef -i ${LOCALE} -f UTF-8 ${LOCALE}.UTF-8 done -elif [[ "${DISTRO}" == @(oracle8|oracle9|rockylinux9|rockylinux8|almalinux9|almalinux8) ]]; then +elif [[ "${DISTRO}" == @(oracle8|oracle9|rhel9|rockylinux9|rockylinux8|almalinux9|almalinux8) ]]; then dnf install -y \ glibc-locale-source \ google-noto-emoji-fonts \ diff --git a/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh b/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh index a7a4c66..70f3431 100644 --- a/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh +++ b/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh @@ -7,7 +7,7 @@ prepare_rpm_repo_dependencies() { elif [[ "$DISTRO" = "oracle8" ]]; then dnf config-manager --set-enabled ol8_codeready_builder dnf install -y oracle-epel-release-el8 - elif [[ "$DISTRO" = "oracle9" ]]; then + elif [[ "${DISTRO}" == @(oracle9|rhel9) ]]; then dnf config-manager --set-enabled ol9_codeready_builder dnf install -y oracle-epel-release-el9 fi @@ -45,7 +45,7 @@ elif [[ "${DISTRO}" == @(rockylinux8|oracle8|almalinux8) ]] ; then else BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_oracle_8_${KASM_VER_NAME_PART}_aarch64.rpm" fi -elif [[ "${DISTRO}" == @(rockylinux9|oracle9|almalinux9) ]] ; then +elif [[ "${DISTRO}" == @(rockylinux9|oracle9|rhel9|almalinux9) ]] ; then if [[ "$(arch)" =~ ^x86_64$ ]] ; then BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_oracle_9_${KASM_VER_NAME_PART}_x86_64.rpm" else @@ -136,7 +136,7 @@ if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then wget "${BUILD_URL}" -O kasmvncserver.rpm yum localinstall -y kasmvncserver.rpm rm kasmvncserver.rpm -elif [[ "${DISTRO}" == @(oracle8|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]] ; then +elif [[ "${DISTRO}" == @(oracle8|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]] ; then wget "${BUILD_URL}" -O kasmvncserver.rpm dnf localinstall -y kasmvncserver.rpm dnf install -y mesa-dri-drivers diff --git a/src/ubuntu/install/kde/install_kde.sh b/src/ubuntu/install/kde/install_kde.sh index 5e29bb5..5864d8d 100644 --- a/src/ubuntu/install/kde/install_kde.sh +++ b/src/ubuntu/install/kde/install_kde.sh @@ -30,7 +30,7 @@ EOL } echo "Install KDE UI components" -if [[ "${DISTRO}" != @(centos|oracle7|oracle8|opensuse|fedora37|fedora38|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then +if [[ "${DISTRO}" != @(centos|oracle7|oracle8|opensuse|fedora37|fedora38|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then apt-get update fi @@ -81,7 +81,7 @@ elif [ "$DISTRO" = "oracle8" ]; then wmctrl \ xclip \ xset -elif [ "$DISTRO" = "oracle9" ]; then +elif [[ "${DISTRO}" == @(oracle9|rhel9) ]]; then dnf config-manager --set-enabled ol9_codeready_builder dnf config-manager --set-enabled ol9_distro_builder dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm @@ -134,7 +134,7 @@ elif [ "$DISTRO" = "alpine" ]; then mesa-gl fi -if [[ "${DISTRO}" != @(centos|oracle7|oracle8|fedora37|fedora38|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then +if [[ "${DISTRO}" != @(centos|oracle7|oracle8|fedora37|fedora38|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then replace_default_xinit if [ "${START_XFCE4}" == "1" ] ; then replace_default_99x11_common_start diff --git a/src/ubuntu/install/openbox/install_openbox.sh b/src/ubuntu/install/openbox/install_openbox.sh index 780f335..f5aa040 100644 --- a/src/ubuntu/install/openbox/install_openbox.sh +++ b/src/ubuntu/install/openbox/install_openbox.sh @@ -30,7 +30,7 @@ EOL } echo "Install Openbox UI components" -if [[ "${DISTRO}" != @(centos|oracle7|oracle8|opensuse|fedora37|fedora38|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then +if [[ "${DISTRO}" != @(centos|oracle7|oracle8|opensuse|fedora37|fedora38|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then apt-get update fi @@ -68,7 +68,7 @@ elif [ "$DISTRO" = "oracle8" ]; then xclip \ xset \ xterm -elif [ "$DISTRO" = "oracle9" ]; then +elif [[ "${DISTRO}" == @(oracle9|rhel9) ]]; then dnf config-manager --set-enabled ol9_codeready_builder dnf config-manager --set-enabled ol9_distro_builder dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm @@ -133,7 +133,7 @@ elif [ "$DISTRO" = "alpine" ]; then xterm fi -if [[ "${DISTRO}" != @(centos|oracle7|oracle8|fedora37|fedora38|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then +if [[ "${DISTRO}" != @(centos|oracle7|oracle8|fedora37|fedora38|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then replace_default_xinit if [ "${START_XFCE4}" == "1" ] ; then replace_default_99x11_common_start diff --git a/src/ubuntu/install/package_rules/package_rules.sh b/src/ubuntu/install/package_rules/package_rules.sh index 6795321..b72c63b 100644 --- a/src/ubuntu/install/package_rules/package_rules.sh +++ b/src/ubuntu/install/package_rules/package_rules.sh @@ -9,7 +9,7 @@ elif [[ "${DISTRO}" == "debian" ]] ; then sed -i \ '/locale/d' \ /etc/dpkg/dpkg.cfg.d/docker -elif [[ "${DISTRO}" == @(almalinux8|almalinux9|fedora37|fedora38|fedora39|fedora40|oracle8|oracle9|rockylinux8|rockylinux9) ]]; then +elif [[ "${DISTRO}" == @(almalinux8|almalinux9|fedora37|fedora38|fedora39|fedora40|oracle8|oracle9|rhel9|rockylinux8|rockylinux9) ]]; then rm -f /etc/rpm/macros.image-language-conf elif [[ "${DISTRO}" == @(centos|oracle7) ]]; then sed -i \ @@ -22,7 +22,7 @@ fi echo "Upgrading packages from upstream base image" if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then yum update -y -elif [[ "${DISTRO}" == @(fedora37|fedora38|fedora39|fedora40|oracle8|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]]; then +elif [[ "${DISTRO}" == @(fedora37|fedora38|fedora39|fedora40|oracle8|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]]; then dnf upgrade -y --refresh elif [ "${DISTRO}" == "opensuse" ]; then zypper --non-interactive patch --auto-agree-with-licenses diff --git a/src/ubuntu/install/printer/install_printer.sh b/src/ubuntu/install/printer/install_printer.sh index 86db7ee..7820e86 100755 --- a/src/ubuntu/install/printer/install_printer.sh +++ b/src/ubuntu/install/printer/install_printer.sh @@ -6,7 +6,7 @@ echo $DISTRO if [ "${DISTRO}" == "oracle7" ] || [ "${DISTRO}" == "centos" ]; then yum install -y cups cups-client cups-pdf -elif [[ "${DISTRO}" == @(almalinux8|almalinux9|oracle8|oracle9|rockylinux8|rockylinux9|fedora37|fedora38|fedora39|fedora40) ]]; then +elif [[ "${DISTRO}" == @(almalinux8|almalinux9|oracle8|oracle9|rhel9|rockylinux8|rockylinux9|fedora37|fedora38|fedora39|fedora40) ]]; then dnf install -y cups cups-client cups-pdf elif [ "${DISTRO}" == "opensuse" ]; then zypper install -y cups cups-client cups-pdf diff --git a/src/ubuntu/install/profile_sync/install_profile_sync.sh b/src/ubuntu/install/profile_sync/install_profile_sync.sh index 0c58bfc..f3271ca 100755 --- a/src/ubuntu/install/profile_sync/install_profile_sync.sh +++ b/src/ubuntu/install/profile_sync/install_profile_sync.sh @@ -58,6 +58,9 @@ handle_other_distros_conversion() { almalinux*) profile_distro=$(echo "$profile_distro" | sed -e 's/linux//') ;; + rhel*) + profile_distro=$(echo "$profile_distro" | sed -e 's/rhel/oracle/') + ;; esac } diff --git a/src/ubuntu/install/rhel/install_rhel.sh b/src/ubuntu/install/rhel/install_rhel.sh new file mode 100644 index 0000000..2866337 --- /dev/null +++ b/src/ubuntu/install/rhel/install_rhel.sh @@ -0,0 +1,147 @@ +#! /bin/bash + +set -e + +# Bail if this is not really RHEL +if ! grep -q 'REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"' /etc/os-release; then + exit 0 +fi + +# Add OL9 repos to RHEL +cat >>/etc/yum.repos.d/oracle-linux-ol9.repo <>/etc/pki/rpm-gpg/RPM-GPG-KEY-oracle <